| Age | Commit message (Collapse) | Author | Lines |
|
|
|
|
|
Rollup of 10 pull requests
Successful merges:
- #67450 (Allow for setting a ThinLTO import limit during bootstrap)
- #67595 (Suggest adding a lifetime constraint for opaque type)
- #67636 (allow rustfmt key in [build] section)
- #67736 (Less-than is asymmetric, not antisymmetric)
- #67762 (Add missing links for insecure_time)
- #67783 (Warn for bindings named same as variants when matching against a borrow)
- #67796 (Ensure that we process projections during MIR inlining)
- #67807 (Use drop instead of the toilet closure `|_| ()`)
- #67816 (Clean up err codes)
- #67825 (Minor: change take() docs grammar to match other docs)
Failed merges:
r? @ghost
|
|
|
|
This reverts commit f35517ee861dc012ccc26083dd4520045e2c4f6f.
|
|
|
|
|
|
|
|
|
|
Improve lifetime errors with implicit trait object lifetimes
r? @matthewjasper
cc @estebank
I still think the ideal solution would be to construct a `BrAnon`, but that seems like a more invasive change, and can be done later. This at least gets rid of the hack in `OutliveSuggestion` and is slightly more principled.
|
|
Record temporary static references in generator witnesses
Closes #66695
* Record the pointer to static's type in MIR.
* Normalize the static's type (so that constants can be compared correctly).
|
|
|
|
|
|
|
|
|
|
Scope format! temporaries
This places the temporaries that `format!` generates to refer to its arguments (through `&dyn Trait`) in a short-lived scope surrounding just the invocation of `format!`. This enables `format!` to be used in generators without the temporaries preventing the generator from being `Send` (due to `dyn Trait` not being `Sync`).
See rust-lang/rust#64477 for details.
|
|
Suggest to add lifetime constraint at explicit ouput of functions
Closes #62097
|
|
Add long error explanation for E0623
Part of #61137.
r? @Dylan-DPC
|
|
|
|
|
|
This change makes error and warning annotations mandatory in UI tests.
The only exception are tests that use error patterns to match compiler
output and don't have any annotations.
|
|
consistent handling of missing sysroot spans
Due to https://github.com/rust-lang/rust/issues/53081, sysroot spans (pointing to code in libcore/libstd/...) fails to print on some x86 runners. This consolidates the ignore directives for that and references the relevant issue.
I also did that for the generated derive-error-span tests -- but there the script and the tests were not entirely in sync any more since https://github.com/rust-lang/rust/pull/64151. Cc @estebank @varkor
|
|
|
|
|
|
|
|
|
|
|
|
r=cramertj
don't assume we can *always* find a return type hint in async fn
In particular, we sometimes cannot if there is an earlier error.
Fixes #65159
r? @cramertj, who reviewed the original PR
|
|
In particular, we sometimes cannot if there is an earlier error.
|
|
|
|
r=cramertj
extract expected return type for async fn generators
Fixes #60424
cc @Centril, I know you've been eager to see this fixed.
r? @cramertj
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Currently, after a CALL terminator is created in MIR, we insert DROP
statements for all of its operands -- even though they were just moved
shortly before! These spurious drops are later removed, but not before
causing borrow check errors.
This PR series modifies the drop code to track operands that were
moved and avoid creating drops for them.
Right now, I'm only using this mechanism for calls, but it seems
likely it could be used in more places.
|
|
That's way more than is needed, and winds up recording types
that will never appear in MIR.
|
|
|
|
|
|
|
|
|
|
Object-lifetime-default elision is distinct from other forms of
elision; it always refers to some enclosing lifetime *present in the
surrounding type* (e.g., `&dyn Bar` expands to `&'a (dyn Bar + 'a)`.
If there is no enclosing lifetime, then it expands to `'static`.
Therefore, in an `impl Trait<Item = dyn Bar>` setting, we don't expand
to create a lifetime parameter for the `dyn Bar + 'X` bound. It will
just be resolved to `'static`.
Annoyingly, the responsibility for this resolution is spread across
multiple bits of code right now (`middle::resolve_lifetimes`,
`lowering`). The lowering code knows that the default is for an object
lifetime, but it doesn't know what the correct result would be.
Probably this should be fixed, but what we do now is a surgical fix:
we have it generate a different result for elided lifetimes in a
object context, and then we can ignore those results when figuring out
the lifetimes that are captured in the opaque type.
|
|
|
|
Point at the right enclosing scope when using `await` in non-async fn
Fix #63398.
|
|
|
|
|