]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRollup merge of #65961 - lcnr:typename_of, r=Dylan-DPC
Mazdak Farrokhzad [Sat, 23 Nov 2019 01:22:44 +0000 (02:22 +0100)]
Rollup merge of #65961 - lcnr:typename_of, r=Dylan-DPC

add fn type_name_of_val

This function is often useful during testing and mirrors `align_of_val` and `size_of_val`.

# Example

Showing the default type of integers.

```rust
let x = 7;
println!("per default, integers have the type: {}", std::any::type_name_of_val(&x));
```

To my knowledge this can currently not be done without defining a function similar to `type_name_of_val`.

4 years agoAuto merge of #66640 - Centril:rollup-862009l, r=Centril
bors [Fri, 22 Nov 2019 22:03:11 +0000 (22:03 +0000)]
Auto merge of #66640 - Centril:rollup-862009l, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #66183 (*Syntactically* permit visibilities on trait items & enum variants)
 - #66566 (Document pitfall with `impl PartialEq<B> for A`)
 - #66575 (Remove pretty printing of specific nodes in AST)
 - #66587 (Handle statics in MIR as const pointers)
 - #66619 (follow the convention in this file to use third-person singular verbs)
 - #66633 (Error code's long explanation cleanup)
 - #66637 (fix reoccuring typo: dereferencable -> dereferenceable)
 - #66639 (resolve: more declarative `fresh_binding`)

Failed merges:

r? @ghost

4 years agoRollup merge of #66639 - Centril:simplify-fresh-binding, r=petrochenkov
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:55 +0000 (19:57 +0100)]
Rollup merge of #66639 - Centril:simplify-fresh-binding, r=petrochenkov

resolve: more declarative `fresh_binding`

Following up on https://github.com/rust-lang/rust/pull/64111, this PR redefines `fresh_binding` wrt. `already_bound_and` and `already_bound_or` in a more declarative and simplified fashion.

cc #54883

r? @petrochenkov

4 years agoRollup merge of #66637 - RalfJung:typo, r=Centril
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:54 +0000 (19:57 +0100)]
Rollup merge of #66637 - RalfJung:typo, r=Centril

fix reoccuring typo: dereferencable -> dereferenceable

4 years agoRollup merge of #66633 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:52 +0000 (19:57 +0100)]
Rollup merge of #66633 - GuillaumeGomez:err-codes-cleanup, r=Dylan-DPC

Error code's long explanation cleanup

Continuing to clean up the error code's long explanation.

r? @Dylan-DPC

4 years agoRollup merge of #66619 - guanqun:use-third-person-singular-verb, r=Centril
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:51 +0000 (19:57 +0100)]
Rollup merge of #66619 - guanqun:use-third-person-singular-verb, r=Centril

follow the convention in this file to use third-person singular verbs

4 years agoRollup merge of #66587 - matthewjasper:handle-static-as-const, r=oli-obk
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:49 +0000 (19:57 +0100)]
Rollup merge of #66587 - matthewjasper:handle-static-as-const, r=oli-obk

Handle statics in MIR as const pointers

This is the first PR towards the goal of removing `PlaceBase::Static`. In this PR:

* Statics are lowered to dereferencing a const pointer.
* The temporaries holding such pointers are tracked in MIR, for the most part this is only used for diagnostics. There are two exceptions:
    * The borrow checker has some checks for thread-locals that directly use this data.
    * Const checking will suppress "cannot dereference raw pointer" diagnostics for pointers to `static mut`/`extern static`. This is to maintain the current behaviour (12 tests fail otherwise).

The following are left to future PRs (I think that @spastorino will be working on the first 3):

* Applying the same treatments to promoted statics.
* Removing `PlaceBase::Static`.
* Replacing `PlaceBase` with `Local`.
* Moving the ever growing collection of metadata that we have for diagnostics in MIR passes somewhere more appropriate.

r? @oli-obk

4 years agoRollup merge of #66575 - Mark-Simulacrum:no-uii, r=petrochenkov
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:48 +0000 (19:57 +0100)]
Rollup merge of #66575 - Mark-Simulacrum:no-uii, r=petrochenkov

Remove pretty printing of specific nodes in AST

The ability to print a specific item as identified by NodeId or path
seems not particularly useful, and certainly carries quite a bit of
complexity with it.

This is intended to simplify our CLI parsing a bit and remove a
non-uncomplicated piece of it; I largely did this to remove the
dependency on NodeId from librustc/session but it's not really
necessary to do so in this invasive a way. The alternative is
moving it to librustc_interface or driver, probably.

4 years agoRollup merge of #66566 - robamler:issue-66476, r=rkruppe
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:46 +0000 (19:57 +0100)]
Rollup merge of #66566 - robamler:issue-66476, r=rkruppe

Document pitfall with `impl PartialEq<B> for A`

Fixes #66476 by turning the violating example into an explicit
counterexample.

4 years agoRollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkov
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:57:41 +0000 (19:57 +0100)]
Rollup merge of #66183 - Centril:empty-vis-trait-decl, r=petrochenkov

