]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoRefactor "wild constructor" construction
Nadrieril [Mon, 23 Sep 2019 15:37:42 +0000 (17:37 +0200)]
Refactor "wild constructor" construction

4 years agoExtract constructor application as a Constructor method
Nadrieril [Mon, 23 Sep 2019 15:36:42 +0000 (17:36 +0200)]
Extract constructor application as a Constructor method

4 years agoRemove duplicate logic in compute_missing_constructors
Nadrieril [Mon, 23 Sep 2019 14:37:01 +0000 (16:37 +0200)]
Remove duplicate logic in compute_missing_constructors

This is equivalent to the previous code in terms of performance. The
expensive path is clearly identical. The fast path is also the same,
because in both cases we loop until we get a non-empty `refined_ctors`,
and then stop there. So the new code doesn't compute anything more
than the previous did.

4 years agoRemove some redundancy
Nadrieril [Mon, 23 Sep 2019 14:07:23 +0000 (16:07 +0200)]
Remove some redundancy

4 years agoFactor out some pattern-stack related functions
Nadrieril [Fri, 1 Nov 2019 16:33:34 +0000 (16:33 +0000)]
Factor out some pattern-stack related functions

4 years agoAbstract out pattern stacks to make the code more legible
Nadrieril [Fri, 1 Nov 2019 15:44:58 +0000 (15:44 +0000)]
Abstract out pattern stacks to make the code more legible

4 years agoClarify and fix the explanation of the algorithm
Nadrieril [Mon, 23 Sep 2019 08:01:57 +0000 (10:01 +0200)]
Clarify and fix the explanation of the algorithm

There was a bit of confusion between individual patterns and lists of
patterns, and index mismatches linked to that. This introduces a
vocabulary of "pattern-stacks" to provide a clearer mental model of what
is happening. This also adds examples.

4 years agoRemove mention of old slice pattern syntax
Nadrieril [Thu, 26 Sep 2019 18:47:05 +0000 (20:47 +0200)]
Remove mention of old slice pattern syntax

4 years agotidy
Nadrieril [Sun, 27 Oct 2019 16:17:00 +0000 (16:17 +0000)]
tidy

4 years agoRun `rustfmt`
Nadrieril [Sat, 21 Sep 2019 11:49:14 +0000 (13:49 +0200)]
Run `rustfmt`

4 years agoAuto merge of #65541 - eddyb:spanned-inferred-outlives, r=nikomatsakis
bors [Sun, 27 Oct 2019 12:58:10 +0000 (12:58 +0000)]
Auto merge of #65541 - eddyb:spanned-inferred-outlives, r=nikomatsakis

rustc: add `Span`s to `inferred_outlives_of` predicates.

This would simplify #59789, and I suspect it has some potential in diagnostics (although we don't seem to use the predicate `Span`s much atm).

4 years agoAuto merge of #65519 - pnkfelix:issue-63438-trait-based-structural-match, r=matthewjasper
bors [Sun, 27 Oct 2019 09:35:12 +0000 (09:35 +0000)]
Auto merge of #65519 - pnkfelix:issue-63438-trait-based-structural-match, r=matthewjasper

trait-based structural match implementation

Moves from using a `#[structural_match]` attribute to using a marker trait (or pair of such traits, really) instead.

Fix #63438.

(This however does not remove the hacks that I believe were put into place to support the previous approach of injecting the attribute based on the presence of both derives... I have left that for follow-on work.)

4 years agoAuto merge of #65288 - estebank:point-at-assoc-type, r=nikomatsakis
bors [Sun, 27 Oct 2019 03:34:54 +0000 (03:34 +0000)]
Auto merge of #65288 - estebank:point-at-assoc-type, r=nikomatsakis

Point at associated type for some obligations

Partially address #57663.

4 years agoAuto merge of #65852 - flip1995:clippyup, r=Manishearth
bors [Sat, 26 Oct 2019 23:37:08 +0000 (23:37 +0000)]
Auto merge of #65852 - flip1995:clippyup, r=Manishearth

Update Clippy

Fixes https://github.com/rust-lang/rust/pull/65845#issuecomment-546633123

r? @Manishearth

4 years agoUpdate Clippy
flip1995 [Sat, 26 Oct 2019 21:02:23 +0000 (23:02 +0200)]
Update Clippy

4 years agoAuto merge of #65167 - hermitcore:rusty-hermit, r=alexcrichton
bors [Sat, 26 Oct 2019 19:35:59 +0000 (19:35 +0000)]
Auto merge of #65167 - hermitcore:rusty-hermit, r=alexcrichton

Redesign the interface to the unikernel HermitCore

We are developing the unikernel HermitCore, where the kernel is written in Rust and is already part of the Rust Standard Library. The interface between the standard library and the kernel based on a small C library. With this pull request, we remove completely the dependency to C and use lld as linker. Currently, the kernel will be linked to the application as static library, which is published at https://github.com/hermitcore/libhermit-rs.

