Change:
<ins> //@ revisions: tuple unit struct_ //@[unit] check-pass #[cfg(unit)] mod unit { struct S; impl S { fn foo() { let Self = S; } } } #[cfg(tuple)] mod tuple { struct S(()); impl S { fn foo() { let Self = S; //[tuple]~^ ERROR expected unit struct } } } #[cfg(struct_)] mod struct_ { struct S {} impl S { fn foo() { let Self = S; //[struct_]~^ ERROR expected value, found struct `S` //[struct_]~| ERROR expected unit struct, found self constructor `Self` } } } fn main() {} </ins>

Discussion:
<!-- [31mICE[0m: Rustc '' 'error: internal compiler error: pattern has unexpected type: pat: Pat { ty: FnDef(DefId(0:4 ~ 8AA6F1005370219B85951C99272A39FD19B661E1BACC8A2564FDDA6681DF61B2[9399]::S::{constructor}), []), span: 32:14 (), kind: Leaf { subpatterns: [] } }, ty: FnDef(DefId(0:4 ~ 8AA6F1005370219B85951C99272A39FD19B661E1BACC8A2564FDDA6681DF61B2[9399]::S::{constructor}), [])', 'error: internal compiler error: pattern has unexpected type: pat: Pat { ty: FnDef(DefId(0:4 ~ 8AA6F1005370219B85951C99272A39FD19B661E1BACC8A2564FDDA6681DF61B2[9399]::S::{constructor}), []), span: 32:14 (), kind: Leaf { subpatterns: [] } }, ty: FnDef(DefId(0:4 ~ 8AA6F1005370219B85951C99272A39FD19B661E1BACC8A2564FDDA6681DF61B2[9399]::S::{constructor}), [])' File: --auto-reduced (treereduce-rust): original: Version information ` Command: <!-- Include a backtrace in the code block by setting in your environment. E.g. .

--<details<summary<strongProgram output</strong</summary<p</p</details<!-- query stack: error: internal compiler error: pattern has unexpected type: pat: Pat { ty: FnDef(DefId(0:4 ~ mvce[320f]::S::{constructor}), []), span: 14:14 (), kind: Leaf { subpatterns: [] } }, ty: FnDef(DefId(0:4 ~ mvce[320f]::S::{constructor}), []) [checkmatch] match-checking [mirbuilt] building MIR for [checkunsafety] unsafety-checking [analysis] running analysis passes on this crate --
cc
This has ICEd before :
^Regression in nightly-2022-05-05 commit[0] 2022-05-03: Auto merge of - bjorn3:librarifyparseformat, r=davidtwco commit[1] 2022-05-03: Auto merge of - compiler-errors:unit-destructure-assign, r=nikomatsakis commit[2] 2022-05-04: Auto merge of - estebank:issue-, r=compiler-errors commit[3] 2022-05-04: Auto merge of - petrochenkov:docregr, r=GuillaumeGomez commit[4] 2022-05-04: Auto merge of - ehuss:update-cargo, r=ehuss commit[5] 2022-05-04: Auto merge of - JohnTitor:rollup-oo4fc1h, r=JohnTitor commit[6] 2022-05-04: Auto merge of - oli-obk:operandorder, r=davidtwco commit[7] 2022-05-04: Auto merge of - nnethercote:speed-up-Token-ident-lifetime, r=petrochenkov commit[8] 2022-05-04: Auto merge of - nnethercote:overhaul-MacArgs, r=petrochenkov would not be surprised if its actually :seeno_evil:
So only this specific case seems to be .

Matching tuple ctors in patterns and ICEing is older than that:
Regression in nightly-2020-11-19 fetching (via remote github) commits from max(, 2020-11-16) to ending github query because we found starting sha: getcommitsbetween returning commits, len: 6 commit[0] 2020-11-17: Auto merge of - m-ou-se:rollup-owel5ld, r=m-ou-se commit[1] 2020-11-18: Auto merge of - pietroalbini:beta-next, r=Mark-Simulacrum commit[2] 2020-11-18: Auto merge of - jyn514:from-inner, r=petrochenkov commit[3] 2020-11-18: Auto merge of - pietroalbini:woops, r=pietroalbini commit[4] 2020-11-18: Auto merge of - m-ou-se:rollup-4g15apk, r=m-ou-se commit[5] 2020-11-18: Auto merge of - Nadrieril:clean-empty-match, r=varkor