Commit graph

24 commits

Author SHA1 Message Date
Arpad Borsos
9f36f988ad
Avoid GenFuture shim when compiling async constructs
Previously, async constructs would be lowered to "normal" generators,
with an additional `from_generator` / `GenFuture` shim in between to
convert from `Generator` to `Future`.

The compiler will now special-case these generators internally so that
async constructs will *directly* implement `Future` without the need
to go through the `from_generator` / `GenFuture` shim.

The primary motivation for this change was hiding this implementation
detail in stack traces and debuginfo, but it can in theory also help
the optimizer as there is less abstractions to see through.
2022-11-24 10:04:27 +01:00
Michael Goulet
3fdf3cb80c Adjust wording 2022-08-08 00:13:41 +00:00
Michael Goulet
750f04d309 Implement special-cased projection error message for some common traits 2022-08-07 23:57:53 +00:00
Michael Goulet
99c32570bb Do if-expression obligation stuff less eagerly 2022-07-21 07:39:28 +00:00
Michael Goulet
b0a81904ce Suggest returning binding from block or enclosing scope on coerce_forced_unit error 2022-07-20 03:58:33 +00:00
Michael Goulet
862873d20b Note concrete type being coerced into object 2022-06-28 21:56:18 +00:00
Michael Goulet
7b2eaa3d8f Restore impl Future<Output = Type> to async blocks 2022-03-30 19:26:35 -07:00
Michael Goulet
bdb4b1e923 remove [async output] from impl Future 2022-03-22 19:41:34 -07:00
Michael Goulet
9ae575c795 Update test outputs 2021-11-23 10:34:17 -08:00
Dan Aloni
eaefe4a230 path trimming: ignore type aliases 2021-02-06 12:03:48 +02:00
Dan Aloni
07e7823c01 pretty: trim paths of unique symbols
If a symbol name can only be imported from one place for a type, and
as long as it was not glob-imported anywhere in the current crate, we
can trim its printed path and print only the name.

This has wide implications on error messages with types, for example,
shortening `std::vec::Vec` to just `Vec`, as long as there is no other
`Vec` importable anywhere.

This adds a new '-Z trim-diagnostic-paths=false' option to control this
feature.

On the good path, with no diagnosis printed, we should try to avoid
issuing this query, so we need to prevent trimmed_def_paths query on
several cases.

This change also relies on a previous commit that differentiates
between `Debug` and `Display` on various rustc types, where the latter
is trimmed and presented to the user and the former is not.
2020-09-02 22:26:37 +03:00
John Kåre Alsaker
47a84f2170 Update tests 2020-03-23 19:31:41 +01:00
Esteban Küber
6f8f70624b Surround types with backticks in type errors 2019-11-18 11:03:04 -08:00
Esteban Küber
94c6425464 Remove E0308 note when primary label has all info 2019-11-18 11:03:03 -08:00
Esteban Küber
b2e6aef073 review comments: tweak prefix strings 2019-11-18 11:02:44 -08:00
Esteban Küber
83ffda5216 Specific labels when referring to "expected" and "found" types 2019-11-18 11:02:22 -08:00
Ohad Ravid
8bb5450128 Fix incorrect diagnostics for expected type in E0271 with an associated type 2019-10-31 09:30:14 +01:00
Niko Matsakis
dce20bf62a WIP fix tests 2019-10-02 14:17:38 -04:00
Artem Varaksa
600a64bdb5 more --blessing + test error annotations fixes 2019-08-21 15:13:13 +03:00
Artem Varaksa
a8d7ea74a4 improve diagnostics: break/continue wrong context 2019-08-21 13:17:59 +03:00
Mazdak Farrokhzad
21476e7d6c --bless post no async_await gates in tests. 2019-08-20 03:08:42 +02:00
Giles Cope
1e02bc62bc Better error message for break in async blocks. 2019-08-18 10:39:15 +01:00
Esteban Küber
45a5bc7619 fix tests 2019-08-09 07:57:16 -07:00
Mazdak Farrokhzad
48fbf4891a Test interaction btw async blocks and ?, return, break. 2019-08-09 00:21:21 +02:00