We don’t longer support the C interface to the kernel. Consequently, we remove this part from the Rust Standard Library.

4 years agoAuto merge of #65845 - Centril:rollup-28jtjfc, r=Centril
bors [Sat, 26 Oct 2019 16:14:16 +0000 (16:14 +0000)]
Auto merge of #65845 - Centril:rollup-28jtjfc, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #65743 (rustc_typeck: don't record direct callees in generator_interior.)
 - #65761 (libsyntax: Enhance documentation of the AST module)
 - #65772 (Remove the last remaining READMEs)
 - #65773 (Increase spacing for suggestions in diagnostics)
 - #65791 (Adding doc on keyword continue)
 - #65824 (rustc: make DefPathData (and friends) Copy (now that it uses Symbol).)
 - #65828 (Derive Eq and Hash for SourceInfo again)
 - #65842 (Add more information on rustdoc search)

Failed merges:

 - #65825 (rustc: use IndexVec<DefIndex, T> instead of Vec<T>.)

r? @ghost

4 years agoRollup merge of #65842 - GuillaumeGomez:more-search-information, r=Dylan-DPC
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:51 +0000 (14:17 +0200)]
Rollup merge of #65842 - GuillaumeGomez:more-search-information, r=Dylan-DPC

Add more information on rustdoc search

Fixes #65735.

r? @kinnison

4 years agoRollup merge of #65828 - bjorn3:add_source_info_eq_hash, r=petrochenkov
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:50 +0000 (14:17 +0200)]
Rollup merge of #65828 - bjorn3:add_source_info_eq_hash, r=petrochenkov

Derive Eq and Hash for SourceInfo again

In https://github.com/bjorn3/rustc_codegen_cranelift/blob/75c24b9c9677600422ec86fa9f4c78fe3678d2ce/src/common.rs#L368 I store it in a `indexmap::IndexSet`, which requires `Eq` and `Hash`. Unfortunately they were removed in https://github.com/rust-lang/rust/pull/65647, so I can't update to latest nightly.

4 years agoRollup merge of #65824 - eddyb:def-key-copy, r=varkor
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:48 +0000 (14:17 +0200)]
Rollup merge of #65824 - eddyb:def-key-copy, r=varkor

rustc: make DefPathData (and friends) Copy (now that it uses Symbol).

Spotted this while working on something else.

4 years agoRollup merge of #65791 - dorfsmay:doc_keyword_continue, r=Mark-Simulacrum
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:46 +0000 (14:17 +0200)]
Rollup merge of #65791 - dorfsmay:doc_keyword_continue, r=Mark-Simulacrum

Adding doc on keyword continue

Partial solution of issue #34601.

4 years agoRollup merge of #65773 - estebank:sugg-whitespace, r=Centril
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:45 +0000 (14:17 +0200)]
Rollup merge of #65773 - estebank:sugg-whitespace, r=Centril

Increase spacing for suggestions in diagnostics

Make the spacing between the code snippet and verbose structured
suggestions consistent with note and help messages.

r? @Centril

4 years agoRollup merge of #65772 - mark-i-m:final-readmes, r=nikomatsakis
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:43 +0000 (14:17 +0200)]
Rollup merge of #65772 - mark-i-m:final-readmes, r=nikomatsakis

Remove the last remaining READMEs

cc https://github.com/rust-lang/rustc-guide/pull/481

closes #48478

r? @nikomatsakis

4 years agoRollup merge of #65761 - popzxc:document-ast, r=petrochenkov
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:42 +0000 (14:17 +0200)]
Rollup merge of #65761 - popzxc:document-ast, r=petrochenkov

libsyntax: Enhance documentation of the AST module

