Commit Graph

120592 Commits

Author SHA1 Message Date
Esteban Küber 3fea832fd7 Fix spacing of expected/found notes without a label 2020-05-27 16:27:15 -07:00
bors ff991d6034 Auto merge of #72531 - RalfJung:miri-upd, r=RalfJung
bump Miri

Fixes https://github.com/rust-lang/rust/issues/72358
r? @ghost Cc @rust-lang/miri
2020-05-24 14:49:54 +00:00
Ralf Jung 9b87f4009b bump Miri 2020-05-24 15:11:00 +02:00
bors 94fccccd2c Auto merge of #72529 - RalfJung:rollup-ydthv90, r=RalfJung
Rollup of 3 pull requests

Successful merges:

 - #72284 (Remove `macro_defs` map)
 - #72393 (Rewrite `Parser::collect_tokens`)
 - #72528 (Fix typo in doc comment.)

Failed merges:

r? @ghost
2020-05-24 11:02:23 +00:00
Ralf Jung e2e3aacc23 Rollup merge of #72528 - emosenkis:patch-1, r=dtolnay
Fix typo in doc comment.

call_one_force -> call_on**c**e_force
2020-05-24 12:17:12 +02:00
Ralf Jung 8692c45595 Rollup merge of #72393 - Aaron1011:feature/rewrite-collect-tokens, r=petrochenkov
Rewrite `Parser::collect_tokens`

The previous implementation did not work when called on an opening
delimiter, or when called re-entrantly from the same `TokenCursor` stack
depth.

I'm not sure how to test this apart from https://github.com/rust-lang/rust/pull/72287
2020-05-24 12:17:11 +02:00
Ralf Jung 94d96b1d75 Rollup merge of #72284 - Aaron1011:feature/inline-macro-did, r=petrochenkov
Remove `macro_defs` map

We now store the `DefId` directly in `ExpnKind::Macro`. This will allow
us to serialize `ExpnData` in PR #72121 without needing to manage a side
table.
2020-05-24 12:17:09 +02:00
Eitan Mosenkis 806f5815d4 Fix typo in doc comment.
call_one_force -> call_once_force
2020-05-24 11:59:07 +03:00
bors 7726070fa7 Auto merge of #72524 - RalfJung:rollup-s9f1pcc, r=RalfJung
Rollup of 2 pull requests

Successful merges:

 - #72388 (Recursively expand `TokenKind::Interpolated` in `probably_equal_for_proc_macro`)
 - #72517 (small select cleanup)

Failed merges:

r? @ghost
2020-05-24 07:46:13 +00:00
Ralf Jung 6cb1c0eb64 Rollup merge of #72517 - lcnr:refactor-winnowing, r=jonas-schievink
small select cleanup
2020-05-24 09:30:37 +02:00
Ralf Jung fb848a6b7d Rollup merge of #72388 - Aaron1011:fix/deep-tokenstream-equality, r=petrochenkov
Recursively expand `TokenKind::Interpolated` in `probably_equal_for_proc_macro`

Fixes #68430

When comparing the captured and re-parsed `TokenStream` for a `TokenKind::Interpolated`, we currently treat any nested `TokenKind::Interpolated` tokens as unequal. If a `TokenKind::Interpolated` token shows up in the captured `TokenStream` due to a `macro_rules!` expansion, we will throw away the captured `TokenStream`, losing span information.

This PR recursively invokes `nt_to_tokenstream` on nested `TokenKind::Interpolated` tokens, effectively flattening the stream into a sequence of non-interpolated tokens. This allows it to compare equal with the re-parsed stream, allowing us to keep the original captured `TokenStream` (with span information).

This requires all of the `probably_equal_for_proc_macro` methods to be moved from `librustc_ast` to `librustc_parse` so that they can call `nt_to_tokenstream`.
2020-05-24 09:30:31 +02:00
bors 52b605c8cb Auto merge of #72362 - matthewjasper:remove-rescope, r=nikomatsakis
Remove ReScope

`ReScope` is unnecessary now that AST borrowck is gone and we're erasing the results of region inference in function bodies. This removes about as much of the old regionck code as possible without having to enable NLL fully.

