Commit Graph

24303 Commits

Author SHA1 Message Date
Mazdak Farrokhzad 48cb6bead1 Rollup merge of #59739 - cramertj:stabilize, r=withoutboats
Stabilize futures_api

cc https://github.com/rust-lang/rust/issues/59725.
Based on https://github.com/rust-lang/rust/pull/59733 and https://github.com/rust-lang/rust/pull/59119 -- only the last two commits here are relevant.

r? @withoutboats , @oli-obk for the introduction of `rustc_allow_const_fn_ptr`.
2019-04-24 05:16:18 +02:00
Mazdak Farrokhzad 5f82b5b882 Rollup merge of #56278 - eddyb:mir-debuginfo-proof, r=nikomatsakis
Future-proof MIR for dedicated debuginfo.

This is #56231 without the last commit (the one that actually moves to `VarDebuginfo`).
Nothing should be broken, but it should no longer depend on debuginfo for anything else.

r? @nikomatsakis
2019-04-24 05:16:17 +02:00
bors 0928511d3a Auto merge of #58623 - Amanieu:hashbrown3, r=alexcrichton
Replace HashMap implementation with SwissTable (as an external crate)

This is the same as #56241 except that it imports `hashbrown` as an external crate instead of copying the implementation into libstd.

This includes a few API changes (all unstable):
- `try_reserve` is added to `HashSet`.
- Some trait bounds have been changed in the `raw_entry` API.
- `search_bucket` has been removed from the `raw_entry` API (doesn't work with SwissTable).
2019-04-24 00:20:56 +00:00
Taylor Cramer 3f966dcd53 Stabilize futures_api 2019-04-23 16:13:53 -07:00
Taylor Cramer e617025e96 Add rustc_allow_const_fn_ptr 2019-04-23 15:55:31 -07:00
Amanieu d'Antras 9325451ec9 Fix test 2019-04-24 06:54:14 +08:00
Eduard-Mihai Burtescu c3ca9a35be rustc_mir: create the let and "remainder" scopes in source order. 2019-04-23 23:35:21 +03:00
Eduard-Mihai Burtescu 9260305c9e rustc_mir: pretty-print all locals into their respective scopes. 2019-04-23 23:35:21 +03:00
Mazdak Farrokhzad d1b2d6d64d Rollup merge of #60169 - varkor:tidy-unnecessary-ignore-newline, r=kennytm
Warn when ignore-tidy-linelength is present, but no lines are too long

It's easy for a `// ignore-tidy-linelength` to be added when there is a genuine need to ignore a file's line length, but then after refactoring the need is gone, but the tidy directive is not removed. This means that in the future, further editing may accidentally add unnecessarily long lines. This change forces `// ignore-tidy-linelength` to be used exactly when necessary, to make sure such changes are intentional.
2019-04-23 21:50:57 +02:00
Mazdak Farrokhzad 2deae591a0 Rollup merge of #59839 - KodrAus:must-use-num, r=sfackler
Warn on unused results for operation methods on nums

From a suggestion by @llogiq

Adds a `#[must_use]` attribute to operation methods on integers that take self by value as the first operand and another value as the second. It makes it clear that these methods return the result of the operation instead of mutating `self`, which is the source of a rather embarrassing bug I had in a codebase of mine recently...

As an example:

```rust
struct Int {
   value: i64,
}

impl Int {
    fn add(&mut self, other: i64) {
        self.value.wrapping_add(other);
    }
}
```

Will produce a warning like:

```
warning: unused return value of `core::num::<impl i64>::wrapping_add` that must be used
 --> src/main.rs:7:7
  |
7 |       self.value.wrapping_add(other);
  |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: #[warn(unused_must_use)] on by default
  = note: this returns the result of the operation, without modifying the original
```

If this is something we're on board with, we could do something similar for `f32` and `f64` too. There are probably other methods on integers that make sense.
2019-04-23 21:50:54 +02:00
Mazdak Farrokhzad 62d1574876 Rollup merge of #59823 - davidtwco:issue-54716, r=cramertj
[wg-async-await] Drop `async fn` arguments in async block

Fixes #54716.

This PR modifies the HIR lowering (and some other places to make this work) so that unused arguments to a async function are always dropped inside the async move block and not at the end of the function body.

```
async fn foo(<pattern>: <type>) {
  async move {
  }
} // <-- dropped as you "exit" the fn

// ...becomes...
fn foo(__arg0: <ty>) {
  async move {
    let <pattern>: <ty> = __arg0;
  } // <-- dropped as you "exit" the async block
}
```

However, the exact ordering of drops is not the same as a regular function, [as visible in this playground example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2015&gist=be39af1a58e5d430be1eb3c722cb1ec3) - I believe this to be an unrelated issue. There is a [Zulip topic](https://rust-lang.zulipchat.com/#narrow/stream/187312-t-compiler.2Fwg-async-await/topic/.2354716.20drop.20order) for this.

r? @cramertj
cc @nikomatsakis
2019-04-23 21:50:52 +02:00
David Wood 119e67ac6b Reduce noise and document test case.
This commit introduces a `assert_drop_order_after_poll` helper function
to the test case for this case to reduce repetitive noise and documents
what each function aims to test.
2019-04-23 18:44:41 +01:00
bors 4eff8526a7 Auto merge of #60155 - davidtwco:issue-59819, r=oli-obk
Suggest dereferencing when `Deref` is implemented.

Fixes #59819.

r? @oli-obk
cc @estebank
2019-04-23 15:54:23 +00:00
varkor 5ab5806c87 Fix regression in line ending test 2019-04-23 11:44:27 +01:00
varkor 5392f44a92 Remove unnecessary tidy ignore directives 2019-04-23 11:42:15 +01:00
varkor 497dcfa221 Update ui tests 2019-04-23 11:42:14 +01:00
varkor 62838975d0 Remove unnecessary ignore-tidy-linelength 2019-04-23 11:42:14 +01:00
bors 31f5d69ba4 Auto merge of #60125 - estebank:continue-evaluating, r=oli-obk
Don't stop evaluating due to errors before borrow checking

r? @oli-obk

Fix #60005. Follow up to #59903. Blocked on #53708, fixing the ICE in `src/test/ui/consts/match_ice.rs`.
2019-04-23 09:38:34 +00:00
bors 0f11354a9c Auto merge of #60172 - varkor:tidy-double-trailing-newline, r=kennytm
Disallow double trailing newlines in tidy

This wasn't done previously in https://github.com/rust-lang/rust/pull/47064#issuecomment-354533010 as it affected too many files, but I think it's best to fix it now so that the number of files with double trailing newlines doesn't keep increasing.

r? kennytm
2019-04-23 06:40:12 +00:00
bors 0550766699 Auto merge of #60140 - euclio:pulldown-cmark, r=GuillaumeGomez
upgrade rustdoc's pulldown-cmark to 0.4.1

Fixes #59194.
2019-04-23 00:44:58 +00:00
bors 004c549a73 Auto merge of #60126 - estebank:continue-eval, r=oli-obk
Continue evaluating after item-type checking

Fix #30999.

r? @oli-obk
2019-04-22 21:46:07 +00:00
Esteban Küber 56b1ec06ee Fix ICE related to #53708 2019-04-22 13:11:53 -07:00
Esteban Küber 6e723c24a8 Never stop due to errors before borrow checking 2019-04-22 13:11:53 -07:00
Esteban Küber 2dc5d52a04 Remove needless error in test 2019-04-22 12:19:07 -07:00
Esteban Küber 3a19df20da review comments: deduplicate tests 2019-04-22 12:11:46 -07:00
varkor f571b9548d Update ui tests 2019-04-22 19:50:11 +01:00
Esteban Küber 45bbd14db4 Continue evaluating after item-type checking 2019-04-22 11:31:35 -07:00
David Wood 7ab1bfd692 Only make suggestion when type is Copy.
This commit makes the suggestion to dereference when a type implements
`Deref` only apply if the dereference would succeed (ie. the type is
`Copy`, otherwise a borrow check error would occur).
2019-04-22 19:26:24 +01:00
varkor 096495531c Update ui tests 2019-04-22 17:30:54 +01:00
varkor 9736d32f84 Remove leading newlines 2019-04-22 17:01:33 +01:00
varkor 7f0f0e31ec Remove double trailing newlines 2019-04-22 16:57:01 +01:00
Andy Russell 303016485b upgrade rustdoc's pulldown-cmark to 0.4.1 2019-04-22 09:11:26 -04:00
bors c21fbfe7e3 Auto merge of #59114 - matthewjasper:enable-migate-2015, r=pnkfelix
Enable NLL migrate mode on the 2015 edition

## What is in this PR?

* Remove the `-Zborrowck=ast` flag option from rustc.
* The default in the 2015 edition is now `-Zborrowck=migrate`.
* The 2018 edition default is unchanged: it's still `-Zborrowck=migrate`.
* Enable two-phase borrows (currently toggled via the `-Ztwo-phase-borrows` flag) on all editions.
* Remove most dead code that handled these options.
* Update tests for the above changes.

## What is *not* in this PR?

These are left for future PRs

* Use `-Zborrowck=mir` in NLL compare mode tests (#56993)
* Remove the `-Zborrowck=compare` option (#59193)
* Remove the `-Ztwo-phase-borrows` flag. It's kept, as a flag that does nothing so that perf.rlo has time to stop using it (cc @Mark-Simulacrum)
* Remove MIR typeck as its own MIR pass - it's now run by NLL.
* Enabling `-Zborrowck=mir` by default (#58781)
* Replace `allow_bind_by_move_patterns_with_guards` and `check_for_mutation_in_guard_via_ast_walk` with just using the feature gate. (#59192)

Soundness issues that are fixed by NLL will stay open until full NLL is emitting hard errors. However, these diagnostics and completeness issues can now be closed:

Closes #18330
Closes #22323
Closes #23591
Closes #26736
Closes #27487
Closes #28092
Closes #28970
Closes #29733
Closes #30104
Closes #38915
Closes #39908
Closes #43407
Closes #47524
Closes #48540
Closes #49073
Closes #52614
Closes #55085
Closes #56093
Closes #56496
Closes #57804

cc #43234

r? @pnkfelix
cc @rust-lang/lang
cc @rust-lang/wg-compiler-nll
2019-04-22 12:09:59 +00:00
Matthew Jasper 8eef102270 update tests for migrate mode by default 2019-04-22 08:40:08 +01:00
bors 8f06188991 Auto merge of #60053 - Xanewok:serde-save-analysis, r=nrc
save-analysis: Use serde instead of libserialize to dump JSON data

This breaks the save-analysis infrastructure (which also includes `rls-{analysis, data, span}` crates) from depending on rustc_serialize and so we can start moving them to being supported on stable without implementing `Decodable` et al. by hand for data structures defined there.

Notable benefits:
- we drop the awkward raw byte `PathBuf` [serialization](https://gist.github.com/Xanewok/f4fe8564d0dc0c3ab1dbc244279ff895) (until now (de)serialized as `&[u8]`)
- [faster](https://github.com/serde-rs/json-benchmark) (hopefully noticeable for inner crate dependencies for the RLS workloads)
- we can easily explore the binary serialization backend (which we planned to do for save-analysis anyway)

~This should be merged together with an update to RLS (https://github.com/rust-lang/rls/pull/1435), which technically could be included right now because we can use the bundled `rls-analysis` here directly, however I'd prefer to publish this to crates.io first (https://github.com/rust-lang/rls/pull/1434, cc @nrc) and use the published version, instead.~
Includes https://github.com/rust-lang/rls/pull/1436.

@matklad @nikomatsakis This is also important for the potential RLS 1.0 - 2.0 bridge we talked about on Zulip today
2019-04-22 01:46:13 +00:00
David Wood fd95ba3574 Suggest dereferencing when Deref is implemented.
This commit suggests dereferencing a type when it implements `Deref`
with the correct `Output` associated type.
2019-04-21 20:00:32 +01:00
David Wood c9a2616e44 Add existing behaviour test for deref suggestions.
This commit adds a test that demonstrates the current behaviour where
suggestions to add a dereference aren't given for non-references.
2019-04-21 18:49:02 +01:00
David Wood 61346557ce Enforce consistent drop order w/ async methods.
This commit extends the previous commit to apply to trait methods as
well as free functions.
2019-04-21 16:46:32 +01:00
David Wood 7c6dc7a254 Move async fn arguments into closure.
This commit takes advantage of `AsyncArgument` type that was added in a
previous commit to replace the arguments of the `async fn` in the HIR
and add statements to move the bindings from the new arguments to the
pattern from the old argument.

For example, the async function `foo` below:

    async fn foo((x, _y): (T, V)) {
        async move {
        }
    }

becomes:

    async fn foo(__arg0: (T, V)) {
        async move {
            let (x, _y) = __arg0;
        }
    }
2019-04-21 16:46:32 +01:00
Igor Matuszewski 2dccaa77f8 Use sysroot libserialize in newtype_index test 2019-04-21 15:58:06 +02:00
bors 06a271a6eb Auto merge of #60119 - estebank:bad-recovery, r=davidtwco
Remove assumption from recovery code

Fix #60115.
2019-04-21 10:13:27 +00:00
David Wood 8b57be1bb3 Add test for drop order in async functions.
This tests that async functions drop parameters in the same order as
regular functions.
2019-04-21 09:48:11 +01:00
bors 4d9c6cd722 Auto merge of #60132 - davidtwco:issue-60075, r=estebank
Fix fn front matter parsing ICE from invalid code.

Fixes #60075.

This PR fixes an "unreachable code" ICE that results from parsing
invalid code where the compiler is expecting the next trait item
declaration in the middle of the previous trait item due to extra
closing braces.

r? @estebank (thanks for the minimized test case)
2019-04-21 07:20:14 +00:00
bors c3a7194354 Auto merge of #60088 - varkor:async_await-method-feature-gate, r=cramertj
Feature gate async methods

Fixes https://github.com/rust-lang/rust/issues/60069.
2019-04-20 23:44:02 +00:00
varkor ee496057a5 Update error message in test 2019-04-20 22:32:47 +01:00
varkor 98c71c36d6 Check async in trait methods 2019-04-20 22:03:39 +01:00
varkor 93c4b1f491 Fix additional variadic typos 2019-04-20 22:03:39 +01:00
varkor c93c7e4e7c Add test for async fn methods feature gating 2019-04-20 22:03:39 +01:00
bors 33fe1131ca Auto merge of #59826 - llogiq:multi-dbg, r=SimonSapin
allow multiple args to `dbg!(..)`

This closes #59763
2019-04-20 20:55:29 +00:00
bors 72bc62047f Auto merge of #59987 - saleemjaffer:refactor_adjust_castkinds, r=oli-obk
Refactor Adjust and CastKind

fixes rust-lang#59588
2019-04-20 15:06:15 +00:00