This PR enhances documentation state to the `libsyntax/ast.rs` (as initiative caused by [rustc-guide#474](https://github.com/rust-lang/rustc-guide/issues/474)), by adding:
- Module documentation.
- Doc-comments (and a bit of usual comments) in non-obvious (as for me) places.
- Minor style fixes to improve module readability.

4 years agoRollup merge of #65743 - eddyb:generator-on-call, r=matthewjasper
Mazdak Farrokhzad [Sat, 26 Oct 2019 12:17:40 +0000 (14:17 +0200)]
Rollup merge of #65743 - eddyb:generator-on-call, r=matthewjasper

rustc_typeck: don't record direct callees in generator_interior.

For expressions like `f(g().await)` we were recording `f` as needing to be kept in a temporary (and therefore be tracked by the generator type) across the suspend, even if a function/method path.
However, this is never needed, and can cause issues with complex function types (see #65244).

cc @Zoxc @nikomatsakis

4 years agoAdd more information on search
Guillaume Gomez [Sat, 26 Oct 2019 09:26:02 +0000 (11:26 +0200)]
Add more information on search

4 years agoAuto merge of #65758 - RalfJung:miri, r=oli-obk
bors [Sat, 26 Oct 2019 09:19:48 +0000 (09:19 +0000)]
Auto merge of #65758 - RalfJung:miri, r=oli-obk

update Miri

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

4 years agoupdate miri
Ralf Jung [Sat, 26 Oct 2019 08:14:56 +0000 (10:14 +0200)]
update miri

4 years agouse plain cargo to install xargo
Ralf Jung [Fri, 25 Oct 2019 07:22:17 +0000 (09:22 +0200)]
use plain cargo to install xargo

4 years agobootstrap now takes care of installing xargo
Ralf Jung [Thu, 24 Oct 2019 13:39:20 +0000 (15:39 +0200)]
bootstrap now takes care of installing xargo

4 years agoupdate Miri
Ralf Jung [Thu, 24 Oct 2019 10:04:05 +0000 (12:04 +0200)]
update Miri

4 years agolibsyntax: Document ast module
Igor Aleksanov [Thu, 24 Oct 2019 13:11:43 +0000 (16:11 +0300)]
libsyntax: Document ast module

Apply review suggestions

Remove links in the module docs

Flatten imports

Apply review suggestions

Remove useless comments

Fix nits

4 years agoAuto merge of #63812 - eddyb:promo-sanity, r=oli-obk
bors [Sat, 26 Oct 2019 00:11:36 +0000 (00:11 +0000)]
Auto merge of #63812 - eddyb:promo-sanity, r=oli-obk

rustc_mir: double-check const-promotion candidates for sanity.

Previously, const promotion involved tracking information about the value in a MIR local (or any part of the computation leading up to that value), aka "qualifs", in a quite stateful manner, which is hard to extend to arbitrary CFGs without a dataflow pass.

However, the nature of the promotion we do is that it's effectively an SSA-like "tree" (or DAG, really), of assigned-once locals - which is how we can take them from the original MIR in the first place.
This structure means that the subset of the MIR responsible for computing any given part of a const-promoted value is readily analyzable by walking that tree/DAG.

This PR implements such an analysis in `promote_consts`, reusing the `HasMutInterior` / `NeedsDrop` computation from `qualify_consts`, but reimplementing the equivalent of `IsNotPromotable` / `IsNotImplicitlyPromotable`.

Eventually we should be able to remove `IsNotPromotable` / `IsNotImplicitlyPromotable` from `qualify_consts`, which will simplify @ecstatic-morse's dataflow-based const-checking efforts.

But currently this is mainly for a crater check-only run - it will compare the results from the old promotion collection and the new promotion validation and ICE if they don't match.

r? @oli-obk

4 years agorustc_mir: use the new validator's Qualif in promotion.
Eduard-Mihai Burtescu [Mon, 21 Oct 2019 18:18:12 +0000 (21:18 +0300)]
rustc_mir: use the new validator's Qualif in promotion.

4 years agorustc_mir: double-check const-promotion candidates for sanity.
Eduard-Mihai Burtescu [Wed, 21 Aug 2019 20:31:58 +0000 (23:31 +0300)]
rustc_mir: double-check const-promotion candidates for sanity.

4 years agoAuto merge of #65826 - JohnTitor:rollup-mr6crka, r=JohnTitor
bors [Fri, 25 Oct 2019 20:41:28 +0000 (20:41 +0000)]
Auto merge of #65826 - JohnTitor:rollup-mr6crka, r=JohnTitor

Rollup of 6 pull requests

Successful merges:

 - #65705 (Add {String,Vec}::into_raw_parts)
 - #65749 (Insurance policy in case `iter.size_hint()` lies.)
 - #65799 (Fill tracking issue number for `array_value_iter`)
 - #65800 (self-profiling: Update measureme to 0.4.0 and remove non-RAII methods from profiler.)
 - #65806 (Add [T]::as_ptr_range() and [T]::as_mut_ptr_range().)
 - #65810 (SGX: Clear additional flag on enclave entry)

Failed merges:

r? @ghost

4 years agoDerive Eq and Hash for SourceInfo again
bjorn3 [Fri, 25 Oct 2019 19:11:29 +0000 (21:11 +0200)]
Derive Eq and Hash for SourceInfo again

4 years agoRollup merge of #65810 - raoulstrackx:ac_mitigation, r=nagisa
Yuki Okushi [Fri, 25 Oct 2019 17:46:02 +0000 (02:46 +0900)]
Rollup merge of #65810 - raoulstrackx:ac_mitigation, r=nagisa

SGX: Clear additional flag on enclave entry

An attacker could set both the AC flag in CR0 as in rflags. This causes the enclave to perform an AEX upon a misaligned memory access, and an attacker learns some information about the internal enclave state.
The AC flag in rflags is copied from userspace upon an enclave entry. Upon AEX it is copied and later restored. This patch forces the rflag.AC bit to be reset right after an enter.

4 years agoRollup merge of #65806 - fusion-engineering-forks:slice-ptr-range, r=Centril
Yuki Okushi [Fri, 25 Oct 2019 17:46:01 +0000 (02:46 +0900)]
Rollup merge of #65806 - fusion-engineering-forks:slice-ptr-range, r=Centril

Add [T]::as_ptr_range() and [T]::as_mut_ptr_range().

Implementation of https://github.com/rust-lang/rfcs/pull/2791

4 years agoRollup merge of #65800 - michaelwoerister:measureme-0.4.0, r=wesleywiser
Yuki Okushi [Fri, 25 Oct 2019 17:45:59 +0000 (02:45 +0900)]
Rollup merge of #65800 - michaelwoerister:measureme-0.4.0, r=wesleywiser

self-profiling: Update measureme to 0.4.0 and remove non-RAII methods from profiler.

This PR removes all non-RAII based profiling methods from `SelfProfilerRef` :tada:
It also delegates the `TimingGuard` implementation to `measureme`, now that that is available there.

r? @wesleywiser

4 years agoRollup merge of #65799 - LukasKalbertodt:fill-array-value-iter-tracking-issue, r...
Yuki Okushi [Fri, 25 Oct 2019 17:45:58 +0000 (02:45 +0900)]
Rollup merge of #65799 - LukasKalbertodt:fill-array-value-iter-tracking-issue, r=Centril

Fill tracking issue number for `array_value_iter`

Thanks for [noticing](https://github.com/rust-lang/rust/pull/62959#discussion_r338930448)!

r? @Centril

4 years agoRollup merge of #65749 - Centril:insurance-policy, r=RalfJung
Yuki Okushi [Fri, 25 Oct 2019 17:45:57 +0000 (02:45 +0900)]
Rollup merge of #65749 - Centril:insurance-policy, r=RalfJung

Insurance policy in case `iter.size_hint()` lies.

Follow up to https://github.com/rust-lang/rust/pull/64949/files#r334235076.
(If the perf impact is bad we can use `debug_assert!` instead.)

The good news is that the UI tests pass locally so `iter.size_hint()` seems to be honest *thus far*.
On the other hand, with the status quo we do not have an insurance policy should that change in some case. This is problematic because a) this could possibly make some program be accepted which shouldn't, b) the compiler itself could have memory unsafety if the correctness of the iterator is assumed in `unsafe { ... }` code (even though the blame lies with the `unsafe { ... }` block in question.)

r? @RalfJung
cc @nnethercote

4 years agoRollup merge of #65705 - shepmaster:vec-into-raw, r=SimonSapin
Yuki Okushi [Fri, 25 Oct 2019 17:45:56 +0000 (02:45 +0900)]
Rollup merge of #65705 - shepmaster:vec-into-raw, r=SimonSapin

Add {String,Vec}::into_raw_parts

Aspects to address:

- [x] Create a tracking issue
  - #65816

4 years agorustc: replace a few `.cloned()` with `.copied()`.
Eduard-Mihai Burtescu [Fri, 25 Oct 2019 17:21:37 +0000 (20:21 +0300)]
rustc: replace a few `.cloned()` with `.copied()`.

4 years agorustc: make DefPathData (and friends) Copy (now that it uses Symbol).
Eduard-Mihai Burtescu [Fri, 25 Oct 2019 17:03:17 +0000 (20:03 +0300)]
rustc: make DefPathData (and friends) Copy (now that it uses Symbol).

4 years agoFix slice::as_ptr_range doctest.
Mara Bos [Fri, 25 Oct 2019 15:22:03 +0000 (17:22 +0200)]
Fix slice::as_ptr_range doctest.

4 years agoTake out an insurance policy in case `iter.size_hint()`
Mazdak Farrokhzad [Thu, 24 Oct 2019 01:21:23 +0000 (03:21 +0200)]
Take out an insurance policy in case `iter.size_hint()`
lies, underreporting the number of elements.

4 years agoAdd {String,Vec}::into_raw_parts
Jake Goulding [Tue, 22 Oct 2019 16:48:52 +0000 (12:48 -0400)]
Add {String,Vec}::into_raw_parts

4 years agoUse ManuallyDrop in examples for {Vec,String}::from_raw_parts
Jake Goulding [Tue, 22 Oct 2019 19:40:22 +0000 (15:40 -0400)]
Use ManuallyDrop in examples for {Vec,String}::from_raw_parts

4 years agoRemove unneeded pointer casting
Jake Goulding [Tue, 22 Oct 2019 17:54:09 +0000 (13:54 -0400)]
Remove unneeded pointer casting

4 years agoforgot pushfq/popqfq: fixed
Raoul Strackx [Fri, 25 Oct 2019 14:06:13 +0000 (16:06 +0200)]
forgot pushfq/popqfq: fixed

4 years agoExplain why pointer::add in slice::as_ptr_range is safe.
Mara Bos [Fri, 25 Oct 2019 13:21:00 +0000 (15:21 +0200)]
Explain why pointer::add in slice::as_ptr_range is safe.

4 years agocleaning up code
Raoul Strackx [Fri, 25 Oct 2019 13:44:07 +0000 (15:44 +0200)]
cleaning up code

4 years agoremoved unnecessary push
Raoul Strackx [Fri, 25 Oct 2019 13:27:48 +0000 (15:27 +0200)]
removed unnecessary push

4 years agoUpdate test output.
Felix S. Klock II [Fri, 18 Oct 2019 09:37:05 +0000 (11:37 +0200)]
Update test output.

(My inference is that the number changed from 4 to 5 because `derive(PartialEq)` now injects an extra trait impl before.)

4 years agoReview feedback: elaborated comments.
Felix S. Klock II [Fri, 25 Oct 2019 12:47:04 +0000 (14:47 +0200)]
Review feedback: elaborated comments.

4 years agoMigrate from `#[structural_match]` attribute a lang-item trait.
Felix S. Klock II [Thu, 17 Oct 2019 08:54:37 +0000 (10:54 +0200)]
Migrate from `#[structural_match]` attribute a lang-item trait.

(Or more precisely, a pair of such traits: one for `derive(PartialEq)` and one
for `derive(Eq)`.)

((The addition of the second marker trait, `StructuralEq`, is largely a hack to
work-around `fn (&T)` not implementing `PartialEq` and `Eq`; see also issue
rust-lang/rust#46989; otherwise I would just check if `Eq` is implemented.))

Note: this does not use trait fulfillment error-reporting machinery; it just
uses the trait system to determine if the ADT was tagged or not. (Nonetheless, I
have kept an `on_unimplemented` message on the new trait for structural_match
check, even though it is currently not used.)

Note also: this does *not* resolve the ICE from rust-lang/rust#65466, as noted
in a comment added in this commit. Further work is necessary to resolve that and
other problems with the structural match checking, especially to do so without
breaking stable code (adapted from test fn-ptr-is-structurally-matchable.rs):

```rust
fn r_sm_to(_: &SM) {}

fn main() {
    const CFN6: Wrap<fn(&SM)> = Wrap(r_sm_to);
    let input: Wrap<fn(&SM)> = Wrap(r_sm_to);
    match Wrap(input) {
        Wrap(CFN6) => {}
        Wrap(_) => {}
    };
}
```

where we would hit a problem with the strategy of unconditionally checking for
`PartialEq` because the type `for <'a> fn(&'a SM)` does not currently even
*implement* `PartialEq`.

----

added review feedback:
* use an or-pattern
* eschew `return` when tail position will do.
* don't need fresh_expansion; just add `structural_match` to appropriate `allow_internal_unstable` attributes.

also fixed example in doc comment so that it actually compiles.

4 years agoAdd slice_ptr_range tracking issue number.
Mara Bos [Fri, 25 Oct 2019 12:33:07 +0000 (14:33 +0200)]
Add slice_ptr_range tracking issue number.

4 years agoAdd [T]::as_ptr_range() and [T]::as_mut_ptr_range().
Mara Bos [Fri, 25 Oct 2019 12:07:08 +0000 (14:07 +0200)]
Add [T]::as_ptr_range() and [T]::as_mut_ptr_range().

See https://github.com/rust-lang/rfcs/pull/2791 for motivation.

4 years agoAuto merge of #65804 - Centril:rollup-arlxgch, r=Centril
bors [Fri, 25 Oct 2019 11:13:30 +0000 (11:13 +0000)]
Auto merge of #65804 - Centril:rollup-arlxgch, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #64639 (Stabilize `#[non_exhaustive]` (RFC 2008))
 - #65074 (Fix the start/end byte positions in the compiler JSON output)
 - #65315 (Intern place projection)
 - #65685 (Fix check of `statx` and handle EPERM)
 - #65731 (Prevent unnecessary allocation in PathBuf::set_extension.)
 - #65740 (Fix default "disable-shortcuts" feature value)
 - #65787 (move panictry! to where it is used.)
 - #65789 (move Attribute::with_desugared_doc to librustdoc)
 - #65790 (move report_invalid_macro_expansion_item to item.rs)

Failed merges:

r? @ghost

4 years agoRollup merge of #65790 - Centril:move-report-invalid, r=davidtwco
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:55 +0000 (13:12 +0200)]
Rollup merge of #65790 - Centril:move-report-invalid, r=davidtwco

move report_invalid_macro_expansion_item to item.rs

From https://github.com/rust-lang/rust/pull/65324.

r? @Mark-Simulacrum

4 years agoRollup merge of #65789 - Centril:with-desugared-doc, r=davidtwco
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:54 +0000 (13:12 +0200)]
Rollup merge of #65789 - Centril:with-desugared-doc, r=davidtwco

move Attribute::with_desugared_doc to librustdoc

From https://github.com/rust-lang/rust/pull/65324.

r? @varkor

4 years agoRollup merge of #65787 - Centril:panictry, r=davidtwco
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:53 +0000 (13:12 +0200)]
Rollup merge of #65787 - Centril:panictry, r=davidtwco

move panictry! to where it is used.

From https://github.com/rust-lang/rust/pull/65324

r? @davidtwco

4 years agoRollup merge of #65740 - GuillaumeGomez:fix-disable-shortcut-feature, r=Dylan-DPC
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:51 +0000 (13:12 +0200)]
Rollup merge of #65740 - GuillaumeGomez:fix-disable-shortcut-feature, r=Dylan-DPC

Fix default "disable-shortcuts" feature value

Follow-up of https://github.com/rust-lang/rust/pull/65656

It fixes the bad handling of the default value of the feature (which would disable shortcut by default, which is bad!).

r? @Dylan-DPC
cc @kinnison

4 years agoRollup merge of #65731 - fusion-engineering-forks:set-extension, r=dtolnay
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:50 +0000 (13:12 +0200)]
Rollup merge of #65731 - fusion-engineering-forks:set-extension, r=dtolnay

