Commit graph

7581 commits

Author SHA1 Message Date
Vadim Petrochenkov
f74fe812fe resolve: Give derive helpers highest priority during resolution 2019-11-19 00:50:53 +03:00
bors
361791bb5f Auto merge of #65456 - estebank:trait-bound-borrow, r=matthewjasper
Suggest borrowing when it would satisfy an unmet trait bound

When there are multiple implementors for the same trait that is present
in an unmet binding, modify the E0277 error to refer to the parent
obligation and verify whether borrowing the argument being passed in
would satisfy the unmet bound. If it would, suggest it.

Fix #56368.
2019-11-18 00:05:38 +00:00
bors
0f0c640e0e Auto merge of #66385 - ecstatic-morse:check-only-pass2, r=eddyb
Make dataflow-based const qualification the canonical one

For over a month, dataflow-based const qualification has been running in parallel with `qualify_consts` to check the bodies of `const` and `static`s. This PR removes the old qualification pass completely in favor of the dataflow-based one.

**edit:**
This PR also stops checking `QUALIF_ERROR_BIT` during promotion. This check appears to no longer serve a purpose now that the CTFE engine is more robust.

As a side-effect, this resolves #66167.

r? @eddyb
2019-11-17 18:38:15 +00:00
Yuki Okushi
750dd03a23
Rollup merge of #66471 - Alexendoo:test-issue-63116, r=Centril
Add test for issue 63116

Closes #63116
2019-11-17 13:36:24 +09:00
Yuki Okushi
c0fccf5d62
Rollup merge of #66469 - CosineP:fix/field-lint, r=petrochenkov
Use "field is never read" instead of "field is never used"

this is my first PR here so please let me know if i am doing it wrong
closes #64465
i will be referencing this with a book PR that updates the same language
2019-11-17 13:36:22 +09:00
Yuki Okushi
842612fcc0
Rollup merge of #66381 - Centril:66340, r=petrochenkov
find_deprecation: deprecation attr may be ill-formed meta.

Fixes #66340.

r? @petrochenkov
cc @pnkfelix
2019-11-17 13:36:15 +09:00
Yuki Okushi
b83d50d34f
Rollup merge of #66271 - petrochenkov:abism, r=Centril
syntax: Keep string literals in ABIs and `asm!` more precisely

As a result we don't lose spans when `extern` functions or blocks are passed to proc macros, and also escape all string literals consistently.
Continuation of https://github.com/rust-lang/rust/pull/60679, which did a similar thing with all literals besides those in ABIs and `asm!`.

TODO: Add tests.

Fixes https://github.com/rust-lang/rust/issues/60493
Fixes https://github.com/rust-lang/rust/issues/64561
r? @Centril
2019-11-17 13:36:12 +09:00
bors
2cdc289cb8 Auto merge of #66394 - wesleywiser:fix_oom, r=oli-obk
Fix two OOM issues related to `ConstProp`

Fixes #66342
Fixes #66397

r? @oli-obk
2019-11-16 22:54:33 +00:00
Alex Macleod
cfe94b421b Add test for issue 63116 2019-11-16 22:32:59 +00:00
Vadim Petrochenkov
28aec1beaa Add some more tests 2019-11-17 01:11:35 +03:00
Vadim Petrochenkov
11580ced40 Address review comments 2019-11-17 01:11:28 +03:00
Esteban Küber
7a2f3ee73f Account for rustc_on_unimplemented 2019-11-16 13:23:19 -08:00
Esteban Küber
0f7f2346a6 Remove unnecessary note 2019-11-16 13:23:19 -08:00
Esteban Küber
970503b2e1 Modify primary label message to be inline with error message 2019-11-16 13:23:19 -08:00
Esteban Küber
f57413b717 Suggest borrowing when it would satisfy an unmet trait bound
When there are multiple implementors for the same trait that is present
in an unmet binding, modify the E0277 error to refer to the parent
obligation and verify whether borrowing the argument being passed in
would satisfy the unmet bound. If it would, suggest it.
2019-11-16 13:23:19 -08:00
Vadim Petrochenkov
266f547127 ast: Keep extern qualifiers in functions more precisely 2019-11-16 21:21:37 +03:00
Wesley Wiser
2dea8af20c Only run tests on x86_64 2019-11-16 13:01:12 -05:00
Vadim Petrochenkov
8668c1a190 Add some more tests 2019-11-16 18:31:55 +03:00
Vadim Petrochenkov
808522894b expand: Stop marking derive helper attributes as known
Pass them through name resolution instead
2019-11-16 18:31:47 +03:00
Vadim Petrochenkov
a3126a5013 resolve: Introduce a new scope for derive helpers 2019-11-16 18:20:57 +03:00
cosine
bd63c594c2 Use "field is never read" instead of "field is never used" 2019-11-16 07:12:37 -05:00
bors
1d8b6ce89e Auto merge of #66453 - Centril:rollup-w1ohzxs, r=Centril
Rollup of 5 pull requests

