Reverse nesting structure of parameter patterns (#6930)

See
[here](https://docs.google.com/document/d/1rWcueFwIfZox6GKVGxiUG4cBzjrZ6djXiIDGyJDtrE4/edit?tab=t.0#heading=h.7mi143mdhr2h)
for an overview of the changes and their rationale.

Assisted-by: Gemini 3.1 Pro via Antigravity
This commit is contained in:
Geoff Romer
2026-03-23 20:38:20 +00:00
committed by GitHub
parent a345a74145
commit e0c6800ab3
310 changed files with 4271 additions and 4018 deletions
@@ -1106,8 +1106,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -1436,8 +1436,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_operator.decl: %C.cpp_operator.type = fn_decl @C.cpp_operator [concrete = constants.%C.cpp_operator] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: } {
// CHECK:STDOUT: <elided>
@@ -1446,8 +1446,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2023,8 +2023,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2199,8 +2199,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2356,8 +2356,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2485,8 +2485,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.69f = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.69f = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.69f = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.69f = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2641,15 +2641,15 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C2.cpp_destructor.decl: %C2.cpp_destructor.type = fn_decl @C2.cpp_destructor [concrete = constants.%C2.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.846 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.846 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.846 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.846 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C2 = ref_param call_param0
// CHECK:STDOUT: %self: ref %C2 = ref_binding self, %self.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %C1.cpp_destructor.decl: %C1.cpp_destructor.type = fn_decl @C1.cpp_destructor [concrete = constants.%C1.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.20f = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.20f = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.20f = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.20f = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C1 = ref_param call_param0
// CHECK:STDOUT: %self: ref %C1 = ref_binding self, %self.param
@@ -2793,8 +2793,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.69f = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.69f = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.69f = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.69f = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -2903,8 +2903,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.b28 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.b28 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.b28 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.b28 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -3031,8 +3031,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.84b = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.84b = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.84b = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.84b = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -3159,8 +3159,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_operator.decl.828f43.1: %C.cpp_operator.type.dab96a.1 = fn_decl @C.cpp_operator.1 [concrete = constants.%C.cpp_operator.d21c75.1] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
@@ -3173,8 +3173,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_operator.decl.828f43.2: %C.cpp_operator.type.dab96a.2 = fn_decl @C.cpp_operator.2 [concrete = constants.%C.cpp_operator.d21c75.2] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
@@ -3187,8 +3187,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param
@@ -3327,8 +3327,8 @@ fn F() {
// CHECK:STDOUT: <elided>
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.cpp_destructor.decl: %C.cpp_destructor.type = fn_decl @C.cpp_destructor [concrete = constants.%C.cpp_destructor] {
// CHECK:STDOUT: %self.patt: %pattern_type.217 = ref_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type.217 = ref_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type.217 = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: ref %C = ref_param call_param0
// CHECK:STDOUT: %self: ref %C = ref_binding self, %self.param