Prevent unnecessary allocation in PathBuf::set_extension.

It was allocating a new `OsString` that was immediately dropped after using it with `set_file_name`. Now it directly changes the extension in the original buffer, without touching the rest of the file name or allocating a temporary string.

4 years agoRollup merge of #65685 - oxalica:statx-eperm, r=alexcrichton
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:48 +0000 (13:12 +0200)]
Rollup merge of #65685 - oxalica:statx-eperm, r=alexcrichton

Fix check of `statx` and handle EPERM

Should fix #65662

https://github.com/rust-lang/rust/issues/65662#issuecomment-544593939
> I think a reasonable solution might be to do something like try to stat AT_CWD initially and if that fails with EPERM or ENOSYS we disable the syscall entirely, otherwise it's cached as always good to use.

r? @alexcrichton

4 years agoRollup merge of #65315 - spastorino:intern-place-projection, r=oli-obk
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:46 +0000 (13:12 +0200)]
Rollup merge of #65315 - spastorino:intern-place-projection, r=oli-obk

Intern place projection

This should sit on top of https://github.com/rust-lang/rust/pull/65197. After that one merged, I'm gonna rebase on top of it.

The important commits are the last three and there's a bunch of code repetition that I'm going to remove but for that I need to refactor some things that probably need to be added before this PR.

