]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agoAuto merge of #63280 - lzutao:update-clippy, r=Mark-Simulacrum
bors [Wed, 7 Aug 2019 13:15:53 +0000 (13:15 +0000)]
Auto merge of #63280 - lzutao:update-clippy, r=Mark-Simulacrum

submodules: Update clippy

r? @Manishearth
Fixes clippy toolstate in https://github.com/rust-lang/rust/pull/63228#issuecomment-517886963

4 years agoAuto merge of #61919 - alexreg:fix-atb-1, r=nikomatsakis
bors [Wed, 7 Aug 2019 09:33:34 +0000 (09:33 +0000)]
Auto merge of #61919 - alexreg:fix-atb-1, r=nikomatsakis

Fix for "ambiguous associated type" issue with ATBs

Fixes #61752.

r? @nikomatsakis

CC @Centril

4 years agosubmodules: Update clippy
Lzu Tao [Wed, 7 Aug 2019 08:59:36 +0000 (08:59 +0000)]
submodules: Update clippy

4 years agoAuto merge of #63152 - estebank:big-array, r=oli-obk
bors [Wed, 7 Aug 2019 04:28:08 +0000 (04:28 +0000)]
Auto merge of #63152 - estebank:big-array, r=oli-obk

Always error on `SizeOverflow` during mir evaluation

Fix #55878, fix #25116.

r? @oli-obk

4 years agoAuto merge of #63341 - Centril:rollup-hkhxahb, r=Centril
bors [Wed, 7 Aug 2019 00:45:00 +0000 (00:45 +0000)]
Auto merge of #63341 - Centril:rollup-hkhxahb, r=Centril

Rollup of 9 pull requests

Successful merges:

 - #63034 (Fix generator size regressions due to optimization)
 - #63035 (Use MaybeUninit to produce more correct layouts)
 - #63163 (add a pair of whitespace after remove parentheses)
 - #63294 (tests for async/await drop order)
 - #63307 (don't ignore mir_dump folder)
 - #63308 (PlaceRef's base is already a reference)
 - #63310 (Tests around moving parts of structs and tuples across await points)
 - #63314 (doc: the content has since been moved to the guide)
 - #63333 (Remove unnecessary features from compiler error code list)

Failed merges:

r? @ghost

4 years agoreview comment: reword test comment
Esteban Küber [Tue, 6 Aug 2019 23:51:17 +0000 (16:51 -0700)]
review comment: reword test comment

4 years agoRollup merge of #63333 - jethrogb:jb/error-codes-features, r=Mark-Simulacrum
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:38 +0000 (01:39 +0200)]
Rollup merge of #63333 - jethrogb:jb/error-codes-features, r=Mark-Simulacrum

Remove unnecessary features from compiler error code list

4 years agoRollup merge of #63314 - tshepang:update-src-readme, r=matthewjasper
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:36 +0000 (01:39 +0200)]
Rollup merge of #63314 - tshepang:update-src-readme, r=matthewjasper

doc: the content has since been moved to the guide

4 years agoRollup merge of #63310 - gorup:partial-moves, r=cramertj
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:35 +0000 (01:39 +0200)]
Rollup merge of #63310 - gorup:partial-moves, r=cramertj

Tests around moving parts of structs and tuples across await points

r? cramertj

Per the [dropbox paper](https://paper.dropbox.com/doc/async.await-Call-for-Tests--AiR3vlp1s_Kw0yzWZ1sWMnaIAQ-nMyZGrra7dz9KcFRMLKJy) about more tests, it appears there are some tests wanted around local variables (under the section ["Dynamic semantics"](https://paper.dropbox.com/doc/async.await-Call-for-Tests--AiR3vlp1s_Kw0yzWZ1sWMnaIAg-nMyZGrra7dz9KcFRMLKJy#:uid=122335511260129643493892&h2=Dynamic-semantics)). Here is one commit, and I can probably get code up for other scenarios listed there, although I may not have the full background to know what is being targeted by the tests. Please assist me if I'm off course, thanks!

---
- Executed all 4 new tests
- Executed `tidy` command

4 years agoRollup merge of #63308 - spastorino:place-ref-base-is-ref, r=oli-obk
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:33 +0000 (01:39 +0200)]
Rollup merge of #63308 - spastorino:place-ref-base-is-ref, r=oli-obk

PlaceRef's base is already a reference

r? @oli-obk

4 years agoRollup merge of #63307 - RalfJung:gitignore, r=alexcrichton
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:32 +0000 (01:39 +0200)]
Rollup merge of #63307 - RalfJung:gitignore, r=alexcrichton

don't ignore mir_dump folder

I dumped some MIR and wondered why `git status` wouldn't show the tree as dirty, reminding me to clean up after myself. Turns out this folder was explicitly gitignored. I don't think it should be.

If someone doesn't want to clean up that way, they can add it to `.git/info/exclude`.