cc #68261

r? @nikomatsakis
2020-05-24 04:15:08 +00:00
bors 3137f8e2d1 Auto merge of #72516 - Dylan-DPC:rollup-cc4w96z, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #71618 (Preserve substitutions when making trait obligations for suggestions)
 - #72092 (Unblock font loading in rustdoc.css)
 - #72400 (Add missing ASM arena declarations to librustc_middle)
 - #72489 (Fix ice-72487)
 - #72502 (fix discriminant type in generator transform)

Failed merges:

r? @ghost
2020-05-24 00:56:20 +00:00
Bastian Kauschke 82b4fc42fd small select cleanup 2020-05-24 00:06:04 +02:00
Dylan DPC 1e7914467a Rollup merge of #72502 - RalfJung:generator-discr-ty, r=jonas-schievink
fix discriminant type in generator transform

The generator transform assumed that the discriminant type is always `isize`, which is not correct, leading to [ICEs in Miri](https://github.com/rust-lang/rust/pull/72419/files#r429543536) when some extra sanity checking got enabled.

r? @jonas-schievink @eddyb
2020-05-24 00:00:52 +02:00
Dylan DPC ee92ddf811 Rollup merge of #72489 - nbdd0121:issue-72487, r=Amanieu
Fix ice-72487

Fixes #72487

r? @Amanieu
2020-05-24 00:00:51 +02:00
Dylan DPC 3948e60700 Rollup merge of #72400 - Aaron1011:fix/asm-incr-ice, r=Amanieu
Add missing ASM arena declarations to librustc_middle

Fixes #72386

These types also need to get allocated on the `librustc_middle` arena
when we deserialize MIR.

@Amanieu: If we end up using your approach in https://github.com/rust-lang/rust/pull/72392 instead, feel free to copy the test I added over to your PR.
2020-05-24 00:00:48 +02:00
Dylan DPC 238a0ce716 Rollup merge of #72092 - workingjubilee:patch-2, r=GuillaumeGomez
Unblock font loading in rustdoc.css

rustdoc's font loading defaults to "auto", so browsers may block render.
But rustdoc's case prefers a faster TTI for scrolling, this means the
strictest font-display in use should be "swap". rustdoc's fonts do provide
notable legibility improvements but first-time users will have little trouble
reading without. This means "optional" is preferred.

The one exception is Source Serif Pro: it's a big difference for body text, so
"fallback" is preferred over "optional" to cause a (tiny) block.

This follows up on (but does not resolve) #20962, taking PageSpeed Insight's rec fairly directly. Supporting reading material: https://drafts.csswg.org/css-fonts-4/#font-display-desc
2020-05-24 00:00:45 +02:00
Dylan DPC ff48fc91ee Rollup merge of #71618 - ecstatic-morse:issue-71394, r=nikomatsakis
Preserve substitutions when making trait obligations for suggestions

Resolves #71394.

I *think* `map_bound_ref` is correct here. In any case, I think a lot of the diagnostic code is using `skip_binder` more aggressively than it should be, so I doubt that this is worse than the status quo. The assertion that `new_self_ty` has no escaping bound vars should be enough.

r? @estebank

cc @nikomatsakis Is the call to `skip_binder` on line 551 (and elsewhere in this file) appropriate? https://github.com/rust-lang/rust/blob/46ec74e60f238f694b46c976d6217e7cf8d4cf1a/src/librustc_trait_selection/traits/error_reporting/suggestions.rs#L537-L565
2020-05-24 00:00:42 +02:00
bors 4774f9b523 Auto merge of #72474 - mati865:ci-fix, r=pietroalbini
Revert MSYS2 CI workaround

MSYS2 has made workaround for critical packages so older installers like one used by chocolatey can work again.
Fixes https://github.com/rust-lang/rust/issues/72333
2020-05-23 21:21:40 +00:00
Aaron Hill 8da494272f Add missing ASM arena declaration to librustc_middle
Fixes #72386

This type also needs to get allocated on the `librustc_middle` arena
when we deserialize MIR.
2020-05-23 15:50:37 -04:00
bors 8970e8bcf6 Auto merge of #72504 - Dylan-DPC:rollup-6wi1ifz, r=Dylan-DPC
Rollup of 5 pull requests

Successful merges:

 - #72292 (Replace obligation construction with deref_steps())
 - #72431 (add warning sign to UB examples)
 - #72446 (Impl Ord for proc_macro::LineColumn)
 - #72492 (Add some regression tests)
 - #72496 (Correct small typo: 'not' -> 'note')

Failed merges:

r? @ghost
2020-05-23 17:53:54 +00:00
Dylan DPC a03bf3f5f5 Rollup merge of #72496 - shepmaster:typo, r=Dylan-DPC
Correct small typo: 'not' -> 'note'
2020-05-23 19:10:02 +02:00
Dylan DPC e91897d214 Rollup merge of #72492 - JohnTitor:add-tests, r=matthewjasper
Add some regression tests

Closes #69415
Closes #72455

r? @matthewjasper
2020-05-23 19:10:01 +02:00
Dylan DPC 67759b74f4 Rollup merge of #72446 - dtolnay:ord, r=petrochenkov
Impl Ord for proc_macro::LineColumn

```rust
impl Ord for LineColumn {...}
impl PartialOrd for LineColumn {...}
```

for https://doc.rust-lang.org/nightly/proc_macro/struct.LineColumn.html.

The ordering is the natural one you would get by writing one line after another, where we compare line first, then compare columns within the same line.
2020-05-23 19:10:00 +02:00
Dylan DPC d5e3009bd8 Rollup merge of #72431 - RalfJung:ub-warning, r=shepmaster
add warning sign to UB examples

Just to make it less likely that people miss the fact that these are examples for how to *not* do it.
2020-05-23 19:09:58 +02:00
Dylan DPC b24030fc3e Rollup merge of #72292 - ldm0:derefsteps, r=estebank
Replace obligation construction with deref_steps()

1. Use `probe()` to avoid unwanted binding committing during `deref_steps()`.
2. Fixes #59819 again by using `deref_steps()`, make the code cleaner. And if we want to suggest multiple dereferences (like: `consider dereferencing the borrow: "****a"`) in the future, this change will make it easier to achieve.
2020-05-23 19:09:57 +02:00
Ralf Jung b388f96495 bless mir-opt tests 2020-05-23 17:20:17 +02:00
Ralf Jung 89aac16558 fix discriminant type in generator transform 2020-05-23 15:41:57 +02:00
Ralf Jung 1c9b96b754 add warning sign to UB examples 2020-05-23 14:00:55 +02:00
Jake Goulding 749d9e7a26 Correct small typo: 'not' -> 'note' 2020-05-23 07:29:22 -04:00
Yuki Okushi 47e35cb9bd Add test for #72455 2020-05-23 17:53:14 +09:00
Yuki Okushi 58fe05a124 Add test for #69415 2020-05-23 17:53:14 +09:00
bors 75b0a68f35 Auto merge of #72478 - Dylan-DPC:rollup-vval8du, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #71289 (Allow using `Self::` in doc)
 - #72375 (Improve E0599 explanation)
 - #72385 (Add some teams to prioritization exclude_labels)
 - #72395 (Allow rust-highfive to label issues it creates.)
 - #72453 (Add flag to open docs:  x.py doc --open)
 - #72459 (Add core::future::IntoFuture)
 - #72461 (Clean up E0600 explanation)

Failed merges:

r? @ghost
2020-05-23 07:18:17 +00:00
Gary Guo e04baed0db Fix ice-72487 2020-05-23 07:33:09 +01:00
bors 7f940ef5d9 Auto merge of #72256 - ecstatic-morse:once-cell, r=Mark-Simulacrum
Use `once_cell` crate instead of custom data structure

Internally, we use the [`Once`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_data_structures/sync/struct.Once.html) type for shared data that is initialized exactly once and only read from afterwards. `Once` uses a `parking_lot::Mutex` when the parallel compiler is enabled and a `RefCell` when it is not. This PR switches to the [`once_cell`](https://crates.io/crates/once_cell) crate, which also uses a `parking_lot::Mutex` for its `sync` version (because we enable the `parking_lot` feature) but has zero overhead for its `unsync` one.

This PR adds `once_cell` to the list of whitelisted dependencies. I think this is acceptable because it is already used in `rustc_driver`, is owned by a well-known community member (cc @matklad), and has a stable release. cc @rust-lang/compiler

`once_cell` has a slightly more minimal API than `Once`, which allows for initialization to be either optimistic (evaluate the initializer and then synchronize) or pessimistic (synchronize and then evaluate the initializer). `once_cell`'s `get_or_init` is always pessimistic. The optimistic version is only used once in the current `master`.

r? @Mark-Simulacrum
2020-05-23 03:30:07 +00:00
Aaron Hill d277904582 Remove macro_defs map
We store store the `DefId` directly in `ExpnData`. This will allow us to
serialize `ExpnData` in PR #72121 without needing to manage a side
table.
2020-05-22 16:57:25 -04:00
Dylan MacKenzie 1fad3b7a05 Use mk_trait_obligation_with_new_self_ty for new suggestion 2020-05-22 13:34:41 -07:00
Dylan MacKenzie f99519bebb Bail out if output_ty has bound variables 2020-05-22 13:34:41 -07:00
Dylan MacKenzie 7278e29592 Document invariants of mk_trait_obligation_with_new_self_ty 2020-05-22 13:34:41 -07:00
Dylan MacKenzie d2bacb18d2 Ensure that new_self_ty has no escaping bound vars
Otherwise inserting it to the `Binder` used by `trait_ref` would cause
problems. This is just to be extra carefult: we aren't going to
start recommending that the user start using HKTs anytime soon.
2020-05-22 13:34:41 -07:00
Dylan MacKenzie 4d9e9c6d4e Bless other example of #71394 2020-05-22 13:34:41 -07:00
Dylan MacKenzie 8ea828be2f Add regression test for #71394 2020-05-22 13:34:41 -07:00
Dylan MacKenzie 730c6f3e57 Preserve substitutions when trying to prove trait obligation
`mk_obligation_for_def_id` is only correct if the trait and self type do
not have any substitutions. Use a different method,
`mk_trait_obligation_with_new_self_ty` that is more clear about what is
happening.
2020-05-22 13:34:38 -07:00
Dylan MacKenzie 307153e611 Switch to non-doc comment 2020-05-22 13:31:02 -07:00
Dylan MacKenzie f17e2c93a6 Use OnceCell for predecessor cache 2020-05-22 13:31:02 -07:00
Dylan MacKenzie c282c1c654 Use OnceCell instead of Once 2020-05-22 13:31:02 -07:00
Dylan MacKenzie 9f82785c81 Replace rustc_data_structures::sync::Once with OnceCell 2020-05-22 13:26:39 -07:00
Dylan DPC bf1b998be6 Rollup merge of #72461 - GuillaumeGomez:cleanup-e0600, r=Dylan-DPC
Clean up E0600 explanation

r? @Dylan-DPC
2020-05-22 21:45:04 +02:00
Dylan DPC 141ce5f2ad Rollup merge of #72459 - yoshuawuyts:into-future, r=nikomatsakis
Add core::future::IntoFuture

This patch reintroduces the `core::future::IntoFuture` trait. However unlike earlier PRs this patch does not integrate it into the `async/.await` lowering since that lead to performance regressions. By introducing the trait separately from the integration, the integration PR can be more narrowly scoped, and people can start trying out the `IntoFuture` trait today. Thanks heaps!

cc/ @rust-lang/wg-async-foundations

## References
- Original PR adding `IntoFuture` https://github.com/rust-lang/rust/pull/65244
- Open issue to re-land `IntoFuture` (assigned to me) https://github.com/rust-lang/rust/issues/67982
- Tracking issue for `IntoFuture` https://github.com/rust-lang/rust/issues/67644
2020-05-22 21:45:01 +02:00