Anyway this work helps as is because we can run perf tests :).

r? @oli-obk /cc @nikomatsakis

4 years agoRollup merge of #65074 - Rantanen:json-byte-pos, r=matklad
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:45 +0000 (13:12 +0200)]
Rollup merge of #65074 - Rantanen:json-byte-pos, r=matklad

Fix the start/end byte positions in the compiler JSON output

Track the changes made during normalization in the `SourceFile` and use this information to correct the `start_byte` and `end_byte` fields in the JSON output.

This should ensure the start/end byte fields can be used to index the original file, even if Rust normalized the source code for parsing purposes. Both CRLF to LF and BOM removal are handled with this one.

The rough plan was discussed with @matklad in rust-lang-nursery/rustfix#176 - although I ended up going with `u32` offset tracking so I wouldn't need to deal with `u32 + i32` arithmetics when applying the offset to the span byte positions.

Fixes #65029

4 years agoRollup merge of #64639 - davidtwco:rfc-2008-stabilization, r=Centril
Mazdak Farrokhzad [Fri, 25 Oct 2019 11:12:43 +0000 (13:12 +0200)]
Rollup merge of #64639 - davidtwco:rfc-2008-stabilization, r=Centril

Stabilize `#[non_exhaustive]` (RFC 2008)

Fixes #44109.