(That file seems like it could need some general cleanup, honestly, but that's for another day.)

4 years agoRollup merge of #63294 - alsuren:async-tests, r=cramertj
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:30 +0000 (01:39 +0200)]
Rollup merge of #63294 - alsuren:async-tests, r=cramertj

tests for async/await drop order

This is just me helping out with https://github.com/rust-lang/rust/issues/62121 where I can.

I'm also going to use this as a public place to collect my thoughts about what has already been done and what hasn't (adding comments to the dropbox paper doc was quickly getting spammy).

I've tried to keep my commit messages similar to the line items on https://paper.dropbox.com/doc/async.await-Call-for-Tests--AiKouT0L41mSnK1741s~TiiRAg-nMyZGrra7dz9KcFRMLKJy as possible.

A bunch of my tests are likely to be either redundant with other tests, or lower quality than other tests that people are writing. A reasonable approach might be to tell me which commits you want to keep and I'll throw away the rest of them.

The part from the dropbox paper doc that I'm concentrating on here is:
(items marked with `?` are ones that I can't immediately think of how to test, so I will leave for other people. Items with checkboxes are things that I have done or will try to do next)

### Dynamic semantics
- `async`/`await` with unusual locals:
    - ? partially uninhabited
    - ? conditionally initialized
    - ~drop impls~ already done in src/test/ui/async-await/drop-order/*
    - ? nested drop impls
    - ~partially moved (e.g., `let x = (vec![], vec![]); drop(x.0); foo.await; drop(x.1);`)~ see  https://github.com/rust-lang/rust/pull/63310
- Control flow:
    - basic
    - complex
- [x] `.await` while holding variables of different sizes
- (possibly) drop order
    - [x] including drop order for locals when a future is dropped part-way through execution
         - Parameters' drop order is covered in my commit f40190a
    - ~An async fn version of `dynamic-drop.rs`~
        - already done by matthewjasper in https://github.com/rust-lang/rust/pull/62193/files
- ? interaction with const eval, promoteds, and temporaries
- [x] drop the resulting future and check that local variables and parameters are dropped in the expected order (interaction with cancellation, in other words)
    - also in f40190a

Explanation of commits:

0a1bdd4 is the simplest place I could think of to explicitly test `.await` while holding variables of different sizes. I'm pretty sure that this will end up being redundant with something else, so I'm happy to drop it.
f40190a is a copy-paste from `drop-order-for-async-fn-parameters.rs` with `NeverReady.await` dumped on the end of each testcase.
    * Normally I don't like copy-paste-based tests, but `drop-order-for-async-fn-parameters-by-ref-binding.rs` is also copy-paste, so I thought it might be okay.
    * [x] I'm a bit sad that this doesn't cover non-parameter locals, but I think it should be easy enough to extend in that direction, so I might have a crack at that tomorrow.
c4940e0f90 makes a bunch of local variables and moves them into either `{}` blocks or `async move {}` blocks, checking for any surprising differences.
    * I have tried to give the test functions descriptive names
    * I have not duplicated the tests for methods with/without self.
    * I think that all of these tests could be rewritten to be clearer if I could write down the expected drop order next to each test.

4 years agoRollup merge of #63163 - bravomikekilo:master, r=cramertj
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:28 +0000 (01:39 +0200)]
Rollup merge of #63163 - bravomikekilo:master, r=cramertj

add a pair of whitespace after remove parentheses

fix [issue-63156](https://github.com/rust-lang/rust/issues/63156).
add a pair of whitespace after remove parentheses.

4 years agoRollup merge of #63034 - tmandry:reduce-generator-size-regressions, r=cramertj
Mazdak Farrokhzad [Tue, 6 Aug 2019 23:39:25 +0000 (01:39 +0200)]
Rollup merge of #63034 - tmandry:reduce-generator-size-regressions, r=cramertj

Fix generator size regressions due to optimization

I tested the generator optimizations in #60187 and #61922 on the Fuchsia
build, and noticed that some small generators (about 8% of the async fns
in our build) increased in size slightly.

This is because in #60187 we split the fields into two groups, a
"prefix" non-overlap region and an overlap region, and lay them out
separately. This can introduce unnecessary padding bytes between the two
groups.

In every single case in the Fuchsia build, it was due to there being
only a single variant being used in the overlap region. This means that
we aren't doing any overlapping, period. So it's better to combine the
two regions into one and lay out all the fields at once, which is what
this change does.

r? @cramertj
cc @eddyb @Zoxc

4 years agoFix generator size regressions due to optimization
Tyler Mandry [Sat, 27 Jul 2019 00:13:14 +0000 (17:13 -0700)]
Fix generator size regressions due to optimization

I tested the generator optimizations in #60187 and #61922 on the Fuchsia
build, and noticed that some small generators (about 8% of the async fns
in our build) increased in size slightly.

This is because in #60187 we split the fields into two groups, a
"prefix" non-overlap region and an overlap region, and lay them out
separately. This can introduce unnecessary padding bytes between the two
groups.

In every single case in the Fuchsia build, it was due to there being
only a single variant being used in the overlap region. This means that
we aren't doing any overlapping, period. So it's better to combine the
two regions into one and lay out all the fields at once, which is what
this change does.

4 years agoAuto merge of #63320 - RalfJung:miri, r=oli-obk
bors [Tue, 6 Aug 2019 21:05:10 +0000 (21:05 +0000)]
Auto merge of #63320 - RalfJung:miri, r=oli-obk

bump Miri

r? @oli-obk

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

4 years agoreview comments
Esteban Küber [Tue, 6 Aug 2019 18:23:32 +0000 (11:23 -0700)]
review comments

4 years agoRemove unnecessary features from compiler error code list
Jethro Beekman [Tue, 6 Aug 2019 17:49:45 +0000 (10:49 -0700)]
Remove unnecessary features from compiler error code list

4 years agomove error with diverging output to compile-fail
Esteban Küber [Tue, 6 Aug 2019 17:28:09 +0000 (10:28 -0700)]
move error with diverging output to compile-fail

4 years agoAuto merge of #61515 - shepmaster:boxed-slice-to-array, r=cramertj
bors [Tue, 6 Aug 2019 17:19:05 +0000 (17:19 +0000)]
Auto merge of #61515 - shepmaster:boxed-slice-to-array, r=cramertj

Add implementations for converting boxed slices into boxed arrays

This mirrors the implementations of reference slices into arrays.

# Discussion

- [x] Should we use const generics? ([probably not](https://github.com/rust-lang/rust/pull/61515#issuecomment-498690649))
- [ ] [What's the safety rationale here](https://github.com/rust-lang/rust/pull/61515#discussion_r290296613)?
- [ ] [Should the errors return the original object](https://github.com/rust-lang/rust/pull/61515#discussion_r290336592)?

# Remaining

- [ ] Implement `Error`
- [ ] Create a tracking issue

4 years agotest drop order for locals when a future is dropped part-way through execution
David Laban [Tue, 6 Aug 2019 14:20:47 +0000 (15:20 +0100)]
test drop order for locals when a future is dropped part-way through execution

4 years agoAuto merge of #63328 - Centril:rollup-482ujaf, r=Centril
bors [Tue, 6 Aug 2019 13:37:22 +0000 (13:37 +0000)]
Auto merge of #63328 - Centril:rollup-482ujaf, r=Centril

Rollup of 6 pull requests

Successful merges:

 - #62459 (Use internal iteration in the Sum and Product impls of Result and Option)
 - #62821 (Not listed methods)
 - #62837 (Fix theme picker blur handler: always hide instead of switching)
 - #63286 (Replace error callback with Result)
 - #63296 (Deduplicate rustc_demangle in librustc_codegen_llvm)
 - #63298 (assume_init: warn about valid != safe)

Failed merges:

r? @ghost

4 years agoRollup merge of #63298 - RalfJung:assume_init, r=Mark-Simulacrum,Centril
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:35 +0000 (15:36 +0200)]
Rollup merge of #63298 - RalfJung:assume_init, r=Mark-Simulacrum,Centril

assume_init: warn about valid != safe

We have this warning in the type-level docs, but it seems worth repeating it on the function.

4 years agoRollup merge of #63296 - alexcrichton:deduplicate-demangle, r=Mark-Simulacrum
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:34 +0000 (15:36 +0200)]
Rollup merge of #63296 - alexcrichton:deduplicate-demangle, r=Mark-Simulacrum

Deduplicate rustc_demangle in librustc_codegen_llvm

This commit removes the crates.io dependency of `rustc-demangle` from
`rustc_codegen_llvm`. This crate is actually already pulled in to part
of the `librustc_driver` build and with the upcoming pipelining
implementation in Cargo it causes build issues if `rustc-demangle` is
left to its own devices.

This is not currently required, but once pipelining is enabled for
rustc's own build it will be required to build correctly.

4 years agoRollup merge of #63286 - Mark-Simulacrum:resolve-no-cb, r=petrochenkov
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:32 +0000 (15:36 +0200)]
Rollup merge of #63286 - Mark-Simulacrum:resolve-no-cb, r=petrochenkov

Replace error callback with Result

r? @petrochenkov

4 years agoRollup merge of #62837 - Kinrany:patch-1, r=GuillaumeGomez
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:30 +0000 (15:36 +0200)]
Rollup merge of #62837 - Kinrany:patch-1, r=GuillaumeGomez

Fix theme picker blur handler: always hide instead of switching

Fixes a minor bug in UI generated by rustdoc.

For example, this page: https://doc.rust-lang.org/std/

Reproduction steps:
1. Click the theme picker twice
   * The list of themes will be shown and then hidden
2. Click anywhere else
   * The list of themes will be show again, which is unexpected

The bug was caused by blur event handler toggling the state of the element instead of always hiding it regardless of the current state.

4 years agoRollup merge of #62821 - GuillaumeGomez:not-listed-methods, r=Mark-Simulacrum
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:28 +0000 (15:36 +0200)]
Rollup merge of #62821 - GuillaumeGomez:not-listed-methods, r=Mark-Simulacrum

Not listed methods

Fixes #60326.

cc @rust-lang/rustdoc
r? @QuietMisdreavus

4 years agoRollup merge of #62459 - timvermeulen:result_sum_internal_iteration, r=scottmcm
Mazdak Farrokhzad [Tue, 6 Aug 2019 13:36:27 +0000 (15:36 +0200)]
Rollup merge of #62459 - timvermeulen:result_sum_internal_iteration, r=scottmcm

Use internal iteration in the Sum and Product impls of Result and Option

This PR adds internal iteration to the `ResultShunt` iterator type underlying the `Sum` and `Product` impls of `Result`. I had to change `ResultShunt` to hold a mutable reference to an error instead, similar to `itertools::ProcessResults`, in order to be able to pass the `ResultShunt` itself by value (which is necessary for internal iteration).

`ResultShunt::process` can unfortunately no longer be an associated function because that would make it generic over the lifetime of the error reference, which wouldn't work, so I turned it into the free function `process_results`.

I removed the `OptionShunt` type and forwarded the `Sum` and `Product` impls of `Option` to their respective impls of `Result` instead, to avoid having to repeat the internal iteration logic.

4 years agofixup! test drop order for parameters when a future is dropped part-way through execution
David Laban [Tue, 6 Aug 2019 09:26:37 +0000 (10:26 +0100)]
fixup! test drop order for parameters when a future is dropped part-way through execution

4 years agoclarify
Ralf Jung [Tue, 6 Aug 2019 08:41:48 +0000 (10:41 +0200)]
clarify

4 years agoAuto merge of #63319 - Centril:rollup-d89rmey, r=Centril
bors [Tue, 6 Aug 2019 08:21:32 +0000 (08:21 +0000)]
Auto merge of #63319 - Centril:rollup-d89rmey, r=Centril

Rollup of 14 pull requests

Successful merges:

 - #61457 (Implement DoubleEndedIterator for iter::{StepBy, Peekable, Take})
 - #63017 (Remove special code-path for handing unknown tokens)
 - #63184 (Explaining the reason why validation is performed in to_str of path.rs)
 - #63230 (Make use of possibly uninitialized data [E0381] a hard error)
 - #63260 (fix UB in a test)
 - #63264 (Revert "Rollup merge of #62696 - chocol4te:fix_#62194, r=estebank")
 - #63272 (Some more libsyntax::attr cleanup)
 - #63285 (Remove leftover AwaitOrigin)
 - #63287 (Don't store &Span)
 - #63293 (Clarify align_to's requirements and obligations)
 - #63295 (improve align_offset docs)
 - #63299 (Make qualify consts in_projection use PlaceRef)
 - #63312 (doc: fix broken sentence)
 - #63315 (Fix #63313)

Failed merges:

r? @ghost

4 years agoAdd rustfix test and fix test name.
bravomikekilo [Tue, 6 Aug 2019 08:00:13 +0000 (16:00 +0800)]
Add rustfix test and fix test name.

4 years agobe clear that 1-init Vec being valid (but not safe) is not a stable guarantee
Ralf Jung [Tue, 6 Aug 2019 07:47:42 +0000 (09:47 +0200)]
be clear that 1-init Vec being valid (but not safe) is not a stable guarantee

4 years agobump Miri
Ralf Jung [Tue, 6 Aug 2019 07:06:54 +0000 (09:06 +0200)]
bump Miri

4 years agoRollup merge of #63315 - rust-lang:fix-63313, r=alexreg
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:53 +0000 (08:17 +0200)]
Rollup merge of #63315 - rust-lang:fix-63313, r=alexreg

Fix #63313

Fixes #63313

r? @alexreg

4 years agoRollup merge of #63312 - tshepang:doc-fix, r=Centril
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:52 +0000 (08:17 +0200)]
Rollup merge of #63312 - tshepang:doc-fix, r=Centril

doc: fix broken sentence

Also, the move was done nearly a year ago

4 years agoRollup merge of #63299 - spastorino:in-projection-use-ref, r=oli-obk
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:50 +0000 (08:17 +0200)]
Rollup merge of #63299 - spastorino:in-projection-use-ref, r=oli-obk

Make qualify consts in_projection use PlaceRef

r? @oli-obk

4 years agoRollup merge of #63295 - RalfJung:align_offset, r=dtolnay
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:48 +0000 (08:17 +0200)]
Rollup merge of #63295 - RalfJung:align_offset, r=dtolnay

improve align_offset docs

Cc @shepmaster

4 years agoRollup merge of #63293 - shepmaster:align-to-doc, r=RalfJung
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:47 +0000 (08:17 +0200)]
Rollup merge of #63293 - shepmaster:align-to-doc, r=RalfJung

Clarify align_to's requirements and obligations

Based on discussions with @RalfJung around my misunderstandings when using this.

r? @RalfJung

4 years agoRollup merge of #63287 - Mark-Simulacrum:span-no-ref, r=Centril
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:45 +0000 (08:17 +0200)]
Rollup merge of #63287 - Mark-Simulacrum:span-no-ref, r=Centril

Don't store &Span

This is just needless indirection.

4 years agoRollup merge of #63285 - Mark-Simulacrum:rm-await-origin, r=Centril
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:44 +0000 (08:17 +0200)]
Rollup merge of #63285 - Mark-Simulacrum:rm-await-origin, r=Centril

Remove leftover AwaitOrigin

This was missed in PR #62293.

4 years agoRollup merge of #63272 - Mark-Simulacrum:clean-attr, r=petrochenkov
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:42 +0000 (08:17 +0200)]
Rollup merge of #63272 - Mark-Simulacrum:clean-attr, r=petrochenkov

Some more libsyntax::attr cleanup

Much smaller patch than the last one, mostly just finishing up by removing some Span arguments.

r? @petrochenkov

4 years agoRollup merge of #63264 - arielb1:revert-private-coherence-errors, r=estebank
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:41 +0000 (08:17 +0200)]
Rollup merge of #63264 - arielb1:revert-private-coherence-errors, r=estebank

Revert "Rollup merge of #62696 - chocol4te:fix_#62194, r=estebank"

This reverts commit df21a6f040a7011d509769a61ac7af9502636b33 (#62696), reversing
changes made to cc16d0486933e02237190366de2eb43df2215c11.

That PR makes error messages worse than before, and we couldn't come up with a way of actually making them better, so revert it for now. Any idea for making this error message better is welcome!

Fixes #63145.

r? @estebank

4 years agoRollup merge of #63260 - RalfJung:ptr-test, r=matklad
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:39 +0000 (08:17 +0200)]
Rollup merge of #63260 - RalfJung:ptr-test, r=matklad

fix UB in a test

We used to compare two mutable references that were supposed to point to the same thing. That's no good.

Compare them as raw pointers instead.

4 years agoRollup merge of #63230 - tmandry:disallow-possibly-uninitialized, r=Centril
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:38 +0000 (08:17 +0200)]
Rollup merge of #63230 - tmandry:disallow-possibly-uninitialized, r=Centril

Make use of possibly uninitialized data [E0381] a hard error

This is one of the behaviors we no longer allow in NLL. Since it can
lead to undefined behavior, I think it's definitely worth making it a
hard error without waiting to turn off migration mode (#58781).

Closes #60450.

My ulterior motive here is making it impossible to leave variables
partially initialized across a yield (see #60889, discussion at #63035), so
tests are included for that.

cc #54987

---

I'm not sure if bypassing the buffer is a good way of doing this. We could also make a `force_errors_buffer` or similar that gets recombined with all the errors as they are emitted. But this is simpler and seems fine to me.

r? @Centril
cc @cramertj @nikomatsakis @pnkfelix @RalfJung

4 years agoRollup merge of #63184 - JasonShin:master, r=sfackler
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:36 +0000 (08:17 +0200)]
Rollup merge of #63184 - JasonShin:master, r=sfackler

Explaining the reason why validation is performed in to_str of path.rs

I thought it's good to explain the reason for the validation during the conversion between Path/PathBuffer into str, which explains the reason for returning an Option at this point (good for beginners who are reading through the docs).

4 years agoRollup merge of #63017 - matklad:no-fatal, r=petrochenkov
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:34 +0000 (08:17 +0200)]
Rollup merge of #63017 - matklad:no-fatal, r=petrochenkov

Remove special code-path for handing unknown tokens

In `StringReader`, we have a buffer of fatal errors, which is used only in a single case: when we see something which is not a reasonable token at all, like `🦀`. I think a more straightforward thing to do here is to produce an explicit error token in this case, and let the next layer (the parser), deal with it.

However currently this leads to duplicated error messages. What should we do with this? Naively, I would think that emitting (just emitting, not raising) `FatalError` should stop other errors, but looks like this is not the case? We can also probably tweak parser on the case-by-case basis, to avoid emitting "expected" errors if the current token is an `Err`. I personally also fine with cascading errors in this case: it's quite unlikely that you actually type a fully invalid token.

@petrochenkov, which approach should we take to fight cascading errors?

4 years agoRollup merge of #61457 - timvermeulen:double_ended_iters, r=scottmcm
Mazdak Farrokhzad [Tue, 6 Aug 2019 06:17:31 +0000 (08:17 +0200)]
Rollup merge of #61457 - timvermeulen:double_ended_iters, r=scottmcm

Implement DoubleEndedIterator for iter::{StepBy, Peekable, Take}

Now that `DoubleEndedIterator::nth_back` has landed, `StepBy` and `Take` can have an efficient `DoubleEndedIterator` implementation. I don't know if there was any particular reason for `Peekable` not having a `DoubleEndedIterator` implementation, but it's quite trivial and I don't see any drawbacks to having it.

I'm not very happy about the implementation of `Peekable::try_rfold`, but I didn't see another way to only take the value out of `self.peeked` in case `self.iter.try_rfold` didn't exit early.

I only added `Peekable::rfold` (in addition to `try_rfold`) because its `Iterator` implementation has both `fold` and `try_fold` (and for similar reasons I added `Take::try_rfold` but not `Take::rfold`). Do we have any guidelines on whether we want both? If we do want both, maybe we should investigate which iterator adaptors override `try_fold` but not `fold` and add the missing implementations. At the moment I think that it's better to always have iterator adaptors implement both, because some iterators have a simpler `fold` implementation than their `try_fold` implementation.

The tests that I added may not be sufficient because they're all just existing tests where `next`/`nth`/`fold`/`try_fold` are replaced by their DEI counterparts, but I do think all paths are covered. Is there anything in particular that I should probably also test?

4 years agoAuto merge of #62987 - Thomasdezeeuw:ioslice-advance, r=Thomasdezeeuw
bors [Tue, 6 Aug 2019 04:43:03 +0000 (04:43 +0000)]
Auto merge of #62987 - Thomasdezeeuw:ioslice-advance, r=Thomasdezeeuw

Add {IoSlice, IoSliceMut}::advance

API inspired by the [`Buf::advance`](https://docs.rs/bytes/0.4.12/bytes/trait.Buf.html#tymethod.advance) method found in the [bytes](https://docs.rs/bytes) crate.

Closes #62726.

4 years agofix tests
Esteban Küber [Mon, 5 Aug 2019 04:18:05 +0000 (21:18 -0700)]
fix tests

4 years agoUpdate README.md
Mazdak Farrokhzad [Tue, 6 Aug 2019 02:01:55 +0000 (04:01 +0200)]
Update README.md

4 years agodoc: the content has since been moved to the guide
Tshepang Lekhonkhobe [Tue, 6 Aug 2019 01:03:45 +0000 (03:03 +0200)]
doc: the content has since been moved to the guide

4 years agodoc: fix broken sentence
Tshepang Lekhonkhobe [Tue, 6 Aug 2019 00:36:59 +0000 (02:36 +0200)]
doc: fix broken sentence

Also, the move was done nearly a year ago

4 years agoClarify align_to's requirements and obligations
Jake Goulding [Mon, 5 Aug 2019 15:57:55 +0000 (11:57 -0400)]
Clarify align_to's requirements and obligations

4 years agoTests around moving parts of structs and tuples across await points
Ryan Gorup [Mon, 5 Aug 2019 23:14:41 +0000 (16:14 -0700)]
Tests around moving parts of structs and tuples across await points

4 years agoChanged tests to check-pass.
Alexander Regueiro [Mon, 5 Aug 2019 22:43:26 +0000 (23:43 +0100)]
Changed tests to check-pass.

4 years agoAdd test for DerefMut methods
Guillaume Gomez [Mon, 5 Aug 2019 22:41:52 +0000 (00:41 +0200)]
Add test for DerefMut methods

4 years agoPlaceRef's base is already a reference
Santiago Pastorino [Mon, 5 Aug 2019 22:41:16 +0000 (00:41 +0200)]
PlaceRef's base is already a reference

4 years agoMake use of possibly uninitialized data a hard error
Tyler Mandry [Sat, 3 Aug 2019 00:08:16 +0000 (17:08 -0700)]
Make use of possibly uninitialized data a hard error

This is one of the behaviors we no longer allow in NLL. Since it can
lead to undefined behavior, I think it's definitely worth making it a
hard error without waiting to turn off migration mode (#58781).

Closes #60450.

My ulterior motive here is making it impossible to leave variables
partially initialized across a yield (see discussion at #63035), so
tests are included for that.

4 years agoDisplay methods from DerefMut in the sidebar as well
Guillaume Gomez [Thu, 18 Jul 2019 21:38:23 +0000 (23:38 +0200)]
Display methods from DerefMut in the sidebar as well

4 years agodon't ignore mir_dump folder
Ralf Jung [Mon, 5 Aug 2019 20:30:13 +0000 (22:30 +0200)]
don't ignore mir_dump folder

4 years agoMake qualify consts in_projection use PlaceRef
Santiago Pastorino [Mon, 5 Aug 2019 18:58:07 +0000 (20:58 +0200)]
Make qualify consts in_projection use PlaceRef

4 years agoAuto merge of #59369 - oli-obk:unwrap_usICE, r=eddyb,nikomatsakis
bors [Mon, 5 Aug 2019 19:06:50 +0000 (19:06 +0000)]
Auto merge of #59369 - oli-obk:unwrap_usICE, r=eddyb,nikomatsakis

`unwrap_usize` should at least try to evaluate the underlying constant

r? @eddyb

fixes #59016

I know that I'm still using `ParamEnv` wrongly, but that's a preexisting issue not amplified by this PR.

4 years agoassume_init: warn about valid != safe
Ralf Jung [Mon, 5 Aug 2019 18:13:59 +0000 (20:13 +0200)]
assume_init: warn about valid != safe

4 years agoimprove align_offset docs
Ralf Jung [Mon, 5 Aug 2019 16:38:10 +0000 (18:38 +0200)]
improve align_offset docs

4 years agoForce callers of resolve_ast_path to deal with Res::Err correctly
Mark Rousskov [Mon, 5 Aug 2019 16:25:32 +0000 (12:25 -0400)]
Force callers of resolve_ast_path to deal with Res::Err correctly

4 years agoGet rid of one more useless `lift` invocation
Oliver Scherer [Mon, 5 Aug 2019 15:49:40 +0000 (17:49 +0200)]
Get rid of one more useless `lift` invocation

4 years agoUpdate to new passing-ui-test scheme
Oliver Scherer [Fri, 26 Jul 2019 05:57:42 +0000 (07:57 +0200)]
Update to new passing-ui-test scheme

4 years agoPrevent array length printing cycle with debug assertions
Oliver Scherer [Sun, 26 May 2019 15:33:32 +0000 (17:33 +0200)]
Prevent array length printing cycle with debug assertions

4 years agoFixup: eval_usize needs param env
Oliver Scherer [Sun, 26 May 2019 13:27:04 +0000 (15:27 +0200)]
Fixup: eval_usize needs param env

4 years agoAddress comment and formatting nits
Oliver Scherer [Fri, 17 May 2019 09:13:55 +0000 (11:13 +0200)]
Address comment and formatting nits

4 years agoClear the ParamEnv where its information is irrelevant
Oliver Scherer [Sun, 31 Mar 2019 16:35:39 +0000 (18:35 +0200)]
Clear the ParamEnv where its information is irrelevant

4 years agoFiddle param env through to `try_eval_bits` in most places
Oliver Scherer [Mon, 25 Mar 2019 23:13:09 +0000 (00:13 +0100)]
Fiddle param env through to `try_eval_bits` in most places

4 years agoAdd regression tests
Oliver Scherer [Fri, 22 Mar 2019 17:33:12 +0000 (18:33 +0100)]
Add regression tests

4 years agoDon't abort on unevaluated constants without at least tryting to eval them
Oliver Scherer [Fri, 22 Mar 2019 17:30:35 +0000 (18:30 +0100)]
Don't abort on unevaluated constants without at least tryting to eval them

4 years agoClean up the `ty::Const::assert*` methods
Oliver Scherer [Fri, 22 Mar 2019 16:30:15 +0000 (17:30 +0100)]
Clean up the `ty::Const::assert*` methods

4 years agoAuto merge of #61491 - stjepang:impls-for-accesserror, r=dtolnay
bors [Mon, 5 Aug 2019 15:30:40 +0000 (15:30 +0000)]
Auto merge of #61491 - stjepang:impls-for-accesserror, r=dtolnay

Add a few trait impls for AccessError

4 years agoAdded another test.
Alexander Regueiro [Mon, 5 Aug 2019 14:16:15 +0000 (15:16 +0100)]
Added another test.

4 years agoDon't store &Span
Mark Rousskov [Mon, 5 Aug 2019 14:28:23 +0000 (10:28 -0400)]
Don't store &Span

This is just needless indirection.

4 years agoAdd implementations for converting boxed slices into boxed arrays
Jake Goulding [Tue, 4 Jun 2019 12:15:47 +0000 (08:15 -0400)]
Add implementations for converting boxed slices into boxed arrays

This mirrors the implementations of reference slices into arrays.

4 years agotest drop order for parameters when a future is dropped part-way through execution
David Laban [Mon, 5 Aug 2019 14:26:08 +0000 (15:26 +0100)]
test drop order for parameters when a future is dropped part-way through execution

4 years agoReplace error callback with Result
Mark Rousskov [Mon, 5 Aug 2019 14:21:25 +0000 (10:21 -0400)]
Replace error callback with Result

4 years agoAdded test for issue.
Alexander Regueiro [Mon, 17 Jun 2019 23:38:29 +0000 (00:38 +0100)]
Added test for issue.

4 years agouseful debug
Niko Matsakis [Fri, 12 Jul 2019 10:31:42 +0000 (06:31 -0400)]
useful debug

4 years agouseful comments
Niko Matsakis [Fri, 12 Jul 2019 10:29:27 +0000 (06:29 -0400)]
useful comments

4 years agoEnsure `type_param_predicates` fn only returns predicates for type param with given...
Alexander Regueiro [Mon, 17 Jun 2019 22:41:20 +0000 (23:41 +0100)]
Ensure `type_param_predicates` fn only returns predicates for type param with given def-ID.

4 years agoGot rid of concept of 'principal trait' in more places in codebase.
Alexander Regueiro [Mon, 17 Jun 2019 23:02:26 +0000 (00:02 +0100)]
Got rid of concept of 'principal trait' in more places in codebase.

4 years agoA few cosmetic improvements.
Alexander Regueiro [Mon, 17 Jun 2019 22:40:24 +0000 (23:40 +0100)]
A few cosmetic improvements.

4 years agofix slice comparison
Ralf Jung [Mon, 5 Aug 2019 13:30:08 +0000 (15:30 +0200)]
fix slice comparison

Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
4 years agoRemove leftover AwaitOrigin
Mark Rousskov [Mon, 5 Aug 2019 13:14:51 +0000 (09:14 -0400)]
Remove leftover AwaitOrigin

This was missed in PR #62293.

4 years agoMake mk_attr_id private to libsyntax
Mark Rousskov [Sun, 4 Aug 2019 23:35:29 +0000 (19:35 -0400)]
Make mk_attr_id private to libsyntax

4 years agoDrop explicit span argument from mk_name_value_item
Mark Rousskov [Sun, 4 Aug 2019 22:03:34 +0000 (18:03 -0400)]
Drop explicit span argument from mk_name_value_item

4 years agoDrop span argument from mk_list_item
Mark Rousskov [Sun, 4 Aug 2019 21:59:06 +0000 (17:59 -0400)]
Drop span argument from mk_list_item

4 years agoadapt rustdoc to infailable lexer
Aleksey Kladov [Tue, 30 Jul 2019 10:45:08 +0000 (13:45 +0300)]
adapt rustdoc to infailable lexer

4 years agoadd unknown token
Aleksey Kladov [Tue, 30 Jul 2019 09:31:41 +0000 (12:31 +0300)]
add unknown token

4 years agoremove special code path for unknown tokens
Aleksey Kladov [Tue, 30 Jul 2019 09:33:32 +0000 (12:33 +0300)]
remove special code path for unknown tokens

4 years agoTest content, not value
Ralf Jung [Mon, 5 Aug 2019 09:21:15 +0000 (11:21 +0200)]
Test content, not value

Co-Authored-By: Aleksey Kladov <aleksey.kladov@gmail.com>
4 years agoAuto merge of #63079 - RalfJung:ctfe-no-align, r=oli-obk
bors [Mon, 5 Aug 2019 08:16:51 +0000 (08:16 +0000)]
Auto merge of #63079 - RalfJung:ctfe-no-align, r=oli-obk

CTFE: simplify ConstValue by not checking for alignment

I hope the test suite actually covers the problematic cases here?

r? @oli-obk

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

4 years agoAuto merge of #63248 - petrochenkov:nomarker, r=matthewjasper
bors [Mon, 5 Aug 2019 04:36:51 +0000 (04:36 +0000)]
Auto merge of #63248 - petrochenkov:nomarker, r=matthewjasper

Move special treatment of `derive(Copy, PartialEq, Eq)` from expansion infrastructure to elsewhere

As described in https://github.com/rust-lang/rust/pull/62086#issuecomment-515195477.

Reminder:
- `derive(PartialEq, Eq)` makes the type it applied to a "structural match" type, so constants of this type can be used in patterns (and const generics in the future).
- `derive(Copy)` notifies other derives that the type it applied to implements `Copy`, so `derive(Clone)` can generate optimized code and other derives can generate code working with `packed` types and types with `rustc_layout_scalar_valid_range` attributes.

First, the special behavior is now enabled after properly resolving the derives, rather than after textually comparing them with `"Copy"`, `"PartialEq"` and `"Eq"` in `fn add_derived_markers`.

The markers are no longer kept as attributes in AST since derives cannot modify items and previously did it through hacks in the expansion infra.
Instead, the markers are now kept in a "global context" available from all the necessary places, namely - resolver.

For `derive(PartialEq, Eq)` the markers are created by the derive macros themselves and then consumed during HIR lowering to add the `#[structural_match]` attribute in HIR.
This is still a hack, but now it's a hack local to two specific macros rather than affecting the whole expansion infra.
Ideally we should find the way to put `#[structural_match]` on the impls rather than on the original item, and then consume it in `rustc_mir`, then no hacks in expansion and lowering will be required.
(I'll make an issue about this for someone else to solve, after this PR lands.)

The marker for `derive(Copy)` cannot be emitted by the `Copy` macro itself because we need to know it *before* the `Copy` macro is expanded for expanding other macros.
So we have to do it in resolve and block expansion of any derives in a `derive(...)` container until we know for sure whether this container has `Copy` in it or not.
Nasty stuff.

r? @eddyb or @matthewjasper

4 years agoAuto merge of #63245 - RalfJung:miri-error, r=oli-obk
bors [Mon, 5 Aug 2019 00:57:19 +0000 (00:57 +0000)]
Auto merge of #63245 - RalfJung:miri-error, r=oli-obk

More Miri error tweaks

* Add `err_` version of the `_format!` macros
* Add `UbExperimental` variant so that Miri can mark some UB as experimental (e.g. Stacked Borrows)

r? @oli-obk