Use declaration locations for formatting entities (#5799)

This is just trying to address the location TODO.
This commit is contained in:
Jon Ross-Perkins
2025-07-14 23:27:03 +00:00
committed by GitHub
parent 16ab0b313a
commit be487bbeda
134 changed files with 2846 additions and 2851 deletions
@@ -72,34 +72,34 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: --- fail_decl_param_mismatch.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type.b25846.1: type = fn_type @F.1 [concrete]
// CHECK:STDOUT: %F.type.b25846.1: type = fn_type @F.loc15 [concrete]
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
// CHECK:STDOUT: %F.c41931.1: %F.type.b25846.1 = struct_value () [concrete]
// CHECK:STDOUT: %pattern_type.cb1: type = pattern_type %empty_tuple.type [concrete]
// CHECK:STDOUT: %F.type.b25846.2: type = fn_type @F.2 [concrete]
// CHECK:STDOUT: %F.type.b25846.2: type = fn_type @F.loc23 [concrete]
// CHECK:STDOUT: %F.c41931.2: %F.type.b25846.2 = struct_value () [concrete]
// CHECK:STDOUT: %G.type.9f9306.1: type = fn_type @G.1 [concrete]
// CHECK:STDOUT: %G.type.9f9306.1: type = fn_type @G.loc25 [concrete]
// CHECK:STDOUT: %G.57b67a.1: %G.type.9f9306.1 = struct_value () [concrete]
// CHECK:STDOUT: %G.type.9f9306.2: type = fn_type @G.2 [concrete]
// CHECK:STDOUT: %G.type.9f9306.2: type = fn_type @G.loc33 [concrete]
// CHECK:STDOUT: %G.57b67a.2: %G.type.9f9306.2 = struct_value () [concrete]
// CHECK:STDOUT: %H.type.6826c6.1: type = fn_type @H.1 [concrete]
// CHECK:STDOUT: %H.type.6826c6.1: type = fn_type @H.loc35 [concrete]
// CHECK:STDOUT: %H.8a6545.1: %H.type.6826c6.1 = struct_value () [concrete]
// CHECK:STDOUT: %H.type.6826c6.2: type = fn_type @H.2 [concrete]
// CHECK:STDOUT: %H.type.6826c6.2: type = fn_type @H.loc40 [concrete]
// CHECK:STDOUT: %H.8a6545.2: %H.type.6826c6.2 = struct_value () [concrete]
// CHECK:STDOUT: %I.type.af49c4.1: type = fn_type @I.1 [concrete]
// CHECK:STDOUT: %I.type.af49c4.1: type = fn_type @I.loc42 [concrete]
// CHECK:STDOUT: %I.58e4ec.1: %I.type.af49c4.1 = struct_value () [concrete]
// CHECK:STDOUT: %I.type.af49c4.2: type = fn_type @I.2 [concrete]
// CHECK:STDOUT: %I.type.af49c4.2: type = fn_type @I.loc50 [concrete]
// CHECK:STDOUT: %I.58e4ec.2: %I.type.af49c4.2 = struct_value () [concrete]
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
// CHECK:STDOUT: %J.type.8e2c84.1: type = fn_type @J.1 [concrete]
// CHECK:STDOUT: %J.type.8e2c84.1: type = fn_type @J.loc52 [concrete]
// CHECK:STDOUT: %J.3662e8.1: %J.type.8e2c84.1 = struct_value () [concrete]
// CHECK:STDOUT: %J.type.8e2c84.2: type = fn_type @J.2 [concrete]
// CHECK:STDOUT: %J.type.8e2c84.2: type = fn_type @J.loc60 [concrete]
// CHECK:STDOUT: %J.3662e8.2: %J.type.8e2c84.2 = struct_value () [concrete]
// CHECK:STDOUT: %K.type.6cc1c5.1: type = fn_type @K.1 [concrete]
// CHECK:STDOUT: %K.type.6cc1c5.1: type = fn_type @K.loc62 [concrete]
// CHECK:STDOUT: %K.460d95.1: %K.type.6cc1c5.1 = struct_value () [concrete]
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete]
// CHECK:STDOUT: %K.type.6cc1c5.2: type = fn_type @K.2 [concrete]
// CHECK:STDOUT: %K.type.6cc1c5.2: type = fn_type @K.loc70 [concrete]
// CHECK:STDOUT: %K.460d95.2: %K.type.6cc1c5.2 = struct_value () [concrete]
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
// CHECK:STDOUT: }
@@ -113,8 +113,8 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: .J = %J.decl.loc52
// CHECK:STDOUT: .K = %K.decl.loc62
// CHECK:STDOUT: }
// CHECK:STDOUT: %F.decl.loc15: %F.type.b25846.1 = fn_decl @F.1 [concrete = constants.%F.c41931.1] {} {}
// CHECK:STDOUT: %F.decl.loc23: %F.type.b25846.2 = fn_decl @F.2 [concrete = constants.%F.c41931.2] {
// CHECK:STDOUT: %F.decl.loc15: %F.type.b25846.1 = fn_decl @F.loc15 [concrete = constants.%F.c41931.1] {} {}
// CHECK:STDOUT: %F.decl.loc23: %F.type.b25846.2 = fn_decl @F.loc23 [concrete = constants.%F.c41931.2] {
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern %x.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -125,7 +125,7 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: }
// CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %G.decl.loc25: %G.type.9f9306.1 = fn_decl @G.1 [concrete = constants.%G.57b67a.1] {
// CHECK:STDOUT: %G.decl.loc25: %G.type.9f9306.1 = fn_decl @G.loc25 [concrete = constants.%G.57b67a.1] {
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern %x.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -136,8 +136,8 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: }
// CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %G.decl.loc33: %G.type.9f9306.2 = fn_decl @G.2 [concrete = constants.%G.57b67a.2] {} {}
// CHECK:STDOUT: %H.decl.loc35: %H.type.6826c6.1 = fn_decl @H.1 [concrete = constants.%H.8a6545.1] {
// CHECK:STDOUT: %G.decl.loc33: %G.type.9f9306.2 = fn_decl @G.loc33 [concrete = constants.%G.57b67a.2] {} {}
// CHECK:STDOUT: %H.decl.loc35: %H.type.6826c6.1 = fn_decl @H.loc35 [concrete = constants.%H.8a6545.1] {
// CHECK:STDOUT: %x.patt: %pattern_type.cb1 = binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: %pattern_type.cb1 = value_param_pattern %x.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -148,15 +148,15 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: }
// CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %H.decl.loc40: %H.type.6826c6.2 = fn_decl @H.2 [concrete = constants.%H.8a6545.2] {
// CHECK:STDOUT: %H.decl.loc40: %H.type.6826c6.2 = fn_decl @H.loc40 [concrete = constants.%H.8a6545.2] {
// CHECK:STDOUT: %x.patt: <error> = binding_pattern x [concrete]
// CHECK:STDOUT: %x.param_patt: <error> = value_param_pattern %x.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %x.param: <error> = value_param call_param0
// CHECK:STDOUT: %x: <error> = bind_name x, %x.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %I.decl.loc42: %I.type.af49c4.1 = fn_decl @I.1 [concrete = constants.%I.58e4ec.1] {} {}
// CHECK:STDOUT: %I.decl.loc50: %I.type.af49c4.2 = fn_decl @I.2 [concrete = constants.%I.58e4ec.2] {
// CHECK:STDOUT: %I.decl.loc42: %I.type.af49c4.1 = fn_decl @I.loc42 [concrete = constants.%I.58e4ec.1] {} {}
// CHECK:STDOUT: %I.decl.loc50: %I.type.af49c4.2 = fn_decl @I.loc50 [concrete = constants.%I.58e4ec.2] {
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -165,7 +165,7 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %J.decl.loc52: %J.type.8e2c84.1 = fn_decl @J.1 [concrete = constants.%J.3662e8.1] {
// CHECK:STDOUT: %J.decl.loc52: %J.type.8e2c84.1 = fn_decl @J.loc52 [concrete = constants.%J.3662e8.1] {
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -174,8 +174,8 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %J.decl.loc60: %J.type.8e2c84.2 = fn_decl @J.2 [concrete = constants.%J.3662e8.2] {} {}
// CHECK:STDOUT: %K.decl.loc62: %K.type.6cc1c5.1 = fn_decl @K.1 [concrete = constants.%K.460d95.1] {
// CHECK:STDOUT: %J.decl.loc60: %J.type.8e2c84.2 = fn_decl @J.loc60 [concrete = constants.%J.3662e8.2] {} {}
// CHECK:STDOUT: %K.decl.loc62: %K.type.6cc1c5.1 = fn_decl @K.loc62 [concrete = constants.%K.460d95.1] {
// CHECK:STDOUT: %return.patt: %pattern_type.cb1 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.cb1 = out_param_pattern %return.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -184,7 +184,7 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %K.decl.loc70: %K.type.6cc1c5.2 = fn_decl @K.2 [concrete = constants.%K.460d95.2] {
// CHECK:STDOUT: %K.decl.loc70: %K.type.6cc1c5.2 = fn_decl @K.loc70 [concrete = constants.%K.460d95.2] {
// CHECK:STDOUT: %return.patt: %pattern_type.a96 = return_slot_pattern [concrete]
// CHECK:STDOUT: %return.param_patt: %pattern_type.a96 = out_param_pattern %return.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -195,30 +195,30 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.1();
// CHECK:STDOUT: fn @F.loc15();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2(%x.param: %empty_tuple.type) {
// CHECK:STDOUT: fn @F.loc23(%x.param: %empty_tuple.type) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G.1(%x.param: %empty_tuple.type);
// CHECK:STDOUT: fn @G.loc25(%x.param: %empty_tuple.type);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G.2() {
// CHECK:STDOUT: fn @G.loc33() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @H.1(%x.param: %empty_tuple.type);
// CHECK:STDOUT: fn @H.loc35(%x.param: %empty_tuple.type);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @H.2(%x.param: <error>) {
// CHECK:STDOUT: fn @H.loc40(%x.param: <error>) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @I.1();
// CHECK:STDOUT: fn @I.loc42();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @I.2() -> %empty_tuple.type {
// CHECK:STDOUT: fn @I.loc50() -> %empty_tuple.type {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %.loc50_24: %empty_tuple.type = tuple_literal ()
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
@@ -226,16 +226,16 @@ fn K() -> {} { return {}; }
// CHECK:STDOUT: return %.loc50_25
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @J.1() -> %empty_tuple.type;
// CHECK:STDOUT: fn @J.loc52() -> %empty_tuple.type;
// CHECK:STDOUT:
// CHECK:STDOUT: fn @J.2() {
// CHECK:STDOUT: fn @J.loc60() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @K.1() -> %empty_tuple.type;
// CHECK:STDOUT: fn @K.loc62() -> %empty_tuple.type;
// CHECK:STDOUT:
// CHECK:STDOUT: fn @K.2() -> %empty_struct_type {
// CHECK:STDOUT: fn @K.loc70() -> %empty_struct_type {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %.loc70_24: %empty_struct_type = struct_literal ()
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
@@ -54,9 +54,9 @@ fn F() {
// CHECK:STDOUT: --- fail_virtual.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.1 [concrete]
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.loc4 [concrete]
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
// CHECK:STDOUT: %F.type.21a: type = fn_type @F.2 [concrete]
// CHECK:STDOUT: %F.type.21a: type = fn_type @F.loc9 [concrete]
// CHECK:STDOUT: %F.c14: %F.type.21a = struct_value () [concrete]
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
@@ -77,18 +77,18 @@ fn F() {
// CHECK:STDOUT: .F = %F.decl
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.1 [concrete = constants.%F.c41] {} {}
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.loc4 [concrete = constants.%F.c41] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.1() {
// CHECK:STDOUT: fn @F.loc4() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: %F.decl: %F.type.21a = fn_decl @F.2 [concrete = constants.%F.c14] {} {}
// CHECK:STDOUT: %F.decl: %F.type.21a = fn_decl @F.loc9 [concrete = constants.%F.c14] {} {}
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {}
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {} {}
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2();
// CHECK:STDOUT: fn @F.loc9();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @G();
// CHECK:STDOUT:
@@ -25,9 +25,9 @@ fn F() {}
// CHECK:STDOUT: --- fail_redef.carbon
// CHECK:STDOUT:
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %F.type.b25846.1: type = fn_type @F.1 [concrete]
// CHECK:STDOUT: %F.type.b25846.1: type = fn_type @F.loc15 [concrete]
// CHECK:STDOUT: %F.c41931.1: %F.type.b25846.1 = struct_value () [concrete]
// CHECK:STDOUT: %F.type.b25846.2: type = fn_type @F.2 [concrete]
// CHECK:STDOUT: %F.type.b25846.2: type = fn_type @F.loc23 [concrete]
// CHECK:STDOUT: %F.c41931.2: %F.type.b25846.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -35,16 +35,16 @@ fn F() {}
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
// CHECK:STDOUT: .F = %F.decl.loc15
// CHECK:STDOUT: }
// CHECK:STDOUT: %F.decl.loc15: %F.type.b25846.1 = fn_decl @F.1 [concrete = constants.%F.c41931.1] {} {}
// CHECK:STDOUT: %F.decl.loc23: %F.type.b25846.2 = fn_decl @F.2 [concrete = constants.%F.c41931.2] {} {}
// CHECK:STDOUT: %F.decl.loc15: %F.type.b25846.1 = fn_decl @F.loc15 [concrete = constants.%F.c41931.1] {} {}
// CHECK:STDOUT: %F.decl.loc23: %F.type.b25846.2 = fn_decl @F.loc23 [concrete = constants.%F.c41931.2] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.1() {
// CHECK:STDOUT: fn @F.loc15() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F.2() {
// CHECK:STDOUT: fn @F.loc23() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -309,7 +309,7 @@ fn B() {}
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %A.type.00d7e7.1: type = fn_type @A.1 [concrete]
// CHECK:STDOUT: %A.1db889.1: %A.type.00d7e7.1 = struct_value () [concrete]
// CHECK:STDOUT: %A.type.00d7e7.2: type = fn_type @A.2 [concrete]
// CHECK:STDOUT: %A.type.00d7e7.2: type = fn_type @A.loc12 [concrete]
// CHECK:STDOUT: %A.1db889.2: %A.type.00d7e7.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -323,12 +323,12 @@ fn B() {}
// CHECK:STDOUT: }
// CHECK:STDOUT: %default.import.loc2_31.1 = import <none>
// CHECK:STDOUT: %default.import.loc2_31.2 = import <none>
// CHECK:STDOUT: %A.decl: %A.type.00d7e7.2 = fn_decl @A.2 [concrete = constants.%A.1db889.2] {} {}
// CHECK:STDOUT: %A.decl: %A.type.00d7e7.2 = fn_decl @A.loc12 [concrete = constants.%A.1db889.2] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @A.1 [from "redef_after_def.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @A.2() {
// CHECK:STDOUT: fn @A.loc12() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
+3 -3
View File
@@ -393,7 +393,7 @@ fn D() {}
// CHECK:STDOUT: constants {
// CHECK:STDOUT: %A.type.00d7e7.1: type = fn_type @A.1 [concrete]
// CHECK:STDOUT: %A.1db889.1: %A.type.00d7e7.1 = struct_value () [concrete]
// CHECK:STDOUT: %A.type.00d7e7.2: type = fn_type @A.2 [concrete]
// CHECK:STDOUT: %A.type.00d7e7.2: type = fn_type @A.loc14 [concrete]
// CHECK:STDOUT: %A.1db889.2: %A.type.00d7e7.2 = struct_value () [concrete]
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete]
@@ -425,7 +425,7 @@ fn D() {}
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core.import = import Core
// CHECK:STDOUT: %default.import = import <none>
// CHECK:STDOUT: %A.decl: %A.type.00d7e7.2 = fn_decl @A.2 [concrete = constants.%A.1db889.2] {} {}
// CHECK:STDOUT: %A.decl: %A.type.00d7e7.2 = fn_decl @A.loc14 [concrete = constants.%A.1db889.2] {} {}
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {} {
// CHECK:STDOUT: %int_32.loc23_17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
// CHECK:STDOUT: %i32.loc23_17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
@@ -442,7 +442,7 @@ fn D() {}
// CHECK:STDOUT:
// CHECK:STDOUT: fn @A.1 [from "fns.carbon"];
// CHECK:STDOUT:
// CHECK:STDOUT: fn @A.2() {
// CHECK:STDOUT: fn @A.loc14() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -330,9 +330,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc6 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc14 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -342,7 +342,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Foo = %Foo.decl.loc6
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.a02530.1 = fn_decl @Foo.loc6 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -350,7 +350,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.a02530.2 = fn_decl @Foo.loc14 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -369,9 +369,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.1(%a.param: %C);
// CHECK:STDOUT: fn @Foo.loc6(%a.param: %C);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.2(%a.param: %C) {
// CHECK:STDOUT: fn @Foo.loc14(%a.param: %C) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -382,9 +382,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C: type = class_type @C [concrete]
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc14 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc23 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -394,8 +394,8 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Foo = %Foo.decl.loc14
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {} {}
// CHECK:STDOUT: %Foo.decl.loc23: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {} {}
// CHECK:STDOUT: %Foo.decl.loc14: %Foo.type.a02530.1 = fn_decl @Foo.loc14 [concrete = constants.%Foo.ddeb7d.1] {} {}
// CHECK:STDOUT: %Foo.decl.loc23: %Foo.type.a02530.2 = fn_decl @Foo.loc23 [concrete = constants.%Foo.ddeb7d.2] {} {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: class @C {
@@ -407,9 +407,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.1();
// CHECK:STDOUT: fn @Foo.loc14();
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.2() {
// CHECK:STDOUT: fn @Foo.loc23() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -588,9 +588,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc7 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc15 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -603,7 +603,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -611,7 +611,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete]
// CHECK:STDOUT: %b.param_patt: %pattern_type = value_param_pattern %b.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -630,9 +630,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.1(%a.param: %C);
// CHECK:STDOUT: fn @Foo.loc7(%a.param: %C);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.2(%b.param: %C) {
// CHECK:STDOUT: fn @Foo.loc15(%b.param: %C) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -644,9 +644,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc7 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc15 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -659,7 +659,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -667,7 +667,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %a: %C = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -686,9 +686,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.1(%a.param: %C);
// CHECK:STDOUT: fn @Foo.loc7(%a.param: %C);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.2(%a.param: %C) {
// CHECK:STDOUT: fn @Foo.loc15(%a.param: %C) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }
@@ -701,9 +701,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic]
// CHECK:STDOUT: %pattern_type: type = pattern_type %C [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc7 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc15 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -716,13 +716,13 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.a02530.1 = fn_decl @Foo.loc7 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
// CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0 [symbolic = %a.loc7_8.2 (constants.%a)]
// CHECK:STDOUT: }
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %Foo.decl.loc15: %Foo.type.a02530.2 = fn_decl @Foo.loc15 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
@@ -739,13 +739,13 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Foo.1(%a.loc7_8.1: %C) {
// CHECK:STDOUT: generic fn @Foo.loc7(%a.loc7_8.1: %C) {
// CHECK:STDOUT: %a.loc7_8.2: %C = bind_symbolic_name a, 0 [symbolic = %a.loc7_8.2 (constants.%a)]
// CHECK:STDOUT:
// CHECK:STDOUT: fn();
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Foo.2(%a.loc15_8.1: %C) {
// CHECK:STDOUT: generic fn @Foo.loc15(%a.loc15_8.1: %C) {
// CHECK:STDOUT: %a.loc15_8.2: %C = bind_symbolic_name a, 0 [symbolic = %a.loc15_8.2 (constants.%a)]
// CHECK:STDOUT:
// CHECK:STDOUT: !definition:
@@ -756,11 +756,11 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Foo.1(constants.%a) {
// CHECK:STDOUT: specific @Foo.loc7(constants.%a) {
// CHECK:STDOUT: %a.loc7_8.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: specific @Foo.2(constants.%a) {
// CHECK:STDOUT: specific @Foo.loc15(constants.%a) {
// CHECK:STDOUT: %a.loc15_8.2 => constants.%a
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -915,9 +915,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
// CHECK:STDOUT: %const: type = const_type %C [concrete]
// CHECK:STDOUT: %pattern_type: type = pattern_type %const [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.1 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.1: type = fn_type @Foo.loc6 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.1: %Foo.type.a02530.1 = struct_value () [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.2 [concrete]
// CHECK:STDOUT: %Foo.type.a02530.2: type = fn_type @Foo.loc18 [concrete]
// CHECK:STDOUT: %Foo.ddeb7d.2: %Foo.type.a02530.2 = struct_value () [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -927,7 +927,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Foo = %Foo.decl.loc6
// CHECK:STDOUT: }
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.a02530.1 = fn_decl @Foo.1 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.a02530.1 = fn_decl @Foo.loc6 [concrete = constants.%Foo.ddeb7d.1] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -938,7 +938,7 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: }
// CHECK:STDOUT: %a: %const = bind_name a, %a.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %Foo.decl.loc18: %Foo.type.a02530.2 = fn_decl @Foo.2 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %Foo.decl.loc18: %Foo.type.a02530.2 = fn_decl @Foo.loc18 [concrete = constants.%Foo.ddeb7d.2] {
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
// CHECK:STDOUT: %a.param_patt: %pattern_type = value_param_pattern %a.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
@@ -961,9 +961,9 @@ fn Foo(a: const (const C)) {}
// CHECK:STDOUT: .Self = constants.%C
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.1(%a.param: %const);
// CHECK:STDOUT: fn @Foo.loc6(%a.param: %const);
// CHECK:STDOUT:
// CHECK:STDOUT: fn @Foo.2(%a.param: %const) {
// CHECK:STDOUT: fn @Foo.loc18(%a.param: %const) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: return
// CHECK:STDOUT: }