Commit graph

17513 commits

Author SHA1 Message Date
Mazdak Farrokhzad
6e8fabb4ac
Rollup merge of #63586 - petrochenkov:nospanned, r=eddyb
cleanup: Remove `Spanned` where possible

It generally only makes sense on enums, otherwise it's more convenient to "flatten" it by adding a span field to the struct it wraps.
2019-08-15 14:34:10 +02:00
Mazdak Farrokhzad
19d6178b8f
Rollup merge of #63582 - JohnTitor:fix-ice-63226, r=oli-obk
Fix ICE #63226

Fixes #63226

r? @oli-obk
2019-08-15 14:34:08 +02:00
Vadim Petrochenkov
a6182711ef Remove Spanned from {ast,hir}::FieldPat 2019-08-15 12:31:50 +03:00
Vadim Petrochenkov
433b1e36e1 Remove Spanned from ast::Mac 2019-08-15 11:45:28 +03:00
Yuki Okushi
7adb20e4cd Use is_const() 2019-08-15 17:37:54 +09:00
Yuki Okushi
29b5ebf8a5 Use a match guard to avoid code repetition 2019-08-15 16:58:43 +09:00
Yuki Okushi
5b88fbabeb Check FnHeader not to cause ICE 2019-08-15 13:56:57 +09:00
bors
9e9a136fce Auto merge of #63575 - Centril:rollup-anlv9g5, r=Centril
Rollup of 11 pull requests

Successful merges:

 - #62984 (Add lint for excess trailing semicolons)
 - #63075 (Miri: Check that a ptr is aligned and inbounds already when evaluating `*`)
 - #63490 (libsyntax: cleanup and refactor `pat.rs`)
 - #63507 (When needing type annotations in local bindings, account for impl Trait and closures)
 - #63509 (Point at the right enclosing scope when using `await` in non-async fn)
 - #63528 (syntax: Remove `DummyResult::expr_only`)
 - #63537 (expand: Unimplement `MutVisitor` on `MacroExpander`)
 - #63542 (Add NodeId for Arm, Field and FieldPat)
 - #63543 (Merge Variant and Variant_)
 - #63560 (move test that shouldn't be in test/run-pass/)
 - #63570 (Adjust tracking issues for `MaybeUninit<T>` gates)

Failed merges:

r? @ghost
2019-08-15 00:32:05 +00:00
Mazdak Farrokhzad
ad44d42750
Rollup merge of #63543 - c410-f3r:variant, r=c410-f3r
Merge Variant and Variant_

Extracted from #63468.
2019-08-14 22:56:29 +02:00
Mazdak Farrokhzad
02e2a57f26
Rollup merge of #63509 - estebank:async-span, r=Centril
Point at the right enclosing scope when using `await` in non-async fn

Fix #63398.
2019-08-14 22:56:24 +02:00
Mazdak Farrokhzad
d2d49d238f
Rollup merge of #63507 - estebank:type-inference-error, r=Centril
When needing type annotations in local bindings, account for impl Trait and closures

Fix https://github.com/rust-lang/rust/issues/46680, fix https://github.com/rust-lang/rust/issues/63504, fix https://github.com/rust-lang/rust/issues/63506, fix #40014, cc https://github.com/rust-lang/rust/issues/63502.
2019-08-14 22:56:22 +02:00
Mazdak Farrokhzad
c358476c1b
Rollup merge of #63075 - RalfJung:deref-checks, r=oli-obk
Miri: Check that a ptr is aligned and inbounds already when evaluating `*`

This syncs Miri with what the Nomicon and the Reference say, and resolves https://github.com/rust-lang/miri/issues/447.

Also this would not have worked without https://github.com/rust-lang/rust/pull/62982 due to new cycles. ;)

r? @oli-obk
2019-08-14 22:56:20 +02:00
bors
082cf2f9d1 Auto merge of #63534 - Mark-Simulacrum:stage0-bump, r=Centril
Bump to 1.39

