mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 08:11:04 +01:00
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:
+6
-6
@@ -125,10 +125,6 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() -> out %return.param: %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = ref_binding_pattern n [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %n.var_patt: %pattern_type.6b6 = var_pattern %n.patt [concrete = constants.%n.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.var: ref %i32 = var_storage %n.var_patt
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16: %.1c5 = impl_witness_access constants.%ImplicitAs.impl_witness.a23, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.e39]
|
||||
@@ -141,8 +137,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: %i32.loc16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %n: ref %i32 = wrapper_binding n, %n.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.f00 = ref_binding_pattern p [concrete = constants.%p.patt]
|
||||
// CHECK:STDOUT: %p.var_patt: %pattern_type.f00 = var_pattern %p.patt [concrete = constants.%p.var_patt]
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.6b6 = ref_binding_pattern n [concrete = constants.%n.patt]
|
||||
// CHECK:STDOUT: %n.var_patt: %pattern_type.6b6 = var_pattern %n.patt [concrete = constants.%n.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.var: ref %ptr.d08 = var_storage %p.var_patt
|
||||
// CHECK:STDOUT: %n.ref: ref %i32 = name_ref n, %n
|
||||
@@ -158,6 +154,10 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32.loc17 [concrete = constants.%ptr.d08]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: ref %ptr.d08 = wrapper_binding p, %p.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.f00 = ref_binding_pattern p [concrete = constants.%p.patt]
|
||||
// CHECK:STDOUT: %p.var_patt: %pattern_type.f00 = var_pattern %p.patt [concrete = constants.%p.var_patt]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.ref: ref %ptr.d08 = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc19_11: %ptr.d08 = acquire_value %p.ref
|
||||
// CHECK:STDOUT: %.loc19_10.1: ref %i32 = deref %.loc19_11
|
||||
|
||||
Reference in New Issue
Block a user