Commit graph

315 commits

Author SHA1 Message Date
Esteban Küber
d3c96f03b5 Suggest -> impl Trait and -> Box<dyn Trait> on fn that doesn't return
During development, a function could have a return type set that is a
bare trait object by accident. We already suggest using either a boxed
trait object or `impl Trait` if the return paths will allow it. We now
do so too when there are *no* return paths or they all resolve to `!`.
We still don't handle cases where the trait object is *not* the entirety
of the return type gracefully.
2020-04-20 09:24:41 -07:00
RoccoDev
b85c64c3ea
rustc: Add a warning count upon completion 2020-04-11 16:15:24 +02:00
Mazdak Farrokhzad
1fe86f47d8
Rollup merge of #69745 - estebank:predicate-obligations-3, r=nikomatsakis,eddyb
Use `PredicateObligation`s instead of `Predicate`s

Keep more information about trait binding failures. Use more specific spans by pointing at bindings that introduce obligations.

Subset of #69709.

r? @eddyb
2020-04-10 18:15:16 +02:00
Esteban Küber
d605a9d969 Small tweaks to required bound span 2020-04-08 14:40:51 -07:00
Alex Aktsipetrov
aaebbe196b Suggest move for closures and async blocks in more cases. 2020-04-08 13:01:53 +02:00
Esteban Küber
0664b81915 Use smaller span for suggestion restricting lifetime 2020-04-05 16:16:55 -07:00
Eduard-Mihai Burtescu
8deff18529 tests: remove ignore directives from tests that mention core/alloc/std spans. 2020-04-02 11:48:34 +03:00
Dylan DPC
b99db6ee10
Rollup merge of #70546 - lqd:polonius_update, r=nikomatsakis
Polonius: update to 0.12.1, fix more move errors false positives, update test expectations

This PR:
- updates `polonius-engine` to version 0.12.1 to fix some move errors false positives
- fixes a fact generation mistake creating the other move errors false positives
- updates the test expectations for the polonius compare-mode so that all (minus the 2 OOMs) ui tests pass again (matching the [analysis doc](https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view) starting at case 34)

In my opinion, this is safe to rollup.

r? @nikomatsakis
2020-03-30 16:24:49 +02:00
Remy Rakic
82424634a3 bless output of ui test impl-trait/multiple-lifetimes/error-handling.rs
Some impl Trait fixes lead to locating more accurately the cause of
a universal region error with a user annotation
2020-03-30 01:28:27 +02:00
Esteban Küber
2c71894657 Tweak suggest_constraining_type_param
Some of the bound restriction structured suggestions were incorrect
while others had subpar output.
2020-03-29 13:13:17 -07:00
Aaron Hill
96e2d03d4b
Store idents for DefPathData into crate metadata
Previously, we threw away the `Span` associated with a definition's
identifier when we encoded crate metadata, causing us to lose location
and hygiene information.

We now store the identifier's `Span` in the crate metadata.
When we decode items from the metadata, we combine
the name and span back into an `Ident`.

This improves the output of several tests, which previously had messages
suppressed due to dummy spans.

This is a prerequisite for #68686, since throwing away a `Span` means
that we lose hygiene information.
2020-03-22 23:40:19 -04:00
Yuki Okushi
ef98ec055e
Add FIXMEs 2020-03-09 16:50:46 +09:00
Yuki Okushi
579ce86d4b
Add test for issue-67166 2020-03-09 09:12:53 +09:00
Yuki Okushi
0005f29d89
Add test for issue-60473 2020-03-09 09:12:25 +09:00
Yuki Okushi
437c07f662
Add test for issue-57201 2020-03-09 09:12:06 +09:00
Yuki Okushi
fc8be08a8e
Add test for issue-57200 2020-03-09 09:11:58 +09:00
Matthias Krüger
136ad015b6 fix various typos 2020-03-06 15:19:31 +01:00
Esteban Küber
c764a82310 keep predicate order and tweak output 2020-02-28 11:37:59 -08:00
Esteban Küber
1e7bcc733a Tweak wording 2020-02-28 11:37:59 -08:00
Esteban Küber
0387f0d19b Mention the full path of the implementing trait 2020-02-28 11:37:59 -08:00
Esteban Küber
8993b99ae2 On single local candidate, use span label 2020-02-28 11:37:58 -08:00
Esteban Küber
c816430f99 Tweak binding lifetime suggestion text
We already have a structured suggestion, but the wording made it seem
like that wasn't the case.
Fix #65286. r? @varkor
2020-02-19 18:04:03 -08:00
Matthew Jasper
6d9e270a4d Fix and test nested impl Trait 2020-02-14 22:40:03 +00:00
Matthew Jasper
78e0ab53fb Update tests 2020-02-14 22:40:03 +00:00
Matthew Jasper
5cfa7d1dfb Handle equal regions in opaque type inference 2020-02-14 22:40:03 +00:00
Matthew Jasper
93ac5bc7de Update tests 2020-02-14 22:40:03 +00:00
Matthew Jasper
4af0952961 Call is_freeze less in unsafety-checking
This is to avoid cycles when calling `is_freeze` on an opaque type.
2020-02-14 20:12:46 +00:00
Matthew Jasper
033bd8c7af Explain a test 2020-02-14 20:12:45 +00:00
bors
dc4242d905 Auto merge of #68929 - matprec:consistent-issue-references, r=Dylan-DPC
Make issue references consistent