r? @Centril
2019-08-14 20:49:07 +00:00
Esteban Küber
6c3a98e029 review comments 2019-08-14 12:14:25 -07:00
Caio
6a42b0b28d Merge Variant and Variant_ 2019-08-14 14:47:01 -03:00
Mark Rousskov
2601c86487 Handle cfg(bootstrap) throughout 2019-08-14 05:39:53 -04:00
Mazdak Farrokhzad
5741e29417
Rollup merge of #63501 - nikomatsakis:issue-63500-async-anon-impl-lifetime, r=cramertj
use `ParamName` to track in-scope lifetimes instead of Ident

Also, clear in-scope lifetimes when visiting nested items.

Fixes #63500.
Fixes #63225.
Fixes #52532.

r? @cramertj
2019-08-14 04:18:49 +02:00
Mazdak Farrokhzad
4134241bcf
Rollup merge of #63499 - nikomatsakis:issuee-63388-async-fn-elision-self-mut-self, r=cramertj
handle elision in async fn correctly

We now always make fresh lifetimne parameters for all elided
lifetimes, whether they are in the inputs or outputs. But then
we generate `'_` in the case of elided lifetimes from the outputs.

Example:

```rust
async fn foo<'a>(x: &'a u32) -> &u32 { .. }
```

becomes

```rust
type Foo<'a, 'b> = impl Future<Output = &'b u32>;
fn foo<'a>(x: &'a u32) -> Foo<'a, '_>
```

Fixes #63388
2019-08-14 04:18:48 +02:00
Esteban Küber
806476c840 Suggest giving return type to closures on E0282 2019-08-13 16:41:43 -07:00
Esteban Küber
939c1cb349 review comments 2019-08-13 11:24:08 -07:00
Esteban Küber
13fd4666b0 Point at the right enclosing scope when using await in non-async fn 2019-08-13 00:52:07 -07:00
Esteban Küber
fb2511c3c5 Suggest Box::new when appropriate
When encountering a boxed value as expected and a stack allocated value
that could be boxed to fulfill the expectation, like in the following
snippet, suggest `Box::new` wrapping.
2019-08-12 20:24:30 -07:00
Esteban Küber
1e6f753762 Fix tidy 2019-08-12 20:24:26 -07:00
Esteban Küber
3b6d46c640 Resolve types when suggesting boxed closure 2019-08-12 18:12:19 -07:00
Niko Matsakis
e4756e6b07 clear in-scope lifetimes for nested items in HIR lowering
This was causing us to incorrectly think the lifetimes were
already declared on the scope for the nested item, when in fact
they are not inherited.
2019-08-12 21:08:32 -04:00
Esteban Küber
b8708e2c9a When needing type annotations in local bindings, account for impl Trait and closures
Do not suggest nonsensical types when the type inference is failing on
`impl Trait` or anonymous closures.
2019-08-12 16:50:46 -07:00
Niko Matsakis
948739f2ee revamp comment 2019-08-12 19:21:13 -04:00
Niko Matsakis
cbe8518407 use modern everywhere 2019-08-12 18:14:48 -04:00
Niko Matsakis
03e7b96281 revamp how we handle elision in async fn
We now always make fresh lifetimne parameters for all elided
lifetimes, whether they are in the inputs or outputs. But then
we generate `'_` in the case of elided lifetimes from the outputs.

Example:

```rust
async fn foo<'a>(x: &'a u32) -> &u32 { .. }
```

becomes

```rust
type Foo<'a, 'b> = impl Future<Output = &'b u32>;
fn foo<'a>(x: &'a u32) -> Foo<'a, '_>
```
2019-08-12 17:18:26 -04:00
Niko Matsakis
18e54539ca use ParamName to track in-scope lifetimes instead of Ident
This allows us to record "fresh" lifetime names for cases like `impl
Foo<'_>`.
2019-08-12 15:19:30 -04:00
Mazdak Farrokhzad
0b4823de23
Rollup merge of #62108 - Zoxc:sharded-queries, r=oli-obk
Use sharded maps for queries

