Commit graph

6147 commits

Author SHA1 Message Date
Mazdak Farrokhzad
fb79a74020
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.
2019-08-07 01:39:28 +02:00
Mazdak Farrokhzad
fb1f57e0e5
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
2019-08-07 01:39:25 +02:00
bors
6a91782b72 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
2019-08-06 17:19:05 +00:00
bravomikekilo
3a95c716dc Add rustfix test and fix test name. 2019-08-06 16:00:13 +08:00
Mazdak Farrokhzad
61da2f4d19
Rollup merge of #63264 - arielb1:revert-private-coherence-errors, r=estebank
Revert "Rollup merge of #62696 - chocol4te:fix_#62194, r=estebank"

This reverts commit df21a6f040 (#62696), reversing
changes made to cc16d04869.

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
2019-08-06 08:17:41 +02:00
Mazdak Farrokhzad
ab7155dd97
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
2019-08-06 08:17:38 +02:00
Mazdak Farrokhzad
61e270ab48
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?
2019-08-06 08:17:34 +02:00
Tyler Mandry
9058bf2100 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.
2019-08-05 14:57:12 -07:00
Oliver Scherer
f2079338b5 Update to new passing-ui-test scheme 2019-08-05 17:48:05 +02:00
Oliver Scherer
2d86d040a5 Address comment and formatting nits 2019-08-05 17:48:05 +02:00
Oliver Scherer
f9e29b279c Add regression tests 2019-08-05 17:48:04 +02:00
Jake Goulding
32324d22c3 Add implementations for converting boxed slices into boxed arrays
This mirrors the implementations of reference slices into arrays.
2019-08-05 10:26:53 -04:00
Aleksey Kladov
b5e35b128e remove special code path for unknown tokens 2019-08-05 13:15:11 +03:00
bors
e1d7e4ae82 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
2019-08-05 04:36:51 +00:00
Ariel Ben-Yehuda
95f29aa81b Revert "Rollup merge of #62696 - chocol4te:fix_#62194, r=estebank"
This reverts commit df21a6f040, reversing
changes made to cc16d04869.
2019-08-04 19:52:43 +03:00
bors
f01b9f803b Auto merge of #62816 - estebank:type-ascription-macros, r=petrochenkov
Point at type ascription before macro invocation on expansion parse error

Fix https://github.com/rust-lang/rust/issues/47666. Follow up to https://github.com/rust-lang/rust/pull/62791.

r? @petrochenkov
2019-08-04 16:19:04 +00:00
Vadim Petrochenkov
2a9b75281b Move special treatment of derive(Copy, PartialEq, Eq) from expansion infrastructure to elsewhere 2019-08-03 23:57:35 +03:00
bors
6e0d27d936 Auto merge of #63059 - Centril:sound-bind-by-move, r=matthewjasper
Make `#![feature(bind_by_move_pattern_guards)]` sound without `#[feature(nll)]`

Implements https://github.com/rust-lang/rust/issues/15287#issuecomment-507054617 making `#![feature(bind_by_move_pattern_guards)]]` sound without also having `#![feature(nll)]`. The logic here is that if we see a `match` guard, we will refuse to downgrade NLL errors to warnings. This is in preparation for hopefully stabilizing the former feature in https://github.com/rust-lang/rust/pull/63118.

As fall out from the implementation we also:
Fixes https://github.com/rust-lang/rust/issues/31287
Fixes https://github.com/rust-lang/rust/issues/27282

r? @matthewjasper
2019-08-03 20:11:25 +00:00
bors
a457433456 Auto merge of #63234 - Centril:rollup-h9t731z, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #62954 (Fix typo in Delimited::open_tt)
 - #63146 (Cleanup syntax::attr)
 - #63218 (rustbuild: RISC-V is no longer an experimental LLVM target)
 - #63227 (dead_code: Properly inspect fields in struct patterns with type relative paths)
 - #63229 (A bit of Miri error cleanup)

Failed merges:

r? @ghost
2019-08-03 12:20:42 +00:00
Mazdak Farrokhzad
42dfdc5aa5
Rollup merge of #63229 - RalfJung:miri-error, r=oli-obk
A bit of Miri error cleanup

Some cleanup after https://github.com/rust-lang/rust/pull/62969.

r? @oli-obk
Cc @saleemjaffer
2019-08-03 13:12:04 +02:00
Mazdak Farrokhzad
2fd9548039
Rollup merge of #63227 - jakubadamw:issue-63151, r=estebank
dead_code: Properly inspect fields in struct patterns with type relative paths

Closes #63151.
2019-08-03 13:12:02 +02:00
Mazdak Farrokhzad
42a3281275
Rollup merge of #62954 - ia0:fix_typo_span, r=Centril
Fix typo in Delimited::open_tt
2019-08-03 13:11:57 +02:00
bors
8e917f4838 Auto merge of #62946 - RalfJung:miri_type_dispatch_first, r=oli-obk
Miri: dispatch first on the type

Based on the fact that Miri now always has intptrcast available, we can change binops and casts to first check the type of the source operand and then decide based on that what to do, instead of considering the value (pointer vs bits) first.
2019-08-03 08:33:07 +00:00
bors
d7270712cb Auto merge of #63180 - varkor:trait-alias-impl-trait, r=Centril
Change opaque type syntax from `existential type` to type alias `impl Trait`

This implements a new feature gate `type_alias_impl_trait` (this is slightly different from the originally proposed feature name, but matches what has been used in discussion since), deprecating the old `existential_types` feature.

The syntax for opaque types has been changed. In addition, the "existential" terminology has been replaced with "opaque", as per previous discussion and the RFC.

This makes partial progress towards implementing https://github.com/rust-lang/rust/issues/63063.

r? @Centril
2019-08-03 02:21:23 +00:00
Ralf Jung
e5fc9572d9 bless 2019-08-03 00:20:06 +02:00
Mazdak Farrokhzad
f6d8977fbb
Rollup merge of #63212 - Centril:param-attrs-pretty, r=davidtwco
Pretty print attributes in `print_arg`

Fixes https://github.com/rust-lang/rust/issues/63210.
cc https://github.com/rust-lang/rust/issues/60406

r? @petrochenkov
2019-08-03 00:09:12 +02:00
Mazdak Farrokhzad
109b21f7b7
Rollup merge of #63208 - tmandry:issue-62658, r=cramertj
Round generator sizes to a multiple of their alignment

Fixes #62658.

r? @cramertj
cc @eddyb
2019-08-03 00:09:11 +02:00
Mazdak Farrokhzad
edc846f29e
Rollup merge of #63121 - estebank:formatting-pos, r=alexcrichton
On `format!()` arg count mismatch provide extra info

When positional width and precision formatting flags are present in a
formatting string that has an argument count mismatch, provide extra
information pointing at them making it easiser to understand where the
problem may lay:

```
error: 4 positional arguments in format string, but there are 3 arguments
  --> $DIR/ifmt-bad-arg.rs:78:15
   |
LL |     println!("{} {:.*} {}", 1, 3.2, 4);
   |               ^^ ^^--^ ^^      --- this parameter corresponds to the precision flag
   |                    |
   |                    this precision flag adds an extra required argument at position 1, which is why there are 4 arguments expected
   |
   = note: positional arguments are zero-based
   = note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html

error: 4 positional arguments in format string, but there are 3 arguments
  --> $DIR/ifmt-bad-arg.rs:81:15
   |
LL |     println!("{} {:07$.*} {}", 1, 3.2, 4);
   |               ^^ ^^-----^ ^^      --- this parameter corresponds to the precision flag
   |                    |  |
   |                    |  this precision flag adds an extra required argument at position 1, which is why there are 4 arguments expected
   |                    this width flag expects an `usize` argument at position 7, but there are 3 arguments
   |
   = note: positional arguments are zero-based
   = note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html

error: invalid reference to positional argument 7 (there are 3 arguments)
  --> $DIR/ifmt-bad-arg.rs:84:18
   |
LL |     println!("{} {:07$} {}", 1, 3.2, 4);
   |                  ^^^--^
   |                     |
   |                     this width flag expects an `usize` argument at position 7, but there are 3 arguments
   |
   = note: positional arguments are zero-based
   = note: for information about formatting flags, visit https://doc.rust-lang.org/std/fmt/index.html
```

Fix #49384.
2019-08-03 00:09:06 +02:00
Jakub Adam Wieczorek
8235b6f8c3 dead_code: Properly inspect fields in struct patterns with type relative paths 2019-08-02 21:56:34 +00:00
Ralf Jung
b9db95edb1 fix rebase fallout 2019-08-02 23:04:11 +02:00
Ralf Jung
f06a274880 bless all the things 2019-08-02 23:04:11 +02:00
Ralf Jung
7b30612c9b add is_any_ptr type test; this also helps pacify tidy 2019-08-02 23:04:11 +02:00
Ralf Jung
7885fac7e9 improve error when CTFE does ptr-int-cast; update tests 2019-08-02 23:01:53 +02:00
varkor
fbd7e0cf0e Fix broken test and nit 2019-08-02 21:13:58 +01:00
bravomikekilo
4c1d892960 fix tidy problem 2019-08-03 02:17:20 +08:00
bravomikekilo
e64493e2d4 add new test and add conditional whitespace 2019-08-03 01:46:09 +08:00
bors
1df512fcae Auto merge of #63214 - Centril:rollup-hdb7dnx, r=Centril
Rollup of 7 pull requests

Successful merges:

 - #62663 (More questionmarks in doctests)
 - #62969 (Changing the structure of `mir::interpret::InterpError`)
 - #63153 (Remove redundant method with const variable resolution)
 - #63189 (Doc improvements)
 - #63198 (Allow trailing comma in macro 2.0 declarations.)
 - #63202 (Fix ICE in #63135)
 - #63203 (Make is_mutable use PlaceRef instead of it's fields)

Failed merges:

r? @ghost
2019-08-02 11:24:13 +00:00
Mazdak Farrokhzad
3396550420
Rollup merge of #63202 - exphp-forks:parser-ice-63135, r=estebank
Fix ICE in #63135

Closes #63135.

r?@estebank
2019-08-02 12:14:21 +02:00
Mazdak Farrokhzad
89dce46efd
Rollup merge of #63198 - rbartlensky:fix-macro-trailing-comma, r=petrochenkov
Allow trailing comma in macro 2.0 declarations.

This should hopefully close #63102.
2019-08-02 12:14:20 +02:00
bors
fc3ef9698f Auto merge of #61393 - gnzlbg:update_libc, r=gnzlbg
Update Cargo.lock
2019-08-02 07:45:05 +00:00
Mazdak Farrokhzad
d1c89d64bc Test for printing attrs on formal params. 2019-08-02 09:35:28 +02:00
varkor
b049221844 Address review comments 2019-08-02 02:44:36 +01:00
varkor
a45cde5ad0 Resolve FIXME with async-await test 2019-08-02 02:44:36 +01:00
varkor
70c8839f7c Fix fallout after rebase 2019-08-02 02:44:36 +01:00
varkor
c28ce3e4ca Replace "existential" by "opaque" 2019-08-02 02:44:36 +01:00
varkor
fc48541ab1 Update syntax in existing tests 2019-08-02 02:44:35 +01:00
varkor
87738fe834 Switch existential_type to type_alias_impl_trait 2019-08-02 02:44:35 +01:00
Tyler Mandry
14be088677 Round generator sizes to multiple of their alignment
Fixes #62658.
2019-08-01 18:24:12 -07:00
Robert Bartlensky
2aa368aa0e Add check-pass test for #63102. 2019-08-01 22:41:10 +01:00
Michael Lamparski
b3321fb26e Fix ICE in #63135 2019-08-01 17:34:00 -04:00