mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Model patterns as constant values (#5385)
This will enable us to simplify support for parameter and return patterns in import, which operates primarily on constants.
This commit is contained in:
@@ -53,8 +53,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
@@ -66,8 +66,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: fn @F() -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.7ce = var_pattern %n.patt
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.7ce = var_pattern %n.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.var: ref %i32 = var n
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
|
||||
+14
-14
@@ -81,8 +81,8 @@ fn F() {
|
||||
// CHECK:STDOUT: fn @F() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %s.patt: %pattern_type.851 = binding_pattern s
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.851 = var_pattern %s.patt
|
||||
// CHECK:STDOUT: %s.patt: %pattern_type.851 = binding_pattern s [concrete]
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.851 = var_pattern %s.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s.var: ref %struct_type.a.b.501 = var s
|
||||
// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
@@ -116,8 +116,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %s: ref %struct_type.a.b.501 = bind_name s, %s.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.8dd = binding_pattern p
|
||||
// CHECK:STDOUT: %.loc14_3: %pattern_type.8dd = var_pattern %p.patt
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.8dd = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %.loc14_3: %pattern_type.8dd = var_pattern %p.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.var: ref %ptr.3ee = var p
|
||||
// CHECK:STDOUT: %s.ref.loc14: ref %struct_type.a.b.501 = name_ref s, %s
|
||||
@@ -133,8 +133,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: ref %ptr.3ee = bind_name p, %p.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %q.patt: %pattern_type.fe8 = binding_pattern q
|
||||
// CHECK:STDOUT: %.loc15_3: %pattern_type.fe8 = var_pattern %q.patt
|
||||
// CHECK:STDOUT: %q.patt: %pattern_type.fe8 = binding_pattern q [concrete]
|
||||
// CHECK:STDOUT: %.loc15_3: %pattern_type.fe8 = var_pattern %q.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %q.var: ref %ptr.235 = var q
|
||||
// CHECK:STDOUT: %s.ref.loc15: ref %struct_type.a.b.501 = name_ref s, %s
|
||||
@@ -148,8 +148,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %q: ref %ptr.235 = bind_name q, %q.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %r.patt: %pattern_type.fe8 = binding_pattern r
|
||||
// CHECK:STDOUT: %.loc16_3: %pattern_type.fe8 = var_pattern %r.patt
|
||||
// CHECK:STDOUT: %r.patt: %pattern_type.fe8 = binding_pattern r [concrete]
|
||||
// CHECK:STDOUT: %.loc16_3: %pattern_type.fe8 = var_pattern %r.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %r.var: ref %ptr.235 = var r
|
||||
// CHECK:STDOUT: %s.ref.loc16: ref %struct_type.a.b.501 = name_ref s, %s
|
||||
@@ -163,8 +163,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %r: ref %ptr.235 = bind_name r, %r.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %t.patt: %pattern_type.511 = binding_pattern t
|
||||
// CHECK:STDOUT: %.loc18_3.1: %pattern_type.511 = var_pattern %t.patt
|
||||
// CHECK:STDOUT: %t.patt: %pattern_type.511 = binding_pattern t [concrete]
|
||||
// CHECK:STDOUT: %.loc18_3.1: %pattern_type.511 = var_pattern %t.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %t.var: ref %tuple.type.d07 = var t
|
||||
// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
|
||||
@@ -199,8 +199,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %t: ref %tuple.type.d07 = bind_name t, %t.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %t0.patt: %pattern_type.fe8 = binding_pattern t0
|
||||
// CHECK:STDOUT: %.loc19_3: %pattern_type.fe8 = var_pattern %t0.patt
|
||||
// CHECK:STDOUT: %t0.patt: %pattern_type.fe8 = binding_pattern t0 [concrete]
|
||||
// CHECK:STDOUT: %.loc19_3: %pattern_type.fe8 = var_pattern %t0.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %t0.var: ref %ptr.235 = var t0
|
||||
// CHECK:STDOUT: %t.ref.loc19: ref %tuple.type.d07 = name_ref t, %t
|
||||
@@ -215,8 +215,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %t0: ref %ptr.235 = bind_name t0, %t0.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %t1.patt: %pattern_type.fe8 = binding_pattern t1
|
||||
// CHECK:STDOUT: %.loc20_3: %pattern_type.fe8 = var_pattern %t1.patt
|
||||
// CHECK:STDOUT: %t1.patt: %pattern_type.fe8 = binding_pattern t1 [concrete]
|
||||
// CHECK:STDOUT: %.loc20_3: %pattern_type.fe8 = var_pattern %t1.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %t1.var: ref %ptr.235 = var t1
|
||||
// CHECK:STDOUT: %t.ref.loc20: ref %tuple.type.d07 = name_ref t, %t
|
||||
|
||||
+4
-4
@@ -56,8 +56,8 @@ fn Foo(ptr: C*) {
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [concrete = constants.%Foo] {
|
||||
// CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr
|
||||
// CHECK:STDOUT: %ptr.param_patt: %pattern_type.44a = value_param_pattern %ptr.patt, call_param0
|
||||
// CHECK:STDOUT: %ptr.patt: %pattern_type.44a = binding_pattern ptr [concrete]
|
||||
// CHECK:STDOUT: %ptr.param_patt: %pattern_type.44a = value_param_pattern %ptr.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %ptr.param: %ptr.019 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16_14 [concrete = constants.%ptr.019] {
|
||||
@@ -70,8 +70,8 @@ fn Foo(ptr: C*) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %Member.decl: %Member.type = fn_decl @Member [concrete = constants.%Member] {
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0
|
||||
// CHECK:STDOUT: %self.patt: %pattern_type.c48 = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: %pattern_type.c48 = value_param_pattern %self.patt, call_param0 [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]
|
||||
|
||||
+6
-6
@@ -56,8 +56,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
@@ -69,8 +69,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: fn @F() -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.7ce = var_pattern %n.patt
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %.loc12_3.1: %pattern_type.7ce = var_pattern %n.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.var: ref %i32 = var n
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
@@ -87,8 +87,8 @@ fn F() -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.fe8 = binding_pattern p
|
||||
// CHECK:STDOUT: %.loc13_3: %pattern_type.fe8 = var_pattern %p.patt
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.fe8 = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %.loc13_3: %pattern_type.fe8 = var_pattern %p.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.var: ref %ptr.235 = var p
|
||||
// CHECK:STDOUT: %n.ref: ref %i32 = name_ref n, %n
|
||||
|
||||
@@ -170,8 +170,8 @@ fn AddressOfParam(param: i32) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
@@ -179,8 +179,8 @@ fn AddressOfParam(param: i32) {
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.268 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.268 = out_param_pattern %return.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.268 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.268 = out_param_pattern %return.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
@@ -194,8 +194,8 @@ fn AddressOfParam(param: i32) {
|
||||
// CHECK:STDOUT: %AddressOfType.decl: %AddressOfType.type = fn_decl @AddressOfType [concrete = constants.%AddressOfType] {} {}
|
||||
// CHECK:STDOUT: %AddressOfTupleElementValue.decl: %AddressOfTupleElementValue.type = fn_decl @AddressOfTupleElementValue [concrete = constants.%AddressOfTupleElementValue] {} {}
|
||||
// CHECK:STDOUT: %AddressOfParam.decl: %AddressOfParam.type = fn_decl @AddressOfParam [concrete = constants.%AddressOfParam] {
|
||||
// CHECK:STDOUT: %param.patt: %pattern_type.7ce = binding_pattern param
|
||||
// CHECK:STDOUT: %param.param_patt: %pattern_type.7ce = value_param_pattern %param.patt, call_param0
|
||||
// CHECK:STDOUT: %param.patt: %pattern_type.7ce = binding_pattern param [concrete]
|
||||
// CHECK:STDOUT: %param.param_patt: %pattern_type.7ce = value_param_pattern %param.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %param.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc95: type = splice_block %i32.loc95 [concrete = constants.%i32] {
|
||||
@@ -292,8 +292,8 @@ fn AddressOfParam(param: i32) {
|
||||
// CHECK:STDOUT: fn @AddressOfParam(%param.param: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %param_addr.patt: %pattern_type.fe8 = binding_pattern param_addr
|
||||
// CHECK:STDOUT: %.loc100_3: %pattern_type.fe8 = var_pattern %param_addr.patt
|
||||
// CHECK:STDOUT: %param_addr.patt: %pattern_type.fe8 = binding_pattern param_addr [concrete]
|
||||
// CHECK:STDOUT: %.loc100_3: %pattern_type.fe8 = var_pattern %param_addr.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %param_addr.var: ref %ptr.235 = var param_addr
|
||||
// CHECK:STDOUT: %param.ref: %i32 = name_ref param, %param
|
||||
|
||||
@@ -44,7 +44,7 @@ let n2: i32 = undeclared->foo;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc15: type = splice_block %i32.loc15 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
@@ -52,7 +52,7 @@ let n2: i32 = undeclared->foo;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %i32 = bind_name n, <error>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %n2.patt: %pattern_type.7ce = binding_pattern n2
|
||||
// CHECK:STDOUT: %n2.patt: %pattern_type.7ce = binding_pattern n2 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc20: type = splice_block %i32.loc20 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
|
||||
@@ -70,8 +70,8 @@ fn Deref(n: i32) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Deref.decl: %Deref.type = fn_decl @Deref [concrete = constants.%Deref] {
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0
|
||||
// CHECK:STDOUT: %n.patt: %pattern_type.7ce = binding_pattern n [concrete]
|
||||
// CHECK:STDOUT: %n.param_patt: %pattern_type.7ce = value_param_pattern %n.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc11: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
|
||||
+4
-4
@@ -45,8 +45,8 @@ var p2: i32->foo;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p.patt: <error> = binding_pattern p
|
||||
// CHECK:STDOUT: %.loc18_1: <error> = var_pattern %p.patt
|
||||
// CHECK:STDOUT: %p.patt: <error> = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %.loc18_1: <error> = var_pattern %p.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p.var: ref <error> = var p
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
@@ -56,8 +56,8 @@ var p2: i32->foo;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: <error> = bind_name p, <error>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %p2.patt: <error> = binding_pattern p2
|
||||
// CHECK:STDOUT: %.loc23_1: <error> = var_pattern %p2.patt
|
||||
// CHECK:STDOUT: %p2.patt: <error> = binding_pattern p2 [concrete]
|
||||
// CHECK:STDOUT: %.loc23_1: <error> = var_pattern %p2.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p2.var: ref <error> = var p2
|
||||
// CHECK:STDOUT: %.2: <error> = splice_block <error> [concrete = <error>] {
|
||||
|
||||
@@ -48,10 +48,10 @@ fn ConstMismatch(p: const {}*) -> const ({}*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %ConstMismatch.decl: %ConstMismatch.type = fn_decl @ConstMismatch [concrete = constants.%ConstMismatch] {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.db0 = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.db0 = value_param_pattern %p.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.3c6 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.3c6 = out_param_pattern %return.patt, call_param1
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.db0 = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.db0 = value_param_pattern %p.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.3c6 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.3c6 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11_43: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc11_44: type = converted %.loc11_43, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
|
||||
+6
-6
@@ -61,8 +61,8 @@ var a: i32* = a_ref;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a_orig.patt: %pattern_type.7ce = binding_pattern a_orig
|
||||
// CHECK:STDOUT: %.loc4_1: %pattern_type.7ce = var_pattern %a_orig.patt
|
||||
// CHECK:STDOUT: %a_orig.patt: %pattern_type.7ce = binding_pattern a_orig [concrete]
|
||||
// CHECK:STDOUT: %.loc4_1: %pattern_type.7ce = var_pattern %a_orig.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a_orig.var: ref %i32 = var a_orig
|
||||
// CHECK:STDOUT: %.loc4_13: type = splice_block %i32.loc4 [concrete = constants.%i32] {
|
||||
@@ -71,8 +71,8 @@ var a: i32* = a_ref;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a_orig: ref %i32 = bind_name a_orig, %a_orig.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a_ref.patt: %pattern_type.fe8 = binding_pattern a_ref
|
||||
// CHECK:STDOUT: %.loc5_1: %pattern_type.fe8 = var_pattern %a_ref.patt
|
||||
// CHECK:STDOUT: %a_ref.patt: %pattern_type.fe8 = binding_pattern a_ref [concrete]
|
||||
// CHECK:STDOUT: %.loc5_1: %pattern_type.fe8 = var_pattern %a_ref.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a_ref.var: ref %ptr.235 = var a_ref
|
||||
// CHECK:STDOUT: %.loc5_15: type = splice_block %ptr [concrete = constants.%ptr.235] {
|
||||
@@ -129,8 +129,8 @@ var a: i32* = a_ref;
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.f6a = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc4_1: %pattern_type.f6a = var_pattern %a.patt
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.f6a = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %.loc4_1: %pattern_type.f6a = var_pattern %a.patt [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %ptr.9e1 = var a
|
||||
// CHECK:STDOUT: %.loc4_11: type = splice_block %ptr [concrete = constants.%ptr.9e1] {
|
||||
|
||||
+4
-4
@@ -44,10 +44,10 @@ fn F(p: const (const (const i32*)*)) -> const i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.800 = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.800 = value_param_pattern %p.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a65 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a65 = out_param_pattern %return.patt, call_param1
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.800 = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.800 = value_param_pattern %p.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.a65 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.a65 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc12_47: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc12_47: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
|
||||
+8
-8
@@ -48,10 +48,10 @@ fn ConstPtr(p: const i32*) -> (const i32)* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Ptr.decl: %Ptr.type = fn_decl @Ptr [concrete = constants.%Ptr] {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.fe8 = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.fe8 = value_param_pattern %p.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.fe8 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.fe8 = out_param_pattern %return.patt, call_param1
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.fe8 = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.fe8 = value_param_pattern %p.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.fe8 = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.fe8 = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc11_20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc11_20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
@@ -67,10 +67,10 @@ fn ConstPtr(p: const i32*) -> (const i32)* {
|
||||
// CHECK:STDOUT: %return: ref %ptr.235 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ConstPtr.decl: %ConstPtr.type = fn_decl @ConstPtr [concrete = constants.%ConstPtr] {
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.bff = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.bff = value_param_pattern %p.patt, call_param0
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.bff = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.bff = out_param_pattern %return.patt, call_param1
|
||||
// CHECK:STDOUT: %p.patt: %pattern_type.bff = binding_pattern p [concrete]
|
||||
// CHECK:STDOUT: %p.param_patt: %pattern_type.bff = value_param_pattern %p.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: %pattern_type.bff = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: %pattern_type.bff = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc15_38: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc15_38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
|
||||
Reference in New Issue
Block a user