]> git.lizzy.rs Git - rust.git/log
rust.git
5 years agorewrite the test to workaround #51525
Niko Matsakis [Tue, 9 Jul 2019 10:57:52 +0000 (06:57 -0400)]
rewrite the test to workaround #51525

5 years agoNormalize projections in opaque types
Jonas Schievink [Wed, 3 Jul 2019 20:20:16 +0000 (22:20 +0200)]
Normalize projections in opaque types

5 years agoAuto merge of #62335 - Mark-Simulacrum:rollup-0pcaz5a, r=Mark-Simulacrum
bors [Wed, 3 Jul 2019 14:29:08 +0000 (14:29 +0000)]
Auto merge of #62335 - Mark-Simulacrum:rollup-0pcaz5a, r=Mark-Simulacrum

Rollup of 15 pull requests

Successful merges:

 - #62021 (MSVC link output improve)
 - #62064 (nth_back for chunks_exact)
 - #62128 (Adjust warning of -C extra-filename with -o.)
 - #62161 (Add missing links for TryFrom docs)
 - #62183 (std: Move a process test out of libstd)
 - #62186 (Add missing type urls in Into trait)
 - #62196 (Add Vec::leak)
 - #62199 (import gdb for explicit access to gdb.current_objfile())
 - #62229 (Enable intptrcast for explicit casts)
 - #62250 (Improve box clone doctests to ensure the documentation is valid)
 - #62255 (Switch tracking issue for `#![feature(slice_patterns)]`)
 - #62285 (Fix michaelwoerister's mailmap)
 - #62304 (HashMap is UnwindSafe)
 - #62319 (Fix mismatching Kleene operators)
 - #62327 (Fixed document bug, those replaced each other)

Failed merges:

r? @ghost

5 years agoRollup merge of #62327 - Flast:patch-1, r=Mark-Simulacrum
Mark Rousskov [Wed, 3 Jul 2019 13:59:31 +0000 (09:59 -0400)]
Rollup merge of #62327 - Flast:patch-1, r=Mark-Simulacrum

Fixed document bug, those replaced each other

Originally reported by #57686, introduced by #58005

5 years agoRollup merge of #62319 - ia0:fix_kleene, r=petrochenkov
Mark Rousskov [Wed, 3 Jul 2019 13:59:30 +0000 (09:59 -0400)]
Rollup merge of #62319 - ia0:fix_kleene, r=petrochenkov

Fix mismatching Kleene operators

5 years agoRollup merge of #62304 - SimonSapin:safe, r=eddyb
Mark Rousskov [Wed, 3 Jul 2019 13:59:28 +0000 (09:59 -0400)]
Rollup merge of #62304 - SimonSapin:safe, r=eddyb

HashMap is UnwindSafe

Fixes https://github.com/rust-lang/rust/issues/62301, a regression in 1.36.0-pre which was caused by hashbrown using `NonZero<T>` where the older hashmap used `Unique<T>`.

5 years agoRollup merge of #62285 - Mark-Simulacrum:mailmap-mw, r=Centril
Mark Rousskov [Wed, 3 Jul 2019 13:59:27 +0000 (09:59 -0400)]
Rollup merge of #62285 - Mark-Simulacrum:mailmap-mw, r=Centril

Fix michaelwoerister's mailmap

Noticed while going through some changes to thanks.

cc @michaelwoerister
r? @Centril

5 years agoRollup merge of #62255 - Centril:slice-patterns-change-issue, r=varkor
Mark Rousskov [Wed, 3 Jul 2019 13:59:25 +0000 (09:59 -0400)]
Rollup merge of #62255 - Centril:slice-patterns-change-issue, r=varkor

Switch tracking issue for `#![feature(slice_patterns)]`

Switches the tracking issue for `#![feature(slice_patterns)]` to a fresh one in https://github.com/rust-lang/rust/issues/62254 due to new RFCs.

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

r? @varkor

5 years agoRollup merge of #62250 - czipperz:improve-box-clone-doctests, r=GuillaumeGomez
Mark Rousskov [Wed, 3 Jul 2019 13:59:24 +0000 (09:59 -0400)]
Rollup merge of #62250 - czipperz:improve-box-clone-doctests, r=GuillaumeGomez