This pull request stabilizes the `#[non_exhaustive]` attribute, which is used to indicate that a type will have more fields / variants added in the future. It can be applied to `struct`s, `enum`s and `enum` variants. See https://github.com/rust-lang/rust/issues/44109#issuecomment-533356866 for the stabilization report.

r? @Centril

4 years agorefactoring: move const_to_pat code into its own submodule.
Felix S. Klock II [Fri, 25 Oct 2019 09:39:12 +0000 (11:39 +0200)]
refactoring: move const_to_pat code into its own submodule.

4 years agoFill tracking issue number for `array_value_iter` and fix Rust version
Lukas Kalbertodt [Fri, 25 Oct 2019 08:50:21 +0000 (10:50 +0200)]
Fill tracking issue number for `array_value_iter` and fix Rust version

4 years agorefactor: move structural_match analysis into its own module.
Felix S. Klock II [Fri, 25 Oct 2019 09:27:36 +0000 (11:27 +0200)]
refactor: move structural_match analysis into its own module.

4 years agoself-profiling: Switch query-blocking measurements to RAII-style API.
Michael Woerister [Thu, 24 Oct 2019 15:37:48 +0000 (17:37 +0200)]
self-profiling: Switch query-blocking measurements to RAII-style API.

4 years agofix typo in filename.
Felix S. Klock II [Tue, 8 Oct 2019 13:55:12 +0000 (15:55 +0200)]
fix typo in filename.

4 years agofix typo in test.
Felix S. Klock II [Tue, 8 Oct 2019 13:54:37 +0000 (15:54 +0200)]
fix typo in test.