Successful merges:

 - #66350 (protect creation of destructors by a mutex)
 - #66407 (Add more tests for fixed ICEs)
 - #66415 (Add --force-run-in-process unstable option to libtest)
 - #66427 (Move the JSON error emitter to librustc_errors)
 - #66441 (libpanic_unwind for Miri: make sure we have the SEH lang items when needed)

Failed merges:

r? @ghost
2019-11-16 02:40:52 +00:00
bors
82161cda33 Auto merge of #66326 - Nadrieril:refactor-intrange, r=varkor
Refactor integer range handling in the usefulness algorithm

Integer range handling had accumulated a lot of debt. This cleans up a lot of it.

In particular this:
- removes unnecessary conversions between `Const` and `u128`, and between `Constructor` and `IntRange`
- clearly distinguishes between on the one hand ranges of integers that may or may not be matched exhaustively, and on the other hand ranges of non-integers that are never matched exhaustively and are compared using Const-based shenanigans
- cleans up some overly complicated code paths
- generally tries to be more idiomatic.

As a nice side-effect, I measured a 10% perf increase on `unicode_normalization`.

There's one thing that I feel remains to clean up: the [overlapping range check](https://github.com/rust-lang/rust/pull/64007), which is currently quite ad-hoc. But that is intricate enough that I'm leaving it out of this PR.

There's also one little thing I'm not sure I understand: can `try_eval_bits` fail for an integer constant value in that code ? What would that mean, and how do I construct a test case for this possibility ?
2019-11-15 23:28:50 +00:00
Wesley Wiser
9e1b210c6a Respond to review feedback 2019-11-15 18:18:50 -05:00
Wesley Wiser
3732b7acf1 [ConstProp] Avoid OOM crashes by not evaluating large Places
Fixes #66397
2019-11-15 18:18:50 -05:00
Wesley Wiser
d389f64cdb Fix spurious CI filures due to OOM
Fixes #66342
2019-11-15 18:18:50 -05:00
Dylan MacKenzie
d1f0ef527c Add explanation of test for validation mismatch 2019-11-15 10:33:52 -08:00
Dylan MacKenzie
8f5494b470 Silence miri unleashed warnings in test 2019-11-15 10:33:52 -08:00
Mazdak Farrokhzad
4e6e1eccf1
Rollup merge of #66415 - tmandry:force-test-in-process, r=alexcrichton
Add --force-run-in-process unstable option to libtest

When running tests with `-Zpanic_abort_tests`, it's sometimes desirable to fall back to the old behavior of only running tests in-process. This comes in handy if the system process launcher is unavailable, or the test code somehow expects all tests to be run in the same process.

For example, in Fuchsia we have unit tests that actually test the process launcher itself, in which case we can't use the process launcher to run the tests :).

r? @alexcrichton
cc @cramertj,@petrhosek
2019-11-15 18:02:01 +01:00
Mazdak Farrokhzad
e3c78d549e
Rollup merge of #66407 - JohnTitor:add-ice-tests, r=Centril
Add more tests for fixed ICEs

Closes #36122 (fixed in 1.20.0)
Closes #58094 (fixed in #66054)
Also, fix mistaken test case, from #30904 to #30906 (cc @eddyb)

