Emit NameBindingDecl after the initializer (if any) (#7467)

In some cases the pattern block can depend on the initializer, so it
must be sequenced after it. See #7469 for a more detailed explanation of
why this is necessary.
This commit is contained in:
Geoff Romer
2026-07-07 19:18:33 +00:00
committed by GitHub
parent ae3c4266d4
commit 8945305dfc
310 changed files with 3375 additions and 3366 deletions
@@ -90,30 +90,30 @@ var a2: Cpp.Second(Cpp.B, Cpp.A) = Cpp.A.A();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %a1.var: ref %A = var_storage %a1.var_patt [concrete]
// CHECK:STDOUT: %a1: ref %A = wrapper_binding a1, %a1.var [concrete = %a1.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a1.patt: %pattern_type.3fa = ref_binding_pattern a1 [concrete = constants.%a1.patt]
// CHECK:STDOUT: %a1.var_patt: %pattern_type.3fa = var_pattern %a1.patt [concrete = constants.%a1.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a1.var: ref %A = var_storage %a1.var_patt [concrete]
// CHECK:STDOUT: %a1: ref %A = wrapper_binding a1, %a1.var [concrete = %a1.var]
// CHECK:STDOUT: %b1.var: ref %B = var_storage %b1.var_patt [concrete]
// CHECK:STDOUT: %b1: ref %B = wrapper_binding b1, %b1.var [concrete = %b1.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %b1.patt: %pattern_type.65a = ref_binding_pattern b1 [concrete = constants.%b1.patt]
// CHECK:STDOUT: %b1.var_patt: %pattern_type.65a = var_pattern %b1.patt [concrete = constants.%b1.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %b1.var: ref %B = var_storage %b1.var_patt [concrete]
// CHECK:STDOUT: %b1: ref %B = wrapper_binding b1, %b1.var [concrete = %b1.var]
// CHECK:STDOUT: %b2.var: ref %B = var_storage %b2.var_patt [concrete]
// CHECK:STDOUT: %b2: ref %B = wrapper_binding b2, %b2.var [concrete = %b2.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %b2.patt: %pattern_type.65a = ref_binding_pattern b2 [concrete = constants.%b2.patt]
// CHECK:STDOUT: %b2.var_patt: %pattern_type.65a = var_pattern %b2.patt [concrete = constants.%b2.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %b2.var: ref %B = var_storage %b2.var_patt [concrete]
// CHECK:STDOUT: %b2: ref %B = wrapper_binding b2, %b2.var [concrete = %b2.var]
// CHECK:STDOUT: %a2.var: ref %A = var_storage %a2.var_patt [concrete]
// CHECK:STDOUT: %a2: ref %A = wrapper_binding a2, %a2.var [concrete = %a2.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a2.patt: %pattern_type.3fa = ref_binding_pattern a2 [concrete = constants.%a2.patt]
// CHECK:STDOUT: %a2.var_patt: %pattern_type.3fa = var_pattern %a2.patt [concrete = constants.%a2.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a2.var: ref %A = var_storage %a2.var_patt [concrete]
// CHECK:STDOUT: %a2: ref %A = wrapper_binding a2, %a2.var [concrete = %a2.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -144,12 +144,12 @@ var too_many: Cpp.FixedSizePack(Cpp.A, Cpp.A).Inner(Cpp.B, Cpp.B, Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.83a = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.83a = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -221,30 +221,30 @@ var too_many: Cpp.FixedSizePack(Cpp.A, Cpp.A).Inner(Cpp.B, Cpp.B, Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %a0.var: ref %TypePack.78f = var_storage %a0.var_patt [concrete]
// CHECK:STDOUT: %a0: ref %TypePack.78f = wrapper_binding a0, %a0.var [concrete = %a0.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a0.patt: %pattern_type.a64 = ref_binding_pattern a0 [concrete = constants.%a0.patt]
// CHECK:STDOUT: %a0.var_patt: %pattern_type.a64 = var_pattern %a0.patt [concrete = constants.%a0.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a0.var: ref %TypePack.78f = var_storage %a0.var_patt [concrete]
// CHECK:STDOUT: %a0: ref %TypePack.78f = wrapper_binding a0, %a0.var [concrete = %a0.var]
// CHECK:STDOUT: %a1.var: ref %TypePack.0bc = var_storage %a1.var_patt [concrete]
// CHECK:STDOUT: %a1: ref %TypePack.0bc = wrapper_binding a1, %a1.var [concrete = %a1.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a1.patt: %pattern_type.20e = ref_binding_pattern a1 [concrete = constants.%a1.patt]
// CHECK:STDOUT: %a1.var_patt: %pattern_type.20e = var_pattern %a1.patt [concrete = constants.%a1.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a1.var: ref %TypePack.0bc = var_storage %a1.var_patt [concrete]
// CHECK:STDOUT: %a1: ref %TypePack.0bc = wrapper_binding a1, %a1.var [concrete = %a1.var]
// CHECK:STDOUT: %a2.var: ref %TypePack.0ec = var_storage %a2.var_patt [concrete]
// CHECK:STDOUT: %a2: ref %TypePack.0ec = wrapper_binding a2, %a2.var [concrete = %a2.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a2.patt: %pattern_type.c25 = ref_binding_pattern a2 [concrete = constants.%a2.patt]
// CHECK:STDOUT: %a2.var_patt: %pattern_type.c25 = var_pattern %a2.patt [concrete = constants.%a2.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a2.var: ref %TypePack.0ec = var_storage %a2.var_patt [concrete]
// CHECK:STDOUT: %a2: ref %TypePack.0ec = wrapper_binding a2, %a2.var [concrete = %a2.var]
// CHECK:STDOUT: %a3.var: ref %TypePack.186 = var_storage %a3.var_patt [concrete]
// CHECK:STDOUT: %a3: ref %TypePack.186 = wrapper_binding a3, %a3.var [concrete = %a3.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a3.patt: %pattern_type.678 = ref_binding_pattern a3 [concrete = constants.%a3.patt]
// CHECK:STDOUT: %a3.var_patt: %pattern_type.678 = var_pattern %a3.patt [concrete = constants.%a3.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a3.var: ref %TypePack.186 = var_storage %a3.var_patt [concrete]
// CHECK:STDOUT: %a3: ref %TypePack.186 = wrapper_binding a3, %a3.var [concrete = %a3.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -72,16 +72,16 @@ var a: Cpp.A = Cpp.X(Cpp.A, Cpp.B).f({} as Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a.patt: %pattern_type.3fa = ref_binding_pattern a [concrete = constants.%a.patt]
// CHECK:STDOUT: %a.var_patt: %pattern_type.3fa = var_pattern %a.patt [concrete = constants.%a.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a.var: ref %A = var_storage %a.var_patt [concrete]
// CHECK:STDOUT: %.loc7: type = splice_block %A.ref [concrete = constants.%A] {
// CHECK:STDOUT: %Cpp.ref: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%A.decl [concrete = constants.%A]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a: ref %A = wrapper_binding a, %a.var [concrete = %a.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a.patt: %pattern_type.3fa = ref_binding_pattern a [concrete = constants.%a.patt]
// CHECK:STDOUT: %a.var_patt: %pattern_type.3fa = var_pattern %a.patt [concrete = constants.%a.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -73,10 +73,6 @@ var x2: X(Cpp.IsLarge(Cpp.Large)) = X(true).Make();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x1.patt: %pattern_type.26c = ref_binding_pattern x1 [concrete = constants.%x1.patt]
// CHECK:STDOUT: %x1.var_patt: %pattern_type.26c = var_pattern %x1.patt [concrete = constants.%x1.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x1.var: ref %X.541 = var_storage %x1.var_patt [concrete]
// CHECK:STDOUT: %.loc11: type = splice_block %X.loc11 [concrete = constants.%X.541] {
// CHECK:STDOUT: %X.ref.loc11: %X.type = name_ref X, %X.decl [concrete = constants.%X.generic]
@@ -89,8 +85,8 @@ var x2: X(Cpp.IsLarge(Cpp.Large)) = X(true).Make();
// CHECK:STDOUT: }
// CHECK:STDOUT: %x1: ref %X.541 = wrapper_binding x1, %x1.var [concrete = %x1.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x2.patt: %pattern_type.795 = ref_binding_pattern x2 [concrete = constants.%x2.patt]
// CHECK:STDOUT: %x2.var_patt: %pattern_type.795 = var_pattern %x2.patt [concrete = constants.%x2.var_patt]
// CHECK:STDOUT: %x1.patt: %pattern_type.26c = ref_binding_pattern x1 [concrete = constants.%x1.patt]
// CHECK:STDOUT: %x1.var_patt: %pattern_type.26c = var_pattern %x1.patt [concrete = constants.%x1.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x2.var: ref %X.7b4 = var_storage %x2.var_patt [concrete]
// CHECK:STDOUT: %.loc12: type = splice_block %X.loc12 [concrete = constants.%X.7b4] {
@@ -103,6 +99,10 @@ var x2: X(Cpp.IsLarge(Cpp.Large)) = X(true).Make();
// CHECK:STDOUT: %X.loc12: type = class_type @X, @X(constants.%true) [concrete = constants.%X.7b4]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x2: ref %X.7b4 = wrapper_binding x2, %x2.var [concrete = %x2.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x2.patt: %pattern_type.795 = ref_binding_pattern x2 [concrete = constants.%x2.patt]
// CHECK:STDOUT: %x2.var_patt: %pattern_type.795 = var_pattern %x2.patt [concrete = constants.%x2.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -191,12 +191,12 @@ fn G() -> i32 {
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %TwoNonType = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoNonType = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.2aa = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.2aa = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %TwoNonType = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoNonType = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -257,18 +257,18 @@ fn G() -> i32 {
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %DependentNonType.43e = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %DependentNonType.43e = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.eef = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.eef = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %DependentNonType.43e = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %DependentNonType.43e = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: %y.var: ref %DependentNonType.d43 = var_storage %y.var_patt [concrete]
// CHECK:STDOUT: %y: ref %DependentNonType.d43 = wrapper_binding y, %y.var [concrete = %y.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %y.patt: %pattern_type.70d = ref_binding_pattern y [concrete = constants.%y.patt]
// CHECK:STDOUT: %y.var_patt: %pattern_type.70d = var_pattern %y.patt [concrete = constants.%y.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %y.var: ref %DependentNonType.d43 = var_storage %y.var_patt [concrete]
// CHECK:STDOUT: %y: ref %DependentNonType.d43 = wrapper_binding y, %y.var [concrete = %y.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -106,12 +106,12 @@ var x: Cpp.TwoTemplates(Cpp.A, true);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %TwoTemplates = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTemplates = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.f5e = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.f5e = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %TwoTemplates = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTemplates = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -130,12 +130,12 @@ var x: Cpp.TwoTemplates(Cpp.A, true);
// CHECK:STDOUT: --- fail_template_mismatch.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref <error> = var_storage %x.var_patt [concrete = <error>]
// CHECK:STDOUT: %x: <error> = wrapper_binding x, <error> [concrete = <error>]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: <error> = ref_binding_pattern x [concrete = <error>]
// CHECK:STDOUT: %x.var_patt: <error> = var_pattern %x.patt [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref <error> = var_storage %x.var_patt [concrete = <error>]
// CHECK:STDOUT: %x: <error> = wrapper_binding x, <error> [concrete = <error>]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -90,12 +90,12 @@ var x: Cpp.TwoTypes(Cpp.A, {});
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.83a = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.83a = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -137,12 +137,12 @@ var x: Cpp.TwoTypes(Cpp.A, {});
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %x.patt: %pattern_type.0c3 = ref_binding_pattern x [concrete = constants.%x.patt]
// CHECK:STDOUT: %x.var_patt: %pattern_type.0c3 = var_pattern %x.patt [concrete = constants.%x.var_patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %x.var: ref %TwoTypes = var_storage %x.var_patt [concrete]
// CHECK:STDOUT: %x: ref %TwoTypes = wrapper_binding x, %x.var [concrete = %x.var]
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {
@@ -96,9 +96,6 @@ let pwb: Cpp.B* = &Cpp.Wrap.r#var(Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %pa.patt: %pattern_type.1fa = value_binding_pattern pa [concrete = constants.%pa.patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc7: type = splice_block %ptr.loc7 [concrete = constants.%ptr.25f] {
// CHECK:STDOUT: %Cpp.ref.loc7: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: %A.ref.loc7: type = name_ref A, imports.%A.decl [concrete = constants.%A]
@@ -106,7 +103,7 @@ let pwb: Cpp.B* = &Cpp.Wrap.r#var(Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT: %pa: %ptr.25f = wrapper_binding pa, @__global_init.%addr.loc7
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %pb.patt: %pattern_type.733 = value_binding_pattern pb [concrete = constants.%pb.patt]
// CHECK:STDOUT: %pa.patt: %pattern_type.1fa = value_binding_pattern pa [concrete = constants.%pa.patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc8: type = splice_block %ptr.loc8 [concrete = constants.%ptr.dc0] {
// CHECK:STDOUT: %Cpp.ref.loc8: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
@@ -115,7 +112,7 @@ let pwb: Cpp.B* = &Cpp.Wrap.r#var(Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT: %pb: %ptr.dc0 = wrapper_binding pb, @__global_init.%addr.loc8
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %pwa.patt: %pattern_type.1fa = value_binding_pattern pwa [concrete = constants.%pwa.patt]
// CHECK:STDOUT: %pb.patt: %pattern_type.733 = value_binding_pattern pb [concrete = constants.%pb.patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc9: type = splice_block %ptr.loc9 [concrete = constants.%ptr.25f] {
// CHECK:STDOUT: %Cpp.ref.loc9: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
@@ -124,7 +121,7 @@ let pwb: Cpp.B* = &Cpp.Wrap.r#var(Cpp.B);
// CHECK:STDOUT: }
// CHECK:STDOUT: %pwa: %ptr.25f = wrapper_binding pwa, @__global_init.%addr.loc9
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %pwb.patt: %pattern_type.733 = value_binding_pattern pwb [concrete = constants.%pwb.patt]
// CHECK:STDOUT: %pwa.patt: %pattern_type.1fa = value_binding_pattern pwa [concrete = constants.%pwa.patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: %.loc10: type = splice_block %ptr.loc10 [concrete = constants.%ptr.dc0] {
// CHECK:STDOUT: %Cpp.ref.loc10: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
@@ -132,6 +129,9 @@ let pwb: Cpp.B* = &Cpp.Wrap.r#var(Cpp.B);
// CHECK:STDOUT: %ptr.loc10: type = ptr_type %B.ref.loc10 [concrete = constants.%ptr.dc0]
// CHECK:STDOUT: }
// CHECK:STDOUT: %pwb: %ptr.dc0 = wrapper_binding pwb, @__global_init.%addr.loc10
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %pwb.patt: %pattern_type.733 = value_binding_pattern pwb [concrete = constants.%pwb.patt]
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @__global_init() {