Skip to content

Conversation

jdonszelmann
Copy link
Contributor

@rustbot rustbot 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. labels Oct 1, 2025

fn add_ty_pat(&mut self, pat: <I as Interner>::Pat) {
self.add_flags(pat.flags());
self.add_exclusive_binder(pat.outer_exclusive_binder());
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is the one line that actually fixes the issue. We didn't record the fact that pattern types might have bound variables inside them without this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

without it, this:

fn outer_exclusive_binder(&self) -> rustc_type_ir::DebruijnIndex {
match &**self {
ty::PatternKind::Range { start, end } => {
start.outer_exclusive_binder().max(end.outer_exclusive_binder())
}
ty::PatternKind::Or(pats) => {
let mut idx = pats[0].outer_exclusive_binder();
for pat in pats[1..].iter() {
idx = idx.max(pat.outer_exclusive_binder());
}
idx
}
}
}

is actually dead code

@lcnr
Copy link
Contributor

lcnr commented Oct 1, 2025

@bors r+ rollup

there's also a theoretical unsoundness fixed by this change where anonymize bound vars doesn't result in different bound vars, so we get different TypeIds, at least in theory

gj gamer

@bors
Copy link
Collaborator

bors commented Oct 1, 2025

📌 Commit 96fb1b3 has been approved by lcnr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 1, 2025
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 1, 2025
…lver, r=lcnr

include `outer_inclusive_binder` of pattern types

Fixes rust-lang/trait-system-refactor-initiative#237

r? `@lcnr`
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Oct 1, 2025
…lver, r=lcnr

include `outer_inclusive_binder` of pattern types

Fixes rust-lang/trait-system-refactor-initiative#237

r? ``@lcnr``
bors added a commit that referenced this pull request Oct 1, 2025
Rollup of 8 pull requests

Successful merges:

 - #146593 (Allow specifying multiple bounds for same associated item, except in trait objects)
 - #147177 ([DebugInfo] Fix MSVC tuple child creation)
 - #147195 (iter repeat: add tests for new count and last behavior)
 - #147202 (Swap order of `resolve_coroutine_interiors` and `handle_opaque_type_uses`)
 - #147204 (Refactor ArrayWindows to use a slice)
 - #147219 (Add proper error handling for closure in impl)
 - #147226 (include `outer_inclusive_binder` of pattern types)
 - #147230 (Fix typo in 'unfulfilled_lint_expectation' to plural)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 8e28978 into rust-lang:master Oct 1, 2025
10 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 1, 2025
rust-timer added a commit that referenced this pull request Oct 1, 2025
Rollup merge of #147226 - jdonszelmann:pattern-types-next-solver, r=lcnr

include `outer_inclusive_binder` of pattern types

Fixes rust-lang/trait-system-refactor-initiative#237

r? ```@lcnr```
github-actions bot pushed a commit to model-checking/verify-rust-std that referenced this pull request Oct 9, 2025
…iaskrgr

Rollup of 8 pull requests

Successful merges:

 - rust-lang#146593 (Allow specifying multiple bounds for same associated item, except in trait objects)
 - rust-lang#147177 ([DebugInfo] Fix MSVC tuple child creation)
 - rust-lang#147195 (iter repeat: add tests for new count and last behavior)
 - rust-lang#147202 (Swap order of `resolve_coroutine_interiors` and `handle_opaque_type_uses`)
 - rust-lang#147204 (Refactor ArrayWindows to use a slice)
 - rust-lang#147219 (Add proper error handling for closure in impl)
 - rust-lang#147226 (include `outer_inclusive_binder` of pattern types)
 - rust-lang#147230 (Fix typo in 'unfulfilled_lint_expectation' to plural)

r? `@ghost`
`@rustbot` modify labels: rollup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pattern types escaping bound vars ICE

4 participants