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
@@ -200,8 +200,8 @@ extern library "basic" fn F();
// CHECK:STDOUT: class @C {
// CHECK:STDOUT: %C.F.decl: %C.F.type = fn_decl @C.F [concrete = constants.%C.F] {} {}
// CHECK:STDOUT: %C.G.decl: %C.G.type = fn_decl @C.G [concrete = constants.%C.G] {
// CHECK:STDOUT: %self.patt: %pattern_type = value_binding_pattern self [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt [concrete]
// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern [concrete]
// CHECK:STDOUT: %self.patt: %pattern_type = at_binding_pattern self, %self.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %self.param: %C = value_param call_param0
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
@@ -133,8 +133,8 @@ fn CallFAndGIncomplete() {
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %D.decl.loc5: type = class_decl @D [concrete = constants.%D] {} {}
// CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [concrete = constants.%ReturnCUnused] {
// CHECK:STDOUT: %return.patt: %pattern_type.7c7 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7c7 = return_slot_pattern %return.param_patt, %C.ref [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %.loc7: Core.Form = init_form %C.ref [concrete = constants.%.a69]
@@ -142,8 +142,8 @@ fn CallFAndGIncomplete() {
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %ReturnCUsed.decl: %ReturnCUsed.type = fn_decl @ReturnCUsed [concrete = constants.%ReturnCUsed] {
// CHECK:STDOUT: %return.patt: %pattern_type.7c7 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7c7 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7c7 = return_slot_pattern %return.param_patt, %C.ref [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %.loc8: Core.Form = init_form %C.ref [concrete = constants.%.a69]
@@ -151,8 +151,8 @@ fn CallFAndGIncomplete() {
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %ReturnDUnused.decl: %ReturnDUnused.type = fn_decl @ReturnDUnused [concrete = constants.%ReturnDUnused] {
// CHECK:STDOUT: %return.patt: %pattern_type.9c8 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.9c8 = return_slot_pattern %return.param_patt, %D.ref [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D]
// CHECK:STDOUT: %.loc9: Core.Form = init_form %D.ref [concrete = constants.%.9a5]
@@ -160,8 +160,8 @@ fn CallFAndGIncomplete() {
// CHECK:STDOUT: %return: ref %D = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %ReturnDUsed.decl: %ReturnDUsed.type = fn_decl @ReturnDUsed [concrete = constants.%ReturnDUsed] {
// CHECK:STDOUT: %return.patt: %pattern_type.9c8 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.9c8 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.9c8 = return_slot_pattern %return.param_patt, %D.ref [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl.loc5 [concrete = constants.%D]
// CHECK:STDOUT: %.loc10: Core.Form = init_form %D.ref [concrete = constants.%.9a5]
@@ -46,10 +46,10 @@ fn F(n: i32, a: array(i32, n)*);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = value_binding_pattern n [concrete]
// CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt [concrete]
// CHECK:STDOUT: %a.patt: <error> = value_binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: <error> = value_param_pattern %a.patt [concrete]
// CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = at_binding_pattern n, %n.param_patt [concrete]
// CHECK:STDOUT: %a.param_patt: <error> = value_param_pattern [concrete]
// CHECK:STDOUT: %a.patt: <error> = at_binding_pattern a, %a.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
// CHECK:STDOUT: %i32.loc19_9: type = type_literal constants.%i32 [concrete = constants.%i32]
@@ -60,7 +60,7 @@ fn F(n: i32, a: array(i32, n)*);
// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n
// CHECK:STDOUT: %ptr: type = ptr_type <error> [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a: <error> = value_binding a, %a.param
// CHECK:STDOUT: %a: <error> = value_binding a, <error> [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -49,10 +49,10 @@ fn F(n: i32, n: i32);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
// CHECK:STDOUT: %n.patt.loc22_6: %pattern_type.7ce = value_binding_pattern n [concrete]
// CHECK:STDOUT: %n.param_patt.loc22_7: %pattern_type.7ce = value_param_pattern %n.patt.loc22_6 [concrete]
// CHECK:STDOUT: %n.patt.loc22_14: %pattern_type.7ce = value_binding_pattern n [concrete]
// CHECK:STDOUT: %n.param_patt.loc22_15: %pattern_type.7ce = value_param_pattern %n.patt.loc22_14 [concrete]
// CHECK:STDOUT: %n.param_patt.loc22_7: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %n.patt.loc22_6: %pattern_type.7ce = at_binding_pattern n, %n.param_patt.loc22_7 [concrete]
// CHECK:STDOUT: %n.param_patt.loc22_15: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %n.patt.loc22_14: %pattern_type.7ce = at_binding_pattern n, %n.param_patt.loc22_15 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %n.param.loc22_7: %i32 = value_param call_param0
// CHECK:STDOUT: %i32.loc22_9: type = type_literal constants.%i32 [concrete = constants.%i32]
@@ -95,8 +95,8 @@ fn E() {}
// CHECK:STDOUT: %A.decl.loc15: %A.type = fn_decl @A [concrete = constants.%A] {} {}
// CHECK:STDOUT: %A.decl.loc23: %A.type = fn_decl @A [concrete = constants.%A] {} {}
// CHECK:STDOUT: %B.decl.loc25: %B.type = fn_decl @B [concrete = constants.%B] {
// CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern %x.patt [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %x.param.loc25: %empty_tuple.type = value_param call_param0
// CHECK:STDOUT: %.loc25_10.1: type = splice_block %.loc25_10.3 [concrete = constants.%empty_tuple.type] {
@@ -106,8 +106,8 @@ fn E() {}
// CHECK:STDOUT: %x.loc25: %empty_tuple.type = value_binding x, %x.param.loc25
// CHECK:STDOUT: }
// CHECK:STDOUT: %B.decl.loc33: %B.type = fn_decl @B [concrete = constants.%B] {
// CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern %x.patt [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %x.param.loc33: %empty_tuple.type = value_param call_param0
// CHECK:STDOUT: %.loc33_10.1: type = splice_block %.loc33_10.3 [concrete = constants.%empty_tuple.type] {
@@ -118,8 +118,8 @@ fn E() {}
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl.loc35: %C.type.0036b9.1 = fn_decl @C.loc35 [concrete = constants.%C.6a91b4.1] {} {}
// CHECK:STDOUT: %C.decl.loc43: %C.type.0036b9.2 = fn_decl @C.loc43 [concrete = constants.%C.6a91b4.2] {
// CHECK:STDOUT: %x.patt: %pattern_type = value_binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern %x.patt [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type = value_param_pattern [concrete]
// CHECK:STDOUT: %x.patt: %pattern_type = at_binding_pattern x, %x.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param call_param0
// CHECK:STDOUT: %.loc43_10.1: type = splice_block %.loc43_10.3 [concrete = constants.%empty_tuple.type] {
@@ -132,8 +132,8 @@ fn A {
// CHECK:STDOUT: .A = %A.decl
// CHECK:STDOUT: }
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_10.2 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %.loc7_10.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
// CHECK:STDOUT: %.loc7_10.2: type = converted %.loc7_10.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
@@ -161,8 +161,8 @@ fn A {
// CHECK:STDOUT: .A = %A.decl
// CHECK:STDOUT: }
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern %return.param_patt, %.loc7_12.2 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %.loc7_12.1: %empty_tuple.type = tuple_literal () [concrete = constants.%empty_tuple]
// CHECK:STDOUT: %.loc7_12.2: type = converted %.loc7_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
+16 -16
View File
@@ -309,10 +309,10 @@ import library "extern_api";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = value_binding_pattern b [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.7ce = value_param_pattern %b.patt [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = at_binding_pattern b, %b.param_patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern %return.param_patt, %i32.loc5_17 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %i32.loc5_17: type = type_literal constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %.loc5: Core.Form = init_form %i32.loc5_17 [concrete = constants.%.ff5]
@@ -323,10 +323,10 @@ import library "extern_api";
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [concrete = constants.%C] {
// CHECK:STDOUT: %c.patt: %pattern_type.b74 = value_binding_pattern c [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.b74 = value_param_pattern %c.patt [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.688 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.688 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.b74 = value_param_pattern [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.b74 = at_binding_pattern c, %c.param_patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.688 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.688 = return_slot_pattern %return.param_patt, %struct_type.c [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %i32.loc6_25: type = type_literal constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
@@ -407,10 +407,10 @@ import library "extern_api";
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {} {}
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = value_binding_pattern b [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.7ce = value_param_pattern %b.patt [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %b.patt: %pattern_type.7ce = at_binding_pattern b, %b.param_patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern %return.param_patt, %i32.loc5_52 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %i32.loc5_52: type = type_literal constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %.loc5: Core.Form = init_form %i32.loc5_52 [concrete = constants.%.ff5]
@@ -421,10 +421,10 @@ import library "extern_api";
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [concrete = constants.%C] {
// CHECK:STDOUT: %c.patt: %pattern_type.b74 = value_binding_pattern c [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.b74 = value_param_pattern %c.patt [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.688 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.688 = out_param_pattern %return.patt [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.b74 = value_param_pattern [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.b74 = at_binding_pattern c, %c.param_patt [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.688 = out_param_pattern [concrete]
// CHECK:STDOUT: %return.patt: %pattern_type.688 = return_slot_pattern %return.param_patt, %struct_type.c [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %i32.loc6_60: type = type_literal constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c]
@@ -47,16 +47,16 @@ fn G(a: i32);
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = value_binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = at_binding_pattern a, %a.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
// CHECK:STDOUT: %a: %i32 = value_binding a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = value_binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern %a.patt [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.7ce = value_param_pattern [concrete]
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = at_binding_pattern a, %a.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %a.param: %i32 = value_param call_param0
// CHECK:STDOUT: %i32: type = type_literal constants.%i32 [concrete = constants.%i32]
@@ -38,13 +38,13 @@ fn CallF(ab: ({}, {}), c: {}) {
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
// CHECK:STDOUT: %a.patt: %pattern_type.a96 = value_binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.a96 = value_param_pattern %a.patt [concrete]
// CHECK:STDOUT: %b.patt: %pattern_type.a96 = value_binding_pattern b [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.a96 = value_param_pattern %b.patt [concrete]
// CHECK:STDOUT: %.loc14_33: %pattern_type.de4 = tuple_pattern (%a.param_patt, %b.param_patt) [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = value_binding_pattern c [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern %c.patt [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
// CHECK:STDOUT: %a.patt: %pattern_type.a96 = at_binding_pattern a, %a.param_patt [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
// CHECK:STDOUT: %b.patt: %pattern_type.a96 = at_binding_pattern b, %b.param_patt [concrete]
// CHECK:STDOUT: %.loc14_33: %pattern_type.de4 = tuple_pattern (%a.patt, %b.patt) [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %a.param: %empty_struct_type = value_param call_param0
// CHECK:STDOUT: %.loc14_18.1: type = splice_block %.loc14_18.3 [concrete = constants.%empty_struct_type] {
@@ -66,10 +66,10 @@ fn CallF(ab: ({}, {}), c: {}) {
// CHECK:STDOUT: %c: %empty_struct_type = value_binding c, %c.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %CallF.decl: %CallF.type = fn_decl @CallF [concrete = constants.%CallF] {
// CHECK:STDOUT: %ab.patt: %pattern_type.de4 = value_binding_pattern ab [concrete]
// CHECK:STDOUT: %ab.param_patt: %pattern_type.de4 = value_param_pattern %ab.patt [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = value_binding_pattern c [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern %c.patt [concrete]
// CHECK:STDOUT: %ab.param_patt: %pattern_type.de4 = value_param_pattern [concrete]
// CHECK:STDOUT: %ab.patt: %pattern_type.de4 = at_binding_pattern ab, %ab.param_patt [concrete]
// CHECK:STDOUT: %c.param_patt: %pattern_type.a96 = value_param_pattern [concrete]
// CHECK:STDOUT: %c.patt: %pattern_type.a96 = at_binding_pattern c, %c.param_patt [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %ab.param: %tuple.type.b6b = value_param call_param0
// CHECK:STDOUT: %.loc18_21.1: type = splice_block %.loc18_21.5 [concrete = constants.%tuple.type.b6b] {