Fixes https://github.com/rust-lang/rust/issues/62976

cc https://github.com/rust-lang/rust/pull/63008

r? @varkor because you reviewed the original pr
2020-02-11 02:00:27 +00:00
bors
840bdc349d Auto merge of #67665 - Patryk27:master, r=zackmdavis
Improve reporting errors and suggestions for trait bounds

Fix #66802

- When printing errors for unsized function parameter, properly point at the parameter instead of function's body.
- Improve `consider further restricting this bound` (and related) messages by separating human-oriented hints from the machine-oriented ones.
2020-02-09 22:13:05 +00:00
Matthias Prechtl
7b555178ae --bless --compare-mode=nll 2020-02-09 20:43:49 +01:00
Patryk Wychowaniec
a8d34c1062
Improve reporting errors and suggestions for trait bounds 2020-02-09 10:33:47 +01:00
Esteban Küber
3cdd7ae59e review comment 2020-02-08 21:08:59 -08:00
Esteban Küber
a52ec87a17 Use more appropriate spans on object unsafe traits and provide structured suggestions when possible 2020-02-02 11:53:10 -08:00
Esteban Küber
413bfa4b98 Wording changes to object unsafe trait errors
Stemming from the thread at https://twitter.com/indygreg/status/1223279056398929920
2020-02-02 11:53:10 -08:00
Esteban Küber
0eb29d1a44 fix test 2020-02-02 11:52:34 -08:00
Mazdak Farrokhzad
3a7f1edd81
Rollup merge of #68760 - Tyg13:compile_fail_ui_test, r=Centril
Issue error on `compile-fail` header in UI test

Fixes #68732

r? @Centril
2020-02-02 14:15:49 +01:00
Tyler Lanphear
f6c3894724 compiletest: error if compile-fail header in ui test. 2020-02-02 02:08:30 -05:00
Jonas Schievink
791123d2c4 Deduplicate generator interior types 2020-02-01 20:02:56 +01:00
Esteban Küber
d493dccef7 Apply resolve_vars_if_possible to returned types for more accurate suggestions 2020-01-24 11:48:17 -08:00
Esteban Küber
d14a323e74 Use more accurate return path spans
No longer suggest `Box::new(if foo { Type1 } else { Type2 })`, instead
suggesting `if foo { Box::new(Type1) } else { Box::new(Type2) }`.
2020-01-24 10:35:13 -08:00
Esteban Küber
55dce720b2 Account for ty::Error when suggesting impl Trait or Box<dyn Trait> 2020-01-23 17:04:09 -08:00
Esteban Küber
00e2626895 Account for object safety when suggesting Box<dyn Trait> 2020-01-16 09:49:14 -08:00
Esteban Küber
d7a6212401 review comments 2020-01-16 09:49:14 -08:00
Esteban Küber
509cb33dbc review comments 2020-01-16 09:49:13 -08:00
Esteban Küber
5b36c187dc review comments 2020-01-16 09:49:13 -08:00
Esteban Küber
4c13d2555c Add E0746 explanation to the index 2020-01-16 09:37:24 -08:00
Esteban Küber
e1dd8a9095 When trait bounds are missing for return values, point at them 2020-01-16 09:37:24 -08:00
Esteban Küber
ea7e885204 Elide E0308 errors in favor of E0746
When a type error involves a `dyn Trait` as the return type, do not emit
the type error, as the "return type is not `Sized`" error will provide
enough information to the user.
2020-01-16 09:37:24 -08:00
Esteban Küber
75eabb17ae Account for diverging types in return impl Trait 2020-01-16 09:37:24 -08:00