4 years agowith_desugared_doc: correctly refer to `attr` instead of `self`
Mazdak Farrokhzad [Fri, 25 Oct 2019 08:43:08 +0000 (10:43 +0200)]
with_desugared_doc: correctly refer to `attr` instead of `self`

Co-Authored-By: David Wood <Q0KPU0H1YOEPHRY1R2SN5B5RL@david.davidtw.co>
4 years agoRFC 2008: Stabilization
David Wood [Fri, 20 Sep 2019 20:09:39 +0000 (21:09 +0100)]
RFC 2008: Stabilization

This commit stabilizes RFC 2008 (#44109) by removing the feature gate.

Signed-off-by: David Wood <david@davidtw.co>
4 years agorerun cargo to generate lock file
Stefan Lankes [Fri, 25 Oct 2019 08:24:14 +0000 (10:24 +0200)]
rerun cargo to generate lock file

4 years agoupdate Cargo.lock
Stefan Lankes [Fri, 25 Oct 2019 08:03:41 +0000 (10:03 +0200)]
update Cargo.lock

4 years agoAuto merge of #65764 - Manishearth:clippyup, r=Manishearth
bors [Fri, 25 Oct 2019 07:47:13 +0000 (07:47 +0000)]
Auto merge of #65764 - Manishearth:clippyup, r=Manishearth

Update clippy

Fixes #65754

r? @ghost

4 years agoMerge branch 'master' into rusty-hermit, resolve conflicts
Stefan Lankes [Fri, 25 Oct 2019 07:09:55 +0000 (09:09 +0200)]
Merge branch 'master' into rusty-hermit, resolve conflicts

4 years agoAuto merge of #65793 - Centril:rollup-v40xke9, r=Centril
bors [Fri, 25 Oct 2019 04:24:40 +0000 (04:24 +0000)]
Auto merge of #65793 - Centril:rollup-v40xke9, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #62959 (Add by-value iterator for arrays )
 - #65390 (Add long error explanation for E0576)
 - #65408 (reorder config.toml.example options and add one missing option)
 - #65414 (ignore uninhabited non-exhaustive variant fields)
 - #65666 (Deprecated proc_macro doesn't trigger warning on build library)
 - #65742 (Pre-expansion gate most of the things)
 - #65747 (Adjust the tracking issue for `untagged_unions`.)
 - #65763 (Changed APIT with explicit generic args span to specific arg spans)
 - #65775 (Fix more `ReEmpty` ICEs)

Failed merges:

 - #65519 (trait-based structural match implementation)

r? @ghost

4 years agoRollup merge of #65775 - matthewjasper:reempty, r=pnkfelix
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:14 +0000 (06:18 +0200)]
Rollup merge of #65775 - matthewjasper:reempty, r=pnkfelix

Fix more `ReEmpty` ICEs

closes #65553

r? @pnkfelix

4 years agoRollup merge of #65763 - ObsidianMinor:diag/65642, r=varkor
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:12 +0000 (06:18 +0200)]
Rollup merge of #65763 - ObsidianMinor:diag/65642, r=varkor

Changed APIT with explicit generic args span to specific arg spans

Fixes #65642.

4 years agoRollup merge of #65747 - Centril:union-issue-fix, r=varkor
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:11 +0000 (06:18 +0200)]
Rollup merge of #65747 - Centril:union-issue-fix, r=varkor

Adjust the tracking issue for `untagged_unions`.

Makes https://github.com/rust-lang/rust/issues/55149 the new tracking issue for `untagged_unions`.
Closes https://github.com/rust-lang/rust/issues/32836 which is the old tracking issue.

r? @varkor

4 years agoRollup merge of #65742 - Centril:gate-pre-expansion-subset, r=davidtwco
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:09 +0000 (06:18 +0200)]
Rollup merge of #65742 - Centril:gate-pre-expansion-subset, r=davidtwco

Pre-expansion gate most of the things

This is a subset of https://github.com/rust-lang/rust/pull/64672. A crater run has already been done and this PR implements conclusions according to https://github.com/rust-lang/rust/pull/64672#issuecomment-542703363.

r? @davidtwco
cc @petrochenkov

4 years agoRollup merge of #65666 - XiangQingW:proc_macro, r=petrochenkov
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:08 +0000 (06:18 +0200)]
Rollup merge of #65666 - XiangQingW:proc_macro, r=petrochenkov

Deprecated proc_macro doesn't trigger warning on build library

Fix #65189

4 years agoRollup merge of #65414 - davidtwco:issue-65157-non-exhaustive-always-useful, r=varkor
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:06 +0000 (06:18 +0200)]
Rollup merge of #65414 - davidtwco:issue-65157-non-exhaustive-always-useful, r=varkor

ignore uninhabited non-exhaustive variant fields

Fixes #65157.

