Skip to content

Rollup of 6 pull requests - #129174

Closed
matthiaskrgr wants to merge 11 commits into
rust-lang:masterfrom
matthiaskrgr:rollup-b5poj9o
Closed

Rollup of 6 pull requests#129174
matthiaskrgr wants to merge 11 commits into
rust-lang:masterfrom
matthiaskrgr:rollup-b5poj9o

Conversation

@matthiaskrgr

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

GrigorenkoPVand others added 11 commits July 29, 2024 20:33
and move implementation details into a submodule
`Either` is wasteful for a one-or-none iterator, especially since `Once`
is already an `option::IntoIter` internally. We don't really need any of
the iterator mechanisms in this case, just a single conditional insert.
…r, r=dtolnay
Stabilize `Ready::into_inner()`
This PR stabilizes `Ready::into_inner()`.
Tracking issue: rust-lang#101196.
Implementation PR: rust-lang#101189.
Closesrust-lang#101196.
…olnay
CloneToUninit impls
As per rust-lang#126799.
Also implements it for `Wtf8` and both versions of `os_str::Slice`.
Maybe it is worth to slap `#[inline]` on some of those impls.
r? `@dtolnay`
…eril
mir/pretty: use `Option` instead of `Either<Once, Empty>`
`Either` is wasteful for a one-or-none iterator, especially since `Once`
is already an `option::IntoIter` internally. We don't really need any of
the iterator mechanisms in this case, just a single conditional insert.
…r=compiler-errors
Return correct HirId when finding body owner in diagnostics
Fixesrust-lang#129145Fixesrust-lang#128810
r? `@compiler-errors`
```rust
fn generic<const N: u32>() {}
trait Collate<const A: u32> {
type Pass;
fn collate(self) -> Self::Pass;
}
impl<const B: u32> Collate<B> for i32 {
type Pass = ();
fn collate(self) -> Self::Pass {
generic::<{ true }>()
//~^ ERROR: mismatched types
}
}
```
When type checking the `{ true }` anon const we would error with a type mismatch. This then results in diagnostics code attempting to check whether its due to a type mismatch with the return type. That logic was implemented by walking up the hir until we reached the body owner, except instead of using the `enclosing_body_owner` function it special cased various hir nodes incorrectly resulting in us walking out of the anon const and stopping at `fn collate` instead.
This then resulted in diagnostics logic inside of the anon consts `ParamEnv` attempting to do trait solving involving the `<i32 as Collate<B>>::Pass` type which ICEs because it is in the wrong environment.
I have rewritten this function to just walk up until it hits the `enclosing_body_owner` and made some other changes since I found this pretty hard to read/understand. Hopefully it's easier to understand now, it also makes it more obvious that this is not implemented in a very principled way and is definitely missing cases :)
@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Aug 16, 2024
@matthiaskrgr
matthiaskrgr deleted the rollup-b5poj9o branch September 1, 2024 17:35
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-reviewStatus: Awaiting review from the assignee but also interested parties.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@matthiaskrgr@rustbot@GrigorenkoPV@daxpedda@cuviper@BoxyUwU