*Syntactically* permit visibilities on trait items & enum variants

Fixes #65041

Suppose we have `$vis trait_item` or `$vis enum_variant` and `$vis` is a `:vis` macro fragment. Before this PR, this would fail to parse. This is now instead allowed as per language team consensus in https://github.com/rust-lang/rust/issues/65041#issuecomment-538105286. (See added tests for elaboration.)

Moreover, we now also permit visibility modifiers on trait items & enum variants *syntactically* but reject them with semantic checks (in `ast_validation`):

```rust
#[cfg(FALSE)]
trait Foo { pub fn bar(); } // OK

#[cfg(FALSE)]
enum E { pub U } // OK
```

4 years agoresolve: more declarative fresh_binding
Mazdak Farrokhzad [Fri, 22 Nov 2019 18:13:51 +0000 (19:13 +0100)]
resolve: more declarative fresh_binding

4 years agoAuto merge of #66558 - Aaron1011:update/miri-unwind, r=RalfJung
bors [Fri, 22 Nov 2019 18:23:00 +0000 (18:23 +0000)]
Auto merge of #66558 - Aaron1011:update/miri-unwind, r=RalfJung

Bump Miri for panic unwinding support

4 years agosmall error code explanations improvements
Guillaume Gomez [Fri, 22 Nov 2019 12:35:08 +0000 (13:35 +0100)]
small error code explanations improvements

4 years agoImprove E0061 long error explanation
Guillaume Gomez [Fri, 22 Nov 2019 12:34:52 +0000 (13:34 +0100)]
Improve E0061 long error explanation

4 years agoImprove E0057 long error explanation
Guillaume Gomez [Fri, 22 Nov 2019 12:31:47 +0000 (13:31 +0100)]
Improve E0057 long error explanation

4 years agoImprove E0023 long error explanation
Guillaume Gomez [Fri, 22 Nov 2019 12:25:48 +0000 (13:25 +0100)]
Improve E0023 long error explanation

4 years agoImprove E0015 long error explanation
Guillaume Gomez [Fri, 22 Nov 2019 12:23:33 +0000 (13:23 +0100)]
Improve E0015 long error explanation

4 years agofix reoccuring typo: dereferencable -> dereferenceable
Ralf Jung [Fri, 22 Nov 2019 17:11:28 +0000 (18:11 +0100)]
fix reoccuring typo: dereferencable -> dereferenceable

4 years agoAuto merge of #66460 - cjgillot:hashstable_generic, r=Zoxc
bors [Fri, 22 Nov 2019 13:54:41 +0000 (13:54 +0000)]
Auto merge of #66460 - cjgillot:hashstable_generic, r=Zoxc

Add a proc-macro to derive HashStable in librustc dependencies

A second proc-macro is added to derive HashStable for crates librustc depends on.
This proc-macro HashStable_Generic (to bikeshed) allows to decouple code and some librustc's boilerplate.

Not everything is migrated, because `Span` and `TokenKind` require to be placed inside librustc.
Types using them stay there too.

Split out of #66279
r? @Zoxc

4 years agoBump Miri for rustup fixes
Aaron Hill [Fri, 22 Nov 2019 13:20:46 +0000 (08:20 -0500)]
Bump Miri for rustup fixes

4 years agoAuto merge of #66565 - Mark-Simulacrum:syntax-cfg-mod, r=petrochenkov
bors [Fri, 22 Nov 2019 10:33:29 +0000 (10:33 +0000)]
Auto merge of #66565 - Mark-Simulacrum:syntax-cfg-mod, r=petrochenkov

Move process_configure_mod to rustc_parse

This removes the hack in favor of perhaps a less principled, but less painful, approach.

This also supports my work to decouple `Session` from librustc, as `ParseSess` currently has `Attribute` as "part" of it but after this PR will no longer do so.

4 years agofollow the convention in this file to use third-person singular verbs
Guanqun Lu [Fri, 22 Nov 2019 07:33:49 +0000 (15:33 +0800)]
follow the convention in this file to use third-person singular verbs

4 years agoAuto merge of #66537 - nnethercote:delay-is_local_ever_initialized, r=spastorino
bors [Fri, 22 Nov 2019 07:21:48 +0000 (07:21 +0000)]
Auto merge of #66537 - nnethercote:delay-is_local_ever_initialized, r=spastorino

Delay an `is_local_ever_initialized` call.

This commit moves the call after a `return` that almost always runs. It
speeds up the `unicode_normalization` benchmark by about 2%.

r? @spastorino

4 years agoDocument pitfall with `impl PartialEq<B> for A`
Robert Bamler [Wed, 20 Nov 2019 03:57:03 +0000 (19:57 -0800)]
Document pitfall with `impl PartialEq<B> for A`

Fixes #66476 by turning the violating example into an explicit
counterexample.

4 years agoAuto merge of #66524 - ecstatic-morse:compiletest-multiple-revisions, r=Centril
bors [Fri, 22 Nov 2019 04:06:52 +0000 (04:06 +0000)]
Auto merge of #66524 - ecstatic-morse:compiletest-multiple-revisions, r=Centril