Improve box clone doctests to ensure the documentation is valid

5 years agoRollup merge of #62229 - christianpoveda:intptrcast-explicit-casts, r=RalfJung
Mark Rousskov [Wed, 3 Jul 2019 13:59:22 +0000 (09:59 -0400)]
Rollup merge of #62229 - christianpoveda:intptrcast-explicit-casts, r=RalfJung

Enable intptrcast for explicit casts

I checked locally that this does not break miri on master. r? @RalfJung

5 years agoRollup merge of #62199 - cclauss:patch-1, r=nikomatsakis
Mark Rousskov [Wed, 3 Jul 2019 13:59:21 +0000 (09:59 -0400)]
Rollup merge of #62199 - cclauss:patch-1, r=nikomatsakis

import gdb for explicit access to gdb.current_objfile()

5 years agoRollup merge of #62196 - cramertj:vec-leak, r=centril,withoutboats
Mark Rousskov [Wed, 3 Jul 2019 13:59:20 +0000 (09:59 -0400)]
Rollup merge of #62196 - cramertj:vec-leak, r=centril,withoutboats

Add Vec::leak

5 years agoRollup merge of #62186 - GuillaumeGomez:add-missing-type-links-into, r=docs
Mark Rousskov [Wed, 3 Jul 2019 13:59:18 +0000 (09:59 -0400)]
Rollup merge of #62186 - GuillaumeGomez:add-missing-type-links-into, r=docs

Add missing type urls in Into trait

r? @rust-lang/docs

5 years agoRollup merge of #62183 - alexcrichton:fix-tests, r=nikomatsakis
Mark Rousskov [Wed, 3 Jul 2019 13:59:16 +0000 (09:59 -0400)]
Rollup merge of #62183 - alexcrichton:fix-tests, r=nikomatsakis

std: Move a process test out of libstd

This commit moves a test out of libstd which is causing deadlocks on
musl on CI. Looks like the recent update in musl versions brings in some
internal updates to musl which makes `setgid` and `setuid` invalid to
call after a `fork` in a multithreaded program. The issue seen here is
that the child thread was attempting to grab a lock held by a
nonexistent thread, meaning that the child process simply deadlocked
causing the whole test to deadlock.

This commit moves the test to its own file with no threads which should
work.

5 years agoRollup merge of #62161 - GuillaumeGomez:add-missing-tryfrom-links, r=docs
Mark Rousskov [Wed, 3 Jul 2019 13:59:15 +0000 (09:59 -0400)]
Rollup merge of #62161 - GuillaumeGomez:add-missing-tryfrom-links, r=docs

Add missing links for TryFrom docs

r? @rust-lang/docs

5 years agoRollup merge of #62128 - ehuss:extra-filename-warning, r=matthewjasper
Mark Rousskov [Wed, 3 Jul 2019 13:59:13 +0000 (09:59 -0400)]
Rollup merge of #62128 - ehuss:extra-filename-warning, r=matthewjasper

Adjust warning of -C extra-filename with -o.

If `--emit` includes multiple unnamed outputs, and `-o` was specified, and `-C extra-filename` was specified, the compiler would warn that `-C extra-filename` was ignored, but this is not true.  The "adapting" of the filenames includes the extra-filename info.

Since this is a little convoluted and hard to follow, here is a little chart to summarize when running with `rustc foo.rs -o xyz -C extra-filename=asdf`

`--emit` | Result
---------|--------
`link` | `xyz` (extra-filename ignored)
`link,dep-info` | `xyzasdf`, `xyzasdf.d` (this PR removes the incorrect warning)

As to whether or not this behavior is the best choice is another question.

5 years agoRollup merge of #62064 - wizAmit:feature/chunks_exact_nth_back, r=scottmcm
Mark Rousskov [Wed, 3 Jul 2019 13:59:12 +0000 (09:59 -0400)]
Rollup merge of #62064 - wizAmit:feature/chunks_exact_nth_back, r=scottmcm

nth_back for chunks_exact

wip nth_back for chunks_exact

working nth_back for chunks exact

Signed-off-by: wizAmit <amitforfriends_dns@yahoo.com>
r? @timvermeulen
r? @scottmcm