This PR modifies the uninhabitedness checking so that the fields of
a non-exhaustive variant (which is not local) are ignored if they are
uninhabited. This is an improvement over the previous behaviour which
considered all non-local non-exhaustive variants useful because
unreachable patterns are now detected.

r? @arielb1
cc @varkor

4 years agoRollup merge of #65408 - guanqun:remove-rust-optimize, r=Mark-Simulacrum
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:04 +0000 (06:18 +0200)]
Rollup merge of #65408 - guanqun:remove-rust-optimize, r=Mark-Simulacrum

reorder config.toml.example options and add one missing option

r? @Mark-Simulacrum

4 years agoRollup merge of #65390 - GuillaumeGomez:long-err-explanation-E0576, r=matthewjasper...
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:02 +0000 (06:18 +0200)]
Rollup merge of #65390 - GuillaumeGomez:long-err-explanation-E0576, r=matthewjasper,kinnison

Add long error explanation for E0576

Part of #61137.

4 years agoRollup merge of #62959 - LukasKalbertodt:array-value-iter, r=scottmcm
Mazdak Farrokhzad [Fri, 25 Oct 2019 04:18:01 +0000 (06:18 +0200)]
Rollup merge of #62959 - LukasKalbertodt:array-value-iter, r=scottmcm

Add by-value iterator for arrays

This adds an iterator that can iterate over arrays by value, yielding all elements by value. However, **this PR does _not_ add a corresponding `IntoIterator` impl for arrays**. The `IntoIterator` impl needs some discussion about backwards-compatibility that should take place in a separate PR. With this patch, this code should work (but there is currently still a bug):

```rust
#![feature(array_value_iter)]
use std::array::IntoIter;

let arr = [1, 2, 3];
for x in IntoIter::new(arr) {
    println!("{}", x);
}
```

**TODO**:
- [x] Get initial feedback
- [x] Add tests
- [x] Figure out why stage1 produces weird bugs ([comment](https://github.com/rust-lang/rust/pull/62959#issuecomment-516016524))
- [x] Add UI tests as mentioned [here](https://github.com/rust-lang/rust/pull/62959#discussion_r307061894) (will do that soon-ish)
- [x] Fix [this new bug](https://github.com/rust-lang/rust/pull/62959#issuecomment-544732159)

**Notes for reviewers**
- Is the use of `MaybeUninit` correct here? I think it has to be used due to the `Clone` impl which has to fill the dead array elements with something, but cannot fill it with a correct instance.
- Are the unit tests sufficient?

CC #25725

4 years agoAdding doc on keyword continue
Yves Dorfsman [Fri, 25 Oct 2019 03:35:16 +0000 (21:35 -0600)]
Adding doc on keyword continue

4 years agomove report_invalid_macro_expansion_item to item.rs
Mazdak Farrokhzad [Fri, 25 Oct 2019 02:55:51 +0000 (04:55 +0200)]
move report_invalid_macro_expansion_item to item.rs

4 years agomove Attribute::with_desugared_doc to librustdoc
Mazdak Farrokhzad [Fri, 11 Oct 2019 12:01:02 +0000 (14:01 +0200)]
move Attribute::with_desugared_doc to librustdoc

4 years agomove panictry! to where it is used.
Mazdak Farrokhzad [Fri, 11 Oct 2019 16:52:09 +0000 (18:52 +0200)]
move panictry! to where it is used.

4 years agoAuto merge of #65771 - Centril:rollup-upfsvrb, r=Centril
bors [Fri, 25 Oct 2019 00:40:55 +0000 (00:40 +0000)]
Auto merge of #65771 - Centril:rollup-upfsvrb, r=Centril

Rollup of 8 pull requests

Successful merges:

 - #65625 (Turn crate store into a resolver output)
 - #65627 (Forbid non-`structural_match` types in const generics)
 - #65710 (Update cargo)
 - #65729 (Update test cases for vxWorks)
 - #65746 (Tweak format string error to point at arguments always)
 - #65753 (Don't assert for different instance on impl trait alias)
 - #65755 (Avoid ICE when adjusting bad self ty)
 - #65766 (Update hashbrown to 0.6.2)

Failed merges:

r? @ghost

4 years agoreview comment: deduplicate logic
Esteban Küber [Thu, 24 Oct 2019 22:44:43 +0000 (15:44 -0700)]
review comment: deduplicate logic

4 years agoFix more `ReEmpty` ICEs
Matthew Jasper [Sun, 20 Oct 2019 21:08:44 +0000 (22:08 +0100)]
Fix more `ReEmpty` ICEs

4 years agoIncrease spacing for suggestions in diagnostics
Esteban Küber [Thu, 24 Oct 2019 05:20:58 +0000 (22:20 -0700)]
Increase spacing for suggestions in diagnostics

Make the spacing between the code snippet and verbose structured
suggestions consistent with note and help messages.

4 years agoremove the last remaining READMEs
Mark Mansi [Thu, 24 Oct 2019 18:32:54 +0000 (13:32 -0500)]
remove the last remaining READMEs