Based on https://github.com/rust-lang/rust/pull/61779.

r? @Gankro
2019-08-12 10:58:12 +02:00
Mark Rousskov
4229dc3538
Rollup merge of #63464 - Mark-Simulacrum:deref-instance, r=eddyb
Copy ty::Instance instead of passing by reference

ty::Instance is small and Copy, we should not be adding additional
indirection.

Fixes #63409.

r? @eddyb
2019-08-11 15:18:49 -04:00
Mark Rousskov
c805a38dff
Rollup merge of #63441 - bjorn3:patch-1, r=Mark-Simulacrum
Derive Debug for CrateInfo
2019-08-11 15:18:44 -04:00
Mark Rousskov
8122a01b27
Rollup merge of #63440 - RalfJung:ctfe-backtrace, r=oli-obk
rename RUST_CTFE_BACKTRACE to RUSTC_CTFE_BACKTRACE

This matches `RUSTC_LOG`. Both affect only rustc, not any Rust program.
2019-08-11 15:18:43 -04:00
Mark Rousskov
061245e2b1
Rollup merge of #63346 - RalfJung:zeroed-lint, r=eddyb
Lint on some incorrect uses of mem::zeroed / mem::uninitialized

Cc https://github.com/rust-lang/rust/issues/62825 and https://internals.rust-lang.org/t/make-mem-uninitialized-and-mem-zeroed-panic-for-some-types-where-0-is-a-niche/10605

This does not yet handle `NonNull`/`NonZero*`, but it is a start.

I also improved some doc issues I hit on the way, and added a useful helper to `TyS`.

EDIT: I added the relnotes label mostly as a proposal -- I think this is worth mentioning, but leave the decision up to the release team.
2019-08-11 15:18:40 -04:00
Mark Rousskov
43de341f19 Copy ty::Instance instead of passing by reference
ty::Instance is small and Copy, we should not be adding additional
indirection.
2019-08-11 10:54:38 -04:00
bjorn3
b204232fd3
Derive Debug for NativeLibrary and NativeLibraryKind 2019-08-11 16:51:36 +02:00
bors
8a068699a2 Auto merge of #63446 - Centril:refactor-lowering, r=oli-obk
Refactor and categorize lowering wrt. items / exprs

Split lowering into more files along the lines of "expression related" and "item related".
Also refactor huge methods into smaller ones.

A next step might be to introduce "type related" and merge patterns and statements combined with expressions into "value related". There's still more work to do but the PR was getting too big :)

r? @oli-obk
2019-08-11 13:37:37 +00:00
Ralf Jung
3972d05fec proper doc comment for 'recovered' field of variant
Curtesy of petrochenkov
2019-08-11 12:04:49 +02:00
Ralf Jung
4b062a175f note a FIXME 2019-08-11 12:04:49 +02:00
Ralf Jung
8e6fbbec83 add tuple_fields convenience method and use it in a few places 2019-08-11 12:04:49 +02:00
Ralf Jung
fbd56131a9 fix a comment 2019-08-11 12:04:49 +02:00
Vadim Petrochenkov
e18ad70d2b diagnostics: Describe crate root modules in DefKind::Mod as "crate" 2019-08-10 23:17:20 +03:00
Mazdak Farrokhzad
eb229bca0d lowering: move lower_arg -> item.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
28af53367a lowering: move scope & capture_clause stuff -> expr.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
5ab73450f8 lowering: refactor into item.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
7f522155dd lowering: move {lower_arm,arm} -> expr.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
93570b02bd lowering: move field -> expr.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
29e9b5ddd4 lowering: refactor label/dest -> expr.rs 2019-08-10 20:24:43 +02:00
Mazdak Farrokhzad
961ace3fc2 lowering: move lower_{unop,binop} -> expr.rs 2019-08-10 20:24:43 +02:00