5 years agoRollup merge of #62021 - crlf0710:msvc_link_output_improve, r=alexcrichton
Mark Rousskov [Wed, 3 Jul 2019 13:59:10 +0000 (09:59 -0400)]
Rollup merge of #62021 - crlf0710:msvc_link_output_improve, r=alexcrichton

MSVC link output improve

Resolves #35785.

However i haven't come up with a idea to add test case for this :(

r? @retep998

5 years agoAuto merge of #61995 - eddyb:hir-sep-ptr, r=petrochenkov
bors [Wed, 3 Jul 2019 10:57:39 +0000 (10:57 +0000)]
Auto merge of #61995 - eddyb:hir-sep-ptr, r=petrochenkov

rustc: use a separate copy of P for HIR than for AST.

Note: this currently includes/is based on top of #61987.

Like #61968, but goes one step further and uses a separate `P<...>` for the HIR, with no `Clone`, or the ability to mutate after allocation.
There is still `into_inner`/`into_iter`, but they're only exposed for `hir::lowering`, and they would take more work to untangle.

r? @petrochenkov cc @rust-lang/compiler

5 years agoFixed document bug, those replaced each other
Kohei Takahashi [Wed, 3 Jul 2019 06:59:40 +0000 (15:59 +0900)]
Fixed document bug, those replaced each other

Introduced by #58005

5 years agoAuto merge of #61775 - nikomatsakis:issue-56238-multiple-lifetimes-async-fn-region...
bors [Wed, 3 Jul 2019 03:47:47 +0000 (03:47 +0000)]
Auto merge of #61775 - nikomatsakis:issue-56238-multiple-lifetimes-async-fn-region-solver, r=MatthewJasper

generalize impl trait to permit multiple lifetime bounds

Generalizes the region solver to support "pick constraints". These have the form:

```
pick R0 from [R1..Rn]
```

where `R1..Rn` are called the "option regions". The idea is that `R0` must be equal to *some* region in the set `R1..Rn`. These constraints are then used to handle cases like this:

```rust
fn foo<'a, 'b>(...) -> impl Trait<'a, 'b> { .. }
```

The problem here is that every region R in the hidden type must be equal to *either* `'a` *or* `'b` (or `'static`) -- in the past, the only kinds of constraints we had were outlives constraints, and since `'a` and `'b` are unrelated, there was no outlives constraint we could issue that would enforce that (`R: 'a` and `R: 'b` are both too strict, for example). But now we can issue a pick constraint: `pick R from ['a, 'b]`.

In general, solving pick constraints is tricky. We integrate them into the solver as follows. In general, during the propagation phase, we are monotonically growing a set of inference regions. To handle a case like `pick R from [O...]`, where `O...` represents the option regions, we do the following:

- Look for all the *lower bounds* of the region R -- that is, every region LB such that `R: LB` must hold.
- Look for all the *upper bounds* of the region R -- that is, every region UB such that `UB: R` must hold.
- Let the *viable options* be each option region O such that `UB: O` and `O: LB` for each UB, LB bound.
- Find the *minimal viable option* M, where `O: M` holds for every option region O.

If there is such a *minimal viable option*, then we make `R: M`. (This may in turn influence other bits of inference.) If there is no minimal viable option, either because all options were eliminated or because none of the remaining options are minimal, we do nothing. Ultimately, if the pick constraint is not satisfied, an error is reported.

For this logic, we currently require that the option regions O are always lifetime parameters. To determine the bounds, we walk the various outlives edges that were otherwise introduced.

r? @matthewjasper
cc @cramertj

Fixes #56238

TODO:

- [ ] Error messages include region variable info sometimes, how to fix?
- [ ] Tests for bare `existential type`  and other impl Trait usage

5 years agoFix mismatching Kleene operators
Julien Cretin [Tue, 2 Jul 2019 22:37:25 +0000 (00:37 +0200)]
Fix mismatching Kleene operators

5 years agoAuto merge of #61268 - michaelwoerister:stabilize-pgo, r=alexcrichton
bors [Tue, 2 Jul 2019 20:00:29 +0000 (20:00 +0000)]
Auto merge of #61268 - michaelwoerister:stabilize-pgo, r=alexcrichton

Stabilize support for Profile-guided Optimization