Support multiple revisions in `compiletest`

The `//[X]~` syntax filters errors for tests that are run across multiple cfgs with  `// revisions:`. This commit extends that syntax to accept `//[X,Y]~`, which will match multiple cfgs to the same error annotation. This is functionally the same as writing two comments, `//[X]~` and `//[Y]~`, but can fit on a single line.

While refactoring `compiletest` to support this, I also uncovered a small bug that was causing an incremental test to always pass, despite no errors being emitted.

r? @Centril

4 years agoAuto merge of #66282 - Centril:simplify-try, r=oli-obk
bors [Fri, 22 Nov 2019 00:16:40 +0000 (00:16 +0000)]
Auto merge of #66282 - Centril:simplify-try, r=oli-obk

[mir-opt] asking `?`s in a more optimized fashion

This PR works towards https://github.com/rust-lang/rust/issues/66234 by providing two optimization passes meant to run in sequence:

- `SimplifyArmIdentity` which transforms something like:
  ```rust
  _LOCAL_TMP = ((_LOCAL_1 as Variant ).FIELD: TY );
  ((_LOCAL_0 as Variant).FIELD: TY) = move _LOCAL_TMP;
  discriminant(_LOCAL_0) = VAR_IDX;
  ```

  into:

  ```rust
  _LOCAL_0 = move _LOCAL_1
  ```

- `SimplifyBranchSame` which transforms `SwitchInt`s to identical basic blocks into a `goto` to the first reachable target.

Together, these are meant to simplify the following into just `res`:
```rust
match res {
    Ok(x) => Ok(x),
    Err(x) => Err(x),
}
```

It should be noted however that the desugaring of `?` includes a function call and so the first pass in this PR relies on inlining to substitute that function call for identity on `x`. Inlining requires `mir-opt-level=2` so this might not have any effect in perf-bot but let's find out.

r? @oli-obk -- This is WIP, but I'd appreciate feedback. :)

4 years agoGive name to full regex capture
Dylan MacKenzie [Thu, 21 Nov 2019 22:13:42 +0000 (14:13 -0800)]
Give name to full regex capture

4 years agoChange some tests to use the shorter comment style
Dylan MacKenzie [Mon, 18 Nov 2019 18:43:11 +0000 (10:43 -0800)]
Change some tests to use the shorter comment style

4 years agoFix broken incremental test
Dylan MacKenzie [Mon, 18 Nov 2019 18:06:21 +0000 (10:06 -0800)]
Fix broken incremental test

This test does not actually emit any warnings, since
`#![allow(warnings)]` was specified. `compiletest` was erroneously
ignoring `//~` tests and looking only for `//[X]~` ones. As a result of
the changes in the previous commit, we now look for `//~` comments in
incremental tests and expect them to appear in *all* revisions.

4 years agoAllow multiple cfgs per comment in "revisions:" tests
Dylan MacKenzie [Sat, 16 Nov 2019 05:40:05 +0000 (21:40 -0800)]
Allow multiple cfgs per comment in "revisions:" tests

The `//[X]~` syntax filters errors for tests that are run across
multiple cfgs with  `// revisions:`. This commit extends that syntax to
accept `//[X,Y]~`, which will match multiple cfgs to the same error
annotation. This is functionally the same as writing two comments,
`//[X]~` and `//[Y]~`, but can fit on a single line.

4 years agoAddress review comments
Matthew Jasper [Thu, 21 Nov 2019 21:20:47 +0000 (21:20 +0000)]
Address review comments

4 years agoAuto merge of #66610 - alexreg:trait-upcasting-cosmetic, r=Centril
bors [Thu, 21 Nov 2019 21:01:14 +0000 (21:01 +0000)]
Auto merge of #66610 - alexreg:trait-upcasting-cosmetic, r=Centril

Aggregation of drive-by cosmetic changes for trait-upcasting PR

Cherry-picked from #60900.

As requested by @Centril (and @nikomatsakis, I believe).

r? @Centril

4 years agoBless remaining test output
Matthew Jasper [Tue, 19 Nov 2019 23:16:58 +0000 (23:16 +0000)]
Bless remaining test output

4 years agoTrack pointers to statics in MIR
Matthew Jasper [Mon, 18 Nov 2019 23:04:06 +0000 (23:04 +0000)]
Track pointers to statics in MIR

4 years agoFix rebase
Matthew Jasper [Mon, 18 Nov 2019 22:15:33 +0000 (22:15 +0000)]
Fix rebase

4 years agoReadjust constant evaluation for operands
Santiago Pastorino [Mon, 11 Nov 2019 11:53:31 +0000 (12:53 +0100)]
Readjust constant evaluation for operands

4 years agoSimplify pattern
Santiago Pastorino [Mon, 11 Nov 2019 11:49:21 +0000 (12:49 +0100)]
Simplify pattern

4 years agoReadjust const qualification to detect statics again
Santiago Pastorino [Mon, 11 Nov 2019 11:15:38 +0000 (12:15 +0100)]
Readjust const qualification to detect statics again