r? @Centril
2019-11-15 18:01:59 +01:00
Nadrieril
cde9808eaa Add regression test 2019-11-15 16:55:38 +00:00
Nadrieril Feneanar
9165dd056b Apply suggestions from code review
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-15 16:55:37 +00:00
Nadrieril
c38aad4f4b Add test for failing try_eval_bits 2019-11-15 16:55:37 +00:00
Yuki Okushi
614abe48b0 Fix nll test 2019-11-16 01:40:59 +09:00
Yuki Okushi
09f0ee51c9 Apply suggestion from Centril
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-11-15 23:54:52 +09:00
Yuki Okushi
564c78a698 Fix test case and issue number 2019-11-15 23:54:52 +09:00
Yuki Okushi
74329bf619 Add test for issue-58094 2019-11-15 23:54:52 +09:00
Yuki Okushi
4e621a8b0c Add test for issue-36122 2019-11-15 23:54:52 +09:00
Tyler Mandry
d252ba35d4 Improve error message for tests with panic=abort 2019-11-15 05:52:06 -08:00
Tyler Mandry
d99026e891
Rollup merge of #66435 - JohnTitor:fix-spelling, r=Centril
Correct `const_in_array_repeat_expressions` feature name

Fixes #66433

r? @estebank
2019-11-15 14:44:50 +01:00
Tyler Mandry
c6cdbe9a3e
Rollup merge of #66429 - guanqun:add-unit-test, r=Centril
Add a regression test for #62524

Closes #62524
2019-11-15 14:44:48 +01:00
Tyler Mandry
c5bb2ec0dd
Rollup merge of #66197 - Centril:transparent-ast, r=varkor
Push `ast::{ItemKind, ImplItemKind}::OpaqueTy` hack down into lowering

We currently have a hack in the form of `ast::{ItemKind, ImplItemKind}::OpaqueTy` which is constructed literally when you write `type Alias = impl Trait;` but not e.g. `type Alias = Vec<impl Trait>;`. Per https://github.com/rust-lang/rfcs/pull/2515, this needs to change to allow `impl Trait` in nested positions.  This PR achieves this change for the syntactic aspect but not the semantic one, which will require changes in lowering and def collection. In the interim, `TyKind::opaque_top_hack` is introduced to avoid knock-on changes in lowering, collection, and resolve. These hacks can then be removed and fixed one by one until the desired semantics are supported.

r? @varkor
2019-11-15 14:44:47 +01:00
Mazdak Farrokhzad
91aadf0305 find_deprecation: deprecation attr may be ill-formed meta. 2019-11-15 13:24:06 +01:00
Yuki Okushi
26eb9093fd
Rollup merge of #66419 - JohnTitor:ignore-underscore, r=varkor
Don't warn labels beginning with `_` on unused_labels lint

Fixes #66382

r? @varkor
2019-11-15 18:36:34 +09:00
Yuki Okushi
c5b6dceb68
Rollup merge of #66391 - estebank:if-else-async-ice, r=Centril
Do not ICE in `if` without `else` in `async fn`

Fix #66387.
2019-11-15 18:36:28 +09:00
Yuki Okushi
c8d8f52b76
Rollup merge of #66388 - estebank:melt-ice, r=Centril
Do not ICE on recovery from unmet associated type bound obligation

Fix #66353.

r? @Centril
2019-11-15 18:36:25 +09:00
Yuki Okushi
41fb84e444
Rollup merge of #66306 - spastorino:remove-error-handled-by-miri, r=oli-obk
Remove cannot mutate statics in initializer of another static error

r? @oli-obk

This is just a refactoring. As the removed code itself said, it only a heuristic catching a few cases early instead of leaving it all to const eval. It's easy to work around the static check and then run into the miri-engine check.
2019-11-15 18:36:22 +09:00
Yuki Okushi
759c7e4397 Correct const_in_array_repeat_expressions feature name 2019-11-15 15:50:52 +09:00
Guanqun Lu
ed9c5da4db add a unit test for #62524 2019-11-15 08:34:34 +08:00
Esteban Küber
c0a0a7d711 review comments 2019-11-14 11:08:56 -08:00