This PR makes profile-guided optimization available via the `-C profile-generate` / `-C profile-use` pair of commandline flags and adds end-user documentation for the feature to the [rustc book](https://doc.rust-lang.org/rustc/). The PR thus ticks the last two remaining checkboxes of the [stabilization tracking issue](https://github.com/rust-lang/rust/issues/59913).

From the tracking issue:
> Profile-guided optimization (PGO) is a common optimization technique for ahead-of-time compilers. It works by collecting data about a program's typical execution (e.g. probability of branches taken, typical runtime values of variables, etc) and then uses this information during program optimization for things like inlining decisions, machine code layout, or indirect call promotion.

If you are curious about how this can be used, there is a rendered version of the documentation this PR adds available [here](
https://github.com/michaelwoerister/rust/blob/stabilize-pgo/src/doc/rustc/src/profile-guided-optimization.md).

r? @alexcrichton
cc @rust-lang/compiler

5 years agofix ICE with delay-span-bug
Niko Matsakis [Tue, 2 Jul 2019 18:23:38 +0000 (14:23 -0400)]
fix ICE with delay-span-bug

5 years agoaddress nits
Niko Matsakis [Mon, 1 Jul 2019 21:54:57 +0000 (17:54 -0400)]
address nits

5 years agoUpdate src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-no-fg.rs
Niko Matsakis [Mon, 1 Jul 2019 21:53:21 +0000 (17:53 -0400)]
Update src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-no-fg.rs

Co-Authored-By: matthewjasper <mjjasper1@gmail.com>
5 years agoUpdate src/test/ui/async-await/multiple-lifetimes/elided.rs
Niko Matsakis [Mon, 1 Jul 2019 21:53:08 +0000 (17:53 -0400)]
Update src/test/ui/async-await/multiple-lifetimes/elided.rs

Co-Authored-By: matthewjasper <mjjasper1@gmail.com>
5 years agoUpdate src/test/ui/async-await/multiple-lifetimes/fn-ptr.rs
Niko Matsakis [Sat, 29 Jun 2019 10:52:47 +0000 (06:52 -0400)]
Update src/test/ui/async-await/multiple-lifetimes/fn-ptr.rs

Co-Authored-By: matthewjasper <mjjasper1@gmail.com>
5 years agoUpdate src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs
Niko Matsakis [Sat, 29 Jun 2019 10:52:35 +0000 (06:52 -0400)]
Update src/test/ui/async-await/multiple-lifetimes/ret-impl-trait-one.rs

Co-Authored-By: matthewjasper <mjjasper1@gmail.com>
5 years agointroduce more tests covering `async fn` surface
Niko Matsakis [Tue, 25 Jun 2019 14:55:32 +0000 (10:55 -0400)]
introduce more tests covering `async fn` surface

5 years agomore nits + typos
Niko Matsakis [Mon, 24 Jun 2019 19:55:39 +0000 (15:55 -0400)]
more nits + typos

5 years agopass a parameter to enable impl Trait instead of a vec
Niko Matsakis [Mon, 24 Jun 2019 19:52:46 +0000 (15:52 -0400)]
pass a parameter to enable impl Trait instead of a vec

5 years agomore centril nits
Niko Matsakis [Mon, 24 Jun 2019 19:34:37 +0000 (15:34 -0400)]
more centril nits

5 years agoregion_constraints: nits
Niko Matsakis [Mon, 24 Jun 2019 19:21:36 +0000 (15:21 -0400)]
region_constraints: nits

5 years agoopaque_types: more nits
Niko Matsakis [Mon, 24 Jun 2019 19:21:25 +0000 (15:21 -0400)]
opaque_types: more nits

5 years agos/abstract_type_generics/opaque_type_generics/
Niko Matsakis [Mon, 24 Jun 2019 19:17:48 +0000 (15:17 -0400)]
s/abstract_type_generics/opaque_type_generics/

5 years agoopaque_types: various nits
Niko Matsakis [Mon, 24 Jun 2019 19:16:17 +0000 (15:16 -0400)]
opaque_types: various nits

5 years agocleanup formatting of comment and add attribution
Niko Matsakis [Mon, 24 Jun 2019 19:14:09 +0000 (15:14 -0400)]
cleanup formatting of comment and add attribution

5 years agorewrite `dup_vec` to use `IndexVec` instead of `u32`
Niko Matsakis [Mon, 24 Jun 2019 19:12:47 +0000 (15:12 -0400)]
rewrite `dup_vec` to use `IndexVec` instead of `u32`

5 years agovarious centril nits
Niko Matsakis [Mon, 24 Jun 2019 19:06:58 +0000 (15:06 -0400)]
various centril nits

5 years agoexplain why the code is the way it is
Niko Matsakis [Mon, 24 Jun 2019 19:00:09 +0000 (15:00 -0400)]
explain why the code is the way it is

5 years agoUpdate src/librustc/infer/lexical_region_resolve/mod.rs
Niko Matsakis [Mon, 24 Jun 2019 19:03:19 +0000 (15:03 -0400)]
Update src/librustc/infer/lexical_region_resolve/mod.rs

Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
5 years agoUpdate src/doc/unstable-book/src/language-features/member-constraints.md
Niko Matsakis [Mon, 24 Jun 2019 18:51:29 +0000 (14:51 -0400)]
Update src/doc/unstable-book/src/language-features/member-constraints.md

Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
5 years agofeature-gate member constraints outside of async-await
Niko Matsakis [Thu, 20 Jun 2019 14:44:20 +0000 (10:44 -0400)]
feature-gate member constraints outside of async-await

Minimizes risk.

5 years agoimplement `TypeFoldable` for `Arc`
Niko Matsakis [Tue, 18 Jun 2019 23:15:31 +0000 (19:15 -0400)]
implement `TypeFoldable` for `Arc`

5 years agorename `pick_constraints.rs` to `member_constraints.rs`
Niko Matsakis [Tue, 18 Jun 2019 12:54:52 +0000 (08:54 -0400)]
rename `pick_constraints.rs` to `member_constraints.rs`

5 years agorename to "member constraints"
Niko Matsakis [Tue, 18 Jun 2019 12:52:23 +0000 (08:52 -0400)]
rename to "member constraints"

5 years agoimplement Lift for Arc
Niko Matsakis [Tue, 18 Jun 2019 12:15:27 +0000 (08:15 -0400)]
implement Lift for Arc

5 years agoswitch to Lrc
Niko Matsakis [Tue, 18 Jun 2019 03:56:35 +0000 (23:56 -0400)]
switch to Lrc

5 years agofix silly bugs in binary_search_util test
Niko Matsakis [Mon, 17 Jun 2019 20:23:07 +0000 (16:23 -0400)]
fix silly bugs in binary_search_util test

5 years agobless test output
Niko Matsakis [Mon, 17 Jun 2019 15:38:38 +0000 (11:38 -0400)]
bless test output

5 years agoaddress nits by mattewjasper
Niko Matsakis [Mon, 17 Jun 2019 13:26:48 +0000 (09:26 -0400)]
address nits by mattewjasper

5 years agoaccount for the pick-constraint edges when reporting errors
Niko Matsakis [Mon, 17 Jun 2019 12:40:50 +0000 (08:40 -0400)]
account for the pick-constraint edges when reporting errors

Also, thread through better span info to improve the error message to
something tolerable.

5 years agojust create a binary search slice helper fn
Niko Matsakis [Mon, 17 Jun 2019 11:55:54 +0000 (07:55 -0400)]
just create a binary search slice helper fn

5 years agoadd a `VecMap` data structure
Niko Matsakis [Mon, 17 Jun 2019 11:48:53 +0000 (07:48 -0400)]
add a `VecMap` data structure

5 years agotest with explicit existential type
Niko Matsakis [Wed, 12 Jun 2019 22:02:39 +0000 (18:02 -0400)]
test with explicit existential type

5 years agoadd a preliminary existential test; not really enough
Niko Matsakis [Wed, 12 Jun 2019 15:50:28 +0000 (11:50 -0400)]
add a preliminary existential test; not really enough

5 years agopacify the mercilous tidy
Niko Matsakis [Wed, 12 Jun 2019 15:48:29 +0000 (11:48 -0400)]
pacify the mercilous tidy

long lines, trailing newlines

5 years agoremove outdated TODO markers
Niko Matsakis [Wed, 12 Jun 2019 15:48:08 +0000 (11:48 -0400)]
remove outdated TODO markers

These were left behind to remind me to cleanup the code -- but the
relevant cleanups were already done.

5 years agoexplain why pick-constraints can be an empty vector
Niko Matsakis [Wed, 12 Jun 2019 15:47:48 +0000 (11:47 -0400)]
explain why pick-constraints can be an empty vector

5 years agoadd a FIXME related to the non-free-region case
Niko Matsakis [Wed, 12 Jun 2019 15:16:59 +0000 (11:16 -0400)]
add a FIXME related to the non-free-region case

I don't think it would actually be harmful to just ignore such cases
but I'm inclined not to take chances.

5 years agoupdate the async-fn-multiple-lifetimes test
Niko Matsakis [Wed, 12 Jun 2019 14:47:04 +0000 (10:47 -0400)]
update the async-fn-multiple-lifetimes test

5 years agofix tests and remove outdated stderr files
Niko Matsakis [Wed, 12 Jun 2019 14:22:27 +0000 (10:22 -0400)]
fix tests and remove outdated stderr files

5 years agointegrate reverse graph and upper-bound computation
Niko Matsakis [Wed, 12 Jun 2019 14:22:07 +0000 (10:22 -0400)]
integrate reverse graph and upper-bound computation

5 years agoadd a `depth_first_search` helper function
Niko Matsakis [Tue, 11 Jun 2019 20:29:27 +0000 (16:29 -0400)]
add a `depth_first_search` helper function

5 years agointroduce a `VecGraph` abstraction that cheaply stores graphs
Niko Matsakis [Tue, 11 Jun 2019 17:40:24 +0000 (13:40 -0400)]
introduce a `VecGraph` abstraction that cheaply stores graphs

This is perhaps better than the linked list approach I was using
before. Lower memory overhead, Theta(N+E) storage. Does require a
sort. =)

5 years agoimplement the graph traits for SCC
Niko Matsakis [Tue, 11 Jun 2019 12:48:40 +0000 (08:48 -0400)]
implement the graph traits for SCC

5 years agoimprove tests with migration mode, mir mode
Niko Matsakis [Mon, 10 Jun 2019 21:22:02 +0000 (17:22 -0400)]
improve tests with migration mode, mir mode

5 years agoremove old error and add an explanation
Niko Matsakis [Mon, 10 Jun 2019 21:17:56 +0000 (17:17 -0400)]
remove old error and add an explanation

5 years agopreliminary integration of "pick constraints" into nll solver
Niko Matsakis [Fri, 7 Jun 2019 19:57:09 +0000 (15:57 -0400)]
preliminary integration of "pick constraints" into nll solver

5 years agoconstruct pick-constraints and give them to region inference
Niko Matsakis [Wed, 5 Jun 2019 23:33:29 +0000 (19:33 -0400)]
construct pick-constraints and give them to region inference

5 years agoimplement PickConstraintSet type
Niko Matsakis [Wed, 5 Jun 2019 23:07:15 +0000 (19:07 -0400)]
implement PickConstraintSet type

5 years agopass more than outlives constraints to constraint conversion
Niko Matsakis [Wed, 5 Jun 2019 14:21:31 +0000 (10:21 -0400)]
pass more than outlives constraints to constraint conversion

5 years ago[WIP] fix `Lift` impl for `Rc`
Niko Matsakis [Mon, 24 Jun 2019 20:06:17 +0000 (16:06 -0400)]
[WIP] fix `Lift` impl for `Rc`

5 years agorename `ConstraintSet` to `OutlivesConstraintSet`
Niko Matsakis [Wed, 5 Jun 2019 14:17:30 +0000 (10:17 -0400)]
rename `ConstraintSet` to `OutlivesConstraintSet`

5 years agopropagate the pick-constraints through queries
Niko Matsakis [Wed, 5 Jun 2019 09:58:08 +0000 (05:58 -0400)]
propagate the pick-constraints through queries

5 years agopass a `&mut QueryRegionConstraints` not just outlives constraints
Niko Matsakis [Wed, 5 Jun 2019 09:52:58 +0000 (05:52 -0400)]
pass a `&mut QueryRegionConstraints` not just outlives constraints

5 years agoremove deref impl and add an index impl
Niko Matsakis [Tue, 4 Jun 2019 22:05:23 +0000 (18:05 -0400)]
remove deref impl and add an index impl

The constraint set is going to be more than just a set of outlives
constraints.

5 years agorename `ConstraintIndex` to `OutlivesConstraintIndex`
Niko Matsakis [Tue, 4 Jun 2019 21:39:12 +0000 (17:39 -0400)]
rename `ConstraintIndex` to `OutlivesConstraintIndex`

5 years agointroduce `QueryRegionConstraints` struct
Niko Matsakis [Mon, 3 Jun 2019 22:25:21 +0000 (18:25 -0400)]
introduce `QueryRegionConstraints` struct

5 years agointroduce `QueryRegionConstraints` struct (no-op)
Niko Matsakis [Mon, 3 Jun 2019 21:39:52 +0000 (17:39 -0400)]
introduce `QueryRegionConstraints` struct (no-op)

5 years agorename `QueryRegionConstraint` to `QueryOutlivesConstraint`
Niko Matsakis [Mon, 3 Jun 2019 21:24:30 +0000 (17:24 -0400)]
rename `QueryRegionConstraint` to `QueryOutlivesConstraint`

5 years agoenforce and report pick-constraint errors
Niko Matsakis [Mon, 3 Jun 2019 20:31:44 +0000 (16:31 -0400)]
enforce and report pick-constraint errors

The error message here is not great.

5 years agointegrate pick constraints into lexical solver more completely
Niko Matsakis [Mon, 3 Jun 2019 19:54:21 +0000 (15:54 -0400)]
integrate pick constraints into lexical solver more completely

5 years agorename from "in constraint" to "pick constraint"
Niko Matsakis [Mon, 3 Jun 2019 15:58:57 +0000 (11:58 -0400)]
rename from "in constraint" to "pick constraint"

5 years agoadd some tests, currently ICE-ing
Niko Matsakis [Sat, 1 Jun 2019 11:01:49 +0000 (07:01 -0400)]
add some tests, currently ICE-ing

5 years agomake `dup_vec` optional
Niko Matsakis [Fri, 31 May 2019 18:30:06 +0000 (14:30 -0400)]
make `dup_vec` optional

5 years agolexical_region_resolve: rustfmt
Niko Matsakis [Fri, 31 May 2019 18:29:43 +0000 (14:29 -0400)]
lexical_region_resolve: rustfmt

5 years agointroduce an "in" constraint instead of error
Niko Matsakis [Thu, 30 May 2019 14:36:35 +0000 (10:36 -0400)]
introduce an "in" constraint instead of error

5 years agointroduce `constrain_regions` helper
Niko Matsakis [Tue, 28 May 2019 21:02:07 +0000 (17:02 -0400)]
introduce `constrain_regions` helper

5 years agoopaque_types/mod.rs: rustfmt
Niko Matsakis [Fri, 28 Jun 2019 20:47:53 +0000 (16:47 -0400)]
opaque_types/mod.rs: rustfmt

5 years agoHashMap is UnwindSafe
Simon Sapin [Tue, 2 Jul 2019 13:19:19 +0000 (15:19 +0200)]
HashMap is UnwindSafe

Fixes https://github.com/rust-lang/rust/issues/62301, a regression in 1.36.0 which was caused by hashbrown using `NonZero<T>` where the older hashmap used `Unique<T>`.

5 years agoAuto merge of #61922 - tmandry:moar-generator-optimization, r=matthewjasper
bors [Tue, 2 Jul 2019 12:25:00 +0000 (12:25 +0000)]
Auto merge of #61922 - tmandry:moar-generator-optimization, r=matthewjasper

Don't store locals that have been moved from in generators

This avoids reserving storage in generators for locals that are moved
out of (and not re-initialized) prior to yield points. Fixes #59123.

This adds a new dataflow analysis, `RequiresStorage`, to determine whether the storage of a local can be destroyed without being observed by the program. The rules are:

1. StorageLive(x) => mark x live
2. StorageDead(x) => mark x dead
3. If a local is moved from, _and has never had its address taken_, mark it dead
4. If (any part of) a local is initialized, mark it live'

This is used to determine whether to save a local in the generator object at all, as well as which locals can be overlapped in the generator layout.

Here's the size in bytes of all testcases included in the change, before and after the change:

async fn test    |Size before |Size after
-----------------|------------|----------
single           | 1028       | 1028
single_with_noop | 2056       | 1032
joined           | 5132       | 3084
joined_with_noop | 8208       | 3084

generator test              |Size before |Size after
----------------------------|------------|----------
move_before_yield           | 1028       | 1028
move_before_yield_with_noop | 2056       | 1032
overlap_move_points         | 3080       | 2056

## Future work

Note that there is a possible extension to this optimization, which modifies rule 3 to read: "If a local is moved from, _**and either has never had its address taken, or is Freeze and has never been mutably borrowed**_, mark it dead." This was discussed at length in #59123 and then #61849. Because this would cause some behavior to be UB which was not UB before, it's a step that needs to be taken carefully.

A more immediate priority for me is inlining `std::mem::size_of_val(&x)` so it becomes apparent that the address of `x` is not taken. This way, using `size_of_val` to look at the size of your inner futures does not affect the size of your outer future.

cc @cramertj @eddyb @Matthias247 @nikomatsakis @RalfJung @Zoxc

5 years agoAuto merge of #61871 - Zoxc:no-lift-branch, r=eddyb
bors [Tue, 2 Jul 2019 08:09:15 +0000 (08:09 +0000)]
Auto merge of #61871 - Zoxc:no-lift-branch, r=eddyb

Don't use lift to detect local types

This overlaps with https://github.com/rust-lang/rust/pull/61392.

r? @eddyb

5 years agoFix michaelwoerister's mailmap
Mark Rousskov [Tue, 2 Jul 2019 00:23:35 +0000 (20:23 -0400)]
Fix michaelwoerister's mailmap

5 years agoAuto merge of #62279 - pietroalbini:fix-azure-crlf, r=alexcrichton
bors [Mon, 1 Jul 2019 22:33:54 +0000 (22:33 +0000)]
Auto merge of #62279 - pietroalbini:fix-azure-crlf, r=alexcrichton

ci: explicitly disable CRLF conversion on Windows

The Azure image enables CRLF conversion on Windows builders, but that caused regressions both in our test suite (the miri test suite broke) and in the ecosystem, since we started shipping install scripts with CRLF endings instead of the old LF. The [Godbolt Compiler Explorer](https://godbolt.org/) is one such case of breakage.

This adds a step to the build explicitly disabling the conversion before the repository is checked out.

r? @alexcrichton
cc @gnzlbg

5 years agoci: explicitly disable CRLF conversion on Windows
Pietro Albini [Mon, 1 Jul 2019 19:57:08 +0000 (21:57 +0200)]
ci: explicitly disable CRLF conversion on Windows

The Azure image enables CRLF conversion on Windows builders, but that
caused regressions both in our test suite (the miri test suite broke)
and in the ecosystem, since we started shipping install scripts with
CRLF endings instead of the old LF. The Godbolt Compiler Explorer is one
such case of breakage.

This adds a step to the build explicitly disabling the conversion before
the repository is checked out.

5 years agoClean up extra lifetime, add assertions
Tyler Mandry [Mon, 1 Jul 2019 19:19:21 +0000 (12:19 -0700)]
Clean up extra lifetime, add assertions

5 years agoAuto merge of #62267 - GuillaumeGomez:revert-implicit-option-return, r=Centril
bors [Mon, 1 Jul 2019 18:49:30 +0000 (18:49 +0000)]
Auto merge of #62267 - GuillaumeGomez:revert-implicit-option-return, r=Centril

Revert "implicit `Option`-returning doctests"

Reverts #61279 as discussed in #61360.

cc @Centril

5 years agoAuto merge of #62247 - pietroalbini:finish-azure-migration, r=Mark-Simulacrum
bors [Mon, 1 Jul 2019 15:14:16 +0000 (15:14 +0000)]
Auto merge of #62247 - pietroalbini:finish-azure-migration, r=Mark-Simulacrum

ci: finish the migration to azure

This moves to azure the last builders as we discussed on Discord last night.

r? @alexcrichton