4 years agoRemove statics from HAIR by lowering them to a pointer constant
Oliver Scherer [Thu, 24 Oct 2019 15:20:18 +0000 (17:20 +0200)]
Remove statics from HAIR by lowering them to a pointer constant

4 years agoIntroduce MIR optimizations for simplifying `x?` on `Result`s.
Mazdak Farrokhzad [Sun, 10 Nov 2019 09:26:33 +0000 (10:26 +0100)]
Introduce MIR optimizations for simplifying `x?` on `Result`s.

This optimization depends on inlining for the identity
conversions introduced by the lowering of the `?`.
To take advantage of `SimplifyArmIdentity`, `-Z mir-opt-level=2`
is required because that triggers the inlining MIR optimization.

4 years agoApplied suggestions from code review.
Alexander Regueiro [Thu, 21 Nov 2019 18:40:27 +0000 (18:40 +0000)]
Applied suggestions from code review.

4 years agoAggregation of drive-by cosmetic changes.
Alexander Regueiro [Fri, 17 May 2019 01:20:14 +0000 (02:20 +0100)]
Aggregation of drive-by cosmetic changes.

4 years agoAuto merge of #66389 - estebank:type-err-labels, r=petrochenkov
bors [Thu, 21 Nov 2019 17:53:19 +0000 (17:53 +0000)]
Auto merge of #66389 - estebank:type-err-labels, r=petrochenkov

Specific labels when referring to "expected" and "found" types

4 years agoAuto merge of #66607 - Centril:rollup-yb7cl73, r=Centril
bors [Thu, 21 Nov 2019 14:30:02 +0000 (14:30 +0000)]
Auto merge of #66607 - Centril:rollup-yb7cl73, r=Centril

Rollup of 5 pull requests

Successful merges:

 - #65355 (Stabilize `!` in Rust 1.41.0)
 - #65730 (Suggest to add lifetime constraint at explicit ouput of functions)
 - #66468 (Cleanup Miri SIMD intrinsics)
 - #66515 (Reduce size of `hir::Expr` by boxing more of `hir::InlineAsm`)
 - #66602 (Revert "Update Source Code Pro and include italics")

Failed merges:

r? @ghost

4 years agoRollup merge of #66602 - GuillaumeGomez:revert-font, r=GuillaumeGomez
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:29:08 +0000 (15:29 +0100)]
Rollup merge of #66602 - GuillaumeGomez:revert-font, r=GuillaumeGomez

Revert "Update Source Code Pro and include italics"

This reverts commit ea9519bf16f0be137a814a49c9fbaf232ba49a43.

4 years agoRollup merge of #66515 - Centril:cheaper-inline-asm, r=oli-obk
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:29:07 +0000 (15:29 +0100)]
Rollup merge of #66515 - Centril:cheaper-inline-asm, r=oli-obk

Reduce size of `hir::Expr` by boxing more of `hir::InlineAsm`

r? @oli-obk

4 years agoRollup merge of #66468 - RalfJung:simd-cleanup, r=oli-obk
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:29:05 +0000 (15:29 +0100)]
Rollup merge of #66468 - RalfJung:simd-cleanup, r=oli-obk

Cleanup Miri SIMD intrinsics

r? @oli-obk @eddyb Cc @gnzlbg

4 years agoRollup merge of #65730 - csmoe:return-lifetime, r=nikomatsakis
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:29:02 +0000 (15:29 +0100)]
Rollup merge of #65730 - csmoe:return-lifetime, r=nikomatsakis

Suggest to add lifetime constraint at explicit ouput of functions

Closes #62097

4 years agoRollup merge of #65355 - Centril:almost-is-never-enough, r=oli-obk
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:29:00 +0000 (15:29 +0100)]
Rollup merge of #65355 - Centril:almost-is-never-enough, r=oli-obk

Stabilize `!` in Rust 1.41.0

This PR stabilizes the `never_type` (written `!`). The type represents computations that we know diverge in the type system and therefore has no values / inhabitants / elements / members.

The current nightly version is 1.40.0 which will become stable on 2019-12-19.

Tracking issue: https://github.com/rust-lang/rust/issues/35121.
Closes https://github.com/rust-lang/rust/issues/57012.
Closes https://github.com/rust-lang/rust/issues/58184.
Original stabilization report: https://github.com/rust-lang/rust/issues/57012#issuecomment-452398538

Additional notes:

- In #62661 we reserved `impl<T> From<!> for T` so this concern should be resolved.
- The type inference fallback change is moved to `#![feature(never_type_fallback)]` (https://github.com/rust-lang/rust/issues/65992).
- You can find all of the tests referencing `never_type` in this PR which also reorganizes these tests whereas they were more scattered before.

r? @nikomatsakis

4 years agonever_type: test interaction with auto traits
Mazdak Farrokhzad [Thu, 21 Nov 2019 14:09:18 +0000 (15:09 +0100)]
never_type: test interaction with auto traits

4 years agoRedefine `core::convert::Infallible` as `!`.
Mazdak Farrokhzad [Sun, 13 Oct 2019 02:58:45 +0000 (04:58 +0200)]
Redefine `core::convert::Infallible` as `!`.

4 years agoGate fallback via `#![feature(never_type_fallback)]`.
Mazdak Farrokhzad [Thu, 31 Oct 2019 03:33:31 +0000 (04:33 +0100)]
Gate fallback via `#![feature(never_type_fallback)]`.

4 years agoRemove `#![feature(never_type)]` from tests.
Mazdak Farrokhzad [Sun, 13 Oct 2019 01:17:00 +0000 (03:17 +0200)]
Remove `#![feature(never_type)]` from tests.

Also remove `never_type` the feature-gate test.

4 years agoStabilize the `never_type`, written `!`.
Mazdak Farrokhzad [Sat, 12 Oct 2019 23:50:03 +0000 (01:50 +0200)]
Stabilize the `never_type`, written `!`.

4 years agoRevert "Update Source Code Pro and include italics"
Guillaume Gomez [Thu, 21 Nov 2019 10:18:23 +0000 (11:18 +0100)]
Revert "Update Source Code Pro and include italics"

This reverts commit ea9519bf16f0be137a814a49c9fbaf232ba49a43.

4 years agoreduce size of hir::ExprKind
Mazdak Farrokhzad [Mon, 18 Nov 2019 13:43:34 +0000 (14:43 +0100)]
reduce size of hir::ExprKind

4 years agoBump Miri for return code propagation
Aaron Hill [Wed, 20 Nov 2019 22:26:49 +0000 (17:26 -0500)]
Bump Miri for return code propagation

4 years agoAuto merge of #66578 - Centril:rollup-pgz1v7t, r=Centril
bors [Wed, 20 Nov 2019 19:15:41 +0000 (19:15 +0000)]
Auto merge of #66578 - Centril:rollup-pgz1v7t, r=Centril

Rollup of 7 pull requests

Successful merges:

 - #66060 (Making ICEs and test them in incremental)
 - #66298 (rustdoc: fixes #64305: disable search field instead of hidding it)
 - #66457 (Just derive Hashstable in librustc)
 - #66496 (rustc_metadata: Privatize more things)
 - #66514 (Fix selected crate search filter)
 - #66535 (Avoid ICE when `break`ing to an unreachable label)
 - #66573 (Ignore run-make reproducible-build-2 on Mac)

Failed merges:

r? @ghost

4 years agoDelete ProcessCfgMod
Mark Rousskov [Wed, 20 Nov 2019 02:38:31 +0000 (21:38 -0500)]
Delete ProcessCfgMod

The previous commit removes the use of this, and now we cleanup.

4 years agoRollup merge of #66573 - pnkfelix:issue-66568-ignore-reproducible-build-2-on-macos...
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:13 +0000 (18:32 +0100)]
Rollup merge of #66573 - pnkfelix:issue-66568-ignore-reproducible-build-2-on-macos, r=alexcrichton

Ignore run-make reproducible-build-2 on Mac

Ignore run-make reproducible-build-2 on Mac (we already ignore it on Windows).

Until we can dedicate resources to fixing this properly, I think we are best off just ignoring this test on platforms/contexts where it does not matter as much.

cc #66568

4 years agoRollup merge of #66535 - estebank:issue-62480, r=matthewjasper
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:12 +0000 (18:32 +0100)]
Rollup merge of #66535 - estebank:issue-62480, r=matthewjasper

Avoid ICE when `break`ing to an unreachable label

Fix #62480.

4 years agoRollup merge of #66514 - GuillaumeGomez:fix-search-filter-save, r=kinnison
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:10 +0000 (18:32 +0100)]
Rollup merge of #66514 - GuillaumeGomez:fix-search-filter-save, r=kinnison

Fix selected crate search filter

Fixes #62929.

r? @kinnison

4 years agoRollup merge of #66496 - petrochenkov:metapriv2, r=eddyb
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:09 +0000 (18:32 +0100)]
Rollup merge of #66496 - petrochenkov:metapriv2, r=eddyb

rustc_metadata: Privatize more things

Continuation of https://github.com/rust-lang/rust/pull/66056.

The most notable change here is that `CrateMetadata` is moved from `cstore.rs` to `decoder.rs`.
Most of uses of `CrateMetadata` fields are in the decoder and uses of `root: CrateRoot` and other fields are so intertwined with each other that it would be hard to move a part of them into `cstore.rs` to privatize `CrateMetadata` fields, so we are going the other way round.

`cstore.rs` can probably be dismantled now, but I'll leave this to some other day.
Similarly, remaining `CrateMetadata` fields can be privatized by introducing some getter/setter methods, but not today.

r? @eddyb

4 years agoRollup merge of #66457 - cjgillot:just_hashstable, r=Zoxc
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:07 +0000 (18:32 +0100)]
Rollup merge of #66457 - cjgillot:just_hashstable, r=Zoxc

Just derive Hashstable in librustc

Split out of #66279

r? @Zoxc

4 years agoRollup merge of #66298 - Ppjet6:disable-search-field, r=GuillaumeGomez
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:06 +0000 (18:32 +0100)]
Rollup merge of #66298 - Ppjet6:disable-search-field, r=GuillaumeGomez

rustdoc: fixes #64305: disable search field instead of hidding it

The result seems to be ok but I wasn't entirely sure how to get there. I tried to stay generic a bit but maybe it's not required at all.

@GuillaumeGomez

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
4 years agoRollup merge of #66060 - traxys:test_65401, r=michaelwoerister
Mazdak Farrokhzad [Wed, 20 Nov 2019 17:32:04 +0000 (18:32 +0100)]
Rollup merge of #66060 - traxys:test_65401, r=michaelwoerister

Making ICEs and test them in incremental

This adds:
 - A way to make the compiler ICE
 - A way to check for ICE in `cfail` tests with `should-ice`
 - A regression test for issue #65401

I am not sure the attribute added `should-ice` is the best for this job

4 years agoRemove pretty printing of specific nodes in AST
Mark Rousskov [Wed, 20 Nov 2019 13:27:42 +0000 (08:27 -0500)]
Remove pretty printing of specific nodes in AST

The ability to print a specific item as identified by NodeId or path
seems not particularly useful, and certainly carries quite a bit of
complexity with it.

4 years agoAuto merge of #66571 - Centril:rollup-41tn2fw, r=Centril
bors [Wed, 20 Nov 2019 14:04:12 +0000 (14:04 +0000)]
Auto merge of #66571 - Centril:rollup-41tn2fw, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #65665 (Update Source Code Pro and include italics)
 - #66478 (rustc_plugin: Remove the compatibility shim)
 - #66497 (Fix #53820)
 - #66526 (Add more context to `async fn` trait error)
 - #66532 (Generate DWARF address ranges for faster lookups)
 - #66546 (Remove duplicate function)
 - #66548 ([RISCV] Disable Atomics on all Non-A RISC-V targets)
 - #66553 (remove HermitCore leftovers from sys/unix)

Failed merges:

r? @ghost

4 years agoIgnore run-make reproducible-build-2 on Mac (we already ignore it on Windows).
Felix S. Klock II [Wed, 20 Nov 2019 13:07:01 +0000 (14:07 +0100)]
Ignore run-make reproducible-build-2 on Mac (we already ignore it on Windows).

Until we can dedicate resources to fixing this properly, I think we are
best off just ignoring this test on platforms/contexts where it does not
matter as much.

4 years agoRollup merge of #66553 - hermitcore:hermit, r=rkruppe
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:37 +0000 (12:58 +0100)]
Rollup merge of #66553 - hermitcore:hermit, r=rkruppe

remove HermitCore leftovers from sys/unix

HermitCore support is already moved to the directory "sys/hermit". => remove leftovers

4 years agoRollup merge of #66548 - lenary:riscv/disable-atomics-non-a, r=alexcrichton
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:35 +0000 (12:58 +0100)]
Rollup merge of #66548 - lenary:riscv/disable-atomics-non-a, r=alexcrichton

[RISCV] Disable Atomics on all Non-A RISC-V targets

In a `TargetOptions` configuration, `max_atomic_width: None` causes `max_atomic_width()` to return `Some(target_pointer_width)`. So, contrary to assumptions, `max_atomic_width: None` means you do have atomic support!

RISC-V's rv32i and rv32imc do not have architectural support for atomic memory accesses of any size, because they do not include the `A` architecture extension. This means the values in the target definition should be `Some(0)`.

This bug has been observed via a build failure with oreboot/oreboot#191, where LLVM was still generating libcalls for atomic operations. According to rust-lang/compiler-builtins, "Rust only exposes atomic types on platforms that support them, and therefore does not need to fall back to software implementations." - so this PR tries to bring rustc inline with this decision.

This commit also removes the outdated bug link, which references a now irrelevant GCC bug.

I will likely also have to revisit the `min_atomic_width` of all the RISC-V targets so they are correct and match what the hardware is capable of (which is more restricted than one might imagine).

r? @alexcrichton

4 years agoRollup merge of #66546 - aradzie:remove_duplicate_function, r=Dylan-DPC
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:33 +0000 (12:58 +0100)]
Rollup merge of #66546 - aradzie:remove_duplicate_function, r=Dylan-DPC

Remove duplicate function

Function `source_name` declared in file

[src/librustc_driver/lib.rs](https://github.com/rust-lang/rust/blob/master/src/librustc_driver/lib.rs#L87)

is a duplicate of the function by the same name declared in file

[src/librustc/session/config.rs](https://github.com/rust-lang/rust/blob/master/src/librustc/session/config.rs#L511)

4 years agoRollup merge of #66532 - cuviper:dwarf-aranges, r=michaelwoerister
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:32 +0000 (12:58 +0100)]
Rollup merge of #66532 - cuviper:dwarf-aranges, r=michaelwoerister

Generate DWARF address ranges for faster lookups

This adds a new option `-Zgenerate-arange-section`, enabled by default,
corresponding to LLVM's `-generate-arange-section`. This creates a
`.debug_aranges` section with DWARF address ranges, which some tools
depend on to optimize address lookups (elfutils [22288], [25173]).

This only has effect when debuginfo is enabled, and the additional data
is small compared to the other debug sections. For example, libstd.so
with full debuginfo is about 11MB, with just 61kB in aranges.

[22288]: https://sourceware.org/bugzilla/show_bug.cgi?id=22288
[25173]: https://sourceware.org/bugzilla/show_bug.cgi?id=25173

Closes #45246.
r? @michaelwoerister

4 years agoRollup merge of #66526 - estebank:async-fn-trait-information, r=Centril
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:30 +0000 (12:58 +0100)]
Rollup merge of #66526 - estebank:async-fn-trait-information, r=Centril

Add more context to `async fn` trait error

Follow up to #65937. Fix #65899.

4 years agoRollup merge of #66497 - Nadrieril:fix-53820, r=varkor
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:29 +0000 (12:58 +0100)]
Rollup merge of #66497 - Nadrieril:fix-53820, r=varkor

Fix #53820

This fixes ICE #53820 by being more clever when matching large arrays with slice patterns.
In particular, it avoids treating large arrays like large tuples, and instead reuses the `VarLenSlice` constructor behaviour to only consider as little values as needed.
As a side-effect, such matches also get improved diagnostics, by reporting `[true, ..]` missing instead of `[true, _, _, _, _, _, _, _]`.

4 years agoRollup merge of #66478 - petrochenkov:rmplugin, r=davidtwco
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:27 +0000 (12:58 +0100)]
Rollup merge of #66478 - petrochenkov:rmplugin, r=davidtwco

rustc_plugin: Remove the compatibility shim

The compatibility crate was introduced in https://github.com/rust-lang/rust/pull/62727 to migrate Cargo and some other tools, but now it's no longer necessary.

4 years agoRollup merge of #65665 - tspiteri:italic-and-update-SourceCodePro, r=GuillaumeGomez
Mazdak Farrokhzad [Wed, 20 Nov 2019 11:58:26 +0000 (12:58 +0100)]
Rollup merge of #65665 - tspiteri:italic-and-update-SourceCodePro, r=GuillaumeGomez

Update Source Code Pro and include italics

Fixes #65502.

A few notes:
  * As stated in #65502, this does increase the download size.
  * Since this PR changes the font set, I think docs.rs would have to be updated if this PR is merged.
  * The fonts have a double extension (.ttf.woff); this is to keep the names consistent with the upstream font release which does that to distinguish these from the .otf.woff files ([Source Code Pro otf renders poorly on older Windows system apps](https://github.com/adobe-fonts/source-code-pro/issues/25#issuecomment-9019600)).

4 years agoChange background-color of search input if disabled
Guillaume Gomez [Wed, 20 Nov 2019 11:57:47 +0000 (12:57 +0100)]
Change background-color of search input if disabled

4 years agoAuto merge of #66392 - estebank:trait-alias-ice, r=eddyb
bors [Wed, 20 Nov 2019 10:51:26 +0000 (10:51 +0000)]
Auto merge of #66392 - estebank:trait-alias-ice, r=eddyb

Do not ICE on trait aliases with missing obligations

Fix #65673.

4 years agorustdoc: fixes #64305: disable search field instead of hidding it
Maxime “pep” Buquet [Mon, 11 Nov 2019 15:54:45 +0000 (16:54 +0100)]
rustdoc: fixes #64305: disable search field instead of hidding it

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
4 years agoAuto merge of #66104 - yodaldevoid:generic-arg-disambiguation, r=petrochenkov
bors [Wed, 20 Nov 2019 03:07:39 +0000 (03:07 +0000)]
Auto merge of #66104 - yodaldevoid:generic-arg-disambiguation, r=petrochenkov

Generic arg disambiguation

Using the tactic suggested by @petrochenkov in https://github.com/rust-lang/rust/issues/60804#issuecomment-516769465 and on [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/generic.20argument.20disambiguation), this change checks type arguments to see if they are really incorrectly-parsed const arguments.

it should be noted that `segments.len() == 1 && segments[0].arg.is_none()` was reduced to `segments.len() == 1` as suggested by @petrochenkov in [zulip](https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/generic.20argument.20disambiguation/near/177848002). This change allowed a few more existing tests to have their braces removed.

There are a couple of "problems" with these changes that I should note. First, there was a regression in the error messages found in "src/test/ui/privacy-ns1.rs" and "src/test/ui/privacy-ns1.rs". Second, some braces were unable to be removed from "src/test/ui/const-generics/fn-const-param-infer.rs". Those on line 24 caused the statement to stop equating when removed, and those on line 20 cause a statement that should not equate to produce no error when removed.

I have not looked further into any of these issues yet, though I would be willing to look into them before landing this. I simply wanted to get some other eyes on this before going further.

Fixes #60804

cc @varkor @jplatte

4 years agoMove syntax_expand::config to rustc_parse::config
Mark Rousskov [Wed, 20 Nov 2019 02:35:11 +0000 (21:35 -0500)]
Move syntax_expand::config to rustc_parse::config

4 years agoBump Miri for panic unwinding support
Aaron Hill [Tue, 19 Nov 2019 21:33:57 +0000 (16:33 -0500)]
Bump Miri for panic unwinding support

4 years agoRevert expansion of impl HashStable for Frame.
Camille GILLOT [Fri, 15 Nov 2019 23:11:02 +0000 (00:11 +0100)]
Revert expansion of impl HashStable for Frame.

4 years agoFix derive syntax.
Camille GILLOT [Fri, 15 Nov 2019 20:23:34 +0000 (21:23 +0100)]
Fix derive syntax.

4 years agoFix project syntax.
Camille GILLOT [Mon, 11 Nov 2019 08:39:23 +0000 (09:39 +0100)]
Fix project syntax.

4 years agoDerive HashStable in librustc_mir.
Camille GILLOT [Sun, 10 Nov 2019 18:30:19 +0000 (19:30 +0100)]
Derive HashStable in librustc_mir.

4 years agoDerive HashStable more.
Camille GILLOT [Sun, 10 Nov 2019 17:41:09 +0000 (18:41 +0100)]
Derive HashStable more.

4 years agoMore HashStable.
Camille GILLOT [Sat, 9 Nov 2019 22:28:07 +0000 (23:28 +0100)]
More HashStable.

4 years agoHermitCore support is moved to sys/hermit, remove obsolete statement in sys/unix
Stefan Lankes [Tue, 19 Nov 2019 19:43:06 +0000 (20:43 +0100)]
HermitCore support is moved to sys/hermit, remove obsolete statement in sys/unix

4 years agoMore HashStable.
Camille GILLOT [Sat, 9 Nov 2019 22:17:42 +0000 (23:17 +0100)]
More HashStable.

4 years agoDerive HashStable in librustc.
Camille GILLOT [Sat, 9 Nov 2019 21:37:21 +0000 (22:37 +0100)]
Derive HashStable in librustc.

4 years agoRemove desugared `async-trait` example
Esteban Kuber [Tue, 19 Nov 2019 19:29:20 +0000 (11:29 -0800)]
Remove desugared `async-trait` example

4 years agoMark -Zgenerate-arange-section as TRACKED
Josh Stone [Tue, 19 Nov 2019 17:13:10 +0000 (09:13 -0800)]
Mark -Zgenerate-arange-section as TRACKED

4 years agoUpdate E0706.md
Dylan DPC [Tue, 19 Nov 2019 16:09:39 +0000 (17:09 +0100)]
Update E0706.md

4 years ago[RISCV] Disable Atomics on all Non-A RISC-V targets
Sam Elliott [Tue, 19 Nov 2019 15:29:43 +0000 (15:29 +0000)]
[RISCV] Disable Atomics on all Non-A RISC-V targets

4 years agoAuto merge of #66454 - cjgillot:lift, r=Zoxc
bors [Tue, 19 Nov 2019 15:24:09 +0000 (15:24 +0000)]
Auto merge of #66454 - cjgillot:lift, r=Zoxc

Derive Lift using a proc-macro

Based on #66384

r? @Zoxc

4 years agoRemove duplicate function
Aliaksandr Radzivanovich [Tue, 19 Nov 2019 13:12:30 +0000 (14:12 +0100)]
Remove duplicate function

Function source_name declared in file

  src/librustc_driver/lib.rs

is a duplicate of a function by the same name declared in file

  src/librustc/session/config.rs

4 years agoAuto merge of #66545 - Centril:rollup-xv2rx7v, r=Centril
bors [Tue, 19 Nov 2019 12:11:09 +0000 (12:11 +0000)]
Auto merge of #66545 - Centril:rollup-xv2rx7v, r=Centril

Rollup of 11 pull requests

Successful merges:

 - #66090 (Misc CI improvements)
 - #66155 (Add long error explanation for E0594)
 - #66239 (Suggest calling async closure when needed)
 - #66430 ([doc] Fix the source code highlighting on source comments)
 - #66431 (Fix 'type annotations needed' error with opaque types)
 - #66461 (Add explanation message for E0641)
 - #66493 (Add JohnTitor to rustc-guide toolstate notification list)
 - #66511 (std::error::Chain: remove Copy)
 - #66529 (resolve: Give derive helpers highest priority during resolution)
 - #66536 (Move the definition of `QueryResult` into `plumbing.rs`.)
 - #66538 (Remove compiler_builtins_lib feature from libstd)

Failed merges:

r? @ghost

4 years agoRollup merge of #66538 - dingelish:master, r=Centril
Mazdak Farrokhzad [Tue, 19 Nov 2019 12:10:26 +0000 (13:10 +0100)]
Rollup merge of #66538 - dingelish:master, r=Centril

Remove compiler_builtins_lib feature from libstd

Test if we can close #66368 by this patch.