diff --git a/toolchain/base/int.h b/toolchain/base/int.h index 918180fa467b..724af4004f40 100644 --- a/toolchain/base/int.h +++ b/toolchain/base/int.h @@ -6,7 +6,6 @@ #define CARBON_TOOLCHAIN_BASE_INT_H_ #include "common/check.h" -#include "llvm/ADT/APFloat.h" #include "llvm/ADT/APInt.h" #include "llvm/ADT/SmallVector.h" #include "toolchain/base/index_base.h" diff --git a/toolchain/base/value_store.h b/toolchain/base/value_store.h index d34a88f1f84f..bc9bc41dcd93 100644 --- a/toolchain/base/value_store.h +++ b/toolchain/base/value_store.h @@ -11,8 +11,6 @@ #include "common/hashtable_key_context.h" #include "common/ostream.h" #include "common/set.h" -#include "llvm/ADT/APFloat.h" -#include "llvm/ADT/APInt.h" #include "llvm/ADT/Sequence.h" #include "llvm/ADT/SmallVector.h" #include "toolchain/base/mem_usage.h" diff --git a/toolchain/check/testdata/alias/fail_builtins.carbon b/toolchain/check/testdata/alias/fail_builtins.carbon index b643a8cce065..9bb44e8bf077 100644 --- a/toolchain/check/testdata/alias/fail_builtins.carbon +++ b/toolchain/check/testdata/alias/fail_builtins.carbon @@ -30,8 +30,8 @@ alias b = bool; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/alias/no_prelude/export_name.carbon b/toolchain/check/testdata/alias/no_prelude/export_name.carbon index acd539fd1110..1b3877597218 100644 --- a/toolchain/check/testdata/alias/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/alias/no_prelude/export_name.carbon @@ -103,25 +103,25 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//base, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//base, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//base, C, unloaded +// CHECK:STDOUT: %import_ref.930: type = import_ref Main//base, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: .D = %D // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %D: type = export D, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %D: type = export D, imports.%import_ref.930 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_orig.carbon @@ -133,25 +133,25 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//base, D, unloaded -// CHECK:STDOUT: %import_ref.3: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.7c6 = import_ref Main//base, D, unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .C = %C -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .D = imports.%import_ref.7c6 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -164,14 +164,14 @@ var d: D* = &c; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.a28: type = import_ref Main//export, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//export, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export, inst21 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 +// CHECK:STDOUT: .D = imports.%import_ref.a28 // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -181,8 +181,8 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -228,34 +228,34 @@ var d: D* = &c; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//export_orig, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//export_orig, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_orig, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.a28: type = import_ref Main//export, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_orig, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//export_orig, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_orig, inst21 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 +// CHECK:STDOUT: .D = imports.%import_ref.a28 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %ptr.2 = var d -// CHECK:STDOUT: %d: ref %ptr.2 = bind_name d, %d.var +// CHECK:STDOUT: %d.var: ref %ptr.019 = var d +// CHECK:STDOUT: %d: ref %ptr.019 = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_orig.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -265,7 +265,7 @@ var d: D* = &c; // CHECK:STDOUT: %.loc7_14: init %C = converted %.loc7_13.1, %.loc7_13.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc7_14 // CHECK:STDOUT: %c.ref: ref %C = name_ref c, file.%c -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %c.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref // CHECK:STDOUT: assign file.%d.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/alias/no_prelude/import.carbon b/toolchain/check/testdata/alias/no_prelude/import.carbon index 003a1076e07d..e1ae8ddd0690 100644 --- a/toolchain/check/testdata/alias/no_prelude/import.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import.carbon @@ -106,32 +106,32 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//class1, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//class1, c_alias, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//class1, a, unloaded -// CHECK:STDOUT: %import_ref.4: = import_ref Main//class1, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//class1, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//class1, C, unloaded +// CHECK:STDOUT: %import_ref.8af: type = import_ref Main//class1, c_alias, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.6da = import_ref Main//class1, a, unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//class1, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//class1, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .c_alias = imports.%import_ref.2 -// CHECK:STDOUT: .a = imports.%import_ref.3 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .c_alias = imports.%import_ref.8af +// CHECK:STDOUT: .a = imports.%import_ref.6da // CHECK:STDOUT: .c_alias_alias = %c_alias_alias // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %c_alias.ref: type = name_ref c_alias, imports.%import_ref.2 [template = constants.%C] -// CHECK:STDOUT: %c_alias_alias: type = bind_alias c_alias_alias, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %c_alias.ref: type = name_ref c_alias, imports.%import_ref.8af [template = constants.%C] +// CHECK:STDOUT: %c_alias_alias: type = bind_alias c_alias_alias, imports.%import_ref.8af [template = constants.%C] // CHECK:STDOUT: %b.var: ref %ptr = var b // CHECK:STDOUT: %b: ref %ptr = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class1.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- class3.carbon @@ -144,16 +144,16 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//class2, c_alias_alias, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//class2, b, unloaded -// CHECK:STDOUT: %import_ref.3: = import_ref Main//class2, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//class2, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.77b: type = import_ref Main//class2, c_alias_alias, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.b9b = import_ref Main//class2, b, unloaded +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//class2, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//class2, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .c_alias_alias = imports.%import_ref.1 -// CHECK:STDOUT: .b = imports.%import_ref.2 +// CHECK:STDOUT: .c_alias_alias = imports.%import_ref.77b +// CHECK:STDOUT: .b = imports.%import_ref.b9b // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -163,8 +163,8 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class2.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- var1.carbon @@ -202,27 +202,27 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//var1, a, unloaded -// CHECK:STDOUT: %import_ref.2: ref %empty_tuple.type = import_ref Main//var1, a_alias, loaded +// CHECK:STDOUT: %import_ref.0e2 = import_ref Main//var1, a, unloaded +// CHECK:STDOUT: %import_ref.22c: ref %empty_tuple.type = import_ref Main//var1, a_alias, loaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a = imports.%import_ref.1 -// CHECK:STDOUT: .a_alias = imports.%import_ref.2 +// CHECK:STDOUT: .a = imports.%import_ref.0e2 +// CHECK:STDOUT: .a_alias = imports.%import_ref.22c // CHECK:STDOUT: .a_alias_alias = %a_alias_alias // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%import_ref.2 -// CHECK:STDOUT: %a_alias_alias: ref %empty_tuple.type = bind_alias a_alias_alias, imports.%import_ref.2 +// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%import_ref.22c +// CHECK:STDOUT: %a_alias_alias: ref %empty_tuple.type = bind_alias a_alias_alias, imports.%import_ref.22c // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var b // CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%import_ref.2 +// CHECK:STDOUT: %a_alias.ref: ref %empty_tuple.type = name_ref a_alias, imports.%import_ref.22c // CHECK:STDOUT: %.loc8_13: init %empty_tuple.type = tuple_init () to file.%b.var [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc8_20: init %empty_tuple.type = converted %a_alias.ref, %.loc8_13 [template = constants.%empty_tuple] // CHECK:STDOUT: assign file.%b.var, %.loc8_20 @@ -237,14 +237,14 @@ var c: () = a_alias_alias; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: ref %empty_tuple.type = import_ref Main//var2, a_alias_alias, loaded [template = ] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//var2, b, unloaded +// CHECK:STDOUT: %import_ref.692: ref %empty_tuple.type = import_ref Main//var2, a_alias_alias, loaded [template = ] +// CHECK:STDOUT: %import_ref.bb6 = import_ref Main//var2, b, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_alias_alias = imports.%import_ref.1 -// CHECK:STDOUT: .b = imports.%import_ref.2 +// CHECK:STDOUT: .a_alias_alias = imports.%import_ref.692 +// CHECK:STDOUT: .b = imports.%import_ref.bb6 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -254,7 +254,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_alias_alias.ref: ref %empty_tuple.type = name_ref a_alias_alias, imports.%import_ref.1 [template = ] +// CHECK:STDOUT: %a_alias_alias.ref: ref %empty_tuple.type = name_ref a_alias_alias, imports.%import_ref.692 [template = ] // CHECK:STDOUT: %.loc10_13: init %empty_tuple.type = tuple_init () to file.%c.var [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc10_26: init %empty_tuple.type = converted %a_alias_alias.ref, %.loc10_13 [template = constants.%empty_tuple] // CHECK:STDOUT: assign file.%c.var, %.loc10_26 diff --git a/toolchain/check/testdata/alias/no_prelude/import_access.carbon b/toolchain/check/testdata/alias/no_prelude/import_access.carbon index ab4f0474d9c1..3bd90d8b4491 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_access.carbon @@ -88,16 +88,16 @@ var inst: Test.A = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Test//def, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Test//def, A, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Test//def, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Test//def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Test//def, C, unloaded +// CHECK:STDOUT: %import_ref.7c2: type = import_ref Test//def, A, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Test//def, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Test//def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .A [private] = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .A [private] = imports.%import_ref.7c2 // CHECK:STDOUT: .inst = %inst // CHECK:STDOUT: } // CHECK:STDOUT: %Test.import = import Test @@ -108,8 +108,8 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/import_order.carbon b/toolchain/check/testdata/alias/no_prelude/import_order.carbon index 491464378248..3c3221281bf9 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_order.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_order.carbon @@ -82,23 +82,23 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//a, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, a, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//a, b, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//a, c, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//a, d, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.6: = import_ref Main//a, loc4_22, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//a, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: %C.elem = import_ref Main//a, loc4_16, loaded [template = %.1] +// CHECK:STDOUT: %import_ref.85d = import_ref Main//a, C, unloaded +// CHECK:STDOUT: %import_ref.18d: type = import_ref Main//a, a, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.a36: type = import_ref Main//a, b, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.3a1: type = import_ref Main//a, c, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.dd9: type = import_ref Main//a, d, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.146: = import_ref Main//a, loc4_22, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.f99: %C.elem = import_ref Main//a, loc4_16, loaded [template = %.2fc] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .a = imports.%import_ref.2 -// CHECK:STDOUT: .b = imports.%import_ref.3 -// CHECK:STDOUT: .c = imports.%import_ref.4 -// CHECK:STDOUT: .d = imports.%import_ref.5 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .a = imports.%import_ref.18d +// CHECK:STDOUT: .b = imports.%import_ref.a36 +// CHECK:STDOUT: .c = imports.%import_ref.3a1 +// CHECK:STDOUT: .d = imports.%import_ref.dd9 // CHECK:STDOUT: .d_val = %d_val // CHECK:STDOUT: .c_val = %c_val // CHECK:STDOUT: .b_val = %b_val @@ -117,9 +117,9 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .v = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.6 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .v = imports.%import_ref.f99 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.146 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -133,7 +133,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc7_25: init %C = converted %.loc7_24.1, %.loc7_24.4 [template = constants.%C.val] // CHECK:STDOUT: assign file.%d_val.var, %.loc7_25 // CHECK:STDOUT: %d_val.ref: ref %C = name_ref d_val, file.%d_val -// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%import_ref.8 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc8: %C.elem = name_ref v, imports.%import_ref.f99 [template = imports.%.2fc] // CHECK:STDOUT: %.loc8_27.1: ref %empty_tuple.type = class_element_access %d_val.ref, element0 // CHECK:STDOUT: %.loc8_29.1: %struct_type.v = struct_literal (%.loc8_27.1) // CHECK:STDOUT: %.loc8_29.2: ref %empty_tuple.type = class_element_access file.%c_val.var, element0 @@ -143,7 +143,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc8_30: init %C = converted %.loc8_29.1, %.loc8_29.4 [template = constants.%C.val] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_30 // CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val -// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%import_ref.8 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc9: %C.elem = name_ref v, imports.%import_ref.f99 [template = imports.%.2fc] // CHECK:STDOUT: %.loc9_27.1: ref %empty_tuple.type = class_element_access %c_val.ref, element0 // CHECK:STDOUT: %.loc9_29.1: %struct_type.v = struct_literal (%.loc9_27.1) // CHECK:STDOUT: %.loc9_29.2: ref %empty_tuple.type = class_element_access file.%b_val.var, element0 @@ -153,7 +153,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.loc9_30: init %C = converted %.loc9_29.1, %.loc9_29.4 [template = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc9_30 // CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val -// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%import_ref.8 [template = imports.%.1] +// CHECK:STDOUT: %v.ref.loc10: %C.elem = name_ref v, imports.%import_ref.f99 [template = imports.%.2fc] // CHECK:STDOUT: %.loc10_27.1: ref %empty_tuple.type = class_element_access %b_val.ref, element0 // CHECK:STDOUT: %.loc10_29.1: %struct_type.v = struct_literal (%.loc10_27.1) // CHECK:STDOUT: %.loc10_29.2: ref %empty_tuple.type = class_element_access file.%a_val.var, element0 diff --git a/toolchain/check/testdata/array/array_in_place.carbon b/toolchain/check/testdata/array/array_in_place.carbon index 94a559ce1528..c4052061a512 100644 --- a/toolchain/check/testdata/array/array_in_place.carbon +++ b/toolchain/check/testdata/array/array_in_place.carbon @@ -19,22 +19,22 @@ fn G() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_2, %tuple.type.2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%tuple.type.2, %tuple.type.2) [template] +// CHECK:STDOUT: %array_type: type = array_type %int_2, %tuple.type.dc6 [template] +// CHECK:STDOUT: %tuple.type.1aa: type = tuple_type (%tuple.type.dc6, %tuple.type.dc6) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,8 +48,8 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.dc6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.dc6 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] @@ -57,33 +57,33 @@ fn G() { // CHECK:STDOUT: %i32.loc11_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_25.1: %tuple.type.1 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) -// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) +// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.dc6 [template = constants.%tuple.type.dc6] +// CHECK:STDOUT: %return.param: ref %tuple.type.dc6 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.dc6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2; +// CHECK:STDOUT: fn @F() -> %tuple.type.dc6; // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.var: ref %array_type = var v // CHECK:STDOUT: %v: ref %array_type = bind_name v, %v.var // CHECK:STDOUT: %F.ref.loc14_34: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc14_42.1: ref %tuple.type.2 = splice_block %.loc14_42.2 { +// CHECK:STDOUT: %.loc14_42.1: ref %tuple.type.dc6 = splice_block %.loc14_42.2 { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %.loc14_42.2: ref %tuple.type.2 = array_index %v.var, %int_0 +// CHECK:STDOUT: %.loc14_42.2: ref %tuple.type.dc6 = array_index %v.var, %int_0 // CHECK:STDOUT: } -// CHECK:STDOUT: %F.call.loc14_36: init %tuple.type.2 = call %F.ref.loc14_34() to %.loc14_42.1 +// CHECK:STDOUT: %F.call.loc14_36: init %tuple.type.dc6 = call %F.ref.loc14_34() to %.loc14_42.1 // CHECK:STDOUT: %F.ref.loc14_39: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc14_42.3: ref %tuple.type.2 = splice_block %.loc14_42.4 { +// CHECK:STDOUT: %.loc14_42.3: ref %tuple.type.dc6 = splice_block %.loc14_42.4 { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %.loc14_42.4: ref %tuple.type.2 = array_index %v.var, %int_1 +// CHECK:STDOUT: %.loc14_42.4: ref %tuple.type.dc6 = array_index %v.var, %int_1 // CHECK:STDOUT: } -// CHECK:STDOUT: %F.call.loc14_41: init %tuple.type.2 = call %F.ref.loc14_39() to %.loc14_42.3 -// CHECK:STDOUT: %.loc14_42.5: %tuple.type.3 = tuple_literal (%F.call.loc14_36, %F.call.loc14_41) +// CHECK:STDOUT: %F.call.loc14_41: init %tuple.type.dc6 = call %F.ref.loc14_39() to %.loc14_42.3 +// CHECK:STDOUT: %.loc14_42.5: %tuple.type.1aa = tuple_literal (%F.call.loc14_36, %F.call.loc14_41) // CHECK:STDOUT: %.loc14_42.6: init %array_type = array_init (%F.call.loc14_36, %F.call.loc14_41) to %v.var // CHECK:STDOUT: %.loc14_43: init %array_type = converted %.loc14_42.5, %.loc14_42.6 // CHECK:STDOUT: assign %v.var, %.loc14_43 diff --git a/toolchain/check/testdata/array/array_vs_tuple.carbon b/toolchain/check/testdata/array/array_vs_tuple.carbon index 3d4ec7067b2b..8195902ea902 100644 --- a/toolchain/check/testdata/array/array_vs_tuple.carbon +++ b/toolchain/check/testdata/array/array_vs_tuple.carbon @@ -21,34 +21,34 @@ fn G() { // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%i32, %i32, %i32) [template] -// CHECK:STDOUT: %tuple: %tuple.type.3 = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %tuple: %tuple.type.dc6 = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -67,66 +67,66 @@ fn G() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %array_type = var a // CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var -// CHECK:STDOUT: %int_1.loc13_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc13_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc13_29.1: %tuple.type.1 = tuple_literal (%int_1.loc13_22, %int_2.loc13_25, %int_3.loc13) -// CHECK:STDOUT: %impl.elem0.loc13_29.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_29.1: = bound_method %int_1.loc13_22, %impl.elem0.loc13_29.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_29.1: = specific_function %Convert.bound.loc13_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_29.1: init %i32 = call %Convert.specific_fn.loc13_29.1(%int_1.loc13_22) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_29.2: init %i32 = converted %int_1.loc13_22, %int.convert_checked.loc13_29.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc13_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc13_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc13_29.1: %tuple.type.37f = tuple_literal (%int_1.loc13_22, %int_2.loc13_25, %int_3.loc13) +// CHECK:STDOUT: %impl.elem0.loc13_29.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_29.1: = bound_method %int_1.loc13_22, %impl.elem0.loc13_29.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13_29.1: = specific_function %Convert.bound.loc13_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13_29.1: init %i32 = call %Convert.specific_fn.loc13_29.1(%int_1.loc13_22) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_29.2: init %i32 = converted %int_1.loc13_22, %int.convert_checked.loc13_29.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc13_29.3: ref %i32 = array_index %a.var, %int_0 -// CHECK:STDOUT: %.loc13_29.4: init %i32 = initialize_from %.loc13_29.2 to %.loc13_29.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc13_29.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_29.2: = bound_method %int_2.loc13_25, %impl.elem0.loc13_29.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_29.2: = specific_function %Convert.bound.loc13_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_29.2: init %i32 = call %Convert.specific_fn.loc13_29.2(%int_2.loc13_25) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_29.5: init %i32 = converted %int_2.loc13_25, %int.convert_checked.loc13_29.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc13_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc13_29.4: init %i32 = initialize_from %.loc13_29.2 to %.loc13_29.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc13_29.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_29.2: = bound_method %int_2.loc13_25, %impl.elem0.loc13_29.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_29.2: = specific_function %Convert.bound.loc13_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc13_29.2: init %i32 = call %Convert.specific_fn.loc13_29.2(%int_2.loc13_25) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_29.5: init %i32 = converted %int_2.loc13_25, %int.convert_checked.loc13_29.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc13_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc13_29.6: ref %i32 = array_index %a.var, %int_1.loc13_29 -// CHECK:STDOUT: %.loc13_29.7: init %i32 = initialize_from %.loc13_29.5 to %.loc13_29.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc13_29.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_29.3: = bound_method %int_3.loc13, %impl.elem0.loc13_29.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc13_29.3: = specific_function %Convert.bound.loc13_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc13_29.3: init %i32 = call %Convert.specific_fn.loc13_29.3(%int_3.loc13) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_29.8: init %i32 = converted %int_3.loc13, %int.convert_checked.loc13_29.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc13_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc13_29.7: init %i32 = initialize_from %.loc13_29.5 to %.loc13_29.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc13_29.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_29.3: = bound_method %int_3.loc13, %impl.elem0.loc13_29.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc13_29.3: = specific_function %Convert.bound.loc13_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc13_29.3: init %i32 = call %Convert.specific_fn.loc13_29.3(%int_3.loc13) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc13_29.8: init %i32 = converted %int_3.loc13, %int.convert_checked.loc13_29.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc13_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc13_29.9: ref %i32 = array_index %a.var, %int_2.loc13_29 -// CHECK:STDOUT: %.loc13_29.10: init %i32 = initialize_from %.loc13_29.8 to %.loc13_29.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc13_29.10: init %i32 = initialize_from %.loc13_29.8 to %.loc13_29.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc13_29.11: init %array_type = array_init (%.loc13_29.4, %.loc13_29.7, %.loc13_29.10) to %a.var [template = constants.%array] // CHECK:STDOUT: %.loc13_30: init %array_type = converted %.loc13_29.1, %.loc13_29.11 [template = constants.%array] // CHECK:STDOUT: assign %a.var, %.loc13_30 -// CHECK:STDOUT: %b.var: ref %tuple.type.3 = var b -// CHECK:STDOUT: %b: ref %tuple.type.3 = bind_name b, %b.var -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc14: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc14_36.1: %tuple.type.1 = tuple_literal (%int_1.loc14, %int_2.loc14, %int_3.loc14) -// CHECK:STDOUT: %impl.elem0.loc14_36.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_36.1: = bound_method %int_1.loc14, %impl.elem0.loc14_36.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_36.1: = specific_function %Convert.bound.loc14_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_36.1: init %i32 = call %Convert.specific_fn.loc14_36.1(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_36.2: init %i32 = converted %int_1.loc14, %int.convert_checked.loc14_36.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %b.var: ref %tuple.type.dc6 = var b +// CHECK:STDOUT: %b: ref %tuple.type.dc6 = bind_name b, %b.var +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc14: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc14_36.1: %tuple.type.37f = tuple_literal (%int_1.loc14, %int_2.loc14, %int_3.loc14) +// CHECK:STDOUT: %impl.elem0.loc14_36.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_36.1: = bound_method %int_1.loc14, %impl.elem0.loc14_36.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_36.1: = specific_function %Convert.bound.loc14_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_36.1: init %i32 = call %Convert.specific_fn.loc14_36.1(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_36.2: init %i32 = converted %int_1.loc14, %int.convert_checked.loc14_36.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %b.var, element0 -// CHECK:STDOUT: %.loc14_36.3: init %i32 = initialize_from %.loc14_36.2 to %tuple.elem0 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_36.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_36.2: = bound_method %int_2.loc14, %impl.elem0.loc14_36.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_36.2: = specific_function %Convert.bound.loc14_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_36.2: init %i32 = call %Convert.specific_fn.loc14_36.2(%int_2.loc14) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_36.4: init %i32 = converted %int_2.loc14, %int.convert_checked.loc14_36.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc14_36.3: init %i32 = initialize_from %.loc14_36.2 to %tuple.elem0 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_36.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_36.2: = bound_method %int_2.loc14, %impl.elem0.loc14_36.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_36.2: = specific_function %Convert.bound.loc14_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_36.2: init %i32 = call %Convert.specific_fn.loc14_36.2(%int_2.loc14) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_36.4: init %i32 = converted %int_2.loc14, %int.convert_checked.loc14_36.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %b.var, element1 -// CHECK:STDOUT: %.loc14_36.5: init %i32 = initialize_from %.loc14_36.4 to %tuple.elem1 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc14_36.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_36.3: = bound_method %int_3.loc14, %impl.elem0.loc14_36.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc14_36.3: = specific_function %Convert.bound.loc14_36.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc14_36.3: init %i32 = call %Convert.specific_fn.loc14_36.3(%int_3.loc14) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc14_36.6: init %i32 = converted %int_3.loc14, %int.convert_checked.loc14_36.3 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc14_36.5: init %i32 = initialize_from %.loc14_36.4 to %tuple.elem1 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc14_36.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_36.3: = bound_method %int_3.loc14, %impl.elem0.loc14_36.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc14_36.3: = specific_function %Convert.bound.loc14_36.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc14_36.3: init %i32 = call %Convert.specific_fn.loc14_36.3(%int_3.loc14) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc14_36.6: init %i32 = converted %int_3.loc14, %int.convert_checked.loc14_36.3 [template = constants.%int_3.25b] // CHECK:STDOUT: %tuple.elem2: ref %i32 = tuple_access %b.var, element2 -// CHECK:STDOUT: %.loc14_36.7: init %i32 = initialize_from %.loc14_36.6 to %tuple.elem2 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc14_36.8: init %tuple.type.3 = tuple_init (%.loc14_36.3, %.loc14_36.5, %.loc14_36.7) to %b.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc14_37: init %tuple.type.3 = converted %.loc14_36.1, %.loc14_36.8 [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_36.7: init %i32 = initialize_from %.loc14_36.6 to %tuple.elem2 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc14_36.8: init %tuple.type.dc6 = tuple_init (%.loc14_36.3, %.loc14_36.5, %.loc14_36.7) to %b.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_37: init %tuple.type.dc6 = converted %.loc14_36.1, %.loc14_36.8 [template = constants.%tuple] // CHECK:STDOUT: assign %b.var, %.loc14_37 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/assign_return_value.carbon b/toolchain/check/testdata/array/assign_return_value.carbon index 27386f3119a3..905f1d817de2 100644 --- a/toolchain/check/testdata/array/assign_return_value.carbon +++ b/toolchain/check/testdata/array/assign_return_value.carbon @@ -19,20 +19,20 @@ fn Run() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_0.2) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_0.f61) [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] @@ -41,8 +41,8 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -56,31 +56,31 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.0e4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.0e4 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_16.1: %tuple.type.1 = tuple_literal (%i32) -// CHECK:STDOUT: %.loc11_16.2: type = converted %.loc11_16.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_16.1: %tuple.type.85c = tuple_literal (%i32) +// CHECK:STDOUT: %.loc11_16.2: type = converted %.loc11_16.1, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] +// CHECK:STDOUT: %return.param: ref %tuple.type.0e4 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.0e4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2 { +// CHECK:STDOUT: fn @F() -> %tuple.type.0e4 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc11_30.1: %tuple.type.3 = tuple_literal (%int_0) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc11_30.1: %tuple.type.985 = tuple_literal (%int_0) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_30.3: %i32 = converted %int_0, %.loc11_30.2 [template = constants.%int_0.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc11_30.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_31: %tuple.type.2 = converted %.loc11_30.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_30.3: %i32 = converted %int_0, %.loc11_30.2 [template = constants.%int_0.f61] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc11_30.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_31: %tuple.type.0e4 = converted %.loc11_30.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: return %.loc11_31 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -89,12 +89,12 @@ fn Run() { // CHECK:STDOUT: %t.var: ref %array_type = var t // CHECK:STDOUT: %t: ref %array_type = bind_name t, %t.var // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %F.call: init %tuple.type.2 = call %F.ref() -// CHECK:STDOUT: %.loc14_23.1: ref %tuple.type.2 = temporary_storage -// CHECK:STDOUT: %.loc14_23.2: ref %tuple.type.2 = temporary %.loc14_23.1, %F.call +// CHECK:STDOUT: %F.call: init %tuple.type.0e4 = call %F.ref() +// CHECK:STDOUT: %.loc14_23.1: ref %tuple.type.0e4 = temporary_storage +// CHECK:STDOUT: %.loc14_23.2: ref %tuple.type.0e4 = temporary %.loc14_23.1, %F.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc14_23.2, element0 // CHECK:STDOUT: %.loc14_23.3: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc14_23.4: ref %i32 = array_index %t.var, %int_0 // CHECK:STDOUT: %.loc14_23.5: init %i32 = initialize_from %.loc14_23.3 to %.loc14_23.4 // CHECK:STDOUT: %.loc14_23.6: init %array_type = array_init (%.loc14_23.5) to %t.var diff --git a/toolchain/check/testdata/array/assign_var.carbon b/toolchain/check/testdata/array/assign_var.carbon index a679d163f091..8458a822cf80 100644 --- a/toolchain/check/testdata/array/assign_var.carbon +++ b/toolchain/check/testdata/array/assign_var.carbon @@ -16,33 +16,33 @@ var b: [i32; 3] = a; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32, %i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %tuple: %tuple.type.dc6 = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -55,43 +55,43 @@ var b: [i32; 3] = a; // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.dc6 = var a +// CHECK:STDOUT: %a: ref %tuple.type.dc6 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %array_type = var b // CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc11_34.1: %tuple.type.3 = tuple_literal (%int_1.loc11, %int_2.loc11, %int_3) -// CHECK:STDOUT: %impl.elem0.loc11_34.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_34.1: = bound_method %int_1.loc11, %impl.elem0.loc11_34.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_34.1: = specific_function %Convert.bound.loc11_34.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_34.1: init %i32 = call %Convert.specific_fn.loc11_34.1(%int_1.loc11) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_34.2: init %i32 = converted %int_1.loc11, %int.convert_checked.loc11_34.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc11_34.1: %tuple.type.37f = tuple_literal (%int_1.loc11, %int_2.loc11, %int_3) +// CHECK:STDOUT: %impl.elem0.loc11_34.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_34.1: = bound_method %int_1.loc11, %impl.elem0.loc11_34.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_34.1: = specific_function %Convert.bound.loc11_34.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_34.1: init %i32 = call %Convert.specific_fn.loc11_34.1(%int_1.loc11) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_34.2: init %i32 = converted %int_1.loc11, %int.convert_checked.loc11_34.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc11: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_34.3: init %i32 = initialize_from %.loc11_34.2 to %tuple.elem0.loc11 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_34.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_34.2: = bound_method %int_2.loc11, %impl.elem0.loc11_34.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_34.2: = specific_function %Convert.bound.loc11_34.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_34.2: init %i32 = call %Convert.specific_fn.loc11_34.2(%int_2.loc11) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_34.4: init %i32 = converted %int_2.loc11, %int.convert_checked.loc11_34.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc11_34.3: init %i32 = initialize_from %.loc11_34.2 to %tuple.elem0.loc11 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_34.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_34.2: = bound_method %int_2.loc11, %impl.elem0.loc11_34.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_34.2: = specific_function %Convert.bound.loc11_34.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_34.2: init %i32 = call %Convert.specific_fn.loc11_34.2(%int_2.loc11) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_34.4: init %i32 = converted %int_2.loc11, %int.convert_checked.loc11_34.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc11: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_34.5: init %i32 = initialize_from %.loc11_34.4 to %tuple.elem1.loc11 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc11_34.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_34.3: = bound_method %int_3, %impl.elem0.loc11_34.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11_34.3: = specific_function %Convert.bound.loc11_34.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11_34.3: init %i32 = call %Convert.specific_fn.loc11_34.3(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_34.6: init %i32 = converted %int_3, %int.convert_checked.loc11_34.3 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc11_34.5: init %i32 = initialize_from %.loc11_34.4 to %tuple.elem1.loc11 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc11_34.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_34.3: = bound_method %int_3, %impl.elem0.loc11_34.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc11_34.3: = specific_function %Convert.bound.loc11_34.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc11_34.3: init %i32 = call %Convert.specific_fn.loc11_34.3(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_34.6: init %i32 = converted %int_3, %int.convert_checked.loc11_34.3 [template = constants.%int_3.25b] // CHECK:STDOUT: %tuple.elem2.loc11: ref %i32 = tuple_access file.%a.var, element2 -// CHECK:STDOUT: %.loc11_34.7: init %i32 = initialize_from %.loc11_34.6 to %tuple.elem2.loc11 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_34.8: init %tuple.type.2 = tuple_init (%.loc11_34.3, %.loc11_34.5, %.loc11_34.7) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_35: init %tuple.type.2 = converted %.loc11_34.1, %.loc11_34.8 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_34.7: init %i32 = initialize_from %.loc11_34.6 to %tuple.elem2.loc11 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_34.8: init %tuple.type.dc6 = tuple_init (%.loc11_34.3, %.loc11_34.5, %.loc11_34.7) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_35: init %tuple.type.dc6 = converted %.loc11_34.1, %.loc11_34.8 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_35 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.dc6 = name_ref a, file.%a // CHECK:STDOUT: %tuple.elem0.loc12: ref %i32 = tuple_access %a.ref, element0 // CHECK:STDOUT: %.loc12_19.1: %i32 = bind_value %tuple.elem0.loc12 // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] @@ -99,12 +99,12 @@ var b: [i32; 3] = a; // CHECK:STDOUT: %.loc12_19.3: init %i32 = initialize_from %.loc12_19.1 to %.loc12_19.2 // CHECK:STDOUT: %tuple.elem1.loc12: ref %i32 = tuple_access %a.ref, element1 // CHECK:STDOUT: %.loc12_19.4: %i32 = bind_value %tuple.elem1.loc12 -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc12_19.5: ref %i32 = array_index file.%b.var, %int_1.loc12 // CHECK:STDOUT: %.loc12_19.6: init %i32 = initialize_from %.loc12_19.4 to %.loc12_19.5 // CHECK:STDOUT: %tuple.elem2.loc12: ref %i32 = tuple_access %a.ref, element2 // CHECK:STDOUT: %.loc12_19.7: %i32 = bind_value %tuple.elem2.loc12 -// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc12_19.8: ref %i32 = array_index file.%b.var, %int_2.loc12 // CHECK:STDOUT: %.loc12_19.9: init %i32 = initialize_from %.loc12_19.7 to %.loc12_19.8 // CHECK:STDOUT: %.loc12_19.10: init %array_type = array_init (%.loc12_19.3, %.loc12_19.6, %.loc12_19.9) to file.%b.var diff --git a/toolchain/check/testdata/array/base.carbon b/toolchain/check/testdata/array/base.carbon index 18993062b087..177b67066ddb 100644 --- a/toolchain/check/testdata/array/base.carbon +++ b/toolchain/check/testdata/array/base.carbon @@ -18,38 +18,38 @@ var c: [(); 5] = ((), (), (), (), (),); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_1.1, %i32 [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %array_type.b8e: type = array_type %int_1.5b8, %i32 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %array.1: %array_type.1 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %array.0e3: %array_type.b8e = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_2, f64 [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 11.100000000000001 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2.2000000000000002 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (f64, f64) [template] -// CHECK:STDOUT: %array.2: %array_type.2 = tuple_value (%float.1, %float.2) [template] +// CHECK:STDOUT: %array_type.ce7: type = array_type %int_2, f64 [template] +// CHECK:STDOUT: %float.6e4: f64 = float_literal 11.100000000000001 [template] +// CHECK:STDOUT: %float.9f7: f64 = float_literal 2.2000000000000002 [template] +// CHECK:STDOUT: %tuple.type.bdb: type = tuple_type (f64, f64) [template] +// CHECK:STDOUT: %array.6a2: %array_type.ce7 = tuple_value (%float.6e4, %float.9f7) [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %array_type.3: type = array_type %int_5, %empty_tuple.type [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [template] +// CHECK:STDOUT: %array_type.c13: type = array_type %int_5, %empty_tuple.type [template] +// CHECK:STDOUT: %tuple.type.5b2: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %array.3: %array_type.3 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple, %empty_tuple, %empty_tuple) [template] +// CHECK:STDOUT: %array.1cb: %array_type.c13 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple, %empty_tuple, %empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Float = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Float = %import_ref.20bd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -63,52 +63,52 @@ var c: [(); 5] = ((), (), (), (), (),); // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %array_type.1 = var a -// CHECK:STDOUT: %a: ref %array_type.1 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %array_type.2 = var b -// CHECK:STDOUT: %b: ref %array_type.2 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %array_type.3 = var c -// CHECK:STDOUT: %c: ref %array_type.3 = bind_name c, %c.var +// CHECK:STDOUT: %a.var: ref %array_type.b8e = var a +// CHECK:STDOUT: %a: ref %array_type.b8e = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %array_type.ce7 = var b +// CHECK:STDOUT: %b: ref %array_type.ce7 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %array_type.c13 = var c +// CHECK:STDOUT: %c: ref %array_type.c13 = bind_name c, %c.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc11_22.1: %tuple.type.1 = tuple_literal (%int_1.loc11) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_22.1: %tuple.type.985 = tuple_literal (%int_1.loc11) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.loc11, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc11) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_22.2: init %i32 = converted %int_1.loc11, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc11) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_22.2: init %i32 = converted %int_1.loc11, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0.loc11: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_22.3: ref %i32 = array_index file.%a.var, %int_0.loc11 -// CHECK:STDOUT: %.loc11_22.4: init %i32 = initialize_from %.loc11_22.2 to %.loc11_22.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_22.5: init %array_type.1 = array_init (%.loc11_22.4) to file.%a.var [template = constants.%array.1] -// CHECK:STDOUT: %.loc11_23: init %array_type.1 = converted %.loc11_22.1, %.loc11_22.5 [template = constants.%array.1] +// CHECK:STDOUT: %.loc11_22.4: init %i32 = initialize_from %.loc11_22.2 to %.loc11_22.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_22.5: init %array_type.b8e = array_init (%.loc11_22.4) to file.%a.var [template = constants.%array.0e3] +// CHECK:STDOUT: %.loc11_23: init %array_type.b8e = converted %.loc11_22.1, %.loc11_22.5 [template = constants.%array.0e3] // CHECK:STDOUT: assign file.%a.var, %.loc11_23 -// CHECK:STDOUT: %float.loc12_20: f64 = float_literal 11.100000000000001 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc12_26: f64 = float_literal 2.2000000000000002 [template = constants.%float.2] -// CHECK:STDOUT: %.loc12_30.1: %tuple.type.2 = tuple_literal (%float.loc12_20, %float.loc12_26) +// CHECK:STDOUT: %float.loc12_20: f64 = float_literal 11.100000000000001 [template = constants.%float.6e4] +// CHECK:STDOUT: %float.loc12_26: f64 = float_literal 2.2000000000000002 [template = constants.%float.9f7] +// CHECK:STDOUT: %.loc12_30.1: %tuple.type.bdb = tuple_literal (%float.loc12_20, %float.loc12_26) // CHECK:STDOUT: %int_0.loc12: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc12_30.2: ref f64 = array_index file.%b.var, %int_0.loc12 -// CHECK:STDOUT: %.loc12_30.3: init f64 = initialize_from %float.loc12_20 to %.loc12_30.2 [template = constants.%float.1] -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc12_30.3: init f64 = initialize_from %float.loc12_20 to %.loc12_30.2 [template = constants.%float.6e4] +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc12_30.4: ref f64 = array_index file.%b.var, %int_1.loc12 -// CHECK:STDOUT: %.loc12_30.5: init f64 = initialize_from %float.loc12_26 to %.loc12_30.4 [template = constants.%float.2] -// CHECK:STDOUT: %.loc12_30.6: init %array_type.2 = array_init (%.loc12_30.3, %.loc12_30.5) to file.%b.var [template = constants.%array.2] -// CHECK:STDOUT: %.loc12_31: init %array_type.2 = converted %.loc12_30.1, %.loc12_30.6 [template = constants.%array.2] +// CHECK:STDOUT: %.loc12_30.5: init f64 = initialize_from %float.loc12_26 to %.loc12_30.4 [template = constants.%float.9f7] +// CHECK:STDOUT: %.loc12_30.6: init %array_type.ce7 = array_init (%.loc12_30.3, %.loc12_30.5) to file.%b.var [template = constants.%array.6a2] +// CHECK:STDOUT: %.loc12_31: init %array_type.ce7 = converted %.loc12_30.1, %.loc12_30.6 [template = constants.%array.6a2] // CHECK:STDOUT: assign file.%b.var, %.loc12_31 // CHECK:STDOUT: %.loc13_20.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_24.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_28.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_32.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc13_36.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_38.1: %tuple.type.3 = tuple_literal (%.loc13_20.1, %.loc13_24.1, %.loc13_28.1, %.loc13_32.1, %.loc13_36.1) +// CHECK:STDOUT: %.loc13_38.1: %tuple.type.5b2 = tuple_literal (%.loc13_20.1, %.loc13_24.1, %.loc13_28.1, %.loc13_32.1, %.loc13_36.1) // CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc13_38.2: ref %empty_tuple.type = array_index file.%c.var, %int_0.loc13 // CHECK:STDOUT: %.loc13_20.2: init %empty_tuple.type = tuple_init () to %.loc13_38.2 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_38.3: init %empty_tuple.type = converted %.loc13_20.1, %.loc13_20.2 [template = constants.%empty_tuple] -// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc13_38.4: ref %empty_tuple.type = array_index file.%c.var, %int_1.loc13 // CHECK:STDOUT: %.loc13_24.2: init %empty_tuple.type = tuple_init () to %.loc13_38.4 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_38.5: init %empty_tuple.type = converted %.loc13_24.1, %.loc13_24.2 [template = constants.%empty_tuple] @@ -124,8 +124,8 @@ var c: [(); 5] = ((), (), (), (), (),); // CHECK:STDOUT: %.loc13_38.10: ref %empty_tuple.type = array_index file.%c.var, %int_4 // CHECK:STDOUT: %.loc13_36.2: init %empty_tuple.type = tuple_init () to %.loc13_38.10 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_38.11: init %empty_tuple.type = converted %.loc13_36.1, %.loc13_36.2 [template = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_38.12: init %array_type.3 = array_init (%.loc13_38.3, %.loc13_38.5, %.loc13_38.7, %.loc13_38.9, %.loc13_38.11) to file.%c.var [template = constants.%array.3] -// CHECK:STDOUT: %.loc13_39: init %array_type.3 = converted %.loc13_38.1, %.loc13_38.12 [template = constants.%array.3] +// CHECK:STDOUT: %.loc13_38.12: init %array_type.c13 = array_init (%.loc13_38.3, %.loc13_38.5, %.loc13_38.7, %.loc13_38.9, %.loc13_38.11) to file.%c.var [template = constants.%array.1cb] +// CHECK:STDOUT: %.loc13_39: init %array_type.c13 = converted %.loc13_38.1, %.loc13_38.12 [template = constants.%array.1cb] // CHECK:STDOUT: assign file.%c.var, %.loc13_39 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/canonicalize_index.carbon b/toolchain/check/testdata/array/canonicalize_index.carbon index dffe286c7f90..5526450d8eaf 100644 --- a/toolchain/check/testdata/array/canonicalize_index.carbon +++ b/toolchain/check/testdata/array/canonicalize_index.carbon @@ -20,39 +20,39 @@ let c: [i32; ConvertToU32(3)]* = &a; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Add.type.1: type = fn_type @Add.1 [template] -// CHECK:STDOUT: %Add: %Add.type.1 = struct_value () [template] +// CHECK:STDOUT: %Add.type.b1f: type = fn_type @Add.1 [template] +// CHECK:STDOUT: %Add: %Add.type.b1f = struct_value () [template] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [template] // CHECK:STDOUT: %ConvertToU32.type: type = fn_type @ConvertToU32 [template] // CHECK:STDOUT: %ConvertToU32: %ConvertToU32.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.2, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: %ptr: type = ptr_type %array_type [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.2, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.1) [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .UInt = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.9 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .UInt = %import_ref.b2c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -68,7 +68,7 @@ let c: [i32; ConvertToU32(3)]* = &a; // CHECK:STDOUT: .c = @__global_init.%c // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Add.decl: %Add.type.1 = fn_decl @Add.1 [template = constants.%Add] { +// CHECK:STDOUT: %Add.decl: %Add.type.b1f = fn_decl @Add.1 [template = constants.%Add] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %i32 = binding_pattern b @@ -120,34 +120,34 @@ let c: [i32; ConvertToU32(3)]* = &a; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc14_28: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc14_31: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_1.loc14_28: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc14_31: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc14_35.1: %tuple.type = tuple_literal (%int_1.loc14_28, %int_2.loc14_31, %int_3) -// CHECK:STDOUT: %impl.elem0.loc14_35.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_35.1: = bound_method %int_1.loc14_28, %impl.elem0.loc14_35.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_35.1: = specific_function %Convert.bound.loc14_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_35.1: init %i32 = call %Convert.specific_fn.loc14_35.1(%int_1.loc14_28) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_35.2: init %i32 = converted %int_1.loc14_28, %int.convert_checked.loc14_35.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc14_35.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_35.1: = bound_method %int_1.loc14_28, %impl.elem0.loc14_35.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_35.1: = specific_function %Convert.bound.loc14_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_35.1: init %i32 = call %Convert.specific_fn.loc14_35.1(%int_1.loc14_28) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_35.2: init %i32 = converted %int_1.loc14_28, %int.convert_checked.loc14_35.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc14_35.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc14_35.4: init %i32 = initialize_from %.loc14_35.2 to %.loc14_35.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_35.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_35.2: = bound_method %int_2.loc14_31, %impl.elem0.loc14_35.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_35.2: = specific_function %Convert.bound.loc14_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_35.2: init %i32 = call %Convert.specific_fn.loc14_35.2(%int_2.loc14_31) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_35.5: init %i32 = converted %int_2.loc14_31, %int.convert_checked.loc14_35.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc14_35: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc14_35.4: init %i32 = initialize_from %.loc14_35.2 to %.loc14_35.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_35.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_35.2: = bound_method %int_2.loc14_31, %impl.elem0.loc14_35.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_35.2: = specific_function %Convert.bound.loc14_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_35.2: init %i32 = call %Convert.specific_fn.loc14_35.2(%int_2.loc14_31) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_35.5: init %i32 = converted %int_2.loc14_31, %int.convert_checked.loc14_35.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc14_35: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc14_35.6: ref %i32 = array_index file.%a.var, %int_1.loc14_35 -// CHECK:STDOUT: %.loc14_35.7: init %i32 = initialize_from %.loc14_35.5 to %.loc14_35.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc14_35.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_35.3: = bound_method %int_3, %impl.elem0.loc14_35.3 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc14_35.3: = specific_function %Convert.bound.loc14_35.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc14_35.3: init %i32 = call %Convert.specific_fn.loc14_35.3(%int_3) [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc14_35.8: init %i32 = converted %int_3, %int.convert_checked.loc14_35.3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_2.loc14_35: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc14_35.7: init %i32 = initialize_from %.loc14_35.5 to %.loc14_35.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc14_35.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_35.3: = bound_method %int_3, %impl.elem0.loc14_35.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc14_35.3: = specific_function %Convert.bound.loc14_35.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc14_35.3: init %i32 = call %Convert.specific_fn.loc14_35.3(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc14_35.8: init %i32 = converted %int_3, %int.convert_checked.loc14_35.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc14_35: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc14_35.9: ref %i32 = array_index file.%a.var, %int_2.loc14_35 -// CHECK:STDOUT: %.loc14_35.10: init %i32 = initialize_from %.loc14_35.8 to %.loc14_35.9 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc14_35.10: init %i32 = initialize_from %.loc14_35.8 to %.loc14_35.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc14_35.11: init %array_type = array_init (%.loc14_35.4, %.loc14_35.7, %.loc14_35.10) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc14_36: init %array_type = converted %.loc14_35.1, %.loc14_35.11 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc14_36 diff --git a/toolchain/check/testdata/array/fail_bound_negative.carbon b/toolchain/check/testdata/array/fail_bound_negative.carbon index 8d73ce7929ea..2f99b8f395db 100644 --- a/toolchain/check/testdata/array/fail_bound_negative.carbon +++ b/toolchain/check/testdata/array/fail_bound_negative.carbon @@ -20,14 +20,14 @@ var a: [i32; Negate(1)]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Negate.type.1: type = fn_type @Negate.1 [template] -// CHECK:STDOUT: %Negate: %Negate.type.1 = struct_value () [template] +// CHECK:STDOUT: %Negate.type.15b: type = fn_type @Negate.1 [template] +// CHECK:STDOUT: %Negate: %Negate.type.15b = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -40,7 +40,7 @@ var a: [i32; Negate(1)]; // CHECK:STDOUT: .a = %a // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Negate.decl: %Negate.type.1 = fn_decl @Negate.1 [template = constants.%Negate] { +// CHECK:STDOUT: %Negate.decl: %Negate.type.15b = fn_decl @Negate.1 [template = constants.%Negate] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern diff --git a/toolchain/check/testdata/array/fail_bound_overflow.carbon b/toolchain/check/testdata/array/fail_bound_overflow.carbon index 3566457a3c17..49c119d1e77b 100644 --- a/toolchain/check/testdata/array/fail_bound_overflow.carbon +++ b/toolchain/check/testdata/array/fail_bound_overflow.carbon @@ -29,8 +29,8 @@ var b: [1; 39999999999999999993]; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/fail_invalid_type.carbon b/toolchain/check/testdata/array/fail_invalid_type.carbon index 71129eb3a35e..1c12fa142e43 100644 --- a/toolchain/check/testdata/array/fail_invalid_type.carbon +++ b/toolchain/check/testdata/array/fail_invalid_type.carbon @@ -23,7 +23,7 @@ var a: [1; 1]; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/fail_out_of_bound.carbon b/toolchain/check/testdata/array/fail_out_of_bound.carbon index 3ca3a4a106a2..06f9999f85ab 100644 --- a/toolchain/check/testdata/array/fail_out_of_bound.carbon +++ b/toolchain/check/testdata/array/fail_out_of_bound.carbon @@ -27,7 +27,7 @@ var a: [i32; 1] = (1, 2, 3); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon b/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon index 7251ca19c539..caeca1296cbf 100644 --- a/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon +++ b/toolchain/check/testdata/array/fail_out_of_bound_non_literal.carbon @@ -19,34 +19,34 @@ var b: i32 = a[{.index = 3}.index]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: %struct_type.index: type = struct_type {.index: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_3.1) [template] +// CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_3.1ba) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -67,51 +67,51 @@ var b: i32 = a[{.index = 3}.index]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc11: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc11: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc11_27.1: %tuple.type = tuple_literal (%int_1.loc11_20, %int_2.loc11_23, %int_3.loc11) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_1.loc11_20) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_27.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_1.loc11_20) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_27.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_27.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_27.4: init %i32 = initialize_from %.loc11_27.2 to %.loc11_27.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_2.loc11_23) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_27.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_27.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc11_27: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = initialize_from %.loc11_27.2 to %.loc11_27.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_2.loc11_23) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_27.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc11_27: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc11_27.6: ref %i32 = array_index file.%a.var, %int_1.loc11_27 -// CHECK:STDOUT: %.loc11_27.7: init %i32 = initialize_from %.loc11_27.5 to %.loc11_27.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.3: = bound_method %int_3.loc11, %impl.elem0.loc11_27.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.3: = specific_function %Convert.bound.loc11_27.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11_27.3: init %i32 = call %Convert.specific_fn.loc11_27.3(%int_3.loc11) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_27.8: init %i32 = converted %int_3.loc11, %int.convert_checked.loc11_27.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc11_27: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc11_27.7: init %i32 = initialize_from %.loc11_27.5 to %.loc11_27.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc11_27.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.3: = bound_method %int_3.loc11, %impl.elem0.loc11_27.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.3: = specific_function %Convert.bound.loc11_27.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc11_27.3: init %i32 = call %Convert.specific_fn.loc11_27.3(%int_3.loc11) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_27.8: init %i32 = converted %int_3.loc11, %int.convert_checked.loc11_27.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc11_27: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc11_27.9: ref %i32 = array_index file.%a.var, %int_2.loc11_27 -// CHECK:STDOUT: %.loc11_27.10: init %i32 = initialize_from %.loc11_27.8 to %.loc11_27.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc11_27.10: init %i32 = initialize_from %.loc11_27.8 to %.loc11_27.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc11_27.11: init %array_type = array_init (%.loc11_27.4, %.loc11_27.7, %.loc11_27.10) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_28: init %array_type = converted %.loc11_27.1, %.loc11_27.11 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 // CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_3.loc15: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3.loc15: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc15_27.1: %struct_type.index = struct_literal (%int_3.loc15) // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_3.loc15) [template = constants.%struct] // CHECK:STDOUT: %.loc15_27.2: %struct_type.index = converted %.loc15_27.1, %struct [template = constants.%struct] -// CHECK:STDOUT: %.loc15_28.1: Core.IntLiteral = struct_access %.loc15_27.2, element0 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc15_28.1: Core.IntLiteral = struct_access %.loc15_27.2, element0 [template = constants.%int_3.1ba] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %.loc15_28.1, %impl.elem0.loc15 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%.loc15_28.1) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc15_28.2: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc15_28.3: %i32 = converted %.loc15_28.1, %.loc15_28.2 [template = constants.%int_3.2] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %.loc15_28.1, %impl.elem0.loc15 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%.loc15_28.1) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc15_28.2: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc15_28.3: %i32 = converted %.loc15_28.1, %.loc15_28.2 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc15_34.1: ref %i32 = array_index %a.ref, %.loc15_28.3 [template = ] // CHECK:STDOUT: %.loc15_34.2: %i32 = bind_value %.loc15_34.1 // CHECK:STDOUT: assign file.%b.var, %.loc15_34.2 diff --git a/toolchain/check/testdata/array/fail_type_mismatch.carbon b/toolchain/check/testdata/array/fail_type_mismatch.carbon index 8942fe75bb43..07ac18b5feca 100644 --- a/toolchain/check/testdata/array/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/array/fail_type_mismatch.carbon @@ -46,28 +46,28 @@ var d: [i32; 3] = t2; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %str.1: String = string_literal "Hello" [template] -// CHECK:STDOUT: %str.2: String = string_literal "World" [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral, String, String) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %str.ef1: String = string_literal "Hello" [template] +// CHECK:STDOUT: %str.abb: String = string_literal "World" [template] +// CHECK:STDOUT: %tuple.type.b0f: type = tuple_type (Core.IntLiteral, String, String) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%i32, String, String) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.6e2: type = tuple_type (%i32, String, String) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.5: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,35 +86,35 @@ var d: [i32; 3] = t2; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %a.var: ref %array_type = var a // CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var -// CHECK:STDOUT: %t1.var: ref %tuple.type.3 = var t1 -// CHECK:STDOUT: %t1: ref %tuple.type.3 = bind_name t1, %t1.var +// CHECK:STDOUT: %t1.var: ref %tuple.type.6e2 = var t1 +// CHECK:STDOUT: %t1: ref %tuple.type.6e2 = bind_name t1, %t1.var // CHECK:STDOUT: %b.var: ref %array_type = var b // CHECK:STDOUT: %b: ref %array_type = bind_name b, %b.var // CHECK:STDOUT: %c.var: ref %array_type = var c // CHECK:STDOUT: %c: ref %array_type = bind_name c, %c.var -// CHECK:STDOUT: %t2.var: ref %tuple.type.7 = var t2 -// CHECK:STDOUT: %t2: ref %tuple.type.7 = bind_name t2, %t2.var +// CHECK:STDOUT: %t2.var: ref %tuple.type.471 = var t2 +// CHECK:STDOUT: %t2: ref %tuple.type.471 = bind_name t2, %t2.var // CHECK:STDOUT: %d.var: ref %array_type = var d // CHECK:STDOUT: %d: ref %array_type = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %str.loc18_23: String = string_literal "Hello" [template = constants.%str.1] -// CHECK:STDOUT: %str.loc18_32: String = string_literal "World" [template = constants.%str.2] -// CHECK:STDOUT: %.loc18_39.1: %tuple.type.1 = tuple_literal (%int_1.loc18, %str.loc18_23, %str.loc18_32) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %str.loc18_23: String = string_literal "Hello" [template = constants.%str.ef1] +// CHECK:STDOUT: %str.loc18_32: String = string_literal "World" [template = constants.%str.abb] +// CHECK:STDOUT: %.loc18_39.1: %tuple.type.b0f = tuple_literal (%int_1.loc18, %str.loc18_23, %str.loc18_32) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.loc18, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc18) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_39.2: init %i32 = converted %int_1.loc18, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc18) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_39.2: init %i32 = converted %int_1.loc18, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc18_39.3: ref %i32 = array_index file.%a.var, %int_0.loc18 -// CHECK:STDOUT: %.loc18_39.4: init %i32 = initialize_from %.loc18_39.2 to %.loc18_39.3 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc18_39.4: init %i32 = initialize_from %.loc18_39.2 to %.loc18_39.3 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc18_39.5: %i32 = converted %str.loc18_23, [template = ] // CHECK:STDOUT: assign file.%a.var, -// CHECK:STDOUT: %t1.ref: ref %tuple.type.3 = name_ref t1, file.%t1 +// CHECK:STDOUT: %t1.ref: ref %tuple.type.6e2 = name_ref t1, file.%t1 // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %t1.ref, element0 // CHECK:STDOUT: %.loc28_19.1: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [template = constants.%int_0] @@ -123,11 +123,11 @@ var d: [i32; 3] = t2; // CHECK:STDOUT: %tuple.elem1: ref String = tuple_access %t1.ref, element1 // CHECK:STDOUT: %.loc28_19.4: %i32 = converted %tuple.elem1, [template = ] // CHECK:STDOUT: assign file.%b.var, -// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] -// CHECK:STDOUT: %.loc34: %tuple.type.5 = tuple_literal (%int_1.loc34, %int_2) +// CHECK:STDOUT: %.loc34: %tuple.type.f94 = tuple_literal (%int_1.loc34, %int_2) // CHECK:STDOUT: assign file.%c.var, -// CHECK:STDOUT: %t2.ref: ref %tuple.type.7 = name_ref t2, file.%t2 +// CHECK:STDOUT: %t2.ref: ref %tuple.type.471 = name_ref t2, file.%t2 // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/function_param.carbon b/toolchain/check/testdata/array/function_param.carbon index bb4773eac6da..231d4135c507 100644 --- a/toolchain/check/testdata/array/function_param.carbon +++ b/toolchain/check/testdata/array/function_param.carbon @@ -21,36 +21,36 @@ fn G() -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -77,7 +77,7 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc11_18: type = splice_block %array_type [template = constants.%array_type] { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [template = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %arr: %array_type = bind_name arr, %arr.param @@ -116,46 +116,46 @@ fn G() -> i32 { // CHECK:STDOUT: fn @G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %int_1.loc16_13: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc16_16: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc16_13: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc16_16: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc16_20.1: %tuple.type = tuple_literal (%int_1.loc16_13, %int_2.loc16_16, %int_3) -// CHECK:STDOUT: %int_1.loc16_23: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc16_20.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_20.1: = bound_method %int_1.loc16_13, %impl.elem0.loc16_20.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc16_20.1: = specific_function %Convert.bound.loc16_20.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc16_20.1: init %i32 = call %Convert.specific_fn.loc16_20.1(%int_1.loc16_13) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_20.2: init %i32 = converted %int_1.loc16_13, %int.convert_checked.loc16_20.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc16_23: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc16_20.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_20.1: = bound_method %int_1.loc16_13, %impl.elem0.loc16_20.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16_20.1: = specific_function %Convert.bound.loc16_20.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16_20.1: init %i32 = call %Convert.specific_fn.loc16_20.1(%int_1.loc16_13) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_20.2: init %i32 = converted %int_1.loc16_13, %int.convert_checked.loc16_20.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc16_20.3: ref %array_type = temporary_storage // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc16_20.4: ref %i32 = array_index %.loc16_20.3, %int_0 -// CHECK:STDOUT: %.loc16_20.5: init %i32 = initialize_from %.loc16_20.2 to %.loc16_20.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc16_20.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_20.2: = bound_method %int_2.loc16_16, %impl.elem0.loc16_20.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc16_20.2: = specific_function %Convert.bound.loc16_20.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc16_20.2: init %i32 = call %Convert.specific_fn.loc16_20.2(%int_2.loc16_16) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc16_20.6: init %i32 = converted %int_2.loc16_16, %int.convert_checked.loc16_20.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc16_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc16_20.5: init %i32 = initialize_from %.loc16_20.2 to %.loc16_20.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc16_20.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_20.2: = bound_method %int_2.loc16_16, %impl.elem0.loc16_20.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc16_20.2: = specific_function %Convert.bound.loc16_20.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc16_20.2: init %i32 = call %Convert.specific_fn.loc16_20.2(%int_2.loc16_16) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc16_20.6: init %i32 = converted %int_2.loc16_16, %int.convert_checked.loc16_20.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc16_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc16_20.7: ref %i32 = array_index %.loc16_20.3, %int_1.loc16_20 -// CHECK:STDOUT: %.loc16_20.8: init %i32 = initialize_from %.loc16_20.6 to %.loc16_20.7 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc16_20.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_20.3: = bound_method %int_3, %impl.elem0.loc16_20.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc16_20.3: = specific_function %Convert.bound.loc16_20.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc16_20.3: init %i32 = call %Convert.specific_fn.loc16_20.3(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc16_20.9: init %i32 = converted %int_3, %int.convert_checked.loc16_20.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc16_20: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc16_20.8: init %i32 = initialize_from %.loc16_20.6 to %.loc16_20.7 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc16_20.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_20.3: = bound_method %int_3, %impl.elem0.loc16_20.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc16_20.3: = specific_function %Convert.bound.loc16_20.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc16_20.3: init %i32 = call %Convert.specific_fn.loc16_20.3(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc16_20.9: init %i32 = converted %int_3, %int.convert_checked.loc16_20.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc16_20: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc16_20.10: ref %i32 = array_index %.loc16_20.3, %int_2.loc16_20 -// CHECK:STDOUT: %.loc16_20.11: init %i32 = initialize_from %.loc16_20.9 to %.loc16_20.10 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc16_20.11: init %i32 = initialize_from %.loc16_20.9 to %.loc16_20.10 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc16_20.12: init %array_type = array_init (%.loc16_20.5, %.loc16_20.8, %.loc16_20.11) to %.loc16_20.3 [template = constants.%array] // CHECK:STDOUT: %.loc16_20.13: init %array_type = converted %.loc16_20.1, %.loc16_20.12 [template = constants.%array] // CHECK:STDOUT: %.loc16_20.14: ref %array_type = temporary %.loc16_20.3, %.loc16_20.13 // CHECK:STDOUT: %.loc16_20.15: %array_type = bind_value %.loc16_20.14 -// CHECK:STDOUT: %impl.elem0.loc16_23: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_23: = bound_method %int_1.loc16_23, %impl.elem0.loc16_23 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc16_23: = specific_function %Convert.bound.loc16_23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc16_23: init %i32 = call %Convert.specific_fn.loc16_23(%int_1.loc16_23) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_23.1: %i32 = value_of_initializer %int.convert_checked.loc16_23 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_23.2: %i32 = converted %int_1.loc16_23, %.loc16_23.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc16_23: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_23: = bound_method %int_1.loc16_23, %impl.elem0.loc16_23 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16_23: = specific_function %Convert.bound.loc16_23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16_23: init %i32 = call %Convert.specific_fn.loc16_23(%int_1.loc16_23) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_23.1: %i32 = value_of_initializer %int.convert_checked.loc16_23 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_23.2: %i32 = converted %int_1.loc16_23, %.loc16_23.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc16_20.15, %.loc16_23.2) // CHECK:STDOUT: %.loc16_25.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc16_25.2: %i32 = converted %F.call, %.loc16_25.1 diff --git a/toolchain/check/testdata/array/import.carbon b/toolchain/check/testdata/array/import.carbon index ba7d24c01d9d..c7c60caab584 100644 --- a/toolchain/check/testdata/array/import.carbon +++ b/toolchain/check/testdata/array/import.carbon @@ -35,7 +35,7 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,9 +76,9 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Main//library, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.014: %F.type = import_ref Main//library, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,7 +86,7 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .F = imports.%import_ref.1 +// CHECK:STDOUT: .F = imports.%import_ref.014 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } @@ -113,7 +113,7 @@ fn G(n: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%n.param_patt: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.014 [template = constants.%F] // CHECK:STDOUT: %.loc5_12.1: ref %array_type = temporary_storage // CHECK:STDOUT: %F.call: init %array_type = call %F.ref() to %.loc5_12.1 // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n diff --git a/toolchain/check/testdata/array/index_not_literal.carbon b/toolchain/check/testdata/array/index_not_literal.carbon index dc3ccda2d0f5..551945bd0486 100644 --- a/toolchain/check/testdata/array/index_not_literal.carbon +++ b/toolchain/check/testdata/array/index_not_literal.carbon @@ -16,34 +16,34 @@ var b: i32 = a[{.index = 2}.index]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: %struct_type.index: type = struct_type {.index: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2.1) [template] +// CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2.ecc) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -64,51 +64,51 @@ var b: i32 = a[{.index = 2}.index]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc11_27.1: %tuple.type = tuple_literal (%int_1.loc11_20, %int_2.loc11_23, %int_3) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_1.loc11_20) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_27.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_1.loc11_20) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_27.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_27.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_27.4: init %i32 = initialize_from %.loc11_27.2 to %.loc11_27.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_2.loc11_23) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_27.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_27.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc11_27: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = initialize_from %.loc11_27.2 to %.loc11_27.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_2.loc11_23) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_27.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc11_27: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc11_27.6: ref %i32 = array_index file.%a.var, %int_1.loc11_27 -// CHECK:STDOUT: %.loc11_27.7: init %i32 = initialize_from %.loc11_27.5 to %.loc11_27.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.3: = bound_method %int_3, %impl.elem0.loc11_27.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.3: = specific_function %Convert.bound.loc11_27.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11_27.3: init %i32 = call %Convert.specific_fn.loc11_27.3(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_27.8: init %i32 = converted %int_3, %int.convert_checked.loc11_27.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc11_27: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc11_27.7: init %i32 = initialize_from %.loc11_27.5 to %.loc11_27.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc11_27.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.3: = bound_method %int_3, %impl.elem0.loc11_27.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.3: = specific_function %Convert.bound.loc11_27.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc11_27.3: init %i32 = call %Convert.specific_fn.loc11_27.3(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_27.8: init %i32 = converted %int_3, %int.convert_checked.loc11_27.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc11_27: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc11_27.9: ref %i32 = array_index file.%a.var, %int_2.loc11_27 -// CHECK:STDOUT: %.loc11_27.10: init %i32 = initialize_from %.loc11_27.8 to %.loc11_27.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc11_27.10: init %i32 = initialize_from %.loc11_27.8 to %.loc11_27.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc11_27.11: init %array_type = array_init (%.loc11_27.4, %.loc11_27.7, %.loc11_27.10) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_28: init %array_type = converted %.loc11_27.1, %.loc11_27.11 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 // CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc12_27.1: %struct_type.index = struct_literal (%int_2.loc12) // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2.loc12) [template = constants.%struct] // CHECK:STDOUT: %.loc12_27.2: %struct_type.index = converted %.loc12_27.1, %struct [template = constants.%struct] -// CHECK:STDOUT: %.loc12_28.1: Core.IntLiteral = struct_access %.loc12_27.2, element0 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc12_28.1: Core.IntLiteral = struct_access %.loc12_27.2, element0 [template = constants.%int_2.ecc] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %.loc12_28.1, %impl.elem0.loc12 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%.loc12_28.1) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_28.2: %i32 = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_28.3: %i32 = converted %.loc12_28.1, %.loc12_28.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %.loc12_28.1, %impl.elem0.loc12 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%.loc12_28.1) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_28.2: %i32 = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_28.3: %i32 = converted %.loc12_28.1, %.loc12_28.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc12_34.1: ref %i32 = array_index %a.ref, %.loc12_28.3 // CHECK:STDOUT: %.loc12_34.2: %i32 = bind_value %.loc12_34.1 // CHECK:STDOUT: assign file.%b.var, %.loc12_34.2 diff --git a/toolchain/check/testdata/array/nine_elements.carbon b/toolchain/check/testdata/array/nine_elements.carbon index 81c1e96c42ac..dbb57158e89e 100644 --- a/toolchain/check/testdata/array/nine_elements.carbon +++ b/toolchain/check/testdata/array/nine_elements.carbon @@ -15,56 +15,56 @@ var a: [i32; 9] = (1, 2, 3, 4, 5, 6, 7, 8, 9); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_9.1: Core.IntLiteral = int_value 9 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_9.1, %i32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %int_7.1: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %int_8.1: Core.IntLiteral = int_value 8 [template] +// CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_9.988, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [template] +// CHECK:STDOUT: %int_8.b85: Core.IntLiteral = int_value 8 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %Convert.bound.6: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.6: = specific_function %Convert.bound.6, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %Convert.bound.7: = bound_method %int_7.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.7: = specific_function %Convert.bound.7, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_7.2: %i32 = int_value 7 [template] -// CHECK:STDOUT: %Convert.bound.8: = bound_method %int_8.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.8: = specific_function %Convert.bound.8, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_8.2: %i32 = int_value 8 [template] -// CHECK:STDOUT: %Convert.bound.9: = bound_method %int_9.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.9: = specific_function %Convert.bound.9, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_9.2: %i32 = int_value 9 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2, %int_4.2, %int_5.2, %int_6.2, %int_7.2, %int_8.2, %int_9.2) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %Convert.bound.eba: = bound_method %int_7.29f, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.785: = specific_function %Convert.bound.eba, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_7.2da: %i32 = int_value 7 [template] +// CHECK:STDOUT: %Convert.bound.29e: = bound_method %int_8.b85, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.5a6: = specific_function %Convert.bound.29e, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_8.f03: %i32 = int_value 8 [template] +// CHECK:STDOUT: %Convert.bound.cc8: = bound_method %int_9.988, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b8b: = specific_function %Convert.bound.cc8, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_9.82c: %i32 = int_value 9 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b, %int_4.2ec, %int_5.70b, %int_6.b03, %int_7.2da, %int_8.f03, %int_9.82c) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -82,88 +82,88 @@ var a: [i32; 9] = (1, 2, 3, 4, 5, 6, 7, 8, 9); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc11_26: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_4.loc11_29: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %int_5.loc11_32: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %int_6.loc11_35: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %int_7.loc11_38: Core.IntLiteral = int_value 7 [template = constants.%int_7.1] -// CHECK:STDOUT: %int_8.loc11_41: Core.IntLiteral = int_value 8 [template = constants.%int_8.1] -// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.1] +// CHECK:STDOUT: %int_1.loc11_20: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11_23: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc11_26: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_4.loc11_29: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %int_5.loc11_32: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %int_6.loc11_35: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %int_7.loc11_38: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] +// CHECK:STDOUT: %int_8.loc11_41: Core.IntLiteral = int_value 8 [template = constants.%int_8.b85] +// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.988] // CHECK:STDOUT: %.loc11_45.1: %tuple.type = tuple_literal (%int_1.loc11_20, %int_2.loc11_23, %int_3.loc11_26, %int_4.loc11_29, %int_5.loc11_32, %int_6.loc11_35, %int_7.loc11_38, %int_8.loc11_41, %int_9) -// CHECK:STDOUT: %impl.elem0.loc11_45.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_45.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.1: = specific_function %Convert.bound.loc11_45.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_45.1: init %i32 = call %Convert.specific_fn.loc11_45.1(%int_1.loc11_20) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_45.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_45.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc11_45.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.1: = bound_method %int_1.loc11_20, %impl.elem0.loc11_45.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.1: = specific_function %Convert.bound.loc11_45.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_45.1: init %i32 = call %Convert.specific_fn.loc11_45.1(%int_1.loc11_20) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_45.2: init %i32 = converted %int_1.loc11_20, %int.convert_checked.loc11_45.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_45.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_45.4: init %i32 = initialize_from %.loc11_45.2 to %.loc11_45.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_45.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.2: = specific_function %Convert.bound.loc11_45.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_45.2: init %i32 = call %Convert.specific_fn.loc11_45.2(%int_2.loc11_23) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_45.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_45.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc11_45: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc11_45.4: init %i32 = initialize_from %.loc11_45.2 to %.loc11_45.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_45.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.2: = bound_method %int_2.loc11_23, %impl.elem0.loc11_45.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.2: = specific_function %Convert.bound.loc11_45.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_45.2: init %i32 = call %Convert.specific_fn.loc11_45.2(%int_2.loc11_23) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_45.5: init %i32 = converted %int_2.loc11_23, %int.convert_checked.loc11_45.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc11_45: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc11_45.6: ref %i32 = array_index file.%a.var, %int_1.loc11_45 -// CHECK:STDOUT: %.loc11_45.7: init %i32 = initialize_from %.loc11_45.5 to %.loc11_45.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.3: = bound_method %int_3.loc11_26, %impl.elem0.loc11_45.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.3: = specific_function %Convert.bound.loc11_45.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11_45.3: init %i32 = call %Convert.specific_fn.loc11_45.3(%int_3.loc11_26) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_45.8: init %i32 = converted %int_3.loc11_26, %int.convert_checked.loc11_45.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc11_45: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc11_45.7: init %i32 = initialize_from %.loc11_45.5 to %.loc11_45.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc11_45.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.3: = bound_method %int_3.loc11_26, %impl.elem0.loc11_45.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.3: = specific_function %Convert.bound.loc11_45.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc11_45.3: init %i32 = call %Convert.specific_fn.loc11_45.3(%int_3.loc11_26) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_45.8: init %i32 = converted %int_3.loc11_26, %int.convert_checked.loc11_45.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc11_45: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc11_45.9: ref %i32 = array_index file.%a.var, %int_2.loc11_45 -// CHECK:STDOUT: %.loc11_45.10: init %i32 = initialize_from %.loc11_45.8 to %.loc11_45.9 [template = constants.%int_3.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.4: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.4: = bound_method %int_4.loc11_29, %impl.elem0.loc11_45.4 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.4: = specific_function %Convert.bound.loc11_45.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc11_45.4: init %i32 = call %Convert.specific_fn.loc11_45.4(%int_4.loc11_29) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_45.11: init %i32 = converted %int_4.loc11_29, %int.convert_checked.loc11_45.4 [template = constants.%int_4.2] -// CHECK:STDOUT: %int_3.loc11_45: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc11_45.10: init %i32 = initialize_from %.loc11_45.8 to %.loc11_45.9 [template = constants.%int_3.25b] +// CHECK:STDOUT: %impl.elem0.loc11_45.4: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.4: = bound_method %int_4.loc11_29, %impl.elem0.loc11_45.4 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.4: = specific_function %Convert.bound.loc11_45.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc11_45.4: init %i32 = call %Convert.specific_fn.loc11_45.4(%int_4.loc11_29) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_45.11: init %i32 = converted %int_4.loc11_29, %int.convert_checked.loc11_45.4 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %int_3.loc11_45: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc11_45.12: ref %i32 = array_index file.%a.var, %int_3.loc11_45 -// CHECK:STDOUT: %.loc11_45.13: init %i32 = initialize_from %.loc11_45.11 to %.loc11_45.12 [template = constants.%int_4.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.5: = bound_method %int_5.loc11_32, %impl.elem0.loc11_45.5 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.5: = specific_function %Convert.bound.loc11_45.5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc11_45.5: init %i32 = call %Convert.specific_fn.loc11_45.5(%int_5.loc11_32) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc11_45.14: init %i32 = converted %int_5.loc11_32, %int.convert_checked.loc11_45.5 [template = constants.%int_5.2] -// CHECK:STDOUT: %int_4.loc11_45: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] +// CHECK:STDOUT: %.loc11_45.13: init %i32 = initialize_from %.loc11_45.11 to %.loc11_45.12 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %impl.elem0.loc11_45.5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.5: = bound_method %int_5.loc11_32, %impl.elem0.loc11_45.5 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.5: = specific_function %Convert.bound.loc11_45.5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked.loc11_45.5: init %i32 = call %Convert.specific_fn.loc11_45.5(%int_5.loc11_32) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc11_45.14: init %i32 = converted %int_5.loc11_32, %int.convert_checked.loc11_45.5 [template = constants.%int_5.70b] +// CHECK:STDOUT: %int_4.loc11_45: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] // CHECK:STDOUT: %.loc11_45.15: ref %i32 = array_index file.%a.var, %int_4.loc11_45 -// CHECK:STDOUT: %.loc11_45.16: init %i32 = initialize_from %.loc11_45.14 to %.loc11_45.15 [template = constants.%int_5.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.6: = bound_method %int_6.loc11_35, %impl.elem0.loc11_45.6 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.6: = specific_function %Convert.bound.loc11_45.6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.6] -// CHECK:STDOUT: %int.convert_checked.loc11_45.6: init %i32 = call %Convert.specific_fn.loc11_45.6(%int_6.loc11_35) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_45.17: init %i32 = converted %int_6.loc11_35, %int.convert_checked.loc11_45.6 [template = constants.%int_6.2] -// CHECK:STDOUT: %int_5.loc11_45: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] +// CHECK:STDOUT: %.loc11_45.16: init %i32 = initialize_from %.loc11_45.14 to %.loc11_45.15 [template = constants.%int_5.70b] +// CHECK:STDOUT: %impl.elem0.loc11_45.6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.6: = bound_method %int_6.loc11_35, %impl.elem0.loc11_45.6 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.6: = specific_function %Convert.bound.loc11_45.6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_45.6: init %i32 = call %Convert.specific_fn.loc11_45.6(%int_6.loc11_35) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_45.17: init %i32 = converted %int_6.loc11_35, %int.convert_checked.loc11_45.6 [template = constants.%int_6.b03] +// CHECK:STDOUT: %int_5.loc11_45: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] // CHECK:STDOUT: %.loc11_45.18: ref %i32 = array_index file.%a.var, %int_5.loc11_45 -// CHECK:STDOUT: %.loc11_45.19: init %i32 = initialize_from %.loc11_45.17 to %.loc11_45.18 [template = constants.%int_6.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.7: = bound_method %int_7.loc11_38, %impl.elem0.loc11_45.7 [template = constants.%Convert.bound.7] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.7: = specific_function %Convert.bound.loc11_45.7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.7] -// CHECK:STDOUT: %int.convert_checked.loc11_45.7: init %i32 = call %Convert.specific_fn.loc11_45.7(%int_7.loc11_38) [template = constants.%int_7.2] -// CHECK:STDOUT: %.loc11_45.20: init %i32 = converted %int_7.loc11_38, %int.convert_checked.loc11_45.7 [template = constants.%int_7.2] -// CHECK:STDOUT: %int_6.loc11_45: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] +// CHECK:STDOUT: %.loc11_45.19: init %i32 = initialize_from %.loc11_45.17 to %.loc11_45.18 [template = constants.%int_6.b03] +// CHECK:STDOUT: %impl.elem0.loc11_45.7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.7: = bound_method %int_7.loc11_38, %impl.elem0.loc11_45.7 [template = constants.%Convert.bound.eba] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.7: = specific_function %Convert.bound.loc11_45.7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.785] +// CHECK:STDOUT: %int.convert_checked.loc11_45.7: init %i32 = call %Convert.specific_fn.loc11_45.7(%int_7.loc11_38) [template = constants.%int_7.2da] +// CHECK:STDOUT: %.loc11_45.20: init %i32 = converted %int_7.loc11_38, %int.convert_checked.loc11_45.7 [template = constants.%int_7.2da] +// CHECK:STDOUT: %int_6.loc11_45: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] // CHECK:STDOUT: %.loc11_45.21: ref %i32 = array_index file.%a.var, %int_6.loc11_45 -// CHECK:STDOUT: %.loc11_45.22: init %i32 = initialize_from %.loc11_45.20 to %.loc11_45.21 [template = constants.%int_7.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.8: = bound_method %int_8.loc11_41, %impl.elem0.loc11_45.8 [template = constants.%Convert.bound.8] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.8: = specific_function %Convert.bound.loc11_45.8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.8] -// CHECK:STDOUT: %int.convert_checked.loc11_45.8: init %i32 = call %Convert.specific_fn.loc11_45.8(%int_8.loc11_41) [template = constants.%int_8.2] -// CHECK:STDOUT: %.loc11_45.23: init %i32 = converted %int_8.loc11_41, %int.convert_checked.loc11_45.8 [template = constants.%int_8.2] -// CHECK:STDOUT: %int_7.loc11_45: Core.IntLiteral = int_value 7 [template = constants.%int_7.1] +// CHECK:STDOUT: %.loc11_45.22: init %i32 = initialize_from %.loc11_45.20 to %.loc11_45.21 [template = constants.%int_7.2da] +// CHECK:STDOUT: %impl.elem0.loc11_45.8: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.8: = bound_method %int_8.loc11_41, %impl.elem0.loc11_45.8 [template = constants.%Convert.bound.29e] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.8: = specific_function %Convert.bound.loc11_45.8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5a6] +// CHECK:STDOUT: %int.convert_checked.loc11_45.8: init %i32 = call %Convert.specific_fn.loc11_45.8(%int_8.loc11_41) [template = constants.%int_8.f03] +// CHECK:STDOUT: %.loc11_45.23: init %i32 = converted %int_8.loc11_41, %int.convert_checked.loc11_45.8 [template = constants.%int_8.f03] +// CHECK:STDOUT: %int_7.loc11_45: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] // CHECK:STDOUT: %.loc11_45.24: ref %i32 = array_index file.%a.var, %int_7.loc11_45 -// CHECK:STDOUT: %.loc11_45.25: init %i32 = initialize_from %.loc11_45.23 to %.loc11_45.24 [template = constants.%int_8.2] -// CHECK:STDOUT: %impl.elem0.loc11_45.9: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_45.9: = bound_method %int_9, %impl.elem0.loc11_45.9 [template = constants.%Convert.bound.9] -// CHECK:STDOUT: %Convert.specific_fn.loc11_45.9: = specific_function %Convert.bound.loc11_45.9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.9] -// CHECK:STDOUT: %int.convert_checked.loc11_45.9: init %i32 = call %Convert.specific_fn.loc11_45.9(%int_9) [template = constants.%int_9.2] -// CHECK:STDOUT: %.loc11_45.26: init %i32 = converted %int_9, %int.convert_checked.loc11_45.9 [template = constants.%int_9.2] -// CHECK:STDOUT: %int_8.loc11_45: Core.IntLiteral = int_value 8 [template = constants.%int_8.1] +// CHECK:STDOUT: %.loc11_45.25: init %i32 = initialize_from %.loc11_45.23 to %.loc11_45.24 [template = constants.%int_8.f03] +// CHECK:STDOUT: %impl.elem0.loc11_45.9: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_45.9: = bound_method %int_9, %impl.elem0.loc11_45.9 [template = constants.%Convert.bound.cc8] +// CHECK:STDOUT: %Convert.specific_fn.loc11_45.9: = specific_function %Convert.bound.loc11_45.9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b8b] +// CHECK:STDOUT: %int.convert_checked.loc11_45.9: init %i32 = call %Convert.specific_fn.loc11_45.9(%int_9) [template = constants.%int_9.82c] +// CHECK:STDOUT: %.loc11_45.26: init %i32 = converted %int_9, %int.convert_checked.loc11_45.9 [template = constants.%int_9.82c] +// CHECK:STDOUT: %int_8.loc11_45: Core.IntLiteral = int_value 8 [template = constants.%int_8.b85] // CHECK:STDOUT: %.loc11_45.27: ref %i32 = array_index file.%a.var, %int_8.loc11_45 -// CHECK:STDOUT: %.loc11_45.28: init %i32 = initialize_from %.loc11_45.26 to %.loc11_45.27 [template = constants.%int_9.2] +// CHECK:STDOUT: %.loc11_45.28: init %i32 = initialize_from %.loc11_45.26 to %.loc11_45.27 [template = constants.%int_9.82c] // CHECK:STDOUT: %.loc11_45.29: init %array_type = array_init (%.loc11_45.4, %.loc11_45.7, %.loc11_45.10, %.loc11_45.13, %.loc11_45.16, %.loc11_45.19, %.loc11_45.22, %.loc11_45.25, %.loc11_45.28) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_46: init %array_type = converted %.loc11_45.1, %.loc11_45.29 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_46 diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 110bb71dc407..b6340f94777d 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -171,30 +171,30 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.x.y.1: type = struct_type {.x: %i32, .y: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.y.1 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.x.y.2: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %struct_type.x.y.f68: type = struct_type {.x: %i32, .y: %i32} [template] +// CHECK:STDOUT: %complete_type.032: = complete_type_witness %struct_type.x.y.f68 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.x.y.4cf: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %B [template] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -231,7 +231,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %return.param: ref %A = out_param runtime_param0 // CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -244,7 +244,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: adapt_decl %A.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -253,23 +253,23 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %A { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc9_27.1: %struct_type.x.y.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc9_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_27.1: = bound_method %int_1, %impl.elem0.loc9_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc9_27.1: = specific_function %Convert.bound.loc9_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc9_27.1: init %i32 = call %Convert.specific_fn.loc9_27.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_27.2: init %i32 = converted %int_1, %int.convert_checked.loc9_27.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc9_27.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc9_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_27.1: = bound_method %int_1, %impl.elem0.loc9_27.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc9_27.1: = specific_function %Convert.bound.loc9_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc9_27.1: init %i32 = call %Convert.specific_fn.loc9_27.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_27.2: init %i32 = converted %int_1, %int.convert_checked.loc9_27.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc9_27.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc9_27.4: init %i32 = initialize_from %.loc9_27.2 to %.loc9_27.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc9_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_27.2: = bound_method %int_2, %impl.elem0.loc9_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc9_27.2: = specific_function %Convert.bound.loc9_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc9_27.2: init %i32 = call %Convert.specific_fn.loc9_27.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc9_27.5: init %i32 = converted %int_2, %int.convert_checked.loc9_27.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc9_27.4: init %i32 = initialize_from %.loc9_27.2 to %.loc9_27.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc9_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_27.2: = bound_method %int_2, %impl.elem0.loc9_27.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc9_27.2: = specific_function %Convert.bound.loc9_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc9_27.2: init %i32 = call %Convert.specific_fn.loc9_27.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc9_27.5: init %i32 = converted %int_2, %int.convert_checked.loc9_27.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc9_27.6: ref %i32 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc9_27.7: init %i32 = initialize_from %.loc9_27.5 to %.loc9_27.6 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc9_27.7: init %i32 = initialize_from %.loc9_27.5 to %.loc9_27.6 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc9_27.8: init %A = class_init (%.loc9_27.4, %.loc9_27.7), %return [template = constants.%A.val] // CHECK:STDOUT: %.loc9_28: init %A = converted %.loc9_27.1, %.loc9_27.8 [template = constants.%A.val] // CHECK:STDOUT: return %.loc9_28 to %return @@ -277,23 +277,23 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc17_31.1: %struct_type.x.y.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc17_31.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_31.1: = bound_method %int_1, %impl.elem0.loc17_31.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc17_31.1: = specific_function %Convert.bound.loc17_31.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc17_31.1: init %i32 = call %Convert.specific_fn.loc17_31.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_31.2: init %i32 = converted %int_1, %int.convert_checked.loc17_31.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc17_31.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc17_31.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_31.1: = bound_method %int_1, %impl.elem0.loc17_31.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc17_31.1: = specific_function %Convert.bound.loc17_31.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc17_31.1: init %i32 = call %Convert.specific_fn.loc17_31.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_31.2: init %i32 = converted %int_1, %int.convert_checked.loc17_31.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc17_31.3: ref %i32 = class_element_access file.%a_ref.var, element0 -// CHECK:STDOUT: %.loc17_31.4: init %i32 = initialize_from %.loc17_31.2 to %.loc17_31.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc17_31.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_31.2: = bound_method %int_2, %impl.elem0.loc17_31.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc17_31.2: = specific_function %Convert.bound.loc17_31.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc17_31.2: init %i32 = call %Convert.specific_fn.loc17_31.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_31.5: init %i32 = converted %int_2, %int.convert_checked.loc17_31.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_31.4: init %i32 = initialize_from %.loc17_31.2 to %.loc17_31.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc17_31.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_31.2: = bound_method %int_2, %impl.elem0.loc17_31.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc17_31.2: = specific_function %Convert.bound.loc17_31.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc17_31.2: init %i32 = call %Convert.specific_fn.loc17_31.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_31.5: init %i32 = converted %int_2, %int.convert_checked.loc17_31.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_31.6: ref %i32 = class_element_access file.%a_ref.var, element1 -// CHECK:STDOUT: %.loc17_31.7: init %i32 = initialize_from %.loc17_31.5 to %.loc17_31.6 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_31.7: init %i32 = initialize_from %.loc17_31.5 to %.loc17_31.6 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_31.8: init %A = class_init (%.loc17_31.4, %.loc17_31.7), file.%a_ref.var [template = constants.%A.val] // CHECK:STDOUT: %.loc17_32: init %A = converted %.loc17_31.1, %.loc17_31.8 [template = constants.%A.val] // CHECK:STDOUT: assign file.%a_ref.var, %.loc17_32 @@ -309,8 +309,8 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %B.ref.loc22: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc22_25.1: ref %B = as_compatible %a_ref.ref.loc22 // CHECK:STDOUT: %.loc22_25.2: ref %B = converted %a_ref.ref.loc22, %.loc22_25.1 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %.loc22_25.2 -// CHECK:STDOUT: %b_ptr: %ptr.2 = bind_name b_ptr, %addr +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc22_25.2 +// CHECK:STDOUT: %b_ptr: %ptr.e79 = bind_name b_ptr, %addr // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @A.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc24_5: ref %B = splice_block file.%b_factory.var {} @@ -329,21 +329,21 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.27), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.6c4 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -364,7 +364,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: adapt_decl %i32 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -373,18 +373,18 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_15.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_15.2: %i32 = converted %int_1, %.loc8_15.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_15.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_15.2: %i32 = converted %int_1, %.loc8_15.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %.loc8_23.1: %A = as_compatible %.loc8_15.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_23.2: %A = converted %.loc8_15.2, %.loc8_23.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc8_23.1: %A = as_compatible %.loc8_15.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_23.2: %A = converted %.loc8_15.2, %.loc8_23.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %a: %A = bind_name a, %.loc8_23.2 // CHECK:STDOUT: %a.ref: %A = name_ref a, %a // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [template = constants.%int_32] @@ -489,29 +489,29 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] -// CHECK:STDOUT: %struct_type.x.y.1: type = struct_type {.x: %i32, .y: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.y.1 [template] +// CHECK:STDOUT: %struct_type.x.y.f68: type = struct_type {.x: %i32, .y: %i32} [template] +// CHECK:STDOUT: %complete_type.032: = complete_type_witness %struct_type.x.y.f68 [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.x.y.2: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.x.y.4cf: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -532,7 +532,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] // CHECK:STDOUT: %.loc6: %A.elem = field_decl y, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -544,7 +544,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: adapt_decl %A.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -553,25 +553,25 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc13_34.1: %struct_type.x.y.2 = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc13_34.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %impl.elem0.loc13_34.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_34.1: = bound_method %int_1, %impl.elem0.loc13_34.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_34.1: = specific_function %Convert.bound.loc13_34.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_34.1: init %i32 = call %Convert.specific_fn.loc13_34.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_34.2: init %i32 = converted %int_1, %int.convert_checked.loc13_34.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc13_34.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_34.1: = bound_method %int_1, %impl.elem0.loc13_34.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13_34.1: = specific_function %Convert.bound.loc13_34.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13_34.1: init %i32 = call %Convert.specific_fn.loc13_34.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_34.2: init %i32 = converted %int_1, %int.convert_checked.loc13_34.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc13_34.3: ref %A = temporary_storage // CHECK:STDOUT: %.loc13_34.4: ref %i32 = class_element_access %.loc13_34.3, element0 -// CHECK:STDOUT: %.loc13_34.5: init %i32 = initialize_from %.loc13_34.2 to %.loc13_34.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc13_34.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_34.2: = bound_method %int_2, %impl.elem0.loc13_34.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_34.2: = specific_function %Convert.bound.loc13_34.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_34.2: init %i32 = call %Convert.specific_fn.loc13_34.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_34.6: init %i32 = converted %int_2, %int.convert_checked.loc13_34.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_34.5: init %i32 = initialize_from %.loc13_34.2 to %.loc13_34.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc13_34.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_34.2: = bound_method %int_2, %impl.elem0.loc13_34.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_34.2: = specific_function %Convert.bound.loc13_34.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc13_34.2: init %i32 = call %Convert.specific_fn.loc13_34.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_34.6: init %i32 = converted %int_2, %int.convert_checked.loc13_34.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_34.7: ref %i32 = class_element_access %.loc13_34.3, element1 -// CHECK:STDOUT: %.loc13_34.8: init %i32 = initialize_from %.loc13_34.6 to %.loc13_34.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_34.8: init %i32 = initialize_from %.loc13_34.6 to %.loc13_34.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_34.9: init %A = class_init (%.loc13_34.5, %.loc13_34.8), %.loc13_34.3 [template = constants.%A.val] // CHECK:STDOUT: %.loc13_34.10: ref %A = temporary %.loc13_34.3, %.loc13_34.9 // CHECK:STDOUT: %.loc13_36: ref %A = converted %.loc13_34.1, %.loc13_34.10 @@ -590,29 +590,29 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] -// CHECK:STDOUT: %struct_type.x.y.1: type = struct_type {.x: %i32, .y: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.y.1 [template] +// CHECK:STDOUT: %struct_type.x.y.f68: type = struct_type {.x: %i32, .y: %i32} [template] +// CHECK:STDOUT: %complete_type.032: = complete_type_witness %struct_type.x.y.f68 [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.x.y.2: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.x.y.4cf: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -635,7 +635,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] // CHECK:STDOUT: %.loc6: %A.elem = field_decl y, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -647,7 +647,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: adapt_decl %A.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.f68 [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -656,25 +656,25 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc22_33.1: %struct_type.x.y.2 = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc22_33.1: %struct_type.x.y.4cf = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %impl.elem0.loc22_33.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22_33.1: = bound_method %int_1, %impl.elem0.loc22_33.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc22_33.1: = specific_function %Convert.bound.loc22_33.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc22_33.1: init %i32 = call %Convert.specific_fn.loc22_33.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc22_33.2: init %i32 = converted %int_1, %int.convert_checked.loc22_33.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc22_33.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22_33.1: = bound_method %int_1, %impl.elem0.loc22_33.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc22_33.1: = specific_function %Convert.bound.loc22_33.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc22_33.1: init %i32 = call %Convert.specific_fn.loc22_33.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc22_33.2: init %i32 = converted %int_1, %int.convert_checked.loc22_33.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc22_33.3: ref %A = temporary_storage // CHECK:STDOUT: %.loc22_33.4: ref %i32 = class_element_access %.loc22_33.3, element0 -// CHECK:STDOUT: %.loc22_33.5: init %i32 = initialize_from %.loc22_33.2 to %.loc22_33.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc22_33.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22_33.2: = bound_method %int_2, %impl.elem0.loc22_33.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc22_33.2: = specific_function %Convert.bound.loc22_33.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc22_33.2: init %i32 = call %Convert.specific_fn.loc22_33.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_33.6: init %i32 = converted %int_2, %int.convert_checked.loc22_33.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc22_33.5: init %i32 = initialize_from %.loc22_33.2 to %.loc22_33.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc22_33.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22_33.2: = bound_method %int_2, %impl.elem0.loc22_33.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc22_33.2: = specific_function %Convert.bound.loc22_33.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc22_33.2: init %i32 = call %Convert.specific_fn.loc22_33.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc22_33.6: init %i32 = converted %int_2, %int.convert_checked.loc22_33.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc22_33.7: ref %i32 = class_element_access %.loc22_33.3, element1 -// CHECK:STDOUT: %.loc22_33.8: init %i32 = initialize_from %.loc22_33.6 to %.loc22_33.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc22_33.8: init %i32 = initialize_from %.loc22_33.6 to %.loc22_33.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc22_33.9: init %A = class_init (%.loc22_33.5, %.loc22_33.8), %.loc22_33.3 [template = constants.%A.val] // CHECK:STDOUT: %.loc22_33.10: ref %A = temporary %.loc22_33.3, %.loc22_33.9 // CHECK:STDOUT: %.loc22_35: ref %A = converted %.loc22_33.1, %.loc22_33.10 @@ -691,20 +691,20 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: constants { // CHECK:STDOUT: %Noncopyable: type = class_type @Noncopyable [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %Noncopyable) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.8a7: type = tuple_type (%i32, %Noncopyable) [template] +// CHECK:STDOUT: %complete_type.750: = complete_type_witness %tuple.type.8a7 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -731,7 +731,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Noncopyable { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Noncopyable @@ -742,10 +742,10 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [template = constants.%Noncopyable] -// CHECK:STDOUT: %.loc9_26: %tuple.type.1 = tuple_literal (%i32, %Noncopyable.ref) -// CHECK:STDOUT: %.loc9_27: type = converted %.loc9_26, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc9_26: %tuple.type.24b = tuple_literal (%i32, %Noncopyable.ref) +// CHECK:STDOUT: %.loc9_27: type = converted %.loc9_26, constants.%tuple.type.8a7 [template = constants.%tuple.type.8a7] // CHECK:STDOUT: adapt_decl %.loc9_27 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.8a7 [template = constants.%complete_type.750] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -758,10 +758,10 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [template = constants.%Noncopyable] -// CHECK:STDOUT: %.loc13_43.1: %tuple.type.1 = tuple_literal (%i32, %Noncopyable.ref) -// CHECK:STDOUT: %.loc13_43.2: type = converted %.loc13_43.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %.loc13_23.1: %tuple.type.2 = as_compatible %a.ref -// CHECK:STDOUT: %.loc13_23.2: %tuple.type.2 = converted %a.ref, %.loc13_23.1 +// CHECK:STDOUT: %.loc13_43.1: %tuple.type.24b = tuple_literal (%i32, %Noncopyable.ref) +// CHECK:STDOUT: %.loc13_43.2: type = converted %.loc13_43.1, constants.%tuple.type.8a7 [template = constants.%tuple.type.8a7] +// CHECK:STDOUT: %.loc13_23.1: %tuple.type.8a7 = as_compatible %a.ref +// CHECK:STDOUT: %.loc13_23.2: %tuple.type.8a7 = converted %a.ref, %.loc13_23.1 // CHECK:STDOUT: %A.ref.loc13: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc13_46.1: %A = as_compatible %.loc13_23.2 // CHECK:STDOUT: %.loc13_46.2: %A = converted %.loc13_23.2, %.loc13_46.1 @@ -774,20 +774,20 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: constants { // CHECK:STDOUT: %Noncopyable: type = class_type @Noncopyable [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %Noncopyable) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.8a7: type = tuple_type (%i32, %Noncopyable) [template] +// CHECK:STDOUT: %complete_type.750: = complete_type_witness %tuple.type.8a7 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -814,7 +814,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Noncopyable { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Noncopyable @@ -825,10 +825,10 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [template = constants.%Noncopyable] -// CHECK:STDOUT: %.loc9_26: %tuple.type.1 = tuple_literal (%i32, %Noncopyable.ref) -// CHECK:STDOUT: %.loc9_27: type = converted %.loc9_26, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc9_26: %tuple.type.24b = tuple_literal (%i32, %Noncopyable.ref) +// CHECK:STDOUT: %.loc9_27: type = converted %.loc9_26, constants.%tuple.type.8a7 [template = constants.%tuple.type.8a7] // CHECK:STDOUT: adapt_decl %.loc9_27 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.8a7 [template = constants.%complete_type.750] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -843,16 +843,16 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [template = constants.%Noncopyable] -// CHECK:STDOUT: %.loc25_42.1: %tuple.type.1 = tuple_literal (%i32, %Noncopyable.ref) -// CHECK:STDOUT: %.loc25_42.2: type = converted %.loc25_42.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %.loc25_22.1: %tuple.type.2 = as_compatible %a.ref -// CHECK:STDOUT: %.loc25_22.2: %tuple.type.2 = converted %a.ref, %.loc25_22.1 +// CHECK:STDOUT: %.loc25_42.1: %tuple.type.24b = tuple_literal (%i32, %Noncopyable.ref) +// CHECK:STDOUT: %.loc25_42.2: type = converted %.loc25_42.1, constants.%tuple.type.8a7 [template = constants.%tuple.type.8a7] +// CHECK:STDOUT: %.loc25_22.1: %tuple.type.8a7 = as_compatible %a.ref +// CHECK:STDOUT: %.loc25_22.2: %tuple.type.8a7 = converted %a.ref, %.loc25_22.1 // CHECK:STDOUT: %A.ref.loc25: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc25_45.1: %A = as_compatible %.loc25_22.2 // CHECK:STDOUT: %.loc25_45.2: %A = converted %.loc25_22.2, %.loc25_45.1 -// CHECK:STDOUT: %.loc25_49.1: %tuple.type.2 = as_compatible %.loc25_45.2 +// CHECK:STDOUT: %.loc25_49.1: %tuple.type.8a7 = as_compatible %.loc25_45.2 // CHECK:STDOUT: %tuple.elem0.loc25_49.1: %i32 = tuple_access %.loc25_49.1, element0 -// CHECK:STDOUT: %.loc25_49.2: ref %tuple.type.2 = as_compatible %a_init.var +// CHECK:STDOUT: %.loc25_49.2: ref %tuple.type.8a7 = as_compatible %a_init.var // CHECK:STDOUT: %tuple.elem0.loc25_49.2: ref %i32 = tuple_access %.loc25_49.2, element0 // CHECK:STDOUT: %.loc25_49.3: init %i32 = initialize_from %tuple.elem0.loc25_49.1 to %tuple.elem0.loc25_49.2 // CHECK:STDOUT: %tuple.elem1: %Noncopyable = tuple_access %.loc25_49.1, element1 @@ -867,17 +867,17 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.1 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -899,7 +899,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -910,7 +910,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: adapt_decl %A.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -920,7 +920,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %.loc21_19: %struct_type.x.2 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc21_19: %struct_type.x.c96 = struct_literal (%int_1) // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc21_21: %B = converted %.loc21_19, [template = ] // CHECK:STDOUT: assign file.%b.var, diff --git a/toolchain/check/testdata/as/as_type.carbon b/toolchain/check/testdata/as/as_type.carbon index c0e0cad4aa92..3284294dacda 100644 --- a/toolchain/check/testdata/as/as_type.carbon +++ b/toolchain/check/testdata/as/as_type.carbon @@ -15,13 +15,13 @@ let t: type = (i32, i32) as type; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -41,8 +41,8 @@ let t: type = (i32, i32) as type; // CHECK:STDOUT: %i32.loc11_16: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_21: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_21: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_24: %tuple.type.1 = tuple_literal (%i32.loc11_16, %i32.loc11_21) -// CHECK:STDOUT: %.loc11_26: type = converted %.loc11_24, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc11_24: %tuple.type.24b = tuple_literal (%i32.loc11_16, %i32.loc11_21) +// CHECK:STDOUT: %.loc11_26: type = converted %.loc11_24, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %t: type = bind_name t, %.loc11_26 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/as/basic.carbon b/toolchain/check/testdata/as/basic.carbon index 7f6aa708f52a..36bcf3a5e355 100644 --- a/toolchain/check/testdata/as/basic.carbon +++ b/toolchain/check/testdata/as/basic.carbon @@ -19,20 +19,20 @@ fn Main() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.27), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.6c4 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -57,15 +57,15 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_12.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_12.2: %i32 = converted %int_1, %.loc12_12.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_12.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_12.2: %i32 = converted %int_1, %.loc12_12.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc12_12.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/fail_no_conversion.carbon b/toolchain/check/testdata/as/fail_no_conversion.carbon index 4cfebd498b8d..b7749914bb96 100644 --- a/toolchain/check/testdata/as/fail_no_conversion.carbon +++ b/toolchain/check/testdata/as/fail_no_conversion.carbon @@ -21,15 +21,15 @@ let n: (i32, i32) = 1 as (i32, i32); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -50,11 +50,11 @@ let n: (i32, i32) = 1 as (i32, i32); // CHECK:STDOUT: %i32.loc17_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc17_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc17_35.1: %tuple.type.1 = tuple_literal (%i32.loc17_27, %i32.loc17_32) -// CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %.loc17_23: %tuple.type.2 = converted %int_1, [template = ] +// CHECK:STDOUT: %.loc17_35.1: %tuple.type.24b = tuple_literal (%i32.loc17_27, %i32.loc17_32) +// CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %.loc17_23: %tuple.type.471 = converted %int_1, [template = ] // CHECK:STDOUT: %tuple.elem0: %i32 = tuple_access %.loc17_23, element0 [template = ] -// CHECK:STDOUT: %n: %tuple.type.2 = bind_name n, +// CHECK:STDOUT: %n: %tuple.type.471 = bind_name n, // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/fail_not_type.carbon b/toolchain/check/testdata/as/fail_not_type.carbon index 804c9eb87de6..ac9256692fe7 100644 --- a/toolchain/check/testdata/as/fail_not_type.carbon +++ b/toolchain/check/testdata/as/fail_not_type.carbon @@ -27,8 +27,8 @@ let n: i32 = 1 as 2; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/as/identity.carbon b/toolchain/check/testdata/as/identity.carbon index ca2331739ee3..b1154e8ef278 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -36,7 +36,7 @@ fn Initializing() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Value.type: type = fn_type @Value [template] // CHECK:STDOUT: %Value: %Value.type = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %X [template] +// CHECK:STDOUT: %ptr.d17: type = ptr_type %X [template] // CHECK:STDOUT: %Reference.type: type = fn_type @Reference [template] // CHECK:STDOUT: %Reference: %Reference.type = struct_value () [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] @@ -72,15 +72,15 @@ fn Initializing() { // CHECK:STDOUT: %n: %X = bind_name n, %n.param // CHECK:STDOUT: } // CHECK:STDOUT: %Reference.decl: %Reference.type = fn_decl @Reference [template = constants.%Reference] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.d17 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.d17 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.d17 = value_param runtime_param0 +// CHECK:STDOUT: %.loc21: type = splice_block %ptr [template = constants.%ptr.d17] { // CHECK:STDOUT: %X.ref.loc21: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %ptr: type = ptr_type %X [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %X [template = constants.%ptr.d17] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.d17 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { // CHECK:STDOUT: %return.patt: %X = return_slot_pattern @@ -109,13 +109,13 @@ fn Initializing() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Reference(%p.param_patt: %ptr.2) { +// CHECK:STDOUT: fn @Reference(%p.param_patt: %ptr.d17) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.d17 = name_ref p, %p // CHECK:STDOUT: %.loc22: ref %X = deref %p.ref // CHECK:STDOUT: %X.ref.loc22: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %.loc22 -// CHECK:STDOUT: %q: %ptr.2 = bind_name q, %addr +// CHECK:STDOUT: %addr: %ptr.d17 = addr_of %.loc22 +// CHECK:STDOUT: %q: %ptr.d17 = bind_name q, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/no_prelude/tuple.carbon b/toolchain/check/testdata/as/no_prelude/tuple.carbon index 83061e85677a..87fdf0869b2c 100644 --- a/toolchain/check/testdata/as/no_prelude/tuple.carbon +++ b/toolchain/check/testdata/as/no_prelude/tuple.carbon @@ -34,8 +34,8 @@ fn Var() { // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] // CHECK:STDOUT: %Let.type: type = fn_type @Let [template] // CHECK:STDOUT: %Let: %Let.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%X, %X) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.b67: type = tuple_type (%X, %X) [template] // CHECK:STDOUT: %Var.type: type = fn_type @Var [template] // CHECK:STDOUT: %Var: %Var.type = struct_value () [template] // CHECK:STDOUT: } @@ -78,38 +78,38 @@ fn Var() { // CHECK:STDOUT: %Make.ref.loc19_28: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc19_33.1: ref %X = temporary_storage // CHECK:STDOUT: %Make.call.loc19_33: init %X = call %Make.ref.loc19_28() to %.loc19_33.1 -// CHECK:STDOUT: %.loc19_34: %tuple.type.2 = tuple_literal (%Make.call.loc19_25, %Make.call.loc19_33) +// CHECK:STDOUT: %.loc19_34: %tuple.type.b67 = tuple_literal (%Make.call.loc19_25, %Make.call.loc19_33) // CHECK:STDOUT: %X.ref.loc19_40: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %X.ref.loc19_43: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %.loc19_44.1: %tuple.type.1 = tuple_literal (%X.ref.loc19_40, %X.ref.loc19_43) -// CHECK:STDOUT: %.loc19_44.2: type = converted %.loc19_44.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc19_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc19_40, %X.ref.loc19_43) +// CHECK:STDOUT: %.loc19_44.2: type = converted %.loc19_44.1, constants.%tuple.type.b67 [template = constants.%tuple.type.b67] // CHECK:STDOUT: %.loc19_25.2: ref %X = temporary %.loc19_25.1, %Make.call.loc19_25 // CHECK:STDOUT: %.loc19_25.3: %X = bind_value %.loc19_25.2 // CHECK:STDOUT: %.loc19_33.2: ref %X = temporary %.loc19_33.1, %Make.call.loc19_33 // CHECK:STDOUT: %.loc19_33.3: %X = bind_value %.loc19_33.2 -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc19_25.3, %.loc19_33.3) -// CHECK:STDOUT: %.loc19_45: %tuple.type.2 = converted %.loc19_34, %tuple -// CHECK:STDOUT: %a: %tuple.type.2 = bind_name a, %.loc19_45 +// CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc19_25.3, %.loc19_33.3) +// CHECK:STDOUT: %.loc19_45: %tuple.type.b67 = converted %.loc19_34, %tuple +// CHECK:STDOUT: %a: %tuple.type.b67 = bind_name a, %.loc19_45 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Var() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %b.var: ref %tuple.type.2 = var b -// CHECK:STDOUT: %b: ref %tuple.type.2 = bind_name b, %b.var +// CHECK:STDOUT: %b.var: ref %tuple.type.b67 = var b +// CHECK:STDOUT: %b: ref %tuple.type.b67 = bind_name b, %b.var // CHECK:STDOUT: %Make.ref.loc24_20: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %b.var, element0 // CHECK:STDOUT: %Make.call.loc24_25: init %X = call %Make.ref.loc24_20() to %tuple.elem0 // CHECK:STDOUT: %Make.ref.loc24_28: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %tuple.elem1: ref %X = tuple_access %b.var, element1 // CHECK:STDOUT: %Make.call.loc24_33: init %X = call %Make.ref.loc24_28() to %tuple.elem1 -// CHECK:STDOUT: %.loc24_34.1: %tuple.type.2 = tuple_literal (%Make.call.loc24_25, %Make.call.loc24_33) +// CHECK:STDOUT: %.loc24_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc24_25, %Make.call.loc24_33) // CHECK:STDOUT: %X.ref.loc24_40: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %X.ref.loc24_43: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %.loc24_44.1: %tuple.type.1 = tuple_literal (%X.ref.loc24_40, %X.ref.loc24_43) -// CHECK:STDOUT: %.loc24_44.2: type = converted %.loc24_44.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %.loc24_34.2: init %tuple.type.2 = tuple_init (%Make.call.loc24_25, %Make.call.loc24_33) to %b.var -// CHECK:STDOUT: %.loc24_45: init %tuple.type.2 = converted %.loc24_34.1, %.loc24_34.2 +// CHECK:STDOUT: %.loc24_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc24_40, %X.ref.loc24_43) +// CHECK:STDOUT: %.loc24_44.2: type = converted %.loc24_44.1, constants.%tuple.type.b67 [template = constants.%tuple.type.b67] +// CHECK:STDOUT: %.loc24_34.2: init %tuple.type.b67 = tuple_init (%Make.call.loc24_25, %Make.call.loc24_33) to %b.var +// CHECK:STDOUT: %.loc24_45: init %tuple.type.b67 = converted %.loc24_34.1, %.loc24_34.2 // CHECK:STDOUT: assign %b.var, %.loc24_45 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/as/overloaded.carbon b/toolchain/check/testdata/as/overloaded.carbon index 0a8e0a0ca482..f5409a60befc 100644 --- a/toolchain/check/testdata/as/overloaded.carbon +++ b/toolchain/check/testdata/as/overloaded.carbon @@ -30,37 +30,37 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %X.elem: type = unbound_element_type %X, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] -// CHECK:STDOUT: %As.type.1: type = generic_interface_type @As [template] -// CHECK:STDOUT: %As.generic: %As.type.1 = struct_value () [template] -// CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%X)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%X) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2 [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %As.type.4: type = facet_type <@As, @As(%i32)> [template] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %impl_witness.21: = impl_witness (imports.%import_ref.27), @impl.5(%int_32) [template] -// CHECK:STDOUT: %Convert.type.13: type = fn_type @Convert.7, @impl.5(%int_32) [template] -// CHECK:STDOUT: %Convert.13: %Convert.type.13 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_4.1, %Convert.13 [template] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound.1, @Convert.7(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_4.2, %Convert.3 [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %As.type.90f: type = generic_interface_type @As [template] +// CHECK:STDOUT: %As.generic: %As.type.90f = struct_value () [template] +// CHECK:STDOUT: %As.type.678: type = facet_type <@As, @As(%X)> [template] +// CHECK:STDOUT: %Convert.type.73d: type = fn_type @Convert.1, @As(%X) [template] +// CHECK:STDOUT: %impl_witness.cf4: = impl_witness (@impl.1.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.5bf: type = fn_type @Convert.2 [template] +// CHECK:STDOUT: %Convert.f4a: %Convert.type.5bf = struct_value () [template] +// CHECK:STDOUT: %As.type.a50: type = facet_type <@As, @As(%i32)> [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.d22: = impl_witness (@impl.2.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.45a: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.5bc: %Convert.type.45a = struct_value () [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.5(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.7, @impl.5(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.416: = bound_method %int_4.0c1, %Convert.6c4 [template] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound.416, @Convert.7(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.5eb: = bound_method %int_4.2ec, %Convert.f4a [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %As.type.1 = import_ref Core//prelude/operators/as, As, loaded [template = constants.%As.generic] +// CHECK:STDOUT: %import_ref.166: %As.type.90f = import_ref Core//prelude/operators/as, As, loaded [template = constants.%As.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,24 +75,24 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %As.ref: %As.type.1 = name_ref As, imports.%import_ref.5 [template = constants.%As.generic] +// CHECK:STDOUT: %As.ref: %As.type.90f = name_ref As, imports.%import_ref.166 [template = constants.%As.generic] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%X)> [template = constants.%As.type.3] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%X)> [template = constants.%As.type.678] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Convert.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Convert.decl) [template = constants.%impl_witness.cf4] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %As.ref: %As.type.1 = name_ref As, imports.%import_ref.5 [template = constants.%As.generic] +// CHECK:STDOUT: %As.ref: %As.type.90f = name_ref As, imports.%import_ref.166 [template = constants.%As.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32)> [template = constants.%As.type.4] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32)> [template = constants.%As.type.a50] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.d22] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %As.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.3 = fn_decl @Convert.2 [template = constants.%Convert.3] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.5bf = fn_decl @Convert.2 [template = constants.%Convert.f4a] { // CHECK:STDOUT: %self.patt: %i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %X = return_slot_pattern @@ -115,7 +115,7 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %X.ref as %As.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.5 = fn_decl @Convert.3 [template = constants.%Convert.5] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.45a = fn_decl @Convert.3 [template = constants.%Convert.5bc] { // CHECK:STDOUT: %self.patt: %X = binding_pattern self // CHECK:STDOUT: %self.param_patt: %X = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -137,7 +137,7 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: %.loc12: %X.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X @@ -167,24 +167,24 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] // CHECK:STDOUT: %int_32.loc23_21: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc23_21: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc23_18: %Convert.type.4 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Convert.13] -// CHECK:STDOUT: %Convert.bound.loc23_18: = bound_method %int_4, %impl.elem0.loc23_18 [template = constants.%Convert.bound.1] +// CHECK:STDOUT: %impl.elem0.loc23_18: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] +// CHECK:STDOUT: %Convert.bound.loc23_18: = bound_method %int_4, %impl.elem0.loc23_18 [template = constants.%Convert.bound.416] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound.loc23_18, @Convert.7(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc23_18.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc23_18.2: %i32 = converted %int_4, %.loc23_18.1 [template = constants.%int_4.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc23_18.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc23_18.2: %i32 = converted %int_4, %.loc23_18.1 [template = constants.%int_4.2ec] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %impl.elem0.loc23_26: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc23_26: = bound_method %.loc23_18.2, %impl.elem0.loc23_26 [template = constants.%Convert.bound.2] +// CHECK:STDOUT: %impl.elem0.loc23_26: %Convert.type.73d = impl_witness_access constants.%impl_witness.cf4, element0 [template = constants.%Convert.f4a] +// CHECK:STDOUT: %Convert.bound.loc23_26: = bound_method %.loc23_18.2, %impl.elem0.loc23_26 [template = constants.%Convert.bound.5eb] // CHECK:STDOUT: %.loc23_26.1: ref %X = temporary_storage // CHECK:STDOUT: %Convert.call.loc23_26: init %X = call %Convert.bound.loc23_26(%.loc23_18.2) to %.loc23_26.1 // CHECK:STDOUT: %.loc23_26.2: init %X = converted %.loc23_18.2, %Convert.call.loc23_26 // CHECK:STDOUT: %int_32.loc23_35: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc23_35: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc23_32: %Convert.type.4 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Convert.5] +// CHECK:STDOUT: %impl.elem0.loc23_32: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.d22, element0 [template = constants.%Convert.5bc] // CHECK:STDOUT: %Convert.bound.loc23_32: = bound_method %.loc23_26.2, %impl.elem0.loc23_32 // CHECK:STDOUT: %.loc23_26.3: ref %X = temporary %.loc23_26.1, %.loc23_26.2 // CHECK:STDOUT: %.loc23_26.4: %X = bind_value %.loc23_26.3 diff --git a/toolchain/check/testdata/basics/builtin_types.carbon b/toolchain/check/testdata/basics/builtin_types.carbon index fd11fc36b3f3..679de9d46410 100644 --- a/toolchain/check/testdata/basics/builtin_types.carbon +++ b/toolchain/check/testdata/basics/builtin_types.carbon @@ -18,23 +18,23 @@ var test_type: type = i32; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %float: f64 = float_literal 0.10000000000000001 [template] // CHECK:STDOUT: %str: String = string_literal "Test" [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Float = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Float = %import_ref.20bd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -59,12 +59,12 @@ var test_type: type = i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%test_i32.var, %.loc11 // CHECK:STDOUT: %float: f64 = float_literal 0.10000000000000001 [template = constants.%float] // CHECK:STDOUT: assign file.%test_f64.var, %float diff --git a/toolchain/check/testdata/basics/fail_bad_run.carbon b/toolchain/check/testdata/basics/fail_bad_run.carbon index b926d7ef4c38..133ceb13a31f 100644 --- a/toolchain/check/testdata/basics/fail_bad_run.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run.carbon @@ -28,7 +28,7 @@ fn Run() -> String {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/fail_bad_run_2.carbon b/toolchain/check/testdata/basics/fail_bad_run_2.carbon index bbe34ec1f04b..7a1e2e6c49aa 100644 --- a/toolchain/check/testdata/basics/fail_bad_run_2.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run_2.carbon @@ -24,7 +24,7 @@ fn Run(n: i32) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon index 6e2db17f5a8c..721d4d217caa 100644 --- a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon +++ b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon @@ -24,7 +24,7 @@ var x: type = 42; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon b/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon index 051f4a220e9a..e950e90fc9d9 100644 --- a/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon +++ b/toolchain/check/testdata/basics/fail_numeric_literal_overflow.carbon @@ -42,25 +42,25 @@ let e: f64 = 5.0e39999999999999999993; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_39999999999999999993.1: Core.IntLiteral = int_value 39999999999999999993 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_39999999999999999993.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_39999999999999999993.2: %i32 = int_value 39999999999999999993 [template] -// CHECK:STDOUT: %int_2147483648.1: Core.IntLiteral = int_value 2147483648 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2147483648.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2147483648.2: %i32 = int_value 2147483648 [template] +// CHECK:STDOUT: %int_39999999999999999993.af6: Core.IntLiteral = int_value 39999999999999999993 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.212: = bound_method %int_39999999999999999993.af6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.e77: = specific_function %Convert.bound.212, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_39999999999999999993.2c0: %i32 = int_value 39999999999999999993 [template] +// CHECK:STDOUT: %int_2147483648.1db: Core.IntLiteral = int_value 2147483648 [template] +// CHECK:STDOUT: %Convert.bound.dbd: = bound_method %int_2147483648.1db, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b90: = specific_function %Convert.bound.dbd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2147483648.928: %i32 = int_value 2147483648 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Float = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Float = %import_ref.20bd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -80,29 +80,29 @@ let e: f64 = 5.0e39999999999999999993; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_39999999999999999993: Core.IntLiteral = int_value 39999999999999999993 [template = constants.%int_39999999999999999993.1] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_39999999999999999993, %impl.elem0.loc15 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_39999999999999999993) [template = constants.%int_39999999999999999993.2] -// CHECK:STDOUT: %.loc15_34.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_39999999999999999993.2] -// CHECK:STDOUT: %.loc15_34.2: %i32 = converted %int_39999999999999999993, %.loc15_34.1 [template = constants.%int_39999999999999999993.2] +// CHECK:STDOUT: %int_39999999999999999993: Core.IntLiteral = int_value 39999999999999999993 [template = constants.%int_39999999999999999993.af6] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_39999999999999999993, %impl.elem0.loc15 [template = constants.%Convert.bound.212] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.e77] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_39999999999999999993) [template = constants.%int_39999999999999999993.2c0] +// CHECK:STDOUT: %.loc15_34.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_39999999999999999993.2c0] +// CHECK:STDOUT: %.loc15_34.2: %i32 = converted %int_39999999999999999993, %.loc15_34.1 [template = constants.%int_39999999999999999993.2c0] // CHECK:STDOUT: %a: %i32 = bind_name a, %.loc15_34.2 -// CHECK:STDOUT: %int_2147483648.loc21: Core.IntLiteral = int_value 2147483648 [template = constants.%int_2147483648.1] -// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_2147483648.loc21, %impl.elem0.loc21 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_2147483648.loc21) [template = constants.%int_2147483648.2] -// CHECK:STDOUT: %.loc21_27.1: %i32 = value_of_initializer %int.convert_checked.loc21 [template = constants.%int_2147483648.2] -// CHECK:STDOUT: %.loc21_27.2: %i32 = converted %int_2147483648.loc21, %.loc21_27.1 [template = constants.%int_2147483648.2] +// CHECK:STDOUT: %int_2147483648.loc21: Core.IntLiteral = int_value 2147483648 [template = constants.%int_2147483648.1db] +// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_2147483648.loc21, %impl.elem0.loc21 [template = constants.%Convert.bound.dbd] +// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b90] +// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_2147483648.loc21) [template = constants.%int_2147483648.928] +// CHECK:STDOUT: %.loc21_27.1: %i32 = value_of_initializer %int.convert_checked.loc21 [template = constants.%int_2147483648.928] +// CHECK:STDOUT: %.loc21_27.2: %i32 = converted %int_2147483648.loc21, %.loc21_27.1 [template = constants.%int_2147483648.928] // CHECK:STDOUT: %b: %i32 = bind_name b, %.loc21_27.2 -// CHECK:STDOUT: %int_2147483648.loc27: Core.IntLiteral = int_value 2147483648 [template = constants.%int_2147483648.1] -// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_2147483648.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_2147483648.loc27) [template = constants.%int_2147483648.2] -// CHECK:STDOUT: %.loc27_25.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_2147483648.2] -// CHECK:STDOUT: %.loc27_25.2: %i32 = converted %int_2147483648.loc27, %.loc27_25.1 [template = constants.%int_2147483648.2] +// CHECK:STDOUT: %int_2147483648.loc27: Core.IntLiteral = int_value 2147483648 [template = constants.%int_2147483648.1db] +// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_2147483648.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound.dbd] +// CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b90] +// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_2147483648.loc27) [template = constants.%int_2147483648.928] +// CHECK:STDOUT: %.loc27_25.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_2147483648.928] +// CHECK:STDOUT: %.loc27_25.2: %i32 = converted %int_2147483648.loc27, %.loc27_25.1 [template = constants.%int_2147483648.928] // CHECK:STDOUT: %c: %i32 = bind_name c, %.loc27_25.2 // CHECK:STDOUT: %d: f64 = bind_name d, // CHECK:STDOUT: %e: f64 = bind_name e, diff --git a/toolchain/check/testdata/basics/numeric_literals.carbon b/toolchain/check/testdata/basics/numeric_literals.carbon index f146f9bfdf54..e07144d7691e 100644 --- a/toolchain/check/testdata/basics/numeric_literals.carbon +++ b/toolchain/check/testdata/basics/numeric_literals.carbon @@ -37,47 +37,47 @@ fn F() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_6, %i32 [template] -// CHECK:STDOUT: %int_8.1: Core.IntLiteral = int_value 8 [template] -// CHECK:STDOUT: %int_9.1: Core.IntLiteral = int_value 9 [template] -// CHECK:STDOUT: %int_2147483647.1: Core.IntLiteral = int_value 2147483647 [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %array_type.a36: type = array_type %int_6, %i32 [template] +// CHECK:STDOUT: %int_8.b85: Core.IntLiteral = int_value 8 [template] +// CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [template] +// CHECK:STDOUT: %int_2147483647.d89: Core.IntLiteral = int_value 2147483647 [template] +// CHECK:STDOUT: %tuple.type.27c: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_8.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_8.2: %i32 = int_value 8 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.29e: = bound_method %int_8.b85, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.5a6: = specific_function %Convert.bound.29e, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_8.f03: %i32 = int_value 8 [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_9.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_9.2: %i32 = int_value 9 [template] +// CHECK:STDOUT: %Convert.bound.cc8: = bound_method %int_9.988, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b8b: = specific_function %Convert.bound.cc8, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_9.82c: %i32 = int_value 9 [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2147483647.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2147483647.2: %i32 = int_value 2147483647 [template] +// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2147483647.d89, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.a96: = specific_function %Convert.bound.ef9, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2147483647.2ba: %i32 = int_value 2147483647 [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %array.1: %array_type.1 = tuple_value (%int_8.2, %int_9.2, %int_8.2, %int_8.2, %int_2147483647.2, %int_2147483647.2) [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_6, f64 [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 0.90000000000000002 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 8 [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 80 [template] -// CHECK:STDOUT: %float.4: f64 = float_literal 1.0E+7 [template] -// CHECK:STDOUT: %float.5: f64 = float_literal 1.0E+8 [template] -// CHECK:STDOUT: %float.6: f64 = float_literal 1.0E-8 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (f64, f64, f64, f64, f64, f64) [template] -// CHECK:STDOUT: %array.2: %array_type.2 = tuple_value (%float.1, %float.2, %float.3, %float.4, %float.5, %float.6) [template] +// CHECK:STDOUT: %array.11d: %array_type.a36 = tuple_value (%int_8.f03, %int_9.82c, %int_8.f03, %int_8.f03, %int_2147483647.2ba, %int_2147483647.2ba) [template] +// CHECK:STDOUT: %array_type.72b: type = array_type %int_6, f64 [template] +// CHECK:STDOUT: %float.952: f64 = float_literal 0.90000000000000002 [template] +// CHECK:STDOUT: %float.298: f64 = float_literal 8 [template] +// CHECK:STDOUT: %float.dcb: f64 = float_literal 80 [template] +// CHECK:STDOUT: %float.1d0: f64 = float_literal 1.0E+7 [template] +// CHECK:STDOUT: %float.9f6: f64 = float_literal 1.0E+8 [template] +// CHECK:STDOUT: %float.401: f64 = float_literal 1.0E-8 [template] +// CHECK:STDOUT: %tuple.type.635: type = tuple_type (f64, f64, f64, f64, f64, f64) [template] +// CHECK:STDOUT: %array.a2f: %array_type.72b = tuple_value (%float.952, %float.298, %float.dcb, %float.1d0, %float.9f6, %float.401) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Float = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Float = %import_ref.20bd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -94,95 +94,95 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %ints.var: ref %array_type.1 = var ints -// CHECK:STDOUT: %ints: ref %array_type.1 = bind_name ints, %ints.var -// CHECK:STDOUT: %int_8.loc15: Core.IntLiteral = int_value 8 [template = constants.%int_8.1] -// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.1] -// CHECK:STDOUT: %int_8.loc17: Core.IntLiteral = int_value 8 [template = constants.%int_8.1] -// CHECK:STDOUT: %int_8.loc18: Core.IntLiteral = int_value 8 [template = constants.%int_8.1] -// CHECK:STDOUT: %int_2147483647.loc19: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.1] -// CHECK:STDOUT: %int_2147483647.loc20: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.1] -// CHECK:STDOUT: %.loc21_3.1: %tuple.type.1 = tuple_literal (%int_8.loc15, %int_9, %int_8.loc17, %int_8.loc18, %int_2147483647.loc19, %int_2147483647.loc20) -// CHECK:STDOUT: %impl.elem0.loc21_3.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.1: = bound_method %int_8.loc15, %impl.elem0.loc21_3.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.1: = specific_function %Convert.bound.loc21_3.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc21_3.1: init %i32 = call %Convert.specific_fn.loc21_3.1(%int_8.loc15) [template = constants.%int_8.2] -// CHECK:STDOUT: %.loc21_3.2: init %i32 = converted %int_8.loc15, %int.convert_checked.loc21_3.1 [template = constants.%int_8.2] +// CHECK:STDOUT: %ints.var: ref %array_type.a36 = var ints +// CHECK:STDOUT: %ints: ref %array_type.a36 = bind_name ints, %ints.var +// CHECK:STDOUT: %int_8.loc15: Core.IntLiteral = int_value 8 [template = constants.%int_8.b85] +// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.988] +// CHECK:STDOUT: %int_8.loc17: Core.IntLiteral = int_value 8 [template = constants.%int_8.b85] +// CHECK:STDOUT: %int_8.loc18: Core.IntLiteral = int_value 8 [template = constants.%int_8.b85] +// CHECK:STDOUT: %int_2147483647.loc19: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.d89] +// CHECK:STDOUT: %int_2147483647.loc20: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.d89] +// CHECK:STDOUT: %.loc21_3.1: %tuple.type.27c = tuple_literal (%int_8.loc15, %int_9, %int_8.loc17, %int_8.loc18, %int_2147483647.loc19, %int_2147483647.loc20) +// CHECK:STDOUT: %impl.elem0.loc21_3.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.1: = bound_method %int_8.loc15, %impl.elem0.loc21_3.1 [template = constants.%Convert.bound.29e] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.1: = specific_function %Convert.bound.loc21_3.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5a6] +// CHECK:STDOUT: %int.convert_checked.loc21_3.1: init %i32 = call %Convert.specific_fn.loc21_3.1(%int_8.loc15) [template = constants.%int_8.f03] +// CHECK:STDOUT: %.loc21_3.2: init %i32 = converted %int_8.loc15, %int.convert_checked.loc21_3.1 [template = constants.%int_8.f03] // CHECK:STDOUT: %int_0.loc21: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc21_3.3: ref %i32 = array_index %ints.var, %int_0.loc21 -// CHECK:STDOUT: %.loc21_3.4: init %i32 = initialize_from %.loc21_3.2 to %.loc21_3.3 [template = constants.%int_8.2] -// CHECK:STDOUT: %impl.elem0.loc21_3.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.2: = bound_method %int_9, %impl.elem0.loc21_3.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.2: = specific_function %Convert.bound.loc21_3.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc21_3.2: init %i32 = call %Convert.specific_fn.loc21_3.2(%int_9) [template = constants.%int_9.2] -// CHECK:STDOUT: %.loc21_3.5: init %i32 = converted %int_9, %int.convert_checked.loc21_3.2 [template = constants.%int_9.2] +// CHECK:STDOUT: %.loc21_3.4: init %i32 = initialize_from %.loc21_3.2 to %.loc21_3.3 [template = constants.%int_8.f03] +// CHECK:STDOUT: %impl.elem0.loc21_3.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.2: = bound_method %int_9, %impl.elem0.loc21_3.2 [template = constants.%Convert.bound.cc8] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.2: = specific_function %Convert.bound.loc21_3.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b8b] +// CHECK:STDOUT: %int.convert_checked.loc21_3.2: init %i32 = call %Convert.specific_fn.loc21_3.2(%int_9) [template = constants.%int_9.82c] +// CHECK:STDOUT: %.loc21_3.5: init %i32 = converted %int_9, %int.convert_checked.loc21_3.2 [template = constants.%int_9.82c] // CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %.loc21_3.6: ref %i32 = array_index %ints.var, %int_1.loc21 -// CHECK:STDOUT: %.loc21_3.7: init %i32 = initialize_from %.loc21_3.5 to %.loc21_3.6 [template = constants.%int_9.2] -// CHECK:STDOUT: %impl.elem0.loc21_3.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.3: = bound_method %int_8.loc17, %impl.elem0.loc21_3.3 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.3: = specific_function %Convert.bound.loc21_3.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc21_3.3: init %i32 = call %Convert.specific_fn.loc21_3.3(%int_8.loc17) [template = constants.%int_8.2] -// CHECK:STDOUT: %.loc21_3.8: init %i32 = converted %int_8.loc17, %int.convert_checked.loc21_3.3 [template = constants.%int_8.2] +// CHECK:STDOUT: %.loc21_3.7: init %i32 = initialize_from %.loc21_3.5 to %.loc21_3.6 [template = constants.%int_9.82c] +// CHECK:STDOUT: %impl.elem0.loc21_3.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.3: = bound_method %int_8.loc17, %impl.elem0.loc21_3.3 [template = constants.%Convert.bound.29e] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.3: = specific_function %Convert.bound.loc21_3.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5a6] +// CHECK:STDOUT: %int.convert_checked.loc21_3.3: init %i32 = call %Convert.specific_fn.loc21_3.3(%int_8.loc17) [template = constants.%int_8.f03] +// CHECK:STDOUT: %.loc21_3.8: init %i32 = converted %int_8.loc17, %int.convert_checked.loc21_3.3 [template = constants.%int_8.f03] // CHECK:STDOUT: %int_2.loc21: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %.loc21_3.9: ref %i32 = array_index %ints.var, %int_2.loc21 -// CHECK:STDOUT: %.loc21_3.10: init %i32 = initialize_from %.loc21_3.8 to %.loc21_3.9 [template = constants.%int_8.2] -// CHECK:STDOUT: %impl.elem0.loc21_3.4: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.4: = bound_method %int_8.loc18, %impl.elem0.loc21_3.4 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.4: = specific_function %Convert.bound.loc21_3.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc21_3.4: init %i32 = call %Convert.specific_fn.loc21_3.4(%int_8.loc18) [template = constants.%int_8.2] -// CHECK:STDOUT: %.loc21_3.11: init %i32 = converted %int_8.loc18, %int.convert_checked.loc21_3.4 [template = constants.%int_8.2] +// CHECK:STDOUT: %.loc21_3.10: init %i32 = initialize_from %.loc21_3.8 to %.loc21_3.9 [template = constants.%int_8.f03] +// CHECK:STDOUT: %impl.elem0.loc21_3.4: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.4: = bound_method %int_8.loc18, %impl.elem0.loc21_3.4 [template = constants.%Convert.bound.29e] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.4: = specific_function %Convert.bound.loc21_3.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5a6] +// CHECK:STDOUT: %int.convert_checked.loc21_3.4: init %i32 = call %Convert.specific_fn.loc21_3.4(%int_8.loc18) [template = constants.%int_8.f03] +// CHECK:STDOUT: %.loc21_3.11: init %i32 = converted %int_8.loc18, %int.convert_checked.loc21_3.4 [template = constants.%int_8.f03] // CHECK:STDOUT: %int_3.loc21: Core.IntLiteral = int_value 3 [template = constants.%int_3] // CHECK:STDOUT: %.loc21_3.12: ref %i32 = array_index %ints.var, %int_3.loc21 -// CHECK:STDOUT: %.loc21_3.13: init %i32 = initialize_from %.loc21_3.11 to %.loc21_3.12 [template = constants.%int_8.2] -// CHECK:STDOUT: %impl.elem0.loc21_3.5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.5: = bound_method %int_2147483647.loc19, %impl.elem0.loc21_3.5 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.5: = specific_function %Convert.bound.loc21_3.5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc21_3.5: init %i32 = call %Convert.specific_fn.loc21_3.5(%int_2147483647.loc19) [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %.loc21_3.14: init %i32 = converted %int_2147483647.loc19, %int.convert_checked.loc21_3.5 [template = constants.%int_2147483647.2] +// CHECK:STDOUT: %.loc21_3.13: init %i32 = initialize_from %.loc21_3.11 to %.loc21_3.12 [template = constants.%int_8.f03] +// CHECK:STDOUT: %impl.elem0.loc21_3.5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.5: = bound_method %int_2147483647.loc19, %impl.elem0.loc21_3.5 [template = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.5: = specific_function %Convert.bound.loc21_3.5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.a96] +// CHECK:STDOUT: %int.convert_checked.loc21_3.5: init %i32 = call %Convert.specific_fn.loc21_3.5(%int_2147483647.loc19) [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %.loc21_3.14: init %i32 = converted %int_2147483647.loc19, %int.convert_checked.loc21_3.5 [template = constants.%int_2147483647.2ba] // CHECK:STDOUT: %int_4.loc21: Core.IntLiteral = int_value 4 [template = constants.%int_4] // CHECK:STDOUT: %.loc21_3.15: ref %i32 = array_index %ints.var, %int_4.loc21 -// CHECK:STDOUT: %.loc21_3.16: init %i32 = initialize_from %.loc21_3.14 to %.loc21_3.15 [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %impl.elem0.loc21_3.6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21_3.6: = bound_method %int_2147483647.loc20, %impl.elem0.loc21_3.6 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc21_3.6: = specific_function %Convert.bound.loc21_3.6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc21_3.6: init %i32 = call %Convert.specific_fn.loc21_3.6(%int_2147483647.loc20) [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %.loc21_3.17: init %i32 = converted %int_2147483647.loc20, %int.convert_checked.loc21_3.6 [template = constants.%int_2147483647.2] +// CHECK:STDOUT: %.loc21_3.16: init %i32 = initialize_from %.loc21_3.14 to %.loc21_3.15 [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %impl.elem0.loc21_3.6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21_3.6: = bound_method %int_2147483647.loc20, %impl.elem0.loc21_3.6 [template = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %Convert.specific_fn.loc21_3.6: = specific_function %Convert.bound.loc21_3.6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.a96] +// CHECK:STDOUT: %int.convert_checked.loc21_3.6: init %i32 = call %Convert.specific_fn.loc21_3.6(%int_2147483647.loc20) [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %.loc21_3.17: init %i32 = converted %int_2147483647.loc20, %int.convert_checked.loc21_3.6 [template = constants.%int_2147483647.2ba] // CHECK:STDOUT: %int_5.loc21: Core.IntLiteral = int_value 5 [template = constants.%int_5] // CHECK:STDOUT: %.loc21_3.18: ref %i32 = array_index %ints.var, %int_5.loc21 -// CHECK:STDOUT: %.loc21_3.19: init %i32 = initialize_from %.loc21_3.17 to %.loc21_3.18 [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %.loc21_3.20: init %array_type.1 = array_init (%.loc21_3.4, %.loc21_3.7, %.loc21_3.10, %.loc21_3.13, %.loc21_3.16, %.loc21_3.19) to %ints.var [template = constants.%array.1] -// CHECK:STDOUT: %.loc21_4: init %array_type.1 = converted %.loc21_3.1, %.loc21_3.20 [template = constants.%array.1] +// CHECK:STDOUT: %.loc21_3.19: init %i32 = initialize_from %.loc21_3.17 to %.loc21_3.18 [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %.loc21_3.20: init %array_type.a36 = array_init (%.loc21_3.4, %.loc21_3.7, %.loc21_3.10, %.loc21_3.13, %.loc21_3.16, %.loc21_3.19) to %ints.var [template = constants.%array.11d] +// CHECK:STDOUT: %.loc21_4: init %array_type.a36 = converted %.loc21_3.1, %.loc21_3.20 [template = constants.%array.11d] // CHECK:STDOUT: assign %ints.var, %.loc21_4 -// CHECK:STDOUT: %floats.var: ref %array_type.2 = var floats -// CHECK:STDOUT: %floats: ref %array_type.2 = bind_name floats, %floats.var -// CHECK:STDOUT: %float.loc23: f64 = float_literal 0.90000000000000002 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc24: f64 = float_literal 8 [template = constants.%float.2] -// CHECK:STDOUT: %float.loc25: f64 = float_literal 80 [template = constants.%float.3] -// CHECK:STDOUT: %float.loc26: f64 = float_literal 1.0E+7 [template = constants.%float.4] -// CHECK:STDOUT: %float.loc27: f64 = float_literal 1.0E+8 [template = constants.%float.5] -// CHECK:STDOUT: %float.loc28: f64 = float_literal 1.0E-8 [template = constants.%float.6] -// CHECK:STDOUT: %.loc29_3.1: %tuple.type.2 = tuple_literal (%float.loc23, %float.loc24, %float.loc25, %float.loc26, %float.loc27, %float.loc28) +// CHECK:STDOUT: %floats.var: ref %array_type.72b = var floats +// CHECK:STDOUT: %floats: ref %array_type.72b = bind_name floats, %floats.var +// CHECK:STDOUT: %float.loc23: f64 = float_literal 0.90000000000000002 [template = constants.%float.952] +// CHECK:STDOUT: %float.loc24: f64 = float_literal 8 [template = constants.%float.298] +// CHECK:STDOUT: %float.loc25: f64 = float_literal 80 [template = constants.%float.dcb] +// CHECK:STDOUT: %float.loc26: f64 = float_literal 1.0E+7 [template = constants.%float.1d0] +// CHECK:STDOUT: %float.loc27: f64 = float_literal 1.0E+8 [template = constants.%float.9f6] +// CHECK:STDOUT: %float.loc28: f64 = float_literal 1.0E-8 [template = constants.%float.401] +// CHECK:STDOUT: %.loc29_3.1: %tuple.type.635 = tuple_literal (%float.loc23, %float.loc24, %float.loc25, %float.loc26, %float.loc27, %float.loc28) // CHECK:STDOUT: %int_0.loc29: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc29_3.2: ref f64 = array_index %floats.var, %int_0.loc29 -// CHECK:STDOUT: %.loc29_3.3: init f64 = initialize_from %float.loc23 to %.loc29_3.2 [template = constants.%float.1] +// CHECK:STDOUT: %.loc29_3.3: init f64 = initialize_from %float.loc23 to %.loc29_3.2 [template = constants.%float.952] // CHECK:STDOUT: %int_1.loc29: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %.loc29_3.4: ref f64 = array_index %floats.var, %int_1.loc29 -// CHECK:STDOUT: %.loc29_3.5: init f64 = initialize_from %float.loc24 to %.loc29_3.4 [template = constants.%float.2] +// CHECK:STDOUT: %.loc29_3.5: init f64 = initialize_from %float.loc24 to %.loc29_3.4 [template = constants.%float.298] // CHECK:STDOUT: %int_2.loc29: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %.loc29_3.6: ref f64 = array_index %floats.var, %int_2.loc29 -// CHECK:STDOUT: %.loc29_3.7: init f64 = initialize_from %float.loc25 to %.loc29_3.6 [template = constants.%float.3] +// CHECK:STDOUT: %.loc29_3.7: init f64 = initialize_from %float.loc25 to %.loc29_3.6 [template = constants.%float.dcb] // CHECK:STDOUT: %int_3.loc29: Core.IntLiteral = int_value 3 [template = constants.%int_3] // CHECK:STDOUT: %.loc29_3.8: ref f64 = array_index %floats.var, %int_3.loc29 -// CHECK:STDOUT: %.loc29_3.9: init f64 = initialize_from %float.loc26 to %.loc29_3.8 [template = constants.%float.4] +// CHECK:STDOUT: %.loc29_3.9: init f64 = initialize_from %float.loc26 to %.loc29_3.8 [template = constants.%float.1d0] // CHECK:STDOUT: %int_4.loc29: Core.IntLiteral = int_value 4 [template = constants.%int_4] // CHECK:STDOUT: %.loc29_3.10: ref f64 = array_index %floats.var, %int_4.loc29 -// CHECK:STDOUT: %.loc29_3.11: init f64 = initialize_from %float.loc27 to %.loc29_3.10 [template = constants.%float.5] +// CHECK:STDOUT: %.loc29_3.11: init f64 = initialize_from %float.loc27 to %.loc29_3.10 [template = constants.%float.9f6] // CHECK:STDOUT: %int_5.loc29: Core.IntLiteral = int_value 5 [template = constants.%int_5] // CHECK:STDOUT: %.loc29_3.12: ref f64 = array_index %floats.var, %int_5.loc29 -// CHECK:STDOUT: %.loc29_3.13: init f64 = initialize_from %float.loc28 to %.loc29_3.12 [template = constants.%float.6] -// CHECK:STDOUT: %.loc29_3.14: init %array_type.2 = array_init (%.loc29_3.3, %.loc29_3.5, %.loc29_3.7, %.loc29_3.9, %.loc29_3.11, %.loc29_3.13) to %floats.var [template = constants.%array.2] -// CHECK:STDOUT: %.loc29_4: init %array_type.2 = converted %.loc29_3.1, %.loc29_3.14 [template = constants.%array.2] +// CHECK:STDOUT: %.loc29_3.13: init f64 = initialize_from %float.loc28 to %.loc29_3.12 [template = constants.%float.401] +// CHECK:STDOUT: %.loc29_3.14: init %array_type.72b = array_init (%.loc29_3.3, %.loc29_3.5, %.loc29_3.7, %.loc29_3.9, %.loc29_3.11, %.loc29_3.13) to %floats.var [template = constants.%array.a2f] +// CHECK:STDOUT: %.loc29_4: init %array_type.72b = converted %.loc29_3.1, %.loc29_3.14 [template = constants.%array.a2f] // CHECK:STDOUT: assign %floats.var, %.loc29_4 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/parens.carbon b/toolchain/check/testdata/basics/parens.carbon index 9b45bc356a6e..d947a0f156ab 100644 --- a/toolchain/check/testdata/basics/parens.carbon +++ b/toolchain/check/testdata/basics/parens.carbon @@ -16,24 +16,24 @@ var b: i32 = ((2)); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,19 +54,19 @@ var b: i32 = ((2)); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_1, %impl.elem0.loc11 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11: init %i32 = converted %int_1, %int.convert_checked.loc11 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_1, %impl.elem0.loc11 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11: init %i32 = converted %int_1, %int.convert_checked.loc11 [template = constants.%int_1.c60] // CHECK:STDOUT: assign file.%a.var, %.loc11 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_2, %impl.elem0.loc12 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_2, %int.convert_checked.loc12 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_2, %impl.elem0.loc12 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_2, %int.convert_checked.loc12 [template = constants.%int_2.166] // CHECK:STDOUT: assign file.%b.var, %.loc12 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/basics/run_i32.carbon b/toolchain/check/testdata/basics/run_i32.carbon index e8f0dcb15274..377e5a54c7e9 100644 --- a/toolchain/check/testdata/basics/run_i32.carbon +++ b/toolchain/check/testdata/basics/run_i32.carbon @@ -17,20 +17,20 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -57,13 +57,13 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_27.2: %i32 = converted %int_0, %.loc11_27.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_27.2: %i32 = converted %int_0, %.loc11_27.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc11_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/type_literals.carbon b/toolchain/check/testdata/basics/type_literals.carbon index 20feaf723feb..e7e480d6de19 100644 --- a/toolchain/check/testdata/basics/type_literals.carbon +++ b/toolchain/check/testdata/basics/type_literals.carbon @@ -138,7 +138,7 @@ var test_f128: f128; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -180,7 +180,7 @@ var test_f128: f128; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .UInt = %import_ref.1 +// CHECK:STDOUT: .UInt = %import_ref.b2c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/bool/eq.carbon b/toolchain/check/testdata/builtins/bool/eq.carbon index 484dbc9560da..4ee90d676e02 100644 --- a/toolchain/check/testdata/builtins/bool/eq.carbon +++ b/toolchain/check/testdata/builtins/bool/eq.carbon @@ -49,15 +49,15 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %B.patt: bool = symbolic_binding_pattern B, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%B) [symbolic] +// CHECK:STDOUT: %C.a1d: type = class_type @C, @C(%B) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%true) [template] +// CHECK:STDOUT: %C.ec9: type = class_type @C, @C(%true) [template] // CHECK:STDOUT: %True.type: type = fn_type @True [template] // CHECK:STDOUT: %True: %True.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%false) [template] +// CHECK:STDOUT: %C.9f8: type = class_type @C, @C(%false) [template] // CHECK:STDOUT: %False.type: type = fn_type @False [template] // CHECK:STDOUT: %False: %False.type = struct_value () [template] // CHECK:STDOUT: } @@ -124,33 +124,33 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %B.loc6_9.1: bool = bind_symbolic_name B, 0, %B.param [symbolic = %B.loc6_9.2 (constants.%B)] // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: %True.type = fn_decl @True [template = constants.%True] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.ec9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.ec9 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.ec9] +// CHECK:STDOUT: %return.param: ref %C.ec9 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.ec9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %False.decl: %False.type = fn_decl @False [template = constants.%False] { -// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.3 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.9f8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.9f8 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.3] -// CHECK:STDOUT: %return.param: ref %C.3 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.9f8] +// CHECK:STDOUT: %return.param: ref %C.9f8 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.9f8 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref %C.2 = var a -// CHECK:STDOUT: %a: ref %C.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %C.3 = var b -// CHECK:STDOUT: %b: ref %C.3 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.3 = var c -// CHECK:STDOUT: %c: ref %C.3 = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %C.2 = var d -// CHECK:STDOUT: %d: ref %C.2 = bind_name d, %d.var +// CHECK:STDOUT: %a.var: ref %C.ec9 = var a +// CHECK:STDOUT: %a: ref %C.ec9 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %C.9f8 = var b +// CHECK:STDOUT: %b: ref %C.9f8 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.9f8 = var c +// CHECK:STDOUT: %c: ref %C.9f8 = bind_name c, %c.var +// CHECK:STDOUT: %d.var: ref %C.ec9 = var d +// CHECK:STDOUT: %d: ref %C.ec9 = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%B.loc6_9.1: bool) { @@ -163,34 +163,34 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.a1d // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Eq(%a.param_patt: bool, %b.param_patt: bool) -> bool = "bool.eq"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @True() -> %C.2; +// CHECK:STDOUT: fn @True() -> %C.ec9; // CHECK:STDOUT: -// CHECK:STDOUT: fn @False() -> %C.3; +// CHECK:STDOUT: fn @False() -> %C.9f8; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %True.ref.loc11: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc11: ref %C.2 = splice_block file.%a.var {} -// CHECK:STDOUT: %True.call.loc11: init %C.2 = call %True.ref.loc11() to %.loc11 +// CHECK:STDOUT: %.loc11: ref %C.ec9 = splice_block file.%a.var {} +// CHECK:STDOUT: %True.call.loc11: init %C.ec9 = call %True.ref.loc11() to %.loc11 // CHECK:STDOUT: assign file.%a.var, %True.call.loc11 // CHECK:STDOUT: %False.ref.loc12: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc12: ref %C.3 = splice_block file.%b.var {} -// CHECK:STDOUT: %False.call.loc12: init %C.3 = call %False.ref.loc12() to %.loc12 +// CHECK:STDOUT: %.loc12: ref %C.9f8 = splice_block file.%b.var {} +// CHECK:STDOUT: %False.call.loc12: init %C.9f8 = call %False.ref.loc12() to %.loc12 // CHECK:STDOUT: assign file.%b.var, %False.call.loc12 // CHECK:STDOUT: %False.ref.loc13: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc13: ref %C.3 = splice_block file.%c.var {} -// CHECK:STDOUT: %False.call.loc13: init %C.3 = call %False.ref.loc13() to %.loc13 +// CHECK:STDOUT: %.loc13: ref %C.9f8 = splice_block file.%c.var {} +// CHECK:STDOUT: %False.call.loc13: init %C.9f8 = call %False.ref.loc13() to %.loc13 // CHECK:STDOUT: assign file.%c.var, %False.call.loc13 // CHECK:STDOUT: %True.ref.loc14: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc14: ref %C.2 = splice_block file.%d.var {} -// CHECK:STDOUT: %True.call.loc14: init %C.2 = call %True.ref.loc14() to %.loc14 +// CHECK:STDOUT: %.loc14: ref %C.ec9 = splice_block file.%d.var {} +// CHECK:STDOUT: %True.call.loc14: init %C.ec9 = call %True.ref.loc14() to %.loc14 // CHECK:STDOUT: assign file.%d.var, %True.call.loc14 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -223,23 +223,23 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %B.patt: bool = symbolic_binding_pattern B, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%B) [symbolic] +// CHECK:STDOUT: %C.a1d: type = class_type @C, @C(%B) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%true) [template] +// CHECK:STDOUT: %C.ec9: type = class_type @C, @C(%true) [template] // CHECK:STDOUT: %True.type: type = fn_type @True [template] // CHECK:STDOUT: %True: %True.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%false) [template] +// CHECK:STDOUT: %C.9f8: type = class_type @C, @C(%false) [template] // CHECK:STDOUT: %False.type: type = fn_type @False [template] // CHECK:STDOUT: %False: %False.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Eq = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Eq = %import_ref.32e // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -270,33 +270,33 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %B.loc4_9.1: bool = bind_symbolic_name B, 0, %B.param [symbolic = %B.loc4_9.2 (constants.%B)] // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: %True.type = fn_decl @True [template = constants.%True] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.ec9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.ec9 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.ec9] +// CHECK:STDOUT: %return.param: ref %C.ec9 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.ec9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %False.decl: %False.type = fn_decl @False [template = constants.%False] { -// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.3 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.9f8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.9f8 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.3] -// CHECK:STDOUT: %return.param: ref %C.3 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.9f8] +// CHECK:STDOUT: %return.param: ref %C.9f8 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.9f8 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref %C.2 = var a -// CHECK:STDOUT: %a: ref %C.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %C.3 = var b -// CHECK:STDOUT: %b: ref %C.3 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.3 = var c -// CHECK:STDOUT: %c: ref %C.3 = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %C.2 = var d -// CHECK:STDOUT: %d: ref %C.2 = bind_name d, %d.var +// CHECK:STDOUT: %a.var: ref %C.ec9 = var a +// CHECK:STDOUT: %a: ref %C.ec9 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %C.9f8 = var b +// CHECK:STDOUT: %b: ref %C.9f8 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.9f8 = var c +// CHECK:STDOUT: %c: ref %C.9f8 = bind_name c, %c.var +// CHECK:STDOUT: %d.var: ref %C.ec9 = var d +// CHECK:STDOUT: %d: ref %C.ec9 = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%B.loc4_9.1: bool) { @@ -309,32 +309,32 @@ var d: C(false == false) = True(); // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.a1d // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @True() -> %C.2; +// CHECK:STDOUT: fn @True() -> %C.ec9; // CHECK:STDOUT: -// CHECK:STDOUT: fn @False() -> %C.3; +// CHECK:STDOUT: fn @False() -> %C.9f8; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %True.ref.loc9: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc9: ref %C.2 = splice_block file.%a.var {} -// CHECK:STDOUT: %True.call.loc9: init %C.2 = call %True.ref.loc9() to %.loc9 +// CHECK:STDOUT: %.loc9: ref %C.ec9 = splice_block file.%a.var {} +// CHECK:STDOUT: %True.call.loc9: init %C.ec9 = call %True.ref.loc9() to %.loc9 // CHECK:STDOUT: assign file.%a.var, %True.call.loc9 // CHECK:STDOUT: %False.ref.loc10: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc10: ref %C.3 = splice_block file.%b.var {} -// CHECK:STDOUT: %False.call.loc10: init %C.3 = call %False.ref.loc10() to %.loc10 +// CHECK:STDOUT: %.loc10: ref %C.9f8 = splice_block file.%b.var {} +// CHECK:STDOUT: %False.call.loc10: init %C.9f8 = call %False.ref.loc10() to %.loc10 // CHECK:STDOUT: assign file.%b.var, %False.call.loc10 // CHECK:STDOUT: %False.ref.loc11: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc11: ref %C.3 = splice_block file.%c.var {} -// CHECK:STDOUT: %False.call.loc11: init %C.3 = call %False.ref.loc11() to %.loc11 +// CHECK:STDOUT: %.loc11: ref %C.9f8 = splice_block file.%c.var {} +// CHECK:STDOUT: %False.call.loc11: init %C.9f8 = call %False.ref.loc11() to %.loc11 // CHECK:STDOUT: assign file.%c.var, %False.call.loc11 // CHECK:STDOUT: %True.ref.loc12: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc12: ref %C.2 = splice_block file.%d.var {} -// CHECK:STDOUT: %True.call.loc12: init %C.2 = call %True.ref.loc12() to %.loc12 +// CHECK:STDOUT: %.loc12: ref %C.ec9 = splice_block file.%d.var {} +// CHECK:STDOUT: %True.call.loc12: init %C.ec9 = call %True.ref.loc12() to %.loc12 // CHECK:STDOUT: assign file.%d.var, %True.call.loc12 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/bool/neq.carbon b/toolchain/check/testdata/builtins/bool/neq.carbon index 8fdb932d141e..278f2ac0b2b0 100644 --- a/toolchain/check/testdata/builtins/bool/neq.carbon +++ b/toolchain/check/testdata/builtins/bool/neq.carbon @@ -49,15 +49,15 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %B.patt: bool = symbolic_binding_pattern B, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%B) [symbolic] +// CHECK:STDOUT: %C.a1d: type = class_type @C, @C(%B) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%true) [template] +// CHECK:STDOUT: %C.ec9: type = class_type @C, @C(%true) [template] // CHECK:STDOUT: %True.type: type = fn_type @True [template] // CHECK:STDOUT: %True: %True.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%false) [template] +// CHECK:STDOUT: %C.9f8: type = class_type @C, @C(%false) [template] // CHECK:STDOUT: %False.type: type = fn_type @False [template] // CHECK:STDOUT: %False: %False.type = struct_value () [template] // CHECK:STDOUT: } @@ -124,33 +124,33 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %B.loc6_9.1: bool = bind_symbolic_name B, 0, %B.param [symbolic = %B.loc6_9.2 (constants.%B)] // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: %True.type = fn_decl @True [template = constants.%True] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.ec9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.ec9 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.ec9] +// CHECK:STDOUT: %return.param: ref %C.ec9 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.ec9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %False.decl: %False.type = fn_decl @False [template = constants.%False] { -// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.3 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.9f8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.9f8 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.3] -// CHECK:STDOUT: %return.param: ref %C.3 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.9f8] +// CHECK:STDOUT: %return.param: ref %C.9f8 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.9f8 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref %C.3 = var a -// CHECK:STDOUT: %a: ref %C.3 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %C.2 = var b -// CHECK:STDOUT: %b: ref %C.2 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.2 = var c -// CHECK:STDOUT: %c: ref %C.2 = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %C.3 = var d -// CHECK:STDOUT: %d: ref %C.3 = bind_name d, %d.var +// CHECK:STDOUT: %a.var: ref %C.9f8 = var a +// CHECK:STDOUT: %a: ref %C.9f8 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %C.ec9 = var b +// CHECK:STDOUT: %b: ref %C.ec9 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.ec9 = var c +// CHECK:STDOUT: %c: ref %C.ec9 = bind_name c, %c.var +// CHECK:STDOUT: %d.var: ref %C.9f8 = var d +// CHECK:STDOUT: %d: ref %C.9f8 = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%B.loc6_9.1: bool) { @@ -163,34 +163,34 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.a1d // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Neq(%a.param_patt: bool, %b.param_patt: bool) -> bool = "bool.neq"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @True() -> %C.2; +// CHECK:STDOUT: fn @True() -> %C.ec9; // CHECK:STDOUT: -// CHECK:STDOUT: fn @False() -> %C.3; +// CHECK:STDOUT: fn @False() -> %C.9f8; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %False.ref.loc11: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc11: ref %C.3 = splice_block file.%a.var {} -// CHECK:STDOUT: %False.call.loc11: init %C.3 = call %False.ref.loc11() to %.loc11 +// CHECK:STDOUT: %.loc11: ref %C.9f8 = splice_block file.%a.var {} +// CHECK:STDOUT: %False.call.loc11: init %C.9f8 = call %False.ref.loc11() to %.loc11 // CHECK:STDOUT: assign file.%a.var, %False.call.loc11 // CHECK:STDOUT: %True.ref.loc12: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc12: ref %C.2 = splice_block file.%b.var {} -// CHECK:STDOUT: %True.call.loc12: init %C.2 = call %True.ref.loc12() to %.loc12 +// CHECK:STDOUT: %.loc12: ref %C.ec9 = splice_block file.%b.var {} +// CHECK:STDOUT: %True.call.loc12: init %C.ec9 = call %True.ref.loc12() to %.loc12 // CHECK:STDOUT: assign file.%b.var, %True.call.loc12 // CHECK:STDOUT: %True.ref.loc13: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc13: ref %C.2 = splice_block file.%c.var {} -// CHECK:STDOUT: %True.call.loc13: init %C.2 = call %True.ref.loc13() to %.loc13 +// CHECK:STDOUT: %.loc13: ref %C.ec9 = splice_block file.%c.var {} +// CHECK:STDOUT: %True.call.loc13: init %C.ec9 = call %True.ref.loc13() to %.loc13 // CHECK:STDOUT: assign file.%c.var, %True.call.loc13 // CHECK:STDOUT: %False.ref.loc14: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc14: ref %C.3 = splice_block file.%d.var {} -// CHECK:STDOUT: %False.call.loc14: init %C.3 = call %False.ref.loc14() to %.loc14 +// CHECK:STDOUT: %.loc14: ref %C.9f8 = splice_block file.%d.var {} +// CHECK:STDOUT: %False.call.loc14: init %C.9f8 = call %False.ref.loc14() to %.loc14 // CHECK:STDOUT: assign file.%d.var, %False.call.loc14 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -223,23 +223,23 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %B.patt: bool = symbolic_binding_pattern B, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%B) [symbolic] +// CHECK:STDOUT: %C.a1d: type = class_type @C, @C(%B) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%true) [template] +// CHECK:STDOUT: %C.ec9: type = class_type @C, @C(%true) [template] // CHECK:STDOUT: %True.type: type = fn_type @True [template] // CHECK:STDOUT: %True: %True.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%false) [template] +// CHECK:STDOUT: %C.9f8: type = class_type @C, @C(%false) [template] // CHECK:STDOUT: %False.type: type = fn_type @False [template] // CHECK:STDOUT: %False: %False.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Eq = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Eq = %import_ref.32e // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -270,33 +270,33 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %B.loc4_9.1: bool = bind_symbolic_name B, 0, %B.param [symbolic = %B.loc4_9.2 (constants.%B)] // CHECK:STDOUT: } // CHECK:STDOUT: %True.decl: %True.type = fn_decl @True [template = constants.%True] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.ec9 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.ec9 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%true) [template = constants.%C.ec9] +// CHECK:STDOUT: %return.param: ref %C.ec9 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.ec9 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %False.decl: %False.type = fn_decl @False [template = constants.%False] { -// CHECK:STDOUT: %return.patt: %C.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.3 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.9f8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.9f8 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.3] -// CHECK:STDOUT: %return.param: ref %C.3 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.3 = return_slot %return.param +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%false) [template = constants.%C.9f8] +// CHECK:STDOUT: %return.param: ref %C.9f8 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.9f8 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref %C.3 = var a -// CHECK:STDOUT: %a: ref %C.3 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %C.2 = var b -// CHECK:STDOUT: %b: ref %C.2 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.2 = var c -// CHECK:STDOUT: %c: ref %C.2 = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %C.3 = var d -// CHECK:STDOUT: %d: ref %C.3 = bind_name d, %d.var +// CHECK:STDOUT: %a.var: ref %C.9f8 = var a +// CHECK:STDOUT: %a: ref %C.9f8 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %C.ec9 = var b +// CHECK:STDOUT: %b: ref %C.ec9 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.ec9 = var c +// CHECK:STDOUT: %c: ref %C.ec9 = bind_name c, %c.var +// CHECK:STDOUT: %d.var: ref %C.9f8 = var d +// CHECK:STDOUT: %d: ref %C.9f8 = bind_name d, %d.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%B.loc4_9.1: bool) { @@ -309,32 +309,32 @@ var d: C(false != false) = False(); // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.a1d // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @True() -> %C.2; +// CHECK:STDOUT: fn @True() -> %C.ec9; // CHECK:STDOUT: -// CHECK:STDOUT: fn @False() -> %C.3; +// CHECK:STDOUT: fn @False() -> %C.9f8; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %False.ref.loc9: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc9: ref %C.3 = splice_block file.%a.var {} -// CHECK:STDOUT: %False.call.loc9: init %C.3 = call %False.ref.loc9() to %.loc9 +// CHECK:STDOUT: %.loc9: ref %C.9f8 = splice_block file.%a.var {} +// CHECK:STDOUT: %False.call.loc9: init %C.9f8 = call %False.ref.loc9() to %.loc9 // CHECK:STDOUT: assign file.%a.var, %False.call.loc9 // CHECK:STDOUT: %True.ref.loc10: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc10: ref %C.2 = splice_block file.%b.var {} -// CHECK:STDOUT: %True.call.loc10: init %C.2 = call %True.ref.loc10() to %.loc10 +// CHECK:STDOUT: %.loc10: ref %C.ec9 = splice_block file.%b.var {} +// CHECK:STDOUT: %True.call.loc10: init %C.ec9 = call %True.ref.loc10() to %.loc10 // CHECK:STDOUT: assign file.%b.var, %True.call.loc10 // CHECK:STDOUT: %True.ref.loc11: %True.type = name_ref True, file.%True.decl [template = constants.%True] -// CHECK:STDOUT: %.loc11: ref %C.2 = splice_block file.%c.var {} -// CHECK:STDOUT: %True.call.loc11: init %C.2 = call %True.ref.loc11() to %.loc11 +// CHECK:STDOUT: %.loc11: ref %C.ec9 = splice_block file.%c.var {} +// CHECK:STDOUT: %True.call.loc11: init %C.ec9 = call %True.ref.loc11() to %.loc11 // CHECK:STDOUT: assign file.%c.var, %True.call.loc11 // CHECK:STDOUT: %False.ref.loc12: %False.type = name_ref False, file.%False.decl [template = constants.%False] -// CHECK:STDOUT: %.loc12: ref %C.3 = splice_block file.%d.var {} -// CHECK:STDOUT: %False.call.loc12: init %C.3 = call %False.ref.loc12() to %.loc12 +// CHECK:STDOUT: %.loc12: ref %C.9f8 = splice_block file.%d.var {} +// CHECK:STDOUT: %False.call.loc12: init %C.9f8 = call %False.ref.loc12() to %.loc12 // CHECK:STDOUT: assign file.%d.var, %False.call.loc12 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/add.carbon b/toolchain/check/testdata/builtins/float/add.carbon index ad666ec1684a..19c2c932cc06 100644 --- a/toolchain/check/testdata/builtins/float/add.carbon +++ b/toolchain/check/testdata/builtins/float/add.carbon @@ -60,9 +60,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Add: %Add.type = struct_value () [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 2.2000000000000002 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2.3000000000000003 [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 4.5 [template] +// CHECK:STDOUT: %float.9f7: f64 = float_literal 2.2000000000000002 [template] +// CHECK:STDOUT: %float.930: f64 = float_literal 2.3000000000000003 [template] +// CHECK:STDOUT: %float.750: f64 = float_literal 4.5 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -163,9 +163,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Add.ref: %Add.type = name_ref Add, file.%Add.decl [template = constants.%Add] -// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2.2000000000000002 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 2.3000000000000003 [template = constants.%float.2] -// CHECK:STDOUT: %float.add: init f64 = call %Add.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.3] +// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2.2000000000000002 [template = constants.%float.9f7] +// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 2.3000000000000003 [template = constants.%float.930] +// CHECK:STDOUT: %float.add: init f64 = call %Add.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.750] // CHECK:STDOUT: assign file.%x.var, %float.add // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -196,8 +196,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/div.carbon b/toolchain/check/testdata/builtins/float/div.carbon index 791c9a610dd1..640be984889c 100644 --- a/toolchain/check/testdata/builtins/float/div.carbon +++ b/toolchain/check/testdata/builtins/float/div.carbon @@ -62,13 +62,13 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Div: %Div.type = struct_value () [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 10 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2.5 [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 4 [template] -// CHECK:STDOUT: %float.4: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.5: f64 = float_literal 0 [template] -// CHECK:STDOUT: %float.6: f64 = float_literal +Inf [template] -// CHECK:STDOUT: %float.7: f64 = float_literal NaN [template] +// CHECK:STDOUT: %float.9a5: f64 = float_literal 10 [template] +// CHECK:STDOUT: %float.33c: f64 = float_literal 2.5 [template] +// CHECK:STDOUT: %float.a5c: f64 = float_literal 4 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.555: f64 = float_literal 0 [template] +// CHECK:STDOUT: %float.bd4: f64 = float_literal +Inf [template] +// CHECK:STDOUT: %float.8b7: f64 = float_literal NaN [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -171,23 +171,23 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Div.ref.loc8: %Div.type = name_ref Div, file.%Div.decl [template = constants.%Div] -// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 10 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_24: f64 = float_literal 2.5 [template = constants.%float.2] -// CHECK:STDOUT: %float.div.loc8: init f64 = call %Div.ref.loc8(%float.loc8_18, %float.loc8_24) [template = constants.%float.3] +// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 10 [template = constants.%float.9a5] +// CHECK:STDOUT: %float.loc8_24: f64 = float_literal 2.5 [template = constants.%float.33c] +// CHECK:STDOUT: %float.div.loc8: init f64 = call %Div.ref.loc8(%float.loc8_18, %float.loc8_24) [template = constants.%float.a5c] // CHECK:STDOUT: assign file.%a.var, %float.div.loc8 // CHECK:STDOUT: %Div.ref.loc9: %Div.type = name_ref Div, file.%Div.decl [template = constants.%Div] -// CHECK:STDOUT: %float.loc9_18: f64 = float_literal 1 [template = constants.%float.4] -// CHECK:STDOUT: %float.loc9_23: f64 = float_literal 0 [template = constants.%float.5] -// CHECK:STDOUT: %float.div.loc9: init f64 = call %Div.ref.loc9(%float.loc9_18, %float.loc9_23) [template = constants.%float.6] -// CHECK:STDOUT: %.loc9_27.1: f64 = value_of_initializer %float.div.loc9 [template = constants.%float.6] -// CHECK:STDOUT: %.loc9_27.2: f64 = converted %float.div.loc9, %.loc9_27.1 [template = constants.%float.6] +// CHECK:STDOUT: %float.loc9_18: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_23: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %float.div.loc9: init f64 = call %Div.ref.loc9(%float.loc9_18, %float.loc9_23) [template = constants.%float.bd4] +// CHECK:STDOUT: %.loc9_27.1: f64 = value_of_initializer %float.div.loc9 [template = constants.%float.bd4] +// CHECK:STDOUT: %.loc9_27.2: f64 = converted %float.div.loc9, %.loc9_27.1 [template = constants.%float.bd4] // CHECK:STDOUT: %b: f64 = bind_name b, %.loc9_27.2 // CHECK:STDOUT: %Div.ref.loc10: %Div.type = name_ref Div, file.%Div.decl [template = constants.%Div] -// CHECK:STDOUT: %float.loc10_18: f64 = float_literal 0 [template = constants.%float.5] -// CHECK:STDOUT: %float.loc10_23: f64 = float_literal 0 [template = constants.%float.5] -// CHECK:STDOUT: %float.div.loc10: init f64 = call %Div.ref.loc10(%float.loc10_18, %float.loc10_23) [template = constants.%float.7] -// CHECK:STDOUT: %.loc10_27.1: f64 = value_of_initializer %float.div.loc10 [template = constants.%float.7] -// CHECK:STDOUT: %.loc10_27.2: f64 = converted %float.div.loc10, %.loc10_27.1 [template = constants.%float.7] +// CHECK:STDOUT: %float.loc10_18: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %float.loc10_23: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %float.div.loc10: init f64 = call %Div.ref.loc10(%float.loc10_18, %float.loc10_23) [template = constants.%float.8b7] +// CHECK:STDOUT: %.loc10_27.1: f64 = value_of_initializer %float.div.loc10 [template = constants.%float.8b7] +// CHECK:STDOUT: %.loc10_27.2: f64 = converted %float.div.loc10, %.loc10_27.1 [template = constants.%float.8b7] // CHECK:STDOUT: %c: f64 = bind_name c, %.loc10_27.2 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -218,8 +218,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/eq.carbon b/toolchain/check/testdata/builtins/float/eq.carbon index bc8ab7a3a0b0..2d554093c437 100644 --- a/toolchain/check/testdata/builtins/float/eq.carbon +++ b/toolchain/check/testdata/builtins/float/eq.carbon @@ -49,9 +49,9 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] @@ -59,8 +59,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -175,8 +175,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true_.ref: %True = name_ref true_, %true_ // CHECK:STDOUT: %Eq.ref.loc8: %Eq.type = name_ref Eq, file.%Eq.decl [template = constants.%Eq] -// CHECK:STDOUT: %float.loc8_19: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_24: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc8_19: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc8_24: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.eq.loc8: init bool = call %Eq.ref.loc8(%float.loc8_19, %float.loc8_24) [template = constants.%true] // CHECK:STDOUT: %.loc8_13.1: bool = value_of_initializer %float.eq.loc8 [template = constants.%true] // CHECK:STDOUT: %.loc8_13.2: bool = converted %float.eq.loc8, %.loc8_13.1 [template = constants.%true] @@ -194,8 +194,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: %.loc8_13.3: type = block_arg !if.expr.result.loc8 [template = constants.%True] // CHECK:STDOUT: %false_.ref: %False = name_ref false_, %false_ // CHECK:STDOUT: %Eq.ref.loc9: %Eq.type = name_ref Eq, file.%Eq.decl [template = constants.%Eq] -// CHECK:STDOUT: %float.loc9_20: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_25: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc9_20: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_25: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.eq.loc9: init bool = call %Eq.ref.loc9(%float.loc9_20, %float.loc9_25) [template = constants.%false] // CHECK:STDOUT: %.loc9_14.1: bool = value_of_initializer %float.eq.loc9 [template = constants.%false] // CHECK:STDOUT: %.loc9_14.2: bool = converted %float.eq.loc9, %.loc9_14.1 [template = constants.%false] diff --git a/toolchain/check/testdata/builtins/float/greater.carbon b/toolchain/check/testdata/builtins/float/greater.carbon index c1eb849504c6..128403518549 100644 --- a/toolchain/check/testdata/builtins/float/greater.carbon +++ b/toolchain/check/testdata/builtins/float/greater.carbon @@ -46,20 +46,20 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 0 [template] +// CHECK:STDOUT: %float.555: f64 = float_literal 0 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %float.4: f64 = float_literal -1 [template] +// CHECK:STDOUT: %float.f51: f64 = float_literal -1 [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -198,8 +198,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %false_.ref.loc9: %False = name_ref false_, %false_ // CHECK:STDOUT: %Greater.ref.loc9: %Greater.type = name_ref Greater, file.%Greater.decl [template = constants.%Greater] -// CHECK:STDOUT: %float.loc9_25: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_30: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc9_25: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_30: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.greater.loc9: init bool = call %Greater.ref.loc9(%float.loc9_25, %float.loc9_30) [template = constants.%false] // CHECK:STDOUT: %.loc9_14.1: bool = value_of_initializer %float.greater.loc9 [template = constants.%false] // CHECK:STDOUT: %.loc9_14.2: bool = converted %float.greater.loc9, %.loc9_14.1 [template = constants.%false] @@ -217,8 +217,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc9_14.3: type = block_arg !if.expr.result.loc9 [template = constants.%False] // CHECK:STDOUT: %false_.ref.loc10: %False = name_ref false_, %false_ // CHECK:STDOUT: %Greater.ref.loc10: %Greater.type = name_ref Greater, file.%Greater.decl [template = constants.%Greater] -// CHECK:STDOUT: %float.loc10_25: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc10_30: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc10_25: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc10_30: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.greater.loc10: init bool = call %Greater.ref.loc10(%float.loc10_25, %float.loc10_30) [template = constants.%false] // CHECK:STDOUT: %.loc10_14.1: bool = value_of_initializer %float.greater.loc10 [template = constants.%false] // CHECK:STDOUT: %.loc10_14.2: bool = converted %float.greater.loc10, %.loc10_14.1 [template = constants.%false] @@ -236,8 +236,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc10_14.3: type = block_arg !if.expr.result.loc10 [template = constants.%False] // CHECK:STDOUT: %true_.ref.loc11: %True = name_ref true_, %true_ // CHECK:STDOUT: %Greater.ref.loc11: %Greater.type = name_ref Greater, file.%Greater.decl [template = constants.%Greater] -// CHECK:STDOUT: %float.loc11_24: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc11_29: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc11_24: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc11_29: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %float.greater.loc11: init bool = call %Greater.ref.loc11(%float.loc11_24, %float.loc11_29) [template = constants.%true] // CHECK:STDOUT: %.loc11_13.1: bool = value_of_initializer %float.greater.loc11 [template = constants.%true] // CHECK:STDOUT: %.loc11_13.2: bool = converted %float.greater.loc11, %.loc11_13.1 [template = constants.%true] @@ -256,11 +256,11 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %false_.ref.loc12: %False = name_ref false_, %false_ // CHECK:STDOUT: %Greater.ref.loc12: %Greater.type = name_ref Greater, file.%Greater.decl [template = constants.%Greater] // CHECK:STDOUT: %Negate.ref.loc12: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc12_32: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_32) [template = constants.%float.4] -// CHECK:STDOUT: %float.loc12_38: f64 = float_literal 0 [template = constants.%float.3] -// CHECK:STDOUT: %.loc12_35.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.4] -// CHECK:STDOUT: %.loc12_35.2: f64 = converted %float.negate.loc12, %.loc12_35.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc12_32: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_32) [template = constants.%float.f51] +// CHECK:STDOUT: %float.loc12_38: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %.loc12_35.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc12_35.2: f64 = converted %float.negate.loc12, %.loc12_35.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.greater.loc12: init bool = call %Greater.ref.loc12(%.loc12_35.2, %float.loc12_38) [template = constants.%false] // CHECK:STDOUT: %.loc12_14.1: bool = value_of_initializer %float.greater.loc12 [template = constants.%false] // CHECK:STDOUT: %.loc12_14.2: bool = converted %float.greater.loc12, %.loc12_14.1 [template = constants.%false] @@ -278,12 +278,12 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc12_14.3: type = block_arg !if.expr.result.loc12 [template = constants.%False] // CHECK:STDOUT: %true_.ref.loc13: %True = name_ref true_, %true_ // CHECK:STDOUT: %Greater.ref.loc13: %Greater.type = name_ref Greater, file.%Greater.decl [template = constants.%Greater] -// CHECK:STDOUT: %float.loc13_24: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc13_24: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %Negate.ref.loc13: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc13_36: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_36) [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_39.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_39.2: f64 = converted %float.negate.loc13, %.loc13_39.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc13_36: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_36) [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_39.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_39.2: f64 = converted %float.negate.loc13, %.loc13_39.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.greater.loc13: init bool = call %Greater.ref.loc13(%float.loc13_24, %.loc13_39.2) [template = constants.%true] // CHECK:STDOUT: %.loc13_13.1: bool = value_of_initializer %float.greater.loc13 [template = constants.%true] // CHECK:STDOUT: %.loc13_13.2: bool = converted %float.greater.loc13, %.loc13_13.1 [template = constants.%true] diff --git a/toolchain/check/testdata/builtins/float/greater_eq.carbon b/toolchain/check/testdata/builtins/float/greater_eq.carbon index 948627bfdb41..e2ea4f7becab 100644 --- a/toolchain/check/testdata/builtins/float/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/float/greater_eq.carbon @@ -46,20 +46,20 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 0 [template] -// CHECK:STDOUT: %float.4: f64 = float_literal -1 [template] +// CHECK:STDOUT: %float.555: f64 = float_literal 0 [template] +// CHECK:STDOUT: %float.f51: f64 = float_literal -1 [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -198,8 +198,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %false_.ref.loc9: %False = name_ref false_, %false_ // CHECK:STDOUT: %GreaterEq.ref.loc9: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [template = constants.%GreaterEq] -// CHECK:STDOUT: %float.loc9_27: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_32: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc9_27: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_32: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.greater_eq.loc9: init bool = call %GreaterEq.ref.loc9(%float.loc9_27, %float.loc9_32) [template = constants.%false] // CHECK:STDOUT: %.loc9_14.1: bool = value_of_initializer %float.greater_eq.loc9 [template = constants.%false] // CHECK:STDOUT: %.loc9_14.2: bool = converted %float.greater_eq.loc9, %.loc9_14.1 [template = constants.%false] @@ -217,8 +217,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc9_14.3: type = block_arg !if.expr.result.loc9 [template = constants.%False] // CHECK:STDOUT: %true_.ref.loc10: %True = name_ref true_, %true_ // CHECK:STDOUT: %GreaterEq.ref.loc10: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [template = constants.%GreaterEq] -// CHECK:STDOUT: %float.loc10_26: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc10_31: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc10_26: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc10_31: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.greater_eq.loc10: init bool = call %GreaterEq.ref.loc10(%float.loc10_26, %float.loc10_31) [template = constants.%true] // CHECK:STDOUT: %.loc10_13.1: bool = value_of_initializer %float.greater_eq.loc10 [template = constants.%true] // CHECK:STDOUT: %.loc10_13.2: bool = converted %float.greater_eq.loc10, %.loc10_13.1 [template = constants.%true] @@ -236,8 +236,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc10_13.3: type = block_arg !if.expr.result.loc10 [template = constants.%True] // CHECK:STDOUT: %true_.ref.loc11: %True = name_ref true_, %true_ // CHECK:STDOUT: %GreaterEq.ref.loc11: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [template = constants.%GreaterEq] -// CHECK:STDOUT: %float.loc11_26: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc11_31: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc11_26: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc11_31: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %float.greater_eq.loc11: init bool = call %GreaterEq.ref.loc11(%float.loc11_26, %float.loc11_31) [template = constants.%true] // CHECK:STDOUT: %.loc11_13.1: bool = value_of_initializer %float.greater_eq.loc11 [template = constants.%true] // CHECK:STDOUT: %.loc11_13.2: bool = converted %float.greater_eq.loc11, %.loc11_13.1 [template = constants.%true] @@ -256,11 +256,11 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %false_.ref.loc12: %False = name_ref false_, %false_ // CHECK:STDOUT: %GreaterEq.ref.loc12: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [template = constants.%GreaterEq] // CHECK:STDOUT: %Negate.ref.loc12: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc12_34: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_34) [template = constants.%float.4] -// CHECK:STDOUT: %float.loc12_40: f64 = float_literal 0 [template = constants.%float.3] -// CHECK:STDOUT: %.loc12_37.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.4] -// CHECK:STDOUT: %.loc12_37.2: f64 = converted %float.negate.loc12, %.loc12_37.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc12_34: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_34) [template = constants.%float.f51] +// CHECK:STDOUT: %float.loc12_40: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %.loc12_37.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc12_37.2: f64 = converted %float.negate.loc12, %.loc12_37.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.greater_eq.loc12: init bool = call %GreaterEq.ref.loc12(%.loc12_37.2, %float.loc12_40) [template = constants.%false] // CHECK:STDOUT: %.loc12_14.1: bool = value_of_initializer %float.greater_eq.loc12 [template = constants.%false] // CHECK:STDOUT: %.loc12_14.2: bool = converted %float.greater_eq.loc12, %.loc12_14.1 [template = constants.%false] @@ -278,12 +278,12 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc12_14.3: type = block_arg !if.expr.result.loc12 [template = constants.%False] // CHECK:STDOUT: %true_.ref.loc13: %True = name_ref true_, %true_ // CHECK:STDOUT: %GreaterEq.ref.loc13: %GreaterEq.type = name_ref GreaterEq, file.%GreaterEq.decl [template = constants.%GreaterEq] -// CHECK:STDOUT: %float.loc13_26: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc13_26: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %Negate.ref.loc13: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc13_38: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_38) [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_41.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_41.2: f64 = converted %float.negate.loc13, %.loc13_41.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc13_38: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_38) [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_41.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_41.2: f64 = converted %float.negate.loc13, %.loc13_41.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.greater_eq.loc13: init bool = call %GreaterEq.ref.loc13(%float.loc13_26, %.loc13_41.2) [template = constants.%true] // CHECK:STDOUT: %.loc13_13.1: bool = value_of_initializer %float.greater_eq.loc13 [template = constants.%true] // CHECK:STDOUT: %.loc13_13.2: bool = converted %float.greater_eq.loc13, %.loc13_13.1 [template = constants.%true] diff --git a/toolchain/check/testdata/builtins/float/less.carbon b/toolchain/check/testdata/builtins/float/less.carbon index 413596f12810..498c0051a68b 100644 --- a/toolchain/check/testdata/builtins/float/less.carbon +++ b/toolchain/check/testdata/builtins/float/less.carbon @@ -46,20 +46,20 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 0 [template] -// CHECK:STDOUT: %float.4: f64 = float_literal -1 [template] +// CHECK:STDOUT: %float.555: f64 = float_literal 0 [template] +// CHECK:STDOUT: %float.f51: f64 = float_literal -1 [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -198,8 +198,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true_.ref.loc9: %True = name_ref true_, %true_ // CHECK:STDOUT: %Less.ref.loc9: %Less.type = name_ref Less, file.%Less.decl [template = constants.%Less] -// CHECK:STDOUT: %float.loc9_21: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_26: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc9_21: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_26: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.less.loc9: init bool = call %Less.ref.loc9(%float.loc9_21, %float.loc9_26) [template = constants.%true] // CHECK:STDOUT: %.loc9_13.1: bool = value_of_initializer %float.less.loc9 [template = constants.%true] // CHECK:STDOUT: %.loc9_13.2: bool = converted %float.less.loc9, %.loc9_13.1 [template = constants.%true] @@ -217,8 +217,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc9_13.3: type = block_arg !if.expr.result.loc9 [template = constants.%True] // CHECK:STDOUT: %false_.ref.loc10: %False = name_ref false_, %false_ // CHECK:STDOUT: %Less.ref.loc10: %Less.type = name_ref Less, file.%Less.decl [template = constants.%Less] -// CHECK:STDOUT: %float.loc10_22: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc10_27: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc10_22: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc10_27: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.less.loc10: init bool = call %Less.ref.loc10(%float.loc10_22, %float.loc10_27) [template = constants.%false] // CHECK:STDOUT: %.loc10_14.1: bool = value_of_initializer %float.less.loc10 [template = constants.%false] // CHECK:STDOUT: %.loc10_14.2: bool = converted %float.less.loc10, %.loc10_14.1 [template = constants.%false] @@ -236,8 +236,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc10_14.3: type = block_arg !if.expr.result.loc10 [template = constants.%False] // CHECK:STDOUT: %false_.ref.loc11: %False = name_ref false_, %false_ // CHECK:STDOUT: %Less.ref.loc11: %Less.type = name_ref Less, file.%Less.decl [template = constants.%Less] -// CHECK:STDOUT: %float.loc11_22: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc11_27: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc11_22: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc11_27: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %float.less.loc11: init bool = call %Less.ref.loc11(%float.loc11_22, %float.loc11_27) [template = constants.%false] // CHECK:STDOUT: %.loc11_14.1: bool = value_of_initializer %float.less.loc11 [template = constants.%false] // CHECK:STDOUT: %.loc11_14.2: bool = converted %float.less.loc11, %.loc11_14.1 [template = constants.%false] @@ -256,11 +256,11 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %true_.ref.loc12: %True = name_ref true_, %true_ // CHECK:STDOUT: %Less.ref.loc12: %Less.type = name_ref Less, file.%Less.decl [template = constants.%Less] // CHECK:STDOUT: %Negate.ref.loc12: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc12_28: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_28) [template = constants.%float.4] -// CHECK:STDOUT: %float.loc12_34: f64 = float_literal 0 [template = constants.%float.3] -// CHECK:STDOUT: %.loc12_31.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.4] -// CHECK:STDOUT: %.loc12_31.2: f64 = converted %float.negate.loc12, %.loc12_31.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc12_28: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_28) [template = constants.%float.f51] +// CHECK:STDOUT: %float.loc12_34: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %.loc12_31.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc12_31.2: f64 = converted %float.negate.loc12, %.loc12_31.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.less.loc12: init bool = call %Less.ref.loc12(%.loc12_31.2, %float.loc12_34) [template = constants.%true] // CHECK:STDOUT: %.loc12_13.1: bool = value_of_initializer %float.less.loc12 [template = constants.%true] // CHECK:STDOUT: %.loc12_13.2: bool = converted %float.less.loc12, %.loc12_13.1 [template = constants.%true] @@ -278,12 +278,12 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc12_13.3: type = block_arg !if.expr.result.loc12 [template = constants.%True] // CHECK:STDOUT: %false_.ref.loc13: %False = name_ref false_, %false_ // CHECK:STDOUT: %Less.ref.loc13: %Less.type = name_ref Less, file.%Less.decl [template = constants.%Less] -// CHECK:STDOUT: %float.loc13_22: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc13_22: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %Negate.ref.loc13: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc13_34: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_34) [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_37.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_37.2: f64 = converted %float.negate.loc13, %.loc13_37.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc13_34: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_34) [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_37.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_37.2: f64 = converted %float.negate.loc13, %.loc13_37.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.less.loc13: init bool = call %Less.ref.loc13(%float.loc13_22, %.loc13_37.2) [template = constants.%false] // CHECK:STDOUT: %.loc13_14.1: bool = value_of_initializer %float.less.loc13 [template = constants.%false] // CHECK:STDOUT: %.loc13_14.2: bool = converted %float.less.loc13, %.loc13_14.1 [template = constants.%false] diff --git a/toolchain/check/testdata/builtins/float/less_eq.carbon b/toolchain/check/testdata/builtins/float/less_eq.carbon index fbfa262c3da8..56b597acf51f 100644 --- a/toolchain/check/testdata/builtins/float/less_eq.carbon +++ b/toolchain/check/testdata/builtins/float/less_eq.carbon @@ -46,20 +46,20 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 0 [template] +// CHECK:STDOUT: %float.555: f64 = float_literal 0 [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %float.4: f64 = float_literal -1 [template] +// CHECK:STDOUT: %float.f51: f64 = float_literal -1 [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -198,8 +198,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true_.ref.loc9: %True = name_ref true_, %true_ // CHECK:STDOUT: %LessEq.ref.loc9: %LessEq.type = name_ref LessEq, file.%LessEq.decl [template = constants.%LessEq] -// CHECK:STDOUT: %float.loc9_23: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_28: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc9_23: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_28: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.less_eq.loc9: init bool = call %LessEq.ref.loc9(%float.loc9_23, %float.loc9_28) [template = constants.%true] // CHECK:STDOUT: %.loc9_13.1: bool = value_of_initializer %float.less_eq.loc9 [template = constants.%true] // CHECK:STDOUT: %.loc9_13.2: bool = converted %float.less_eq.loc9, %.loc9_13.1 [template = constants.%true] @@ -217,8 +217,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc9_13.3: type = block_arg !if.expr.result.loc9 [template = constants.%True] // CHECK:STDOUT: %true_.ref.loc10: %True = name_ref true_, %true_ // CHECK:STDOUT: %LessEq.ref.loc10: %LessEq.type = name_ref LessEq, file.%LessEq.decl [template = constants.%LessEq] -// CHECK:STDOUT: %float.loc10_23: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc10_28: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc10_23: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc10_28: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.less_eq.loc10: init bool = call %LessEq.ref.loc10(%float.loc10_23, %float.loc10_28) [template = constants.%true] // CHECK:STDOUT: %.loc10_13.1: bool = value_of_initializer %float.less_eq.loc10 [template = constants.%true] // CHECK:STDOUT: %.loc10_13.2: bool = converted %float.less_eq.loc10, %.loc10_13.1 [template = constants.%true] @@ -236,8 +236,8 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc10_13.3: type = block_arg !if.expr.result.loc10 [template = constants.%True] // CHECK:STDOUT: %false_.ref.loc11: %False = name_ref false_, %false_ // CHECK:STDOUT: %LessEq.ref.loc11: %LessEq.type = name_ref LessEq, file.%LessEq.decl [template = constants.%LessEq] -// CHECK:STDOUT: %float.loc11_24: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc11_29: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc11_24: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc11_29: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %float.less_eq.loc11: init bool = call %LessEq.ref.loc11(%float.loc11_24, %float.loc11_29) [template = constants.%false] // CHECK:STDOUT: %.loc11_14.1: bool = value_of_initializer %float.less_eq.loc11 [template = constants.%false] // CHECK:STDOUT: %.loc11_14.2: bool = converted %float.less_eq.loc11, %.loc11_14.1 [template = constants.%false] @@ -256,11 +256,11 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %true_.ref.loc12: %True = name_ref true_, %true_ // CHECK:STDOUT: %LessEq.ref.loc12: %LessEq.type = name_ref LessEq, file.%LessEq.decl [template = constants.%LessEq] // CHECK:STDOUT: %Negate.ref.loc12: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc12_30: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_30) [template = constants.%float.4] -// CHECK:STDOUT: %float.loc12_36: f64 = float_literal 0 [template = constants.%float.3] -// CHECK:STDOUT: %.loc12_33.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.4] -// CHECK:STDOUT: %.loc12_33.2: f64 = converted %float.negate.loc12, %.loc12_33.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc12_30: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc12: init f64 = call %Negate.ref.loc12(%float.loc12_30) [template = constants.%float.f51] +// CHECK:STDOUT: %float.loc12_36: f64 = float_literal 0 [template = constants.%float.555] +// CHECK:STDOUT: %.loc12_33.1: f64 = value_of_initializer %float.negate.loc12 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc12_33.2: f64 = converted %float.negate.loc12, %.loc12_33.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.less_eq.loc12: init bool = call %LessEq.ref.loc12(%.loc12_33.2, %float.loc12_36) [template = constants.%true] // CHECK:STDOUT: %.loc12_13.1: bool = value_of_initializer %float.less_eq.loc12 [template = constants.%true] // CHECK:STDOUT: %.loc12_13.2: bool = converted %float.less_eq.loc12, %.loc12_13.1 [template = constants.%true] @@ -278,12 +278,12 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: %.loc12_13.3: type = block_arg !if.expr.result.loc12 [template = constants.%True] // CHECK:STDOUT: %false_.ref.loc13: %False = name_ref false_, %false_ // CHECK:STDOUT: %LessEq.ref.loc13: %LessEq.type = name_ref LessEq, file.%LessEq.decl [template = constants.%LessEq] -// CHECK:STDOUT: %float.loc13_24: f64 = float_literal 0 [template = constants.%float.3] +// CHECK:STDOUT: %float.loc13_24: f64 = float_literal 0 [template = constants.%float.555] // CHECK:STDOUT: %Negate.ref.loc13: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float.loc13_36: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_36) [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_39.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.4] -// CHECK:STDOUT: %.loc13_39.2: f64 = converted %float.negate.loc13, %.loc13_39.1 [template = constants.%float.4] +// CHECK:STDOUT: %float.loc13_36: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.negate.loc13: init f64 = call %Negate.ref.loc13(%float.loc13_36) [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_39.1: f64 = value_of_initializer %float.negate.loc13 [template = constants.%float.f51] +// CHECK:STDOUT: %.loc13_39.2: f64 = converted %float.negate.loc13, %.loc13_39.1 [template = constants.%float.f51] // CHECK:STDOUT: %float.less_eq.loc13: init bool = call %LessEq.ref.loc13(%float.loc13_24, %.loc13_39.2) [template = constants.%false] // CHECK:STDOUT: %.loc13_14.1: bool = value_of_initializer %float.less_eq.loc13 [template = constants.%false] // CHECK:STDOUT: %.loc13_14.2: bool = converted %float.less_eq.loc13, %.loc13_14.1 [template = constants.%false] diff --git a/toolchain/check/testdata/builtins/float/make_type.carbon b/toolchain/check/testdata/builtins/float/make_type.carbon index b8df2da32f4a..dcbeefdb2343 100644 --- a/toolchain/check/testdata/builtins/float/make_type.carbon +++ b/toolchain/check/testdata/builtins/float/make_type.carbon @@ -55,7 +55,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -99,10 +99,10 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, Float, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.197: %Float.type = import_ref Main//types, Float, loaded [template = constants.%Float] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Int = %import_ref.252 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -110,7 +110,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Float = imports.%import_ref.1 +// CHECK:STDOUT: .Float = imports.%import_ref.197 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .f = %f // CHECK:STDOUT: .GetFloat = %GetFloat.decl @@ -140,7 +140,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: // CHECK:STDOUT: fn @GetFloat(%dyn_size.param_patt: %i32) -> type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%import_ref.1 [template = constants.%Float] +// CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%import_ref.197 [template = constants.%Float] // CHECK:STDOUT: %dyn_size.ref: %i32 = name_ref dyn_size, %dyn_size // CHECK:STDOUT: %float.make_type: init type = call %Float.ref(%dyn_size.ref) // CHECK:STDOUT: %.loc9_25.1: type = value_of_initializer %float.make_type @@ -160,23 +160,23 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: constants { // CHECK:STDOUT: %Float.type: type = fn_type @Float [template] // CHECK:STDOUT: %Float: %Float.type = struct_value () [template] -// CHECK:STDOUT: %int_32.1: Core.IntLiteral = int_value 32 [template] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32.1) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32.1) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32.1) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %int_64.1: Core.IntLiteral = int_value 64 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_64.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32.1) [template] -// CHECK:STDOUT: %int_64.2: %i32 = int_value 64 [template] +// CHECK:STDOUT: %int_32.be0: Core.IntLiteral = int_value 32 [template] +// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32.be0) [template] +// CHECK:STDOUT: %Convert.type.e4d: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32.be0) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32.be0) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %int_64.fab: Core.IntLiteral = int_value 64 [template] +// CHECK:STDOUT: %Convert.bound.8f9: = bound_method %int_64.fab, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.124: = specific_function %Convert.bound.8f9, @Convert.2(%int_32.be0) [template] +// CHECK:STDOUT: %int_64.949: %i32 = int_value 64 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Float.type = import_ref Main//types, Float, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.197: %Float.type = import_ref Main//types, Float, loaded [template = constants.%Float] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Int = %import_ref.252 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -184,7 +184,7 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Float = imports.%import_ref.1 +// CHECK:STDOUT: .Float = imports.%import_ref.197 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .invalid_float = %invalid_float // CHECK:STDOUT: .dyn_size = %dyn_size @@ -204,12 +204,12 @@ var dyn: Float(dyn_size); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template = constants.%int_64.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_64, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32.1) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_64) [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_64, %int.convert_checked [template = constants.%int_64.2] +// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab] +// CHECK:STDOUT: %impl.elem0: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_64, %impl.elem0 [template = constants.%Convert.bound.8f9] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32.be0) [template = constants.%Convert.specific_fn.124] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_64) [template = constants.%int_64.949] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_64, %int.convert_checked [template = constants.%int_64.949] // CHECK:STDOUT: assign file.%dyn_size.var, %.loc12 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/mul.carbon b/toolchain/check/testdata/builtins/float/mul.carbon index d1a42c514827..9b5f2d496d28 100644 --- a/toolchain/check/testdata/builtins/float/mul.carbon +++ b/toolchain/check/testdata/builtins/float/mul.carbon @@ -60,9 +60,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Mul: %Mul.type = struct_value () [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 2 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 0.5 [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.c22: f64 = float_literal 0.5 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -163,9 +163,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Mul.ref: %Mul.type = name_ref Mul, file.%Mul.decl [template = constants.%Mul] -// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 0.5 [template = constants.%float.2] -// CHECK:STDOUT: %float.mul: init f64 = call %Mul.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.3] +// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2 [template = constants.%float.be3] +// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 0.5 [template = constants.%float.c22] +// CHECK:STDOUT: %float.mul: init f64 = call %Mul.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.f4e] // CHECK:STDOUT: assign file.%x.var, %float.mul // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -196,8 +196,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/negate.carbon b/toolchain/check/testdata/builtins/float/negate.carbon index 3d48c413aacc..e33da7661354 100644 --- a/toolchain/check/testdata/builtins/float/negate.carbon +++ b/toolchain/check/testdata/builtins/float/negate.carbon @@ -81,8 +81,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Negate: %Negate.type = struct_value () [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1.5 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal -1.5 [template] +// CHECK:STDOUT: %float.e93: f64 = float_literal 1.5 [template] +// CHECK:STDOUT: %float.928: f64 = float_literal -1.5 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -170,10 +170,10 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Negate.ref: %Negate.type = name_ref Negate, file.%Negate.decl [template = constants.%Negate] -// CHECK:STDOUT: %float: f64 = float_literal 1.5 [template = constants.%float.1] -// CHECK:STDOUT: %float.negate: init f64 = call %Negate.ref(%float) [template = constants.%float.2] -// CHECK:STDOUT: %.loc8_25.1: f64 = value_of_initializer %float.negate [template = constants.%float.2] -// CHECK:STDOUT: %.loc8_25.2: f64 = converted %float.negate, %.loc8_25.1 [template = constants.%float.2] +// CHECK:STDOUT: %float: f64 = float_literal 1.5 [template = constants.%float.e93] +// CHECK:STDOUT: %float.negate: init f64 = call %Negate.ref(%float) [template = constants.%float.928] +// CHECK:STDOUT: %.loc8_25.1: f64 = value_of_initializer %float.negate [template = constants.%float.928] +// CHECK:STDOUT: %.loc8_25.2: f64 = converted %float.negate, %.loc8_25.1 [template = constants.%float.928] // CHECK:STDOUT: %a: f64 = bind_name a, %.loc8_25.2 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -204,8 +204,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/float/neq.carbon b/toolchain/check/testdata/builtins/float/neq.carbon index 7e6d5002d58d..8a90834b1cd7 100644 --- a/toolchain/check/testdata/builtins/float/neq.carbon +++ b/toolchain/check/testdata/builtins/float/neq.carbon @@ -49,8 +49,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %False: type = class_type @False [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 1 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.f4e: f64 = float_literal 1 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] @@ -59,8 +59,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -175,8 +175,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true_.ref: %True = name_ref true_, %true_ // CHECK:STDOUT: %Neq.ref.loc8: %Neq.type = name_ref Neq, file.%Neq.decl [template = constants.%Neq] -// CHECK:STDOUT: %float.loc8_20: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_25: f64 = float_literal 2 [template = constants.%float.2] +// CHECK:STDOUT: %float.loc8_20: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc8_25: f64 = float_literal 2 [template = constants.%float.be3] // CHECK:STDOUT: %float.neq.loc8: init bool = call %Neq.ref.loc8(%float.loc8_20, %float.loc8_25) [template = constants.%true] // CHECK:STDOUT: %.loc8_13.1: bool = value_of_initializer %float.neq.loc8 [template = constants.%true] // CHECK:STDOUT: %.loc8_13.2: bool = converted %float.neq.loc8, %.loc8_13.1 [template = constants.%true] @@ -194,8 +194,8 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: %.loc8_13.3: type = block_arg !if.expr.result.loc8 [template = constants.%True] // CHECK:STDOUT: %false_.ref: %False = name_ref false_, %false_ // CHECK:STDOUT: %Neq.ref.loc9: %Neq.type = name_ref Neq, file.%Neq.decl [template = constants.%Neq] -// CHECK:STDOUT: %float.loc9_21: f64 = float_literal 1 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc9_26: f64 = float_literal 1 [template = constants.%float.1] +// CHECK:STDOUT: %float.loc9_21: f64 = float_literal 1 [template = constants.%float.f4e] +// CHECK:STDOUT: %float.loc9_26: f64 = float_literal 1 [template = constants.%float.f4e] // CHECK:STDOUT: %float.neq.loc9: init bool = call %Neq.ref.loc9(%float.loc9_21, %float.loc9_26) [template = constants.%false] // CHECK:STDOUT: %.loc9_14.1: bool = value_of_initializer %float.neq.loc9 [template = constants.%false] // CHECK:STDOUT: %.loc9_14.2: bool = converted %float.neq.loc9, %.loc9_14.1 [template = constants.%false] diff --git a/toolchain/check/testdata/builtins/float/sub.carbon b/toolchain/check/testdata/builtins/float/sub.carbon index 03add0c7e212..a73105c61101 100644 --- a/toolchain/check/testdata/builtins/float/sub.carbon +++ b/toolchain/check/testdata/builtins/float/sub.carbon @@ -60,9 +60,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: %Sub: %Sub.type = struct_value () [template] // CHECK:STDOUT: %RuntimeCallIsValid.type: type = fn_type @RuntimeCallIsValid [template] // CHECK:STDOUT: %RuntimeCallIsValid: %RuntimeCallIsValid.type = struct_value () [template] -// CHECK:STDOUT: %float.1: f64 = float_literal 2 [template] -// CHECK:STDOUT: %float.2: f64 = float_literal 0.5 [template] -// CHECK:STDOUT: %float.3: f64 = float_literal 1.5 [template] +// CHECK:STDOUT: %float.be3: f64 = float_literal 2 [template] +// CHECK:STDOUT: %float.c22: f64 = float_literal 0.5 [template] +// CHECK:STDOUT: %float.e93: f64 = float_literal 1.5 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -163,9 +163,9 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Sub.ref: %Sub.type = name_ref Sub, file.%Sub.decl [template = constants.%Sub] -// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2 [template = constants.%float.1] -// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 0.5 [template = constants.%float.2] -// CHECK:STDOUT: %float.sub: init f64 = call %Sub.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.3] +// CHECK:STDOUT: %float.loc8_18: f64 = float_literal 2 [template = constants.%float.be3] +// CHECK:STDOUT: %float.loc8_23: f64 = float_literal 0.5 [template = constants.%float.c22] +// CHECK:STDOUT: %float.sub: init f64 = call %Sub.ref(%float.loc8_18, %float.loc8_23) [template = constants.%float.e93] // CHECK:STDOUT: assign file.%x.var, %float.sub // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -196,8 +196,8 @@ fn RuntimeCallIsValidBadReturnType(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/print/char.carbon b/toolchain/check/testdata/builtins/print/char.carbon index c5dd2c0987f5..7d6a46e1d28d 100644 --- a/toolchain/check/testdata/builtins/print/char.carbon +++ b/toolchain/check/testdata/builtins/print/char.carbon @@ -22,36 +22,36 @@ fn Main() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %PrintChar.type.1: type = fn_type @PrintChar.1 [template] -// CHECK:STDOUT: %PrintChar.1: %PrintChar.type.1 = struct_value () [template] +// CHECK:STDOUT: %PrintChar.type.c95: type = fn_type @PrintChar.1 [template] +// CHECK:STDOUT: %PrintChar.843: %PrintChar.type.c95 = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %PrintChar.type.2: type = fn_type @PrintChar.2 [template] -// CHECK:STDOUT: %PrintChar.2: %PrintChar.type.2 = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %PrintChar.type.089: type = fn_type @PrintChar.2 [template] +// CHECK:STDOUT: %PrintChar.d75: %PrintChar.type.089 = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .PrintChar = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .PrintChar = %import_ref.d1d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//io // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: %PrintChar.type.2 = import_ref Core//io, PrintChar, loaded [template = constants.%PrintChar.2] +// CHECK:STDOUT: %import_ref.d1d: %PrintChar.type.089 = import_ref Core//io, PrintChar, loaded [template = constants.%PrintChar.d75] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,7 +61,7 @@ fn Main() { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %PrintChar.decl: %PrintChar.type.1 = fn_decl @PrintChar.1 [template = constants.%PrintChar.1] { +// CHECK:STDOUT: %PrintChar.decl: %PrintChar.type.c95 = fn_decl @PrintChar.1 [template = constants.%PrintChar.843] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -85,24 +85,24 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %PrintChar.ref.loc16: %PrintChar.type.1 = name_ref PrintChar, file.%PrintChar.decl [template = constants.%PrintChar.1] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_13.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_13.2: %i32 = converted %int_1, %.loc16_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %PrintChar.ref.loc16: %PrintChar.type.c95 = name_ref PrintChar, file.%PrintChar.decl [template = constants.%PrintChar.843] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_13.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_13.2: %i32 = converted %int_1, %.loc16_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %print.char.loc16: init %i32 = call %PrintChar.ref.loc16(%.loc16_13.2) // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %PrintChar.ref.loc17: %PrintChar.type.2 = name_ref PrintChar, imports.%import_ref.252 [template = constants.%PrintChar.2] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_2, %impl.elem0.loc17 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_18.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_18.2: %i32 = converted %int_2, %.loc17_18.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %PrintChar.ref.loc17: %PrintChar.type.089 = name_ref PrintChar, imports.%import_ref.d1d [template = constants.%PrintChar.d75] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_2, %impl.elem0.loc17 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_18.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_18.2: %i32 = converted %int_2, %.loc17_18.1 [template = constants.%int_2.166] // CHECK:STDOUT: %print.char.loc17: init %i32 = call %PrintChar.ref.loc17(%.loc17_18.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/print/int.carbon b/toolchain/check/testdata/builtins/print/int.carbon index 4502ececb5e4..4865f8be5563 100644 --- a/toolchain/check/testdata/builtins/print/int.carbon +++ b/toolchain/check/testdata/builtins/print/int.carbon @@ -24,36 +24,36 @@ fn Main() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Print.type.1: type = fn_type @Print.1 [template] -// CHECK:STDOUT: %Print.1: %Print.type.1 = struct_value () [template] +// CHECK:STDOUT: %Print.type.980: type = fn_type @Print.1 [template] +// CHECK:STDOUT: %Print.b7c: %Print.type.980 = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Print.type.2: type = fn_type @Print.2 [template] -// CHECK:STDOUT: %Print.2: %Print.type.2 = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Print.type.6ed: type = fn_type @Print.2 [template] +// CHECK:STDOUT: %Print.723: %Print.type.6ed = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Print = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Print = %import_ref.ace // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//io // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: %Print.type.2 = import_ref Core//io, Print, loaded [template = constants.%Print.2] +// CHECK:STDOUT: %import_ref.ace: %Print.type.6ed = import_ref Core//io, Print, loaded [template = constants.%Print.723] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -63,7 +63,7 @@ fn Main() { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Print.decl: %Print.type.1 = fn_decl @Print.1 [template = constants.%Print.1] { +// CHECK:STDOUT: %Print.decl: %Print.type.980 = fn_decl @Print.1 [template = constants.%Print.b7c] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -81,24 +81,24 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Print.ref.loc16: %Print.type.1 = name_ref Print, file.%Print.decl [template = constants.%Print.1] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_9.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_9.2: %i32 = converted %int_1, %.loc16_9.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %Print.ref.loc16: %Print.type.980 = name_ref Print, file.%Print.decl [template = constants.%Print.b7c] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_9.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_9.2: %i32 = converted %int_1, %.loc16_9.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %print.int.loc16: init %empty_tuple.type = call %Print.ref.loc16(%.loc16_9.2) // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Print.ref.loc18: %Print.type.2 = name_ref Print, imports.%import_ref.252 [template = constants.%Print.2] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_2, %impl.elem0.loc18 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_14.1: %i32 = value_of_initializer %int.convert_checked.loc18 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_14.2: %i32 = converted %int_2, %.loc18_14.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %Print.ref.loc18: %Print.type.6ed = name_ref Print, imports.%import_ref.ace [template = constants.%Print.723] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_2, %impl.elem0.loc18 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_14.1: %i32 = value_of_initializer %int.convert_checked.loc18 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_14.2: %i32 = converted %int_2, %.loc18_14.1 [template = constants.%int_2.166] // CHECK:STDOUT: %print.int.loc18: init %empty_tuple.type = call %Print.ref.loc18(%.loc18_14.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/builtins/read/int.carbon b/toolchain/check/testdata/builtins/read/int.carbon index 2a382b1502f8..c38b1a231e36 100644 --- a/toolchain/check/testdata/builtins/read/int.carbon +++ b/toolchain/check/testdata/builtins/read/int.carbon @@ -22,23 +22,23 @@ fn Main() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %ReadChar.type.1: type = fn_type @ReadChar.1 [template] -// CHECK:STDOUT: %ReadChar.1: %ReadChar.type.1 = struct_value () [template] +// CHECK:STDOUT: %ReadChar.type.fa8: type = fn_type @ReadChar.1 [template] +// CHECK:STDOUT: %ReadChar.7f4: %ReadChar.type.fa8 = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %ReadChar.type.2: type = fn_type @ReadChar.2 [template] -// CHECK:STDOUT: %ReadChar.2: %ReadChar.type.2 = struct_value () [template] +// CHECK:STDOUT: %ReadChar.type.9f3: type = fn_type @ReadChar.2 [template] +// CHECK:STDOUT: %ReadChar.01f: %ReadChar.type.9f3 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ReadChar = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ReadChar = %import_ref.12c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//io // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %ReadChar.type.2 = import_ref Core//io, ReadChar, loaded [template = constants.%ReadChar.2] +// CHECK:STDOUT: %import_ref.12c: %ReadChar.type.9f3 = import_ref Core//io, ReadChar, loaded [template = constants.%ReadChar.01f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -48,7 +48,7 @@ fn Main() { // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %ReadChar.decl: %ReadChar.type.1 = fn_decl @ReadChar.1 [template = constants.%ReadChar.1] { +// CHECK:STDOUT: %ReadChar.decl: %ReadChar.type.fa8 = fn_decl @ReadChar.1 [template = constants.%ReadChar.7f4] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -64,13 +64,13 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %ReadChar.ref.loc16: %ReadChar.type.1 = name_ref ReadChar, file.%ReadChar.decl [template = constants.%ReadChar.1] +// CHECK:STDOUT: %ReadChar.ref.loc16: %ReadChar.type.fa8 = name_ref ReadChar, file.%ReadChar.decl [template = constants.%ReadChar.7f4] // CHECK:STDOUT: %read.char.loc16: init %i32 = call %ReadChar.ref.loc16() // CHECK:STDOUT: %.loc16_26.1: %i32 = value_of_initializer %read.char.loc16 // CHECK:STDOUT: %.loc16_26.2: %i32 = converted %read.char.loc16, %.loc16_26.1 // CHECK:STDOUT: %n: %i32 = bind_name n, %.loc16_26.2 // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ReadChar.ref.loc17: %ReadChar.type.2 = name_ref ReadChar, imports.%import_ref.5 [template = constants.%ReadChar.2] +// CHECK:STDOUT: %ReadChar.ref.loc17: %ReadChar.type.9f3 = name_ref ReadChar, imports.%import_ref.12c [template = constants.%ReadChar.01f] // CHECK:STDOUT: %read.char.loc17: init %i32 = call %ReadChar.ref.loc17() // CHECK:STDOUT: %.loc17_31.1: %i32 = value_of_initializer %read.char.loc17 // CHECK:STDOUT: %.loc17_31.2: %i32 = converted %read.char.loc17, %.loc17_31.1 diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 1ed7a1ea2f6e..cb6b9ead3270 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -152,34 +152,34 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Circle.elem: type = unbound_element_type %Circle, %i32 [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %SomeInternalFunction.type: type = fn_type @SomeInternalFunction [template] // CHECK:STDOUT: %SomeInternalFunction: %SomeInternalFunction.type = struct_value () [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.radius.1: type = struct_type {.radius: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.radius.1 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %struct_type.radius.2: type = struct_type {.radius: Core.IntLiteral} [template] -// CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.2) [template] +// CHECK:STDOUT: %struct_type.radius.4fc: type = struct_type {.radius: %i32} [template] +// CHECK:STDOUT: %complete_type.4c9: = complete_type_witness %struct_type.radius.4fc [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %struct_type.radius.f47: type = struct_type {.radius: Core.IntLiteral} [template] +// CHECK:STDOUT: %Circle.val: %Circle = struct_value (%int_5.70b) [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -198,13 +198,13 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: class @Circle { // CHECK:STDOUT: %.loc5: %Circle.elem = field_decl radius, element0 [template] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_46.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_46.2: %i32 = converted %int_5, %.loc6_46.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_46.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_46.2: %i32 = converted %int_5, %.loc6_46.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT: %i32 = bind_name SOME_INTERNAL_CONSTANT, %.loc6_46.2 // CHECK:STDOUT: %SomeInternalFunction.decl: %SomeInternalFunction.type = fn_decl @SomeInternalFunction [template = constants.%SomeInternalFunction] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -223,7 +223,7 @@ class A { // CHECK:STDOUT: %return.param: ref %Circle = out_param runtime_param0 // CHECK:STDOUT: %return: ref %Circle = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius.4fc [template = constants.%complete_type.4c9] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle @@ -236,27 +236,27 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_13.2: %i32 = converted %int_0, %.loc9_13.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_13.2: %i32 = converted %int_0, %.loc9_13.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc9_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %Circle { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %.loc13_24.1: %struct_type.radius.2 = struct_literal (%int_5) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc13_24.2: init %i32 = converted %int_5, %int.convert_checked [template = constants.%int_5.2] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %.loc13_24.1: %struct_type.radius.f47 = struct_literal (%int_5) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc13_24.2: init %i32 = converted %int_5, %int.convert_checked [template = constants.%int_5.70b] // CHECK:STDOUT: %.loc13_24.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc13_24.4: init %i32 = initialize_from %.loc13_24.2 to %.loc13_24.3 [template = constants.%int_5.2] +// CHECK:STDOUT: %.loc13_24.4: init %i32 = initialize_from %.loc13_24.2 to %.loc13_24.3 [template = constants.%int_5.70b] // CHECK:STDOUT: %.loc13_24.5: init %Circle = class_init (%.loc13_24.4), %return [template = constants.%Circle.val] // CHECK:STDOUT: %.loc13_25: init %Circle = converted %.loc13_24.1, %.loc13_24.5 [template = constants.%Circle.val] // CHECK:STDOUT: return %.loc13_25 to %return @@ -276,7 +276,7 @@ class A { // CHECK:STDOUT: %radius: %i32 = bind_name radius, // CHECK:STDOUT: %circle.ref.loc34: %Circle = name_ref circle, %circle // CHECK:STDOUT: %radius.ref.loc34: = name_ref radius, [template = ] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] // CHECK:STDOUT: assign %radius.ref.loc34, // CHECK:STDOUT: %circle.ref.loc42: %Circle = name_ref circle, %circle // CHECK:STDOUT: %SOME_INTERNAL_CONSTANT.ref: = name_ref SOME_INTERNAL_CONSTANT, [template = ] @@ -293,14 +293,14 @@ class A { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -319,7 +319,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -349,21 +349,21 @@ class A { // CHECK:STDOUT: %Compute.type: type = fn_type @Compute [template] // CHECK:STDOUT: %Compute: %Compute.type = struct_value () [template] // CHECK:STDOUT: %struct_type.radius: type = struct_type {.radius: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.radius [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.4c9: = complete_type_witness %struct_type.radius [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -417,7 +417,7 @@ class A { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius [template = constants.%complete_type.4c9] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle @@ -439,13 +439,13 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_13.2: %i32 = converted %int_0, %.loc12_13.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_13.2: %i32 = converted %int_0, %.loc12_13.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc12_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -465,22 +465,22 @@ class A { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.1, %Convert.10 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -497,15 +497,15 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_17.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_17.2: %i32 = converted %int_5, %.loc5_17.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_17.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_17.2: %i32 = converted %int_5, %.loc5_17.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %x: %i32 = bind_name x, %.loc5_17.2 -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -527,22 +527,22 @@ class A { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.1, %Convert.10 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -560,23 +560,23 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_5.loc5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5.loc5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc5: = bound_method %int_5.loc5, %impl.elem0.loc5 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc5: = specific_function %Convert.bound.loc5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_5.loc5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_27.1: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_27.2: %i32 = converted %int_5.loc5, %.loc5_27.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_5.loc5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_27.1: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_27.2: %i32 = converted %int_5.loc5, %.loc5_27.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %x: %i32 = bind_name x, %.loc5_27.2 -// CHECK:STDOUT: %int_5.loc6: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5.loc6: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc6: = bound_method %int_5.loc6, %impl.elem0.loc6 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc6: = specific_function %Convert.bound.loc6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_5.loc6) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_25.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_25.2: %i32 = converted %int_5.loc6, %.loc6_25.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_5.loc6) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_25.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_25.2: %i32 = converted %int_5.loc6, %.loc6_25.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %y: %i32 = bind_name y, %.loc6_25.2 -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A diff --git a/toolchain/check/testdata/class/adapter/adapt.carbon b/toolchain/check/testdata/class/adapter/adapt.carbon index f15bf71e18d0..ca314127c279 100644 --- a/toolchain/check/testdata/class/adapter/adapt.carbon +++ b/toolchain/check/testdata/class/adapter/adapt.carbon @@ -53,14 +53,14 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %SomeClass.elem: type = unbound_element_type %SomeClass, %i32 [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [template] // CHECK:STDOUT: %StructAdapter: type = class_type @StructAdapter [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -82,7 +82,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: class @SomeClass { // CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass @@ -94,7 +94,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: class @SomeClassAdapter { // CHECK:STDOUT: %SomeClass.ref: type = name_ref SomeClass, file.%SomeClass.decl [template = constants.%SomeClass] // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter @@ -108,7 +108,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: %i32.loc14_23: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b] // CHECK:STDOUT: adapt_decl %struct_type.a.b [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%StructAdapter @@ -119,13 +119,13 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Adapted: type = class_type @Adapted [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.f05: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.8ad: %F.type.f05 = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %AdaptNotExtend: type = class_type @AdaptNotExtend [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -145,7 +145,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Adapted.decl: type = class_decl @Adapted [template = constants.%Adapted] {} {} // CHECK:STDOUT: %AdaptNotExtend.decl: type = class_decl @AdaptNotExtend [template = constants.%AdaptNotExtend] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %a.patt: %AdaptNotExtend = binding_pattern a // CHECK:STDOUT: %a.param_patt: %AdaptNotExtend = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -156,7 +156,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Adapted { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.f05 = fn_decl @F.1 [template = constants.%F.8ad] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: diff --git a/toolchain/check/testdata/class/adapter/adapt_copy.carbon b/toolchain/check/testdata/class/adapter/adapt_copy.carbon index 6bd134fec667..8c8275d732ab 100644 --- a/toolchain/check/testdata/class/adapter/adapt_copy.carbon +++ b/toolchain/check/testdata/class/adapter/adapt_copy.carbon @@ -126,20 +126,20 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%AdaptCopyable, %u32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.6d4: type = tuple_type (%AdaptCopyable, %u32) [template] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [template] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .UInt = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .UInt = %import_ref.b2c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -168,27 +168,27 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return: ref %AdaptCopyable = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %InTuple.decl: %InTuple.type = fn_decl @InTuple [template = constants.%InTuple] { -// CHECK:STDOUT: %c.patt: %tuple.type.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.2 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %tuple.type.6d4 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.6d4 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.6d4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.6d4 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptCopyable.ref.loc15_41: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [template = constants.%AdaptCopyable] // CHECK:STDOUT: %int_32.loc15_56: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc15_56: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc15_59.1: %tuple.type.1 = tuple_literal (%AdaptCopyable.ref.loc15_41, %u32.loc15_56) -// CHECK:STDOUT: %.loc15_59.2: type = converted %.loc15_59.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15_34.1: type = splice_block %.loc15_34.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %.loc15_59.1: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc15_41, %u32.loc15_56) +// CHECK:STDOUT: %.loc15_59.2: type = converted %.loc15_59.1, constants.%tuple.type.6d4 [template = constants.%tuple.type.6d4] +// CHECK:STDOUT: %c.param: %tuple.type.6d4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15_34.1: type = splice_block %.loc15_34.3 [template = constants.%tuple.type.6d4] { // CHECK:STDOUT: %AdaptCopyable.ref.loc15_16: type = name_ref AdaptCopyable, file.%AdaptCopyable.decl [template = constants.%AdaptCopyable] // CHECK:STDOUT: %int_32.loc15_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc15_31: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc15_34.2: %tuple.type.1 = tuple_literal (%AdaptCopyable.ref.loc15_16, %u32.loc15_31) -// CHECK:STDOUT: %.loc15_34.3: type = converted %.loc15_34.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc15_34.2: %tuple.type.24b = tuple_literal (%AdaptCopyable.ref.loc15_16, %u32.loc15_31) +// CHECK:STDOUT: %.loc15_34.3: type = converted %.loc15_34.2, constants.%tuple.type.6d4 [template = constants.%tuple.type.6d4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %c: %tuple.type.6d4 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %tuple.type.6d4 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.6d4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -196,7 +196,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: adapt_decl %i32 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptCopyable @@ -214,21 +214,21 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: return %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.2) -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.6d4) -> %return.param_patt: %tuple.type.6d4 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %d.var: ref %tuple.type.2 = var d -// CHECK:STDOUT: %d: ref %tuple.type.2 = bind_name d, %d.var -// CHECK:STDOUT: %c.ref: %tuple.type.2 = name_ref c, %c +// CHECK:STDOUT: %d.var: ref %tuple.type.6d4 = var d +// CHECK:STDOUT: %d: ref %tuple.type.6d4 = bind_name d, %d.var +// CHECK:STDOUT: %c.ref: %tuple.type.6d4 = name_ref c, %c // CHECK:STDOUT: %tuple.elem0.loc16_33.1: %AdaptCopyable = tuple_access %c.ref, element0 // CHECK:STDOUT: %tuple.elem0.loc16_33.2: ref %AdaptCopyable = tuple_access %d.var, element0 // CHECK:STDOUT: %.loc16_33.1: init %AdaptCopyable = initialize_from %tuple.elem0.loc16_33.1 to %tuple.elem0.loc16_33.2 // CHECK:STDOUT: %tuple.elem1.loc16_33.1: %u32 = tuple_access %c.ref, element1 // CHECK:STDOUT: %tuple.elem1.loc16_33.2: ref %u32 = tuple_access %d.var, element1 // CHECK:STDOUT: %.loc16_33.2: init %u32 = initialize_from %tuple.elem1.loc16_33.1 to %tuple.elem1.loc16_33.2 -// CHECK:STDOUT: %.loc16_33.3: init %tuple.type.2 = tuple_init (%.loc16_33.1, %.loc16_33.2) to %d.var -// CHECK:STDOUT: %.loc16_34: init %tuple.type.2 = converted %c.ref, %.loc16_33.3 +// CHECK:STDOUT: %.loc16_33.3: init %tuple.type.6d4 = tuple_init (%.loc16_33.1, %.loc16_33.2) to %d.var +// CHECK:STDOUT: %.loc16_34: init %tuple.type.6d4 = converted %c.ref, %.loc16_33.3 // CHECK:STDOUT: assign %d.var, %.loc16_34 -// CHECK:STDOUT: %d.ref: ref %tuple.type.2 = name_ref d, %d +// CHECK:STDOUT: %d.ref: ref %tuple.type.6d4 = name_ref d, %d // CHECK:STDOUT: %tuple.elem0.loc17_10.1: ref %AdaptCopyable = tuple_access %d.ref, element0 // CHECK:STDOUT: %.loc17_10.1: %AdaptCopyable = bind_value %tuple.elem0.loc17_10.1 // CHECK:STDOUT: %tuple.elem0.loc17_10.2: ref %AdaptCopyable = tuple_access %return, element0 @@ -237,8 +237,8 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc17_10.3: %u32 = bind_value %tuple.elem1.loc17_10.1 // CHECK:STDOUT: %tuple.elem1.loc17_10.2: ref %u32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc17_10.4: init %u32 = initialize_from %.loc17_10.3 to %tuple.elem1.loc17_10.2 -// CHECK:STDOUT: %.loc17_10.5: init %tuple.type.2 = tuple_init (%.loc17_10.2, %.loc17_10.4) to %return -// CHECK:STDOUT: %.loc17_11: init %tuple.type.2 = converted %d.ref, %.loc17_10.5 +// CHECK:STDOUT: %.loc17_10.5: init %tuple.type.6d4 = tuple_init (%.loc17_10.2, %.loc17_10.4) to %return +// CHECK:STDOUT: %.loc17_11: init %tuple.type.6d4 = converted %d.ref, %.loc17_10.5 // CHECK:STDOUT: return %.loc17_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -248,21 +248,21 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %AdaptTuple: type = class_type @AdaptTuple [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %complete_type.51c: = complete_type_witness %tuple.type.471 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%AdaptTuple, %u32) [template] +// CHECK:STDOUT: %tuple.type.6a8: type = tuple_type (%AdaptTuple, %u32) [template] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [template] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .UInt = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .UInt = %import_ref.b2c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -291,27 +291,27 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return: ref %AdaptTuple = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %InTuple.decl: %InTuple.type = fn_decl @InTuple [template = constants.%InTuple] { -// CHECK:STDOUT: %c.patt: %tuple.type.3 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.3 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %tuple.type.6a8 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.6a8 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.6a8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.6a8 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptTuple.ref.loc13_38: type = name_ref AdaptTuple, file.%AdaptTuple.decl [template = constants.%AdaptTuple] // CHECK:STDOUT: %int_32.loc13_50: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc13_50: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc13_53.1: %tuple.type.1 = tuple_literal (%AdaptTuple.ref.loc13_38, %u32.loc13_50) -// CHECK:STDOUT: %.loc13_53.2: type = converted %.loc13_53.1, constants.%tuple.type.3 [template = constants.%tuple.type.3] -// CHECK:STDOUT: %c.param: %tuple.type.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc13_31.1: type = splice_block %.loc13_31.3 [template = constants.%tuple.type.3] { +// CHECK:STDOUT: %.loc13_53.1: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_38, %u32.loc13_50) +// CHECK:STDOUT: %.loc13_53.2: type = converted %.loc13_53.1, constants.%tuple.type.6a8 [template = constants.%tuple.type.6a8] +// CHECK:STDOUT: %c.param: %tuple.type.6a8 = value_param runtime_param0 +// CHECK:STDOUT: %.loc13_31.1: type = splice_block %.loc13_31.3 [template = constants.%tuple.type.6a8] { // CHECK:STDOUT: %AdaptTuple.ref.loc13_16: type = name_ref AdaptTuple, file.%AdaptTuple.decl [template = constants.%AdaptTuple] // CHECK:STDOUT: %int_32.loc13_28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc13_28: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc13_31.2: %tuple.type.1 = tuple_literal (%AdaptTuple.ref.loc13_16, %u32.loc13_28) -// CHECK:STDOUT: %.loc13_31.3: type = converted %.loc13_31.2, constants.%tuple.type.3 [template = constants.%tuple.type.3] +// CHECK:STDOUT: %.loc13_31.2: %tuple.type.24b = tuple_literal (%AdaptTuple.ref.loc13_16, %u32.loc13_28) +// CHECK:STDOUT: %.loc13_31.3: type = converted %.loc13_31.2, constants.%tuple.type.6a8 [template = constants.%tuple.type.6a8] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.3 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %tuple.type.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.3 = return_slot %return.param +// CHECK:STDOUT: %c: %tuple.type.6a8 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %tuple.type.6a8 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.6a8 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -320,10 +320,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %i32.loc5_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc5_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc5_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc5_18: %tuple.type.1 = tuple_literal (%i32.loc5_10, %i32.loc5_15) -// CHECK:STDOUT: %.loc5_19: type = converted %.loc5_18, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc5_18: %tuple.type.24b = tuple_literal (%i32.loc5_10, %i32.loc5_15) +// CHECK:STDOUT: %.loc5_19: type = converted %.loc5_18, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: adapt_decl %.loc5_19 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.2 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.471 [template = constants.%complete_type.51c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptTuple @@ -335,81 +335,81 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %d.var: ref %AdaptTuple = var d // CHECK:STDOUT: %d: ref %AdaptTuple = bind_name d, %d.var // CHECK:STDOUT: %c.ref: %AdaptTuple = name_ref c, %c -// CHECK:STDOUT: %.loc9_24.1: %tuple.type.2 = as_compatible %c.ref +// CHECK:STDOUT: %.loc9_24.1: %tuple.type.471 = as_compatible %c.ref // CHECK:STDOUT: %tuple.elem0.loc9_24.1: %i32 = tuple_access %.loc9_24.1, element0 -// CHECK:STDOUT: %.loc9_24.2: ref %tuple.type.2 = as_compatible %d.var +// CHECK:STDOUT: %.loc9_24.2: ref %tuple.type.471 = as_compatible %d.var // CHECK:STDOUT: %tuple.elem0.loc9_24.2: ref %i32 = tuple_access %.loc9_24.2, element0 // CHECK:STDOUT: %.loc9_24.3: init %i32 = initialize_from %tuple.elem0.loc9_24.1 to %tuple.elem0.loc9_24.2 // CHECK:STDOUT: %tuple.elem1.loc9_24.1: %i32 = tuple_access %.loc9_24.1, element1 // CHECK:STDOUT: %tuple.elem1.loc9_24.2: ref %i32 = tuple_access %.loc9_24.2, element1 // CHECK:STDOUT: %.loc9_24.4: init %i32 = initialize_from %tuple.elem1.loc9_24.1 to %tuple.elem1.loc9_24.2 -// CHECK:STDOUT: %.loc9_24.5: init %tuple.type.2 = tuple_init (%.loc9_24.3, %.loc9_24.4) to %.loc9_24.2 +// CHECK:STDOUT: %.loc9_24.5: init %tuple.type.471 = tuple_init (%.loc9_24.3, %.loc9_24.4) to %.loc9_24.2 // CHECK:STDOUT: %.loc9_24.6: init %AdaptTuple = as_compatible %.loc9_24.5 // CHECK:STDOUT: %.loc9_24.7: init %AdaptTuple = converted %c.ref, %.loc9_24.6 // CHECK:STDOUT: assign %d.var, %.loc9_24.7 // CHECK:STDOUT: %d.ref: ref %AdaptTuple = name_ref d, %d -// CHECK:STDOUT: %.loc10_11.1: ref %tuple.type.2 = as_compatible %d.ref +// CHECK:STDOUT: %.loc10_11.1: ref %tuple.type.471 = as_compatible %d.ref // CHECK:STDOUT: %tuple.elem0.loc10_11.1: ref %i32 = tuple_access %.loc10_11.1, element0 // CHECK:STDOUT: %.loc10_11.2: %i32 = bind_value %tuple.elem0.loc10_11.1 -// CHECK:STDOUT: %.loc10_11.3: ref %tuple.type.2 = as_compatible %return +// CHECK:STDOUT: %.loc10_11.3: ref %tuple.type.471 = as_compatible %return // CHECK:STDOUT: %tuple.elem0.loc10_11.2: ref %i32 = tuple_access %.loc10_11.3, element0 // CHECK:STDOUT: %.loc10_11.4: init %i32 = initialize_from %.loc10_11.2 to %tuple.elem0.loc10_11.2 // CHECK:STDOUT: %tuple.elem1.loc10_11.1: ref %i32 = tuple_access %.loc10_11.1, element1 // CHECK:STDOUT: %.loc10_11.5: %i32 = bind_value %tuple.elem1.loc10_11.1 // CHECK:STDOUT: %tuple.elem1.loc10_11.2: ref %i32 = tuple_access %.loc10_11.3, element1 // CHECK:STDOUT: %.loc10_11.6: init %i32 = initialize_from %.loc10_11.5 to %tuple.elem1.loc10_11.2 -// CHECK:STDOUT: %.loc10_11.7: init %tuple.type.2 = tuple_init (%.loc10_11.4, %.loc10_11.6) to %.loc10_11.3 +// CHECK:STDOUT: %.loc10_11.7: init %tuple.type.471 = tuple_init (%.loc10_11.4, %.loc10_11.6) to %.loc10_11.3 // CHECK:STDOUT: %.loc10_11.8: init %AdaptTuple = as_compatible %.loc10_11.7 // CHECK:STDOUT: %.loc10_11.9: init %AdaptTuple = converted %d.ref, %.loc10_11.8 // CHECK:STDOUT: return %.loc10_11.9 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.3) -> %return.param_patt: %tuple.type.3 { +// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.6a8) -> %return.param_patt: %tuple.type.6a8 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %d.var: ref %tuple.type.3 = var d -// CHECK:STDOUT: %d: ref %tuple.type.3 = bind_name d, %d.var -// CHECK:STDOUT: %c.ref: %tuple.type.3 = name_ref c, %c +// CHECK:STDOUT: %d.var: ref %tuple.type.6a8 = var d +// CHECK:STDOUT: %d: ref %tuple.type.6a8 = bind_name d, %d.var +// CHECK:STDOUT: %c.ref: %tuple.type.6a8 = name_ref c, %c // CHECK:STDOUT: %tuple.elem0.loc14_30.1: %AdaptTuple = tuple_access %c.ref, element0 -// CHECK:STDOUT: %.loc14_30.1: %tuple.type.2 = as_compatible %tuple.elem0.loc14_30.1 +// CHECK:STDOUT: %.loc14_30.1: %tuple.type.471 = as_compatible %tuple.elem0.loc14_30.1 // CHECK:STDOUT: %tuple.elem0.loc14_30.2: %i32 = tuple_access %.loc14_30.1, element0 // CHECK:STDOUT: %tuple.elem0.loc14_30.3: ref %AdaptTuple = tuple_access %d.var, element0 -// CHECK:STDOUT: %.loc14_30.2: ref %tuple.type.2 = as_compatible %tuple.elem0.loc14_30.3 +// CHECK:STDOUT: %.loc14_30.2: ref %tuple.type.471 = as_compatible %tuple.elem0.loc14_30.3 // CHECK:STDOUT: %tuple.elem0.loc14_30.4: ref %i32 = tuple_access %.loc14_30.2, element0 // CHECK:STDOUT: %.loc14_30.3: init %i32 = initialize_from %tuple.elem0.loc14_30.2 to %tuple.elem0.loc14_30.4 // CHECK:STDOUT: %tuple.elem1.loc14_30.1: %i32 = tuple_access %.loc14_30.1, element1 // CHECK:STDOUT: %tuple.elem1.loc14_30.2: ref %i32 = tuple_access %.loc14_30.2, element1 // CHECK:STDOUT: %.loc14_30.4: init %i32 = initialize_from %tuple.elem1.loc14_30.1 to %tuple.elem1.loc14_30.2 -// CHECK:STDOUT: %.loc14_30.5: init %tuple.type.2 = tuple_init (%.loc14_30.3, %.loc14_30.4) to %.loc14_30.2 +// CHECK:STDOUT: %.loc14_30.5: init %tuple.type.471 = tuple_init (%.loc14_30.3, %.loc14_30.4) to %.loc14_30.2 // CHECK:STDOUT: %.loc14_30.6: init %AdaptTuple = as_compatible %.loc14_30.5 // CHECK:STDOUT: %.loc14_30.7: init %AdaptTuple = converted %tuple.elem0.loc14_30.1, %.loc14_30.6 // CHECK:STDOUT: %tuple.elem1.loc14_30.3: %u32 = tuple_access %c.ref, element1 // CHECK:STDOUT: %tuple.elem1.loc14_30.4: ref %u32 = tuple_access %d.var, element1 // CHECK:STDOUT: %.loc14_30.8: init %u32 = initialize_from %tuple.elem1.loc14_30.3 to %tuple.elem1.loc14_30.4 -// CHECK:STDOUT: %.loc14_30.9: init %tuple.type.3 = tuple_init (%.loc14_30.7, %.loc14_30.8) to %d.var -// CHECK:STDOUT: %.loc14_31: init %tuple.type.3 = converted %c.ref, %.loc14_30.9 +// CHECK:STDOUT: %.loc14_30.9: init %tuple.type.6a8 = tuple_init (%.loc14_30.7, %.loc14_30.8) to %d.var +// CHECK:STDOUT: %.loc14_31: init %tuple.type.6a8 = converted %c.ref, %.loc14_30.9 // CHECK:STDOUT: assign %d.var, %.loc14_31 -// CHECK:STDOUT: %d.ref: ref %tuple.type.3 = name_ref d, %d +// CHECK:STDOUT: %d.ref: ref %tuple.type.6a8 = name_ref d, %d // CHECK:STDOUT: %tuple.elem0.loc15_10.1: ref %AdaptTuple = tuple_access %d.ref, element0 -// CHECK:STDOUT: %.loc15_10.1: ref %tuple.type.2 = as_compatible %tuple.elem0.loc15_10.1 +// CHECK:STDOUT: %.loc15_10.1: ref %tuple.type.471 = as_compatible %tuple.elem0.loc15_10.1 // CHECK:STDOUT: %tuple.elem0.loc15_10.2: ref %i32 = tuple_access %.loc15_10.1, element0 // CHECK:STDOUT: %.loc15_10.2: %i32 = bind_value %tuple.elem0.loc15_10.2 // CHECK:STDOUT: %tuple.elem0.loc15_10.3: ref %AdaptTuple = tuple_access %return, element0 -// CHECK:STDOUT: %.loc15_10.3: ref %tuple.type.2 = as_compatible %tuple.elem0.loc15_10.3 +// CHECK:STDOUT: %.loc15_10.3: ref %tuple.type.471 = as_compatible %tuple.elem0.loc15_10.3 // CHECK:STDOUT: %tuple.elem0.loc15_10.4: ref %i32 = tuple_access %.loc15_10.3, element0 // CHECK:STDOUT: %.loc15_10.4: init %i32 = initialize_from %.loc15_10.2 to %tuple.elem0.loc15_10.4 // CHECK:STDOUT: %tuple.elem1.loc15_10.1: ref %i32 = tuple_access %.loc15_10.1, element1 // CHECK:STDOUT: %.loc15_10.5: %i32 = bind_value %tuple.elem1.loc15_10.1 // CHECK:STDOUT: %tuple.elem1.loc15_10.2: ref %i32 = tuple_access %.loc15_10.3, element1 // CHECK:STDOUT: %.loc15_10.6: init %i32 = initialize_from %.loc15_10.5 to %tuple.elem1.loc15_10.2 -// CHECK:STDOUT: %.loc15_10.7: init %tuple.type.2 = tuple_init (%.loc15_10.4, %.loc15_10.6) to %.loc15_10.3 +// CHECK:STDOUT: %.loc15_10.7: init %tuple.type.471 = tuple_init (%.loc15_10.4, %.loc15_10.6) to %.loc15_10.3 // CHECK:STDOUT: %.loc15_10.8: init %AdaptTuple = as_compatible %.loc15_10.7 // CHECK:STDOUT: %.loc15_10.9: init %AdaptTuple = converted %tuple.elem0.loc15_10.1, %.loc15_10.8 // CHECK:STDOUT: %tuple.elem1.loc15_10.3: ref %u32 = tuple_access %d.ref, element1 // CHECK:STDOUT: %.loc15_10.10: %u32 = bind_value %tuple.elem1.loc15_10.3 // CHECK:STDOUT: %tuple.elem1.loc15_10.4: ref %u32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc15_10.11: init %u32 = initialize_from %.loc15_10.10 to %tuple.elem1.loc15_10.4 -// CHECK:STDOUT: %.loc15_10.12: init %tuple.type.3 = tuple_init (%.loc15_10.9, %.loc15_10.11) to %return -// CHECK:STDOUT: %.loc15_11: init %tuple.type.3 = converted %d.ref, %.loc15_10.12 +// CHECK:STDOUT: %.loc15_10.12: init %tuple.type.6a8 = tuple_init (%.loc15_10.9, %.loc15_10.11) to %return +// CHECK:STDOUT: %.loc15_11: init %tuple.type.6a8 = converted %d.ref, %.loc15_10.12 // CHECK:STDOUT: return %.loc15_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -490,20 +490,20 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Noncopyable: type = class_type @Noncopyable [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %AdaptNoncopyableIndirect: type = class_type @AdaptNoncopyableIndirect [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %Noncopyable, %i32) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [template] +// CHECK:STDOUT: %tuple.type.27f: type = tuple_type (%i32, %Noncopyable, %i32) [template] +// CHECK:STDOUT: %complete_type.43e: = complete_type_witness %tuple.type.27f [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -535,7 +535,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Noncopyable { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Noncopyable @@ -548,10 +548,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %Noncopyable.ref: type = name_ref Noncopyable, file.%Noncopyable.decl [template = constants.%Noncopyable] // CHECK:STDOUT: %int_32.loc9_28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc9_28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc9_31: %tuple.type.1 = tuple_literal (%i32.loc9_10, %Noncopyable.ref, %i32.loc9_28) -// CHECK:STDOUT: %.loc9_32: type = converted %.loc9_31, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc9_31: %tuple.type.ff9 = tuple_literal (%i32.loc9_10, %Noncopyable.ref, %i32.loc9_28) +// CHECK:STDOUT: %.loc9_32: type = converted %.loc9_31, constants.%tuple.type.27f [template = constants.%tuple.type.27f] // CHECK:STDOUT: adapt_decl %.loc9_32 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.27f [template = constants.%complete_type.43e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptNoncopyableIndirect @@ -563,18 +563,18 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %b.var: ref %AdaptNoncopyableIndirect = var b // CHECK:STDOUT: %b: ref %AdaptNoncopyableIndirect = bind_name b, %b.var // CHECK:STDOUT: %a.ref: %AdaptNoncopyableIndirect = name_ref a, %a -// CHECK:STDOUT: %.loc20_38.1: %tuple.type.2 = as_compatible %a.ref +// CHECK:STDOUT: %.loc20_38.1: %tuple.type.27f = as_compatible %a.ref // CHECK:STDOUT: %tuple.elem0.loc20_38.1: %i32 = tuple_access %.loc20_38.1, element0 -// CHECK:STDOUT: %.loc20_38.2: ref %tuple.type.2 = as_compatible %b.var +// CHECK:STDOUT: %.loc20_38.2: ref %tuple.type.27f = as_compatible %b.var // CHECK:STDOUT: %tuple.elem0.loc20_38.2: ref %i32 = tuple_access %.loc20_38.2, element0 // CHECK:STDOUT: %.loc20_38.3: init %i32 = initialize_from %tuple.elem0.loc20_38.1 to %tuple.elem0.loc20_38.2 // CHECK:STDOUT: %tuple.elem1.loc20: %Noncopyable = tuple_access %.loc20_38.1, element1 // CHECK:STDOUT: assign %b.var, // CHECK:STDOUT: %b.ref: ref %AdaptNoncopyableIndirect = name_ref b, %b -// CHECK:STDOUT: %.loc27_11.1: ref %tuple.type.2 = as_compatible %b.ref +// CHECK:STDOUT: %.loc27_11.1: ref %tuple.type.27f = as_compatible %b.ref // CHECK:STDOUT: %tuple.elem0.loc27_11.1: ref %i32 = tuple_access %.loc27_11.1, element0 // CHECK:STDOUT: %.loc27_11.2: %i32 = bind_value %tuple.elem0.loc27_11.1 -// CHECK:STDOUT: %.loc27_11.3: ref %tuple.type.2 = as_compatible %return +// CHECK:STDOUT: %.loc27_11.3: ref %tuple.type.27f = as_compatible %return // CHECK:STDOUT: %tuple.elem0.loc27_11.2: ref %i32 = tuple_access %.loc27_11.3, element0 // CHECK:STDOUT: %.loc27_11.4: init %i32 = initialize_from %.loc27_11.2 to %tuple.elem0.loc27_11.2 // CHECK:STDOUT: %tuple.elem1.loc27: ref %Noncopyable = tuple_access %.loc27_11.1, element1 @@ -589,20 +589,20 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.e.f: type = struct_type {.e: %i32, .f: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.e.f [template] +// CHECK:STDOUT: %complete_type.692: = complete_type_witness %struct_type.e.f [template] // CHECK:STDOUT: %I.type: type = fn_type @I [template] // CHECK:STDOUT: %I: %I.type = struct_value () [template] // CHECK:STDOUT: %u32: type = class_type @UInt, @UInt(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%AdaptStruct, %u32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.ff2: type = tuple_type (%AdaptStruct, %u32) [template] // CHECK:STDOUT: %InTuple.type: type = fn_type @InTuple [template] // CHECK:STDOUT: %InTuple: %InTuple.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .UInt = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .UInt = %import_ref.b2c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -631,27 +631,27 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %return: ref %AdaptStruct = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %InTuple.decl: %InTuple.type = fn_decl @InTuple [template = constants.%InTuple] { -// CHECK:STDOUT: %c.patt: %tuple.type.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.2 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %tuple.type.ff2 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.ff2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.ff2 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.ff2 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %AdaptStruct.ref.loc13_39: type = name_ref AdaptStruct, file.%AdaptStruct.decl [template = constants.%AdaptStruct] // CHECK:STDOUT: %int_32.loc13_52: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc13_52: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc13_55.1: %tuple.type.1 = tuple_literal (%AdaptStruct.ref.loc13_39, %u32.loc13_52) -// CHECK:STDOUT: %.loc13_55.2: type = converted %.loc13_55.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc13_32.1: type = splice_block %.loc13_32.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %.loc13_55.1: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_39, %u32.loc13_52) +// CHECK:STDOUT: %.loc13_55.2: type = converted %.loc13_55.1, constants.%tuple.type.ff2 [template = constants.%tuple.type.ff2] +// CHECK:STDOUT: %c.param: %tuple.type.ff2 = value_param runtime_param0 +// CHECK:STDOUT: %.loc13_32.1: type = splice_block %.loc13_32.3 [template = constants.%tuple.type.ff2] { // CHECK:STDOUT: %AdaptStruct.ref.loc13_16: type = name_ref AdaptStruct, file.%AdaptStruct.decl [template = constants.%AdaptStruct] // CHECK:STDOUT: %int_32.loc13_29: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %u32.loc13_29: type = class_type @UInt, @UInt(constants.%int_32) [template = constants.%u32] -// CHECK:STDOUT: %.loc13_32.2: %tuple.type.1 = tuple_literal (%AdaptStruct.ref.loc13_16, %u32.loc13_29) -// CHECK:STDOUT: %.loc13_32.3: type = converted %.loc13_32.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc13_32.2: %tuple.type.24b = tuple_literal (%AdaptStruct.ref.loc13_16, %u32.loc13_29) +// CHECK:STDOUT: %.loc13_32.3: type = converted %.loc13_32.2, constants.%tuple.type.ff2 [template = constants.%tuple.type.ff2] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %c: %tuple.type.ff2 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %tuple.type.ff2 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.ff2 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -662,7 +662,7 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %i32.loc5_23: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.e.f: type = struct_type {.e: %i32, .f: %i32} [template = constants.%struct_type.e.f] // CHECK:STDOUT: adapt_decl %struct_type.e.f [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.e.f [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.e.f [template = constants.%complete_type.692] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptStruct @@ -703,11 +703,11 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: return %.loc10_11.13 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.2) -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @InTuple(%c.param_patt: %tuple.type.ff2) -> %return.param_patt: %tuple.type.ff2 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %d.var: ref %tuple.type.2 = var d -// CHECK:STDOUT: %d: ref %tuple.type.2 = bind_name d, %d.var -// CHECK:STDOUT: %c.ref: %tuple.type.2 = name_ref c, %c +// CHECK:STDOUT: %d.var: ref %tuple.type.ff2 = var d +// CHECK:STDOUT: %d: ref %tuple.type.ff2 = bind_name d, %d.var +// CHECK:STDOUT: %c.ref: %tuple.type.ff2 = name_ref c, %c // CHECK:STDOUT: %tuple.elem0.loc14_31.1: %AdaptStruct = tuple_access %c.ref, element0 // CHECK:STDOUT: %.loc14_31.1: %struct_type.e.f = as_compatible %tuple.elem0.loc14_31.1 // CHECK:STDOUT: %.loc14_31.2: %i32 = struct_access %.loc14_31.1, element0 @@ -724,10 +724,10 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %tuple.elem1.loc14_31.1: %u32 = tuple_access %c.ref, element1 // CHECK:STDOUT: %tuple.elem1.loc14_31.2: ref %u32 = tuple_access %d.var, element1 // CHECK:STDOUT: %.loc14_31.12: init %u32 = initialize_from %tuple.elem1.loc14_31.1 to %tuple.elem1.loc14_31.2 -// CHECK:STDOUT: %.loc14_31.13: init %tuple.type.2 = tuple_init (%.loc14_31.11, %.loc14_31.12) to %d.var -// CHECK:STDOUT: %.loc14_32: init %tuple.type.2 = converted %c.ref, %.loc14_31.13 +// CHECK:STDOUT: %.loc14_31.13: init %tuple.type.ff2 = tuple_init (%.loc14_31.11, %.loc14_31.12) to %d.var +// CHECK:STDOUT: %.loc14_32: init %tuple.type.ff2 = converted %c.ref, %.loc14_31.13 // CHECK:STDOUT: assign %d.var, %.loc14_32 -// CHECK:STDOUT: %d.ref: ref %tuple.type.2 = name_ref d, %d +// CHECK:STDOUT: %d.ref: ref %tuple.type.ff2 = name_ref d, %d // CHECK:STDOUT: %tuple.elem0.loc15_10.1: ref %AdaptStruct = tuple_access %d.ref, element0 // CHECK:STDOUT: %.loc15_10.1: ref %struct_type.e.f = as_compatible %tuple.elem0.loc15_10.1 // CHECK:STDOUT: %.loc15_10.2: ref %i32 = struct_access %.loc15_10.1, element0 @@ -747,8 +747,8 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: %.loc15_10.14: %u32 = bind_value %tuple.elem1.loc15_10.1 // CHECK:STDOUT: %tuple.elem1.loc15_10.2: ref %u32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc15_10.15: init %u32 = initialize_from %.loc15_10.14 to %tuple.elem1.loc15_10.2 -// CHECK:STDOUT: %.loc15_10.16: init %tuple.type.2 = tuple_init (%.loc15_10.13, %.loc15_10.15) to %return -// CHECK:STDOUT: %.loc15_11: init %tuple.type.2 = converted %d.ref, %.loc15_10.16 +// CHECK:STDOUT: %.loc15_10.16: init %tuple.type.ff2 = tuple_init (%.loc15_10.13, %.loc15_10.15) to %return +// CHECK:STDOUT: %.loc15_11: init %tuple.type.ff2 = converted %d.ref, %.loc15_10.16 // CHECK:STDOUT: return %.loc15_11 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index 738044bfa012..bf7883bedb9d 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -151,7 +151,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %AdapterMethod.type: type = fn_type @AdapterMethod [template] // CHECK:STDOUT: %AdapterMethod: %AdapterMethod.type = struct_value () [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %TestStaticMemberFunction.type: type = fn_type @TestStaticMemberFunction [template] // CHECK:STDOUT: %TestStaticMemberFunction: %TestStaticMemberFunction.type = struct_value () [template] // CHECK:STDOUT: %TestAdapterMethod.type: type = fn_type @TestAdapterMethod [template] @@ -160,7 +160,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -199,7 +199,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: class @SomeClassAdapter { // CHECK:STDOUT: %SomeClass.ref: type = name_ref SomeClass, file.%SomeClass.decl [template = constants.%SomeClass] // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter @@ -219,7 +219,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %SomeClassAdapter.ref: type = name_ref SomeClassAdapter, file.%SomeClassAdapter.decl.loc4 [template = constants.%SomeClassAdapter] // CHECK:STDOUT: %self: %SomeClassAdapter = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass @@ -255,19 +255,19 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %SomeClass: type = class_type @SomeClass [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.58a: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.7c7: %F.type.58a = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -283,7 +283,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %SomeClass.decl: type = class_decl @SomeClass [template = constants.%SomeClass] {} {} // CHECK:STDOUT: %SomeClassAdapter.decl: type = class_decl @SomeClassAdapter [template = constants.%SomeClassAdapter] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %a.patt: %SomeClassAdapter = binding_pattern a // CHECK:STDOUT: %a.param_patt: %SomeClassAdapter = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -294,7 +294,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.58a = fn_decl @F.1 [template = constants.%F.7c7] { // CHECK:STDOUT: %self.patt: %SomeClass = binding_pattern self // CHECK:STDOUT: %self.param_patt: %SomeClass = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -326,7 +326,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: fn @F.2(%a.param_patt: %SomeClassAdapter) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %SomeClassAdapter = name_ref a, %a -// CHECK:STDOUT: %F.ref: %F.type.1 = name_ref F, @SomeClass.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref: %F.type.58a = name_ref F, @SomeClass.%F.decl [template = constants.%F.7c7] // CHECK:STDOUT: %F.bound: = bound_method %a.ref, %F.ref // CHECK:STDOUT: %.loc23: %SomeClass = converted %a.ref, [template = ] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound() @@ -341,7 +341,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %SomeClass.elem: type = unbound_element_type %SomeClass, %i32 [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %SomeClassAdapter: type = class_type @SomeClassAdapter [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] @@ -349,8 +349,8 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -385,7 +385,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: class @SomeClass { // CHECK:STDOUT: %.loc5: %SomeClass.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc6: %SomeClass.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass @@ -397,7 +397,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: class @SomeClassAdapter { // CHECK:STDOUT: %SomeClass.ref: type = name_ref SomeClass, file.%SomeClass.decl [template = constants.%SomeClass] // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter @@ -421,14 +421,14 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -465,7 +465,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %i32.loc5_30: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b] // CHECK:STDOUT: adapt_decl %struct_type.a.b [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%StructAdapter @@ -486,9 +486,9 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %TupleAdapter: type = class_type @TupleAdapter [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %complete_type.51c: = complete_type_witness %tuple.type.471 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] @@ -496,7 +496,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -531,10 +531,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %i32.loc5_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc5_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc5_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc5_25: %tuple.type.1 = tuple_literal (%i32.loc5_17, %i32.loc5_22) -// CHECK:STDOUT: %.loc5_26: type = converted %.loc5_25, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc5_25: %tuple.type.24b = tuple_literal (%i32.loc5_17, %i32.loc5_22) +// CHECK:STDOUT: %.loc5_26: type = converted %.loc5_25, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: adapt_decl %.loc5_26 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.2 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.471 [template = constants.%complete_type.51c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%TupleAdapter @@ -559,7 +559,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %IntAdapter: type = class_type @IntAdapter [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] @@ -567,12 +567,12 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IntLiteral = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .IntLiteral = %import_ref.8ee +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] +// CHECK:STDOUT: %import_ref.8ee: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -592,7 +592,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param0 // CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [template = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_31.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_31.3: type = converted %int_literal.make_type, %.loc4_31.2 [template = Core.IntLiteral] @@ -625,7 +625,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %.loc7_27.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc7_27.2: type = converted %int.make_type_signed, %.loc7_27.1 [template = constants.%i32.builtin] // CHECK:STDOUT: adapt_decl %.loc7_27.2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IntAdapter diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon index 0340d91f64f2..767ea2b9b58d 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon @@ -113,7 +113,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -166,7 +166,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -265,11 +265,11 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %I.type.1: type = facet_type <@I.1> [template] -// CHECK:STDOUT: %Self.1: %I.type.1 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %I.type.733: type = facet_type <@I.1> [template] +// CHECK:STDOUT: %Self.fb7: %I.type.733 = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I.2> [template] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %I.type.726: type = facet_type <@I.2> [template] +// CHECK:STDOUT: %Self.532: %I.type.726 = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,12 +288,12 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %.loc8: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %I.decl: type = interface_decl @I.1 [template = constants.%I.type.1] {} {} +// CHECK:STDOUT: %I.decl: type = interface_decl @I.1 [template = constants.%I.type.733] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I.1 { -// CHECK:STDOUT: %Self: %I.type.1 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type.733 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %.loc15: %empty_struct_type = struct_literal () // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -302,7 +302,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I.2 { -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %I.type.726 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.532] // CHECK:STDOUT: %.loc23: %empty_struct_type = struct_literal () // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -311,7 +311,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %I.decl: type = interface_decl @I.2 [template = constants.%I.type.2] {} {} +// CHECK:STDOUT: %I.decl: type = interface_decl @I.2 [template = constants.%I.type.726] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon index 6cde41d272bd..fbe76b7eac97 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon @@ -79,7 +79,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %AdaptWithBase: type = class_type @AdaptWithBase [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] @@ -88,7 +88,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -106,7 +106,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -140,7 +140,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -190,17 +190,17 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %AdaptWithBaseAndFields: type = class_type @AdaptWithBaseAndFields [template] -// CHECK:STDOUT: %AdaptWithBaseAndFields.elem.1: type = unbound_element_type %AdaptWithBaseAndFields, %Base [template] +// CHECK:STDOUT: %AdaptWithBaseAndFields.elem.767: type = unbound_element_type %AdaptWithBaseAndFields, %Base [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %AdaptWithBaseAndFields.elem.2: type = unbound_element_type %AdaptWithBaseAndFields, %i32 [template] +// CHECK:STDOUT: %AdaptWithBaseAndFields.elem.19e: type = unbound_element_type %AdaptWithBaseAndFields, %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -218,7 +218,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -227,8 +227,8 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithBaseAndFields { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc7: %AdaptWithBaseAndFields.elem.1 = base_decl %Base.ref, element [template] -// CHECK:STDOUT: %.loc8: %AdaptWithBaseAndFields.elem.2 = field_decl n, element [template] +// CHECK:STDOUT: %.loc7: %AdaptWithBaseAndFields.elem.767 = base_decl %Base.ref, element [template] +// CHECK:STDOUT: %.loc8: %AdaptWithBaseAndFields.elem.19e = field_decl n, element [template] // CHECK:STDOUT: %.loc15_10: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_11: type = converted %.loc15_10, constants.%empty_struct_type [template = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc15_11 [template] diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index 25a592e890b1..21e2aedf7876 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -98,23 +98,23 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [template] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [template] // CHECK:STDOUT: %MakeAdaptC.type: type = fn_type @MakeAdaptC [template] @@ -123,8 +123,8 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -171,7 +171,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -183,7 +183,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: class @AdaptC { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: adapt_decl %C.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptC @@ -196,24 +196,24 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc13_27.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc13_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_27.1: = bound_method %int_1, %impl.elem0.loc13_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_27.1: = specific_function %Convert.bound.loc13_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %Convert.specific_fn.loc13_27.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_27.2: init %i32 = converted %int_1, %int.convert_checked.loc13_27.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc13_27.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc13_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_27.1: = bound_method %int_1, %impl.elem0.loc13_27.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13_27.1: = specific_function %Convert.bound.loc13_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %Convert.specific_fn.loc13_27.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_27.2: init %i32 = converted %int_1, %int.convert_checked.loc13_27.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc13_27.3: ref %C = temporary_storage // CHECK:STDOUT: %.loc13_27.4: ref %i32 = class_element_access %.loc13_27.3, element0 -// CHECK:STDOUT: %.loc13_27.5: init %i32 = initialize_from %.loc13_27.2 to %.loc13_27.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc13_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_27.2: = bound_method %int_2, %impl.elem0.loc13_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_27.2: = specific_function %Convert.bound.loc13_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %Convert.specific_fn.loc13_27.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_27.6: init %i32 = converted %int_2, %int.convert_checked.loc13_27.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_27.5: init %i32 = initialize_from %.loc13_27.2 to %.loc13_27.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc13_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_27.2: = bound_method %int_2, %impl.elem0.loc13_27.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_27.2: = specific_function %Convert.bound.loc13_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %Convert.specific_fn.loc13_27.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_27.6: init %i32 = converted %int_2, %int.convert_checked.loc13_27.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_27.7: ref %i32 = class_element_access %.loc13_27.3, element1 -// CHECK:STDOUT: %.loc13_27.8: init %i32 = initialize_from %.loc13_27.6 to %.loc13_27.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_27.8: init %i32 = initialize_from %.loc13_27.6 to %.loc13_27.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_27.9: init %C = class_init (%.loc13_27.5, %.loc13_27.8), %.loc13_27.3 [template = constants.%C.val] // CHECK:STDOUT: %.loc13_27.10: ref %C = temporary %.loc13_27.3, %.loc13_27.9 // CHECK:STDOUT: %.loc13_28.1: ref %C = converted %.loc13_27.1, %.loc13_27.10 @@ -253,23 +253,23 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %AdaptC: type = class_type @AdaptC [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [template] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [template] // CHECK:STDOUT: %MakeAdaptC.type: type = fn_type @MakeAdaptC [template] @@ -278,8 +278,8 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -326,7 +326,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc5: %C.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc6: %C.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -338,7 +338,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: class @AdaptC { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: adapt_decl %C.ref [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptC @@ -351,24 +351,24 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc13_27.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc13_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_27.1: = bound_method %int_1, %impl.elem0.loc13_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_27.1: = specific_function %Convert.bound.loc13_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %Convert.specific_fn.loc13_27.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_27.2: init %i32 = converted %int_1, %int.convert_checked.loc13_27.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc13_27.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc13_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_27.1: = bound_method %int_1, %impl.elem0.loc13_27.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13_27.1: = specific_function %Convert.bound.loc13_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13_27.1: init %i32 = call %Convert.specific_fn.loc13_27.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_27.2: init %i32 = converted %int_1, %int.convert_checked.loc13_27.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc13_27.3: ref %C = temporary_storage // CHECK:STDOUT: %.loc13_27.4: ref %i32 = class_element_access %.loc13_27.3, element0 -// CHECK:STDOUT: %.loc13_27.5: init %i32 = initialize_from %.loc13_27.2 to %.loc13_27.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc13_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_27.2: = bound_method %int_2, %impl.elem0.loc13_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_27.2: = specific_function %Convert.bound.loc13_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %Convert.specific_fn.loc13_27.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_27.6: init %i32 = converted %int_2, %int.convert_checked.loc13_27.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_27.5: init %i32 = initialize_from %.loc13_27.2 to %.loc13_27.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc13_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_27.2: = bound_method %int_2, %impl.elem0.loc13_27.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_27.2: = specific_function %Convert.bound.loc13_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc13_27.2: init %i32 = call %Convert.specific_fn.loc13_27.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_27.6: init %i32 = converted %int_2, %int.convert_checked.loc13_27.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_27.7: ref %i32 = class_element_access %.loc13_27.3, element1 -// CHECK:STDOUT: %.loc13_27.8: init %i32 = initialize_from %.loc13_27.6 to %.loc13_27.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_27.8: init %i32 = initialize_from %.loc13_27.6 to %.loc13_27.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_27.9: init %C = class_init (%.loc13_27.5, %.loc13_27.8), %.loc13_27.3 [template = constants.%C.val] // CHECK:STDOUT: %.loc13_27.10: ref %C = temporary %.loc13_27.3, %.loc13_27.9 // CHECK:STDOUT: %.loc13_28.1: ref %C = converted %.loc13_27.1, %.loc13_27.10 diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index 043ca41cf82d..8bf30f321f8c 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -51,41 +51,41 @@ class Derived { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] -// CHECK:STDOUT: %struct_type.b.1: type = struct_type {.b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.b.1 [template] +// CHECK:STDOUT: %struct_type.b.fc0: type = struct_type {.b: %i32} [template] +// CHECK:STDOUT: %complete_type.d62: = complete_type_witness %struct_type.b.fc0 [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Base [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.1: type = struct_type {.base: %Base, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d.1 [template] +// CHECK:STDOUT: %Derived.elem.69e: type = unbound_element_type %Derived, %Base [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.79e: type = struct_type {.base: %Base, .d: %i32} [template] +// CHECK:STDOUT: %complete_type.71d: = complete_type_witness %struct_type.base.d.79e [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %struct_type.b.2: type = struct_type {.b: Core.IntLiteral} [template] -// CHECK:STDOUT: %int_7.1: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %struct_type.base.d.3: type = struct_type {.base: %struct_type.b.2, .d: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %Base.val: %Base = struct_value (%int_4.2) [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_7.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_7.2: %i32 = int_value 7 [template] -// CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.2) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [template] +// CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [template] +// CHECK:STDOUT: %struct_type.base.d.a20: type = struct_type {.base: %struct_type.b.a15, .d: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %Base.val: %Base = struct_value (%int_4.2ec) [template] +// CHECK:STDOUT: %Convert.bound.eba: = bound_method %int_7.29f, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.785: = specific_function %Convert.bound.eba, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_7.2da: %i32 = int_value 7 [template] +// CHECK:STDOUT: %Derived.val: %Derived = struct_value (%Base.val, %int_7.2da) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %Access.type: type = fn_type @Access [template] // CHECK:STDOUT: %Access: %Access.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -113,26 +113,26 @@ class Derived { // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [template = constants.%Access] { // CHECK:STDOUT: %d.patt: %Derived = binding_pattern d // CHECK:STDOUT: %d.param_patt: %Derived = value_param_pattern %d.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc17_27: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc17_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc17_35.1: %tuple.type.1 = tuple_literal (%i32.loc17_27, %i32.loc17_32) -// CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc17_35.1: %tuple.type.24b = tuple_literal (%i32.loc17_27, %i32.loc17_32) +// CHECK:STDOUT: %.loc17_35.2: type = converted %.loc17_35.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0 // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] // CHECK:STDOUT: %d: %Derived = bind_name d, %d.param -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %return.param: ref %tuple.type.471 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.471 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %.loc4: %Base.elem = field_decl b, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.fc0 [template = constants.%complete_type.d62] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -142,9 +142,9 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc8: %Derived.elem.1 = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %.loc10: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc8: %Derived.elem.69e = base_decl %Base.ref, element0 [template] +// CHECK:STDOUT: %.loc10: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.79e [template = constants.%complete_type.71d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -156,52 +156,52 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %Derived { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc14_26.1: %struct_type.b.2 = struct_literal (%int_4) -// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.1] -// CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.3 = struct_literal (%.loc14_26.1, %int_7) -// CHECK:STDOUT: %impl.elem0.loc14_26: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_26: = bound_method %int_4, %impl.elem0.loc14_26 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_26: = specific_function %Convert.bound.loc14_26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_26: init %i32 = call %Convert.specific_fn.loc14_26(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc14_26.2: init %i32 = converted %int_4, %int.convert_checked.loc14_26 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc14_26.1: %struct_type.b.a15 = struct_literal (%int_4) +// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] +// CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.a20 = struct_literal (%.loc14_26.1, %int_7) +// CHECK:STDOUT: %impl.elem0.loc14_26: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_26: = bound_method %int_4, %impl.elem0.loc14_26 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc14_26: = specific_function %Convert.bound.loc14_26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc14_26: init %i32 = call %Convert.specific_fn.loc14_26(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc14_26.2: init %i32 = converted %int_4, %int.convert_checked.loc14_26 [template = constants.%int_4.2ec] // CHECK:STDOUT: %.loc14_35.2: ref %Base = class_element_access %return, element0 // CHECK:STDOUT: %.loc14_26.3: ref %i32 = class_element_access %.loc14_35.2, element0 -// CHECK:STDOUT: %.loc14_26.4: init %i32 = initialize_from %.loc14_26.2 to %.loc14_26.3 [template = constants.%int_4.2] +// CHECK:STDOUT: %.loc14_26.4: init %i32 = initialize_from %.loc14_26.2 to %.loc14_26.3 [template = constants.%int_4.2ec] // CHECK:STDOUT: %.loc14_26.5: init %Base = class_init (%.loc14_26.4), %.loc14_35.2 [template = constants.%Base.val] // CHECK:STDOUT: %.loc14_35.3: init %Base = converted %.loc14_26.1, %.loc14_26.5 [template = constants.%Base.val] -// CHECK:STDOUT: %impl.elem0.loc14_35: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_35: = bound_method %int_7, %impl.elem0.loc14_35 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_35: = specific_function %Convert.bound.loc14_35, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_35: init %i32 = call %Convert.specific_fn.loc14_35(%int_7) [template = constants.%int_7.2] -// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_7, %int.convert_checked.loc14_35 [template = constants.%int_7.2] +// CHECK:STDOUT: %impl.elem0.loc14_35: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_35: = bound_method %int_7, %impl.elem0.loc14_35 [template = constants.%Convert.bound.eba] +// CHECK:STDOUT: %Convert.specific_fn.loc14_35: = specific_function %Convert.bound.loc14_35, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.785] +// CHECK:STDOUT: %int.convert_checked.loc14_35: init %i32 = call %Convert.specific_fn.loc14_35(%int_7) [template = constants.%int_7.2da] +// CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_7, %int.convert_checked.loc14_35 [template = constants.%int_7.2da] // CHECK:STDOUT: %.loc14_35.5: ref %i32 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc14_35.6: init %i32 = initialize_from %.loc14_35.4 to %.loc14_35.5 [template = constants.%int_7.2] +// CHECK:STDOUT: %.loc14_35.6: init %i32 = initialize_from %.loc14_35.4 to %.loc14_35.5 [template = constants.%int_7.2da] // CHECK:STDOUT: %.loc14_35.7: init %Derived = class_init (%.loc14_35.3, %.loc14_35.6), %return [template = constants.%Derived.val] // CHECK:STDOUT: %.loc14_36: init %Derived = converted %.loc14_35.1, %.loc14_35.7 [template = constants.%Derived.val] // CHECK:STDOUT: return %.loc14_36 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Access(%d.param_patt: %Derived) -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @Access(%d.param_patt: %Derived) -> %return.param_patt: %tuple.type.471 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref.loc18_11: %Derived = name_ref d, %d -// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.2 = name_ref d, @Derived.%.loc10 [template = @Derived.%.loc10] +// CHECK:STDOUT: %d.ref.loc18_12: %Derived.elem.d12 = name_ref d, @Derived.%.loc10 [template = @Derived.%.loc10] // CHECK:STDOUT: %.loc18_12.1: ref %i32 = class_element_access %d.ref.loc18_11, element1 // CHECK:STDOUT: %.loc18_12.2: %i32 = bind_value %.loc18_12.1 // CHECK:STDOUT: %d.ref.loc18_16: %Derived = name_ref d, %d -// CHECK:STDOUT: %base.ref: %Derived.elem.1 = name_ref base, @Derived.%.loc8 [template = @Derived.%.loc8] +// CHECK:STDOUT: %base.ref: %Derived.elem.69e = name_ref base, @Derived.%.loc8 [template = @Derived.%.loc8] // CHECK:STDOUT: %.loc18_17.1: ref %Base = class_element_access %d.ref.loc18_16, element0 // CHECK:STDOUT: %.loc18_17.2: %Base = bind_value %.loc18_17.1 // CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc4 [template = @Base.%.loc4] // CHECK:STDOUT: %.loc18_22.1: ref %i32 = class_element_access %.loc18_17.2, element0 // CHECK:STDOUT: %.loc18_22.2: %i32 = bind_value %.loc18_22.1 -// CHECK:STDOUT: %.loc18_24.1: %tuple.type.2 = tuple_literal (%.loc18_12.2, %.loc18_22.2) +// CHECK:STDOUT: %.loc18_24.1: %tuple.type.471 = tuple_literal (%.loc18_12.2, %.loc18_22.2) // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return, element0 // CHECK:STDOUT: %.loc18_24.2: init %i32 = initialize_from %.loc18_12.2 to %tuple.elem0 // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc18_24.3: init %i32 = initialize_from %.loc18_22.2 to %tuple.elem1 -// CHECK:STDOUT: %.loc18_24.4: init %tuple.type.2 = tuple_init (%.loc18_24.2, %.loc18_24.3) to %return -// CHECK:STDOUT: %.loc18_25: init %tuple.type.2 = converted %.loc18_24.1, %.loc18_24.4 +// CHECK:STDOUT: %.loc18_24.4: init %tuple.type.471 = tuple_init (%.loc18_24.2, %.loc18_24.3) to %return +// CHECK:STDOUT: %.loc18_25: init %tuple.type.471 = converted %.loc18_24.1, %.loc18_24.4 // CHECK:STDOUT: return %.loc18_25 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -210,18 +210,18 @@ class Derived { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %i32 [template] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.d [template] +// CHECK:STDOUT: %complete_type.23b: = complete_type_witness %struct_type.d [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -239,7 +239,7 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -249,7 +249,7 @@ class Derived { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %.loc7: %Derived.elem = field_decl d, element0 [template] // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d [template = constants.%complete_type.23b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived diff --git a/toolchain/check/testdata/class/base_field.carbon b/toolchain/check/testdata/class/base_field.carbon index f30b0f5464fb..c37740b7cdcd 100644 --- a/toolchain/check/testdata/class/base_field.carbon +++ b/toolchain/check/testdata/class/base_field.carbon @@ -33,21 +33,21 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.c [template] +// CHECK:STDOUT: %complete_type.67b: = complete_type_witness %struct_type.a.b.c [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Base [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.e.1: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d.e.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Derived [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %Derived.elem.69e: type = unbound_element_type %Derived, %Base [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.e.9c0: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [template] +// CHECK:STDOUT: %complete_type.ea5: = complete_type_witness %struct_type.base.d.e.9c0 [template] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %Access.type: type = fn_type @Access [template] // CHECK:STDOUT: %Access: %Access.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -64,22 +64,22 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {} // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [template = constants.%Access] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc24_30: type = ptr_type %i32 [template = constants.%ptr.3] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc24: type = splice_block %ptr.loc24_21 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc24_30: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc24: type = splice_block %ptr.loc24_21 [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %ptr.loc24_21: type = ptr_type %Derived [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc24_21: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.3 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -87,7 +87,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %.loc12: %Base.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Base.elem = field_decl b, element1 [template] // CHECK:STDOUT: %.loc14: %Base.elem = field_decl c, element2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.67b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -99,10 +99,10 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc18: %Derived.elem.1 = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %.loc20: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %.loc21: %Derived.elem.2 = field_decl e, element2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc18: %Derived.elem.69e = base_decl %Base.ref, element0 [template] +// CHECK:STDOUT: %.loc20: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %.loc21: %Derived.elem.d12 = field_decl e, element2 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.9c0 [template = constants.%complete_type.ea5] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -113,15 +113,15 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Access(%p.param_patt: %ptr.2) -> %ptr.3 { +// CHECK:STDOUT: fn @Access(%p.param_patt: %ptr.404) -> %ptr.dc3 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc25_12: ref %Derived = deref %p.ref // CHECK:STDOUT: %c.ref: %Base.elem = name_ref c, @Base.%.loc14 [template = @Base.%.loc14] // CHECK:STDOUT: %.loc25_15.1: ref %Base = class_element_access %.loc25_12, element0 // CHECK:STDOUT: %.loc25_15.2: ref %Base = converted %.loc25_12, %.loc25_15.1 // CHECK:STDOUT: %.loc25_15.3: ref %i32 = class_element_access %.loc25_15.2, element2 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc25_15.3 +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of %.loc25_15.3 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_function_unqualified.carbon b/toolchain/check/testdata/class/base_function_unqualified.carbon index 8532128eec6c..e9c7bc251154 100644 --- a/toolchain/check/testdata/class/base_function_unqualified.carbon +++ b/toolchain/check/testdata/class/base_function_unqualified.carbon @@ -31,7 +31,7 @@ fn Derived.H() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -39,7 +39,7 @@ fn Derived.H() { // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -63,7 +63,7 @@ fn Derived.H() { // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -76,7 +76,7 @@ fn Derived.H() { // CHECK:STDOUT: %.loc16: %Derived.elem = base_decl %Base.ref, element0 [template] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived diff --git a/toolchain/check/testdata/class/base_method.carbon b/toolchain/check/testdata/class/base_method.carbon index fda6d97dad3b..9cee22f43ab5 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -34,32 +34,32 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Base [template] +// CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.base.1 [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %Derived [template] +// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [template] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [template] // CHECK:STDOUT: %Call.type: type = fn_type @Call [template] // CHECK:STDOUT: %Call: %Call.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -75,46 +75,46 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc17_11: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc17: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc17_26: type = splice_block %ptr.loc17 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc17: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc17_26: type = splice_block %ptr.loc17 [template = constants.%ptr.11f] { // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Base [template = constants.%Base] -// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Base [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc17: %ptr.1 = bind_name self, %self.param.loc17 +// CHECK:STDOUT: %self.loc17: %ptr.11f = bind_name self, %self.param.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [template = constants.%Derived] {} {} // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { -// CHECK:STDOUT: %p.patt: %ptr.3 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.3 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc25: type = splice_block %ptr [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.3 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %.loc12: %Base.elem = field_decl a, element0 [template] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc17_11: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc14: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc14: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14 [template = constants.%ptr.11f] { // CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, constants.%Base [template = constants.%Base] -// CHECK:STDOUT: %ptr.loc14: type = ptr_type %Base [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc14: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc14: %ptr.1 = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %self.loc14: %ptr.11f = bind_name self, %self.param.loc14 // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -126,7 +126,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc22: %Derived.elem = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -135,33 +135,33 @@ fn Call(p: Derived*) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.1]() { +// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.11f]() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.1 = name_ref self, %self.loc17 +// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc17 // CHECK:STDOUT: %.loc18_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc12 [template = @Base.%.loc12] // CHECK:STDOUT: %.loc18_10: ref %i32 = class_element_access %.loc18_4, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_13: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_13: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: assign %.loc18_10, %.loc18_13 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Call(%p.param_patt: %ptr.3) { +// CHECK:STDOUT: fn @Call(%p.param_patt: %ptr.404) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.3 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc26_4.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Base.%F.decl [template = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %.loc26_4.1, %F.ref -// CHECK:STDOUT: %addr.loc26_4.1: %ptr.3 = addr_of %.loc26_4.1 +// CHECK:STDOUT: %addr.loc26_4.1: %ptr.404 = addr_of %.loc26_4.1 // CHECK:STDOUT: %.loc26_4.2: ref %Derived = deref %addr.loc26_4.1 // CHECK:STDOUT: %.loc26_4.3: ref %Base = class_element_access %.loc26_4.2, element0 -// CHECK:STDOUT: %addr.loc26_4.2: %ptr.1 = addr_of %.loc26_4.3 -// CHECK:STDOUT: %.loc26_4.4: %ptr.1 = converted %addr.loc26_4.1, %addr.loc26_4.2 +// CHECK:STDOUT: %addr.loc26_4.2: %ptr.11f = addr_of %.loc26_4.3 +// CHECK:STDOUT: %.loc26_4.4: %ptr.11f = converted %addr.loc26_4.1, %addr.loc26_4.2 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc26_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index f6684ee51895..d6c020d6cdca 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -45,22 +45,22 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.3ec: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.f90: %F.type.3ec = struct_value () [template] +// CHECK:STDOUT: %G.type.975: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.476: %G.type.975 = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %F.type.55a: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.8d5: %F.type.55a = struct_value () [template] +// CHECK:STDOUT: %G.type.2ac: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.8df: %G.type.2ac = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [template] // CHECK:STDOUT: %Call.type: type = fn_type @Call [template] // CHECK:STDOUT: %Call: %Call.type = struct_value () [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %Derived [template] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [template] // CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [template] // CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [template] // CHECK:STDOUT: %PassDerivedToBase.type: type = fn_type @PassDerivedToBase [template] @@ -71,7 +71,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -106,19 +106,19 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallIndirect.decl: %CallIndirect.type = fn_decl @CallIndirect [template = constants.%CallIndirect] { -// CHECK:STDOUT: %p.patt: %ptr.3 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.3 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc29: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc29: type = splice_block %ptr [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] -// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.3 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -137,19 +137,19 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %PassDerivedToBaseIndirect.decl: %PassDerivedToBaseIndirect.type = fn_decl @PassDerivedToBaseIndirect [template = constants.%PassDerivedToBaseIndirect] { -// CHECK:STDOUT: %p.patt: %ptr.3 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.3 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc37: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc37: type = splice_block %ptr [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl.loc11 [template = constants.%Derived] -// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.3 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -158,7 +158,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc19: %Derived.elem = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.55a = fn_decl @F.2 [template = constants.%F.8d5] { // CHECK:STDOUT: %self.patt: %Derived = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Derived = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -166,7 +166,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived] // CHECK:STDOUT: %self: %Derived = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] { +// CHECK:STDOUT: %G.decl: %G.type.2ac = fn_decl @G.2 [template = constants.%G.8df] { // CHECK:STDOUT: %self.patt: %Derived = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Derived = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -174,7 +174,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Derived [template = constants.%Derived] // CHECK:STDOUT: %self: %Derived = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -186,7 +186,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.3ec = fn_decl @F.1 [template = constants.%F.f90] { // CHECK:STDOUT: %self.patt: %Base = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Base = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -200,7 +200,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] { +// CHECK:STDOUT: %G.decl: %G.type.975 = fn_decl @G.1 [template = constants.%G.476] { // CHECK:STDOUT: %self.patt: %Derived = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Derived = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -214,7 +214,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -235,7 +235,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Derived = name_ref a, %a // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %F.ref: %F.type.1 = name_ref F, @Base.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref: %F.type.3ec = name_ref F, @Base.%F.decl [template = constants.%F.f90] // CHECK:STDOUT: %F.bound: = bound_method %a.ref, %F.ref // CHECK:STDOUT: %.loc26_10.1: ref %Base = class_element_access %a.ref, element0 // CHECK:STDOUT: %.loc26_10.2: ref %Base = converted %a.ref, %.loc26_10.1 @@ -246,11 +246,11 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: return %.loc26_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallIndirect(%p.param_patt: %ptr.3) -> %i32 { +// CHECK:STDOUT: fn @CallIndirect(%p.param_patt: %ptr.404) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.3 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %F.ref: %F.type.1 = name_ref F, @Base.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref: %F.type.3ec = name_ref F, @Base.%F.decl [template = constants.%F.f90] // CHECK:STDOUT: %.loc30_11.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %F.bound: = bound_method %.loc30_11.1, %F.ref // CHECK:STDOUT: %.loc30_11.2: ref %Base = class_element_access %.loc30_11.1, element0 @@ -266,7 +266,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Derived = name_ref a, %a // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %G.ref: %G.type.1 = name_ref G, @Base.%G.decl [template = constants.%G.1] +// CHECK:STDOUT: %G.ref: %G.type.975 = name_ref G, @Base.%G.decl [template = constants.%G.476] // CHECK:STDOUT: %G.bound: = bound_method %a.ref, %G.ref // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%a.ref) // CHECK:STDOUT: %.loc34_22.1: %i32 = value_of_initializer %G.call @@ -274,11 +274,11 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: return %.loc34_22.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @PassDerivedToBaseIndirect(%p.param_patt: %ptr.3) -> %i32 { +// CHECK:STDOUT: fn @PassDerivedToBaseIndirect(%p.param_patt: %ptr.404) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.3 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %G.ref: %G.type.1 = name_ref G, @Base.%G.decl [template = constants.%G.1] +// CHECK:STDOUT: %G.ref: %G.type.975 = name_ref G, @Base.%G.decl [template = constants.%G.476] // CHECK:STDOUT: %.loc38_11.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %G.bound: = bound_method %.loc38_11.1, %G.ref // CHECK:STDOUT: %.loc38_11.2: %Derived = bind_value %.loc38_11.1 diff --git a/toolchain/check/testdata/class/base_method_shadow.carbon b/toolchain/check/testdata/class/base_method_shadow.carbon index 77068a8135fc..f5ff67f826cd 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -37,29 +37,29 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %A [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [template] +// CHECK:STDOUT: %F.type.76a: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.a9f: %F.type.76a = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %B [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [template] +// CHECK:STDOUT: %F.type.e92: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.d7d: %F.type.e92 = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] -// CHECK:STDOUT: %ptr.5: type = ptr_type %C [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.3: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base.3 [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %F.type.675: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.2c9: %F.type.675 = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B [template] -// CHECK:STDOUT: %ptr.6: type = ptr_type %D [template] +// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [template] // CHECK:STDOUT: %Call.type: type = fn_type @Call [template] // CHECK:STDOUT: %Call: %Call.type = struct_value () [template] // CHECK:STDOUT: } @@ -86,56 +86,56 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { -// CHECK:STDOUT: %a.patt: %ptr.1 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.1 = value_param_pattern %a.patt, runtime_param0 -// CHECK:STDOUT: %b.patt: %ptr.3 = binding_pattern b -// CHECK:STDOUT: %b.param_patt: %ptr.3 = value_param_pattern %b.patt, runtime_param1 -// CHECK:STDOUT: %c.patt: %ptr.5 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %ptr.5 = value_param_pattern %c.patt, runtime_param2 -// CHECK:STDOUT: %d.patt: %ptr.6 = binding_pattern d -// CHECK:STDOUT: %d.param_patt: %ptr.6 = value_param_pattern %d.patt, runtime_param3 +// CHECK:STDOUT: %a.patt: %ptr.6db = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.6db = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %b.patt: %ptr.e79 = binding_pattern b +// CHECK:STDOUT: %b.param_patt: %ptr.e79 = value_param_pattern %b.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %ptr.019 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %ptr.019 = value_param_pattern %c.patt, runtime_param2 +// CHECK:STDOUT: %d.patt: %ptr.19c = binding_pattern d +// CHECK:STDOUT: %d.param_patt: %ptr.19c = value_param_pattern %d.patt, runtime_param3 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc29_13: type = splice_block %ptr.loc29_13 [template = constants.%ptr.1] { +// CHECK:STDOUT: %a.param: %ptr.6db = value_param runtime_param0 +// CHECK:STDOUT: %.loc29_13: type = splice_block %ptr.loc29_13 [template = constants.%ptr.6db] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr.loc29_13: type = ptr_type %A [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc29_13: type = ptr_type %A [template = constants.%ptr.6db] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.1 = bind_name a, %a.param -// CHECK:STDOUT: %b.param: %ptr.3 = value_param runtime_param1 -// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [template = constants.%ptr.3] { +// CHECK:STDOUT: %a: %ptr.6db = bind_name a, %a.param +// CHECK:STDOUT: %b.param: %ptr.e79 = value_param runtime_param1 +// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [template = constants.%ptr.e79] { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %B [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %B [template = constants.%ptr.e79] // CHECK:STDOUT: } -// CHECK:STDOUT: %b: %ptr.3 = bind_name b, %b.param -// CHECK:STDOUT: %c.param: %ptr.5 = value_param runtime_param2 -// CHECK:STDOUT: %.loc29_27: type = splice_block %ptr.loc29_27 [template = constants.%ptr.5] { +// CHECK:STDOUT: %b: %ptr.e79 = bind_name b, %b.param +// CHECK:STDOUT: %c.param: %ptr.019 = value_param runtime_param2 +// CHECK:STDOUT: %.loc29_27: type = splice_block %ptr.loc29_27 [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %C [template = constants.%ptr.5] +// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %ptr.5 = bind_name c, %c.param -// CHECK:STDOUT: %d.param: %ptr.6 = value_param runtime_param3 -// CHECK:STDOUT: %.loc29_34: type = splice_block %ptr.loc29_34 [template = constants.%ptr.6] { +// CHECK:STDOUT: %c: %ptr.019 = bind_name c, %c.param +// CHECK:STDOUT: %d.param: %ptr.19c = value_param runtime_param3 +// CHECK:STDOUT: %.loc29_34: type = splice_block %ptr.loc29_34 [template = constants.%ptr.19c] { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ptr.loc29_34: type = ptr_type %D [template = constants.%ptr.6] +// CHECK:STDOUT: %ptr.loc29_34: type = ptr_type %D [template = constants.%ptr.19c] // CHECK:STDOUT: } -// CHECK:STDOUT: %d: %ptr.6 = bind_name d, %d.param +// CHECK:STDOUT: %d: %ptr.19c = bind_name d, %d.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.76a = fn_decl @F.1 [template = constants.%F.a9f] { +// CHECK:STDOUT: %self.patt: %ptr.6db = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.6db = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.6db = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr [template = constants.%ptr.6db] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [template = constants.%A] -// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.6db] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.6db = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -146,19 +146,19 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc16: %B.elem = base_decl %A.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.e92 = fn_decl @F.2 [template = constants.%F.d7d] { +// CHECK:STDOUT: %self.patt: %ptr.e79 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e79 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc17_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc17_23: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.e79 = value_param runtime_param0 +// CHECK:STDOUT: %.loc17_23: type = splice_block %ptr [template = constants.%ptr.e79] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] -// CHECK:STDOUT: %ptr: type = ptr_type %B [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %B [template = constants.%ptr.e79] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.e79 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -171,19 +171,19 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc21: %C.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] { -// CHECK:STDOUT: %self.patt: %ptr.5 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.5 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.675 = fn_decl @F.3 [template = constants.%F.2c9] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc22_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.5 = value_param runtime_param0 -// CHECK:STDOUT: %.loc22_23: type = splice_block %ptr [template = constants.%ptr.5] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc22_23: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.5] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.5 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.3 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -196,7 +196,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc26: %D.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.3 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -205,41 +205,41 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.1](); +// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.6db](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2[addr %self.param_patt: %ptr.3](); +// CHECK:STDOUT: fn @F.2[addr %self.param_patt: %ptr.e79](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.3[addr %self.param_patt: %ptr.5](); +// CHECK:STDOUT: fn @F.3[addr %self.param_patt: %ptr.019](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Call(%a.param_patt: %ptr.1, %b.param_patt: %ptr.3, %c.param_patt: %ptr.5, %d.param_patt: %ptr.6) { +// CHECK:STDOUT: fn @Call(%a.param_patt: %ptr.6db, %b.param_patt: %ptr.e79, %c.param_patt: %ptr.019, %d.param_patt: %ptr.19c) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.1 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.6db = name_ref a, %a // CHECK:STDOUT: %.loc30: ref %A = deref %a.ref -// CHECK:STDOUT: %F.ref.loc30: %F.type.1 = name_ref F, @A.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc30: %F.type.76a = name_ref F, @A.%F.decl [template = constants.%F.a9f] // CHECK:STDOUT: %F.bound.loc30: = bound_method %.loc30, %F.ref.loc30 -// CHECK:STDOUT: %addr.loc30: %ptr.1 = addr_of %.loc30 +// CHECK:STDOUT: %addr.loc30: %ptr.6db = addr_of %.loc30 // CHECK:STDOUT: %F.call.loc30: init %empty_tuple.type = call %F.bound.loc30(%addr.loc30) -// CHECK:STDOUT: %b.ref: %ptr.3 = name_ref b, %b +// CHECK:STDOUT: %b.ref: %ptr.e79 = name_ref b, %b // CHECK:STDOUT: %.loc31: ref %B = deref %b.ref -// CHECK:STDOUT: %F.ref.loc31: %F.type.2 = name_ref F, @B.%F.decl [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc31: %F.type.e92 = name_ref F, @B.%F.decl [template = constants.%F.d7d] // CHECK:STDOUT: %F.bound.loc31: = bound_method %.loc31, %F.ref.loc31 -// CHECK:STDOUT: %addr.loc31: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr.loc31: %ptr.e79 = addr_of %.loc31 // CHECK:STDOUT: %F.call.loc31: init %empty_tuple.type = call %F.bound.loc31(%addr.loc31) -// CHECK:STDOUT: %c.ref: %ptr.5 = name_ref c, %c +// CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c // CHECK:STDOUT: %.loc32: ref %C = deref %c.ref -// CHECK:STDOUT: %F.ref.loc32: %F.type.3 = name_ref F, @C.%F.decl [template = constants.%F.3] +// CHECK:STDOUT: %F.ref.loc32: %F.type.675 = name_ref F, @C.%F.decl [template = constants.%F.2c9] // CHECK:STDOUT: %F.bound.loc32: = bound_method %.loc32, %F.ref.loc32 -// CHECK:STDOUT: %addr.loc32: %ptr.5 = addr_of %.loc32 +// CHECK:STDOUT: %addr.loc32: %ptr.019 = addr_of %.loc32 // CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32) -// CHECK:STDOUT: %d.ref: %ptr.6 = name_ref d, %d +// CHECK:STDOUT: %d.ref: %ptr.19c = name_ref d, %d // CHECK:STDOUT: %.loc33_4.1: ref %D = deref %d.ref -// CHECK:STDOUT: %F.ref.loc33: %F.type.2 = name_ref F, @B.%F.decl [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc33: %F.type.e92 = name_ref F, @B.%F.decl [template = constants.%F.d7d] // CHECK:STDOUT: %F.bound.loc33: = bound_method %.loc33_4.1, %F.ref.loc33 -// CHECK:STDOUT: %addr.loc33_4.1: %ptr.6 = addr_of %.loc33_4.1 +// CHECK:STDOUT: %addr.loc33_4.1: %ptr.19c = addr_of %.loc33_4.1 // CHECK:STDOUT: %.loc33_4.2: ref %D = deref %addr.loc33_4.1 // CHECK:STDOUT: %.loc33_4.3: ref %B = class_element_access %.loc33_4.2, element0 -// CHECK:STDOUT: %addr.loc33_4.2: %ptr.3 = addr_of %.loc33_4.3 -// CHECK:STDOUT: %.loc33_4.4: %ptr.3 = converted %addr.loc33_4.1, %addr.loc33_4.2 +// CHECK:STDOUT: %addr.loc33_4.2: %ptr.e79 = addr_of %.loc33_4.3 +// CHECK:STDOUT: %.loc33_4.4: %ptr.e79 = converted %addr.loc33_4.1, %addr.loc33_4.2 // CHECK:STDOUT: %F.call.loc33: init %empty_tuple.type = call %F.bound.loc33(%.loc33_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 10865240d946..00ce199f20b7 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -38,23 +38,23 @@ fn Run() -> i32 { // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.k [template] +// CHECK:STDOUT: %complete_type.631: = complete_type_witness %struct_type.k [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.1, %Convert.10 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -134,7 +134,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: %Class.elem = field_decl k, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [template = constants.%complete_type.631] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -160,13 +160,13 @@ fn Run() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [template = constants.%F] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc26_18.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc26_18.2: %i32 = converted %int_4, %.loc26_18.1 [template = constants.%int_4.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc26_18.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc26_18.2: %i32 = converted %int_4, %.loc26_18.1 [template = constants.%int_4.2ec] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc26_18.2) // CHECK:STDOUT: %.loc26_20.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc26_20.2: %i32 = converted %F.call, %.loc26_20.1 diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index e187b287e9c8..3094b6bc3fa9 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -24,12 +24,12 @@ class C { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -60,7 +60,7 @@ class C { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: %C.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/class/compound_field.carbon b/toolchain/check/testdata/class/compound_field.carbon index 86f9af24e2c2..a39052e2afef 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -45,18 +45,18 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.c [template] +// CHECK:STDOUT: %complete_type.67b: = complete_type_witness %struct_type.a.b.c [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Base [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.e.1: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d.e.1 [template] +// CHECK:STDOUT: %Derived.elem.69e: type = unbound_element_type %Derived, %Base [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.e.9c0: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [template] +// CHECK:STDOUT: %complete_type.ea5: = complete_type_witness %struct_type.base.d.e.9c0 [template] // CHECK:STDOUT: %AccessDerived.type: type = fn_type @AccessDerived [template] // CHECK:STDOUT: %AccessDerived: %AccessDerived.type = struct_value () [template] // CHECK:STDOUT: %AccessBase.type: type = fn_type @AccessBase [template] // CHECK:STDOUT: %AccessBase: %AccessBase.type = struct_value () [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type %Derived [template] -// CHECK:STDOUT: %ptr.5: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %AccessDerivedIndirect.type: type = fn_type @AccessDerivedIndirect [template] // CHECK:STDOUT: %AccessDerivedIndirect: %AccessDerivedIndirect.type = struct_value () [template] // CHECK:STDOUT: %AccessBaseIndirect.type: type = fn_type @AccessBaseIndirect [template] @@ -65,7 +65,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -113,40 +113,40 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessDerivedIndirect.decl: %AccessDerivedIndirect.type = fn_decl @AccessDerivedIndirect [template = constants.%AccessDerivedIndirect] { -// CHECK:STDOUT: %p.patt: %ptr.4 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.4 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.5 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.5 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc32_45: type = ptr_type %i32 [template = constants.%ptr.5] -// CHECK:STDOUT: %p.param: %ptr.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc32: type = splice_block %ptr.loc32_36 [template = constants.%ptr.4] { +// CHECK:STDOUT: %ptr.loc32_45: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc32: type = splice_block %ptr.loc32_36 [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref.loc32: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %ptr.loc32_36: type = ptr_type %Derived [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr.loc32_36: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.4 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.5 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.5 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessBaseIndirect.decl: %AccessBaseIndirect.type = fn_decl @AccessBaseIndirect [template = constants.%AccessBaseIndirect] { -// CHECK:STDOUT: %p.patt: %ptr.4 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.4 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.5 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.5 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc36_42: type = ptr_type %i32 [template = constants.%ptr.5] -// CHECK:STDOUT: %p.param: %ptr.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc36: type = splice_block %ptr.loc36_33 [template = constants.%ptr.4] { +// CHECK:STDOUT: %ptr.loc36_42: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc36: type = splice_block %ptr.loc36_33 [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %ptr.loc36_33: type = ptr_type %Derived [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr.loc36_33: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.4 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.5 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.5 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -154,7 +154,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %.loc12: %Base.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Base.elem = field_decl b, element1 [template] // CHECK:STDOUT: %.loc14: %Base.elem = field_decl c, element2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.67b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -166,10 +166,10 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc18: %Derived.elem.1 = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %.loc20: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %.loc21: %Derived.elem.2 = field_decl e, element2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc18: %Derived.elem.69e = base_decl %Base.ref, element0 [template] +// CHECK:STDOUT: %.loc20: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %.loc21: %Derived.elem.d12 = field_decl e, element2 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.9c0 [template = constants.%complete_type.ea5] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -184,7 +184,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref.loc25_10: %Derived = name_ref d, %d // CHECK:STDOUT: %Derived.ref.loc25: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %d.ref.loc25_20: %Derived.elem.2 = name_ref d, @Derived.%.loc20 [template = @Derived.%.loc20] +// CHECK:STDOUT: %d.ref.loc25_20: %Derived.elem.d12 = name_ref d, @Derived.%.loc20 [template = @Derived.%.loc20] // CHECK:STDOUT: %.loc25_11.1: ref %i32 = class_element_access %d.ref.loc25_10, element1 // CHECK:STDOUT: %.loc25_11.2: %i32 = bind_value %.loc25_11.1 // CHECK:STDOUT: return %.loc25_11.2 @@ -202,27 +202,27 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: return %.loc29_11.4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessDerivedIndirect(%p.param_patt: %ptr.4) -> %ptr.5 { +// CHECK:STDOUT: fn @AccessDerivedIndirect(%p.param_patt: %ptr.404) -> %ptr.dc3 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.4 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Derived.ref.loc33: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %d.ref: %Derived.elem.2 = name_ref d, @Derived.%.loc20 [template = @Derived.%.loc20] +// CHECK:STDOUT: %d.ref: %Derived.elem.d12 = name_ref d, @Derived.%.loc20 [template = @Derived.%.loc20] // CHECK:STDOUT: %.loc33_12.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %.loc33_12.2: ref %i32 = class_element_access %.loc33_12.1, element1 -// CHECK:STDOUT: %addr: %ptr.5 = addr_of %.loc33_12.2 +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of %.loc33_12.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessBaseIndirect(%p.param_patt: %ptr.4) -> %ptr.5 { +// CHECK:STDOUT: fn @AccessBaseIndirect(%p.param_patt: %ptr.404) -> %ptr.dc3 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.4 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc13 [template = @Base.%.loc13] // CHECK:STDOUT: %.loc37_12.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %.loc37_12.2: ref %Base = class_element_access %.loc37_12.1, element0 // CHECK:STDOUT: %.loc37_12.3: ref %Base = converted %.loc37_12.1, %.loc37_12.2 // CHECK:STDOUT: %.loc37_12.4: ref %i32 = class_element_access %.loc37_12.3, element1 -// CHECK:STDOUT: %addr: %ptr.5 = addr_of %.loc37_12.4 +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of %.loc37_12.4 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/cross_package_import.carbon b/toolchain/check/testdata/class/cross_package_import.carbon index 62b5487289ee..d90dda7b00b8 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -198,11 +198,11 @@ var c: Other.C = {}; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//other_define // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//other_define, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//other_define, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -219,8 +219,8 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -285,12 +285,12 @@ var c: Other.C = {}; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//other_define // CHECK:STDOUT: import Other//other_extern // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//other_define, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//other_define, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -307,8 +307,8 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -335,12 +335,12 @@ var c: Other.C = {}; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//other_define // CHECK:STDOUT: import Other//other_conflict // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//other_define, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Other//other_define, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//other_define, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -357,8 +357,8 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index d411f4d20ecb..7e60dbe6c97d 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -45,23 +45,23 @@ fn ConvertInit() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.1 [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a.7cc [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %B.elem.1: type = unbound_element_type %B, %A [template] -// CHECK:STDOUT: %B.elem.2: type = unbound_element_type %B, %i32 [template] -// CHECK:STDOUT: %struct_type.base.b.1: type = struct_type {.base: %A, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.b.1 [template] +// CHECK:STDOUT: %B.elem.e38: type = unbound_element_type %B, %A [template] +// CHECK:STDOUT: %B.elem.4d3: type = unbound_element_type %B, %i32 [template] +// CHECK:STDOUT: %struct_type.base.b.970: type = struct_type {.base: %A, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.0f8: = complete_type_witness %struct_type.base.b.970 [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C, %B [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.base.c.1: type = struct_type {.base: %B, .c: %i32} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.base.c.1 [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type %C [template] -// CHECK:STDOUT: %ptr.5: type = ptr_type %B [template] +// CHECK:STDOUT: %C.elem.f0c: type = unbound_element_type %C, %B [template] +// CHECK:STDOUT: %C.elem.124: type = unbound_element_type %C, %i32 [template] +// CHECK:STDOUT: %struct_type.base.c.b65: type = struct_type {.base: %B, .c: %i32} [template] +// CHECK:STDOUT: %complete_type.c8e: = complete_type_witness %struct_type.base.c.b65 [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [template] // CHECK:STDOUT: %ConvertCToB.type: type = fn_type @ConvertCToB [template] // CHECK:STDOUT: %ConvertCToB: %ConvertCToB.type = struct_value () [template] -// CHECK:STDOUT: %ptr.8: type = ptr_type %A [template] +// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [template] // CHECK:STDOUT: %ConvertBToA.type: type = fn_type @ConvertBToA [template] // CHECK:STDOUT: %ConvertBToA: %ConvertBToA.type = struct_value () [template] // CHECK:STDOUT: %ConvertCToA.type: type = fn_type @ConvertCToA [template] @@ -72,34 +72,34 @@ fn ConvertInit() { // CHECK:STDOUT: %ConvertRef: %ConvertRef.type = struct_value () [template] // CHECK:STDOUT: %ConvertInit.type: type = fn_type @ConvertInit [template] // CHECK:STDOUT: %ConvertInit: %ConvertInit.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.base.b.3: type = struct_type {.base: %struct_type.a.2, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %struct_type.base.c.3: type = struct_type {.base: %struct_type.base.b.3, .c: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.2) [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %B.val: %B = struct_value (%A.val, %int_2.2) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%B.val, %int_3.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.base.b.bf0: type = struct_type {.base: %struct_type.a.a6c, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %struct_type.base.c.136: type = struct_type {.base: %struct_type.base.b.bf0, .c: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.c60) [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %B.val: %B = struct_value (%A.val, %int_2.166) [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%B.val, %int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -123,55 +123,55 @@ fn ConvertInit() { // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %ConvertCToB.decl: %ConvertCToB.type = fn_decl @ConvertCToB [template = constants.%ConvertCToB] { -// CHECK:STDOUT: %p.patt: %ptr.4 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.4 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.5 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.5 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.019 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.019 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.e79 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.e79 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %ptr.loc25_27: type = ptr_type %B [template = constants.%ptr.5] -// CHECK:STDOUT: %p.param: %ptr.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc25_20: type = splice_block %ptr.loc25_20 [template = constants.%ptr.4] { +// CHECK:STDOUT: %ptr.loc25_27: type = ptr_type %B [template = constants.%ptr.e79] +// CHECK:STDOUT: %p.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc25_20: type = splice_block %ptr.loc25_20 [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr.loc25_20: type = ptr_type %C [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr.loc25_20: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.4 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.5 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.5 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.e79 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.e79 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertBToA.decl: %ConvertBToA.type = fn_decl @ConvertBToA [template = constants.%ConvertBToA] { -// CHECK:STDOUT: %p.patt: %ptr.5 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.5 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.8 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.8 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.e79 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e79 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.6db = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.6db = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr.loc26_27: type = ptr_type %A [template = constants.%ptr.8] -// CHECK:STDOUT: %p.param: %ptr.5 = value_param runtime_param0 -// CHECK:STDOUT: %.loc26_20: type = splice_block %ptr.loc26_20 [template = constants.%ptr.5] { +// CHECK:STDOUT: %ptr.loc26_27: type = ptr_type %A [template = constants.%ptr.6db] +// CHECK:STDOUT: %p.param: %ptr.e79 = value_param runtime_param0 +// CHECK:STDOUT: %.loc26_20: type = splice_block %ptr.loc26_20 [template = constants.%ptr.e79] { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %ptr.loc26_20: type = ptr_type %B [template = constants.%ptr.5] +// CHECK:STDOUT: %ptr.loc26_20: type = ptr_type %B [template = constants.%ptr.e79] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.5 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.8 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.8 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.e79 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.6db = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.6db = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertCToA.decl: %ConvertCToA.type = fn_decl @ConvertCToA [template = constants.%ConvertCToA] { -// CHECK:STDOUT: %p.patt: %ptr.4 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.4 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.8 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.8 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.019 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.019 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.6db = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.6db = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr.loc27_27: type = ptr_type %A [template = constants.%ptr.8] -// CHECK:STDOUT: %p.param: %ptr.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc27_20: type = splice_block %ptr.loc27_20 [template = constants.%ptr.4] { +// CHECK:STDOUT: %ptr.loc27_27: type = ptr_type %A [template = constants.%ptr.6db] +// CHECK:STDOUT: %p.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc27_20: type = splice_block %ptr.loc27_20 [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr.loc27_20: type = ptr_type %C [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr.loc27_20: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.4 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.8 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.8 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.6db = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.6db = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertValue.decl: %ConvertValue.type = fn_decl @ConvertValue [template = constants.%ConvertValue] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c @@ -182,28 +182,28 @@ fn ConvertInit() { // CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertRef.decl: %ConvertRef.type = fn_decl @ConvertRef [template = constants.%ConvertRef] { -// CHECK:STDOUT: %c.patt: %ptr.4 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %ptr.4 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.8 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.8 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %ptr.019 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %ptr.019 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.6db = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.6db = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc33: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr.loc33_26: type = ptr_type %A [template = constants.%ptr.8] -// CHECK:STDOUT: %c.param: %ptr.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc33: type = splice_block %ptr.loc33_19 [template = constants.%ptr.4] { +// CHECK:STDOUT: %ptr.loc33_26: type = ptr_type %A [template = constants.%ptr.6db] +// CHECK:STDOUT: %c.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc33: type = splice_block %ptr.loc33_19 [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr.loc33_19: type = ptr_type %C [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr.loc33_19: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %ptr.4 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %ptr.8 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.8 = return_slot %return.param +// CHECK:STDOUT: %c: %ptr.019 = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %ptr.6db = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.6db = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConvertInit.decl: %ConvertInit.type = fn_decl @ConvertInit [template = constants.%ConvertInit] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc12: %A.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.7cc [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -213,9 +213,9 @@ fn ConvertInit() { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %.loc16: %B.elem.1 = base_decl %A.ref, element0 [template] -// CHECK:STDOUT: %.loc17: %B.elem.2 = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc16: %B.elem.e38 = base_decl %A.ref, element0 [template] +// CHECK:STDOUT: %.loc17: %B.elem.4d3 = field_decl b, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.970 [template = constants.%complete_type.0f8] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -227,9 +227,9 @@ fn ConvertInit() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %.loc21: %C.elem.1 = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %.loc22: %C.elem.2 = field_decl c, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.c.1 [template = constants.%complete_type.5] +// CHECK:STDOUT: %.loc21: %C.elem.f0c = base_decl %B.ref, element0 [template] +// CHECK:STDOUT: %.loc22: %C.elem.124 = field_decl c, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.c.b65 [template = constants.%complete_type.c8e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -239,34 +239,34 @@ fn ConvertInit() { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertCToB(%p.param_patt: %ptr.4) -> %ptr.5 { +// CHECK:STDOUT: fn @ConvertCToB(%p.param_patt: %ptr.019) -> %ptr.e79 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.4 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p // CHECK:STDOUT: %.loc25_39.1: ref %C = deref %p.ref // CHECK:STDOUT: %.loc25_39.2: ref %B = class_element_access %.loc25_39.1, element0 -// CHECK:STDOUT: %addr: %ptr.5 = addr_of %.loc25_39.2 -// CHECK:STDOUT: %.loc25_39.3: %ptr.5 = converted %p.ref, %addr +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc25_39.2 +// CHECK:STDOUT: %.loc25_39.3: %ptr.e79 = converted %p.ref, %addr // CHECK:STDOUT: return %.loc25_39.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertBToA(%p.param_patt: %ptr.5) -> %ptr.8 { +// CHECK:STDOUT: fn @ConvertBToA(%p.param_patt: %ptr.e79) -> %ptr.6db { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.5 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e79 = name_ref p, %p // CHECK:STDOUT: %.loc26_39.1: ref %B = deref %p.ref // CHECK:STDOUT: %.loc26_39.2: ref %A = class_element_access %.loc26_39.1, element0 -// CHECK:STDOUT: %addr: %ptr.8 = addr_of %.loc26_39.2 -// CHECK:STDOUT: %.loc26_39.3: %ptr.8 = converted %p.ref, %addr +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc26_39.2 +// CHECK:STDOUT: %.loc26_39.3: %ptr.6db = converted %p.ref, %addr // CHECK:STDOUT: return %.loc26_39.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertCToA(%p.param_patt: %ptr.4) -> %ptr.8 { +// CHECK:STDOUT: fn @ConvertCToA(%p.param_patt: %ptr.019) -> %ptr.6db { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.4 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p // CHECK:STDOUT: %.loc27_39.1: ref %C = deref %p.ref // CHECK:STDOUT: %.loc27_39.2: ref %B = class_element_access %.loc27_39.1, element0 // CHECK:STDOUT: %.loc27_39.3: ref %A = class_element_access %.loc27_39.2, element0 -// CHECK:STDOUT: %addr: %ptr.8 = addr_of %.loc27_39.3 -// CHECK:STDOUT: %.loc27_39.4: %ptr.8 = converted %p.ref, %addr +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc27_39.3 +// CHECK:STDOUT: %.loc27_39.4: %ptr.6db = converted %p.ref, %addr // CHECK:STDOUT: return %.loc27_39.4 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -281,55 +281,55 @@ fn ConvertInit() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertRef(%c.param_patt: %ptr.4) -> %ptr.8 { +// CHECK:STDOUT: fn @ConvertRef(%c.param_patt: %ptr.019) -> %ptr.6db { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %ptr.4 = name_ref c, %c +// CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c // CHECK:STDOUT: %.loc34_12: ref %C = deref %c.ref // CHECK:STDOUT: %A.ref.loc34: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc34_15.1: ref %B = class_element_access %.loc34_12, element0 // CHECK:STDOUT: %.loc34_15.2: ref %A = class_element_access %.loc34_15.1, element0 // CHECK:STDOUT: %.loc34_15.3: ref %A = converted %.loc34_12, %.loc34_15.2 -// CHECK:STDOUT: %addr: %ptr.8 = addr_of %.loc34_15.3 +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc34_15.3 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertInit() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc38_39.1: %struct_type.a.2 = struct_literal (%int_1) -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc38_48.1: %struct_type.base.b.3 = struct_literal (%.loc38_39.1, %int_2) -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc38_57.1: %struct_type.base.c.3 = struct_literal (%.loc38_48.1, %int_3) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc38_39.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc38_48.1: %struct_type.base.b.bf0 = struct_literal (%.loc38_39.1, %int_2) +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc38_57.1: %struct_type.base.c.136 = struct_literal (%.loc38_48.1, %int_3) // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc38_39: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc38_39: = bound_method %int_1, %impl.elem0.loc38_39 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc38_39: = specific_function %Convert.bound.loc38_39, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc38_39: init %i32 = call %Convert.specific_fn.loc38_39(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc38_39.2: init %i32 = converted %int_1, %int.convert_checked.loc38_39 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc38_39: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc38_39: = bound_method %int_1, %impl.elem0.loc38_39 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc38_39: = specific_function %Convert.bound.loc38_39, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc38_39: init %i32 = call %Convert.specific_fn.loc38_39(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc38_39.2: init %i32 = converted %int_1, %int.convert_checked.loc38_39 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc38_57.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc38_57.3: ref %B = class_element_access %.loc38_57.2, element0 // CHECK:STDOUT: %.loc38_48.2: ref %A = class_element_access %.loc38_57.3, element0 // CHECK:STDOUT: %.loc38_39.3: ref %i32 = class_element_access %.loc38_48.2, element0 -// CHECK:STDOUT: %.loc38_39.4: init %i32 = initialize_from %.loc38_39.2 to %.loc38_39.3 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc38_39.4: init %i32 = initialize_from %.loc38_39.2 to %.loc38_39.3 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc38_39.5: init %A = class_init (%.loc38_39.4), %.loc38_48.2 [template = constants.%A.val] // CHECK:STDOUT: %.loc38_48.3: init %A = converted %.loc38_39.1, %.loc38_39.5 [template = constants.%A.val] -// CHECK:STDOUT: %impl.elem0.loc38_48: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc38_48: = bound_method %int_2, %impl.elem0.loc38_48 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc38_48: = specific_function %Convert.bound.loc38_48, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc38_48: init %i32 = call %Convert.specific_fn.loc38_48(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc38_48.4: init %i32 = converted %int_2, %int.convert_checked.loc38_48 [template = constants.%int_2.2] +// CHECK:STDOUT: %impl.elem0.loc38_48: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc38_48: = bound_method %int_2, %impl.elem0.loc38_48 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc38_48: = specific_function %Convert.bound.loc38_48, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc38_48: init %i32 = call %Convert.specific_fn.loc38_48(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc38_48.4: init %i32 = converted %int_2, %int.convert_checked.loc38_48 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc38_48.5: ref %i32 = class_element_access %.loc38_57.3, element1 -// CHECK:STDOUT: %.loc38_48.6: init %i32 = initialize_from %.loc38_48.4 to %.loc38_48.5 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc38_48.6: init %i32 = initialize_from %.loc38_48.4 to %.loc38_48.5 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc38_48.7: init %B = class_init (%.loc38_48.3, %.loc38_48.6), %.loc38_57.3 [template = constants.%B.val] // CHECK:STDOUT: %.loc38_57.4: init %B = converted %.loc38_48.1, %.loc38_48.7 [template = constants.%B.val] -// CHECK:STDOUT: %impl.elem0.loc38_57: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc38_57: = bound_method %int_3, %impl.elem0.loc38_57 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc38_57: = specific_function %Convert.bound.loc38_57, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc38_57: init %i32 = call %Convert.specific_fn.loc38_57(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc38_57.5: init %i32 = converted %int_3, %int.convert_checked.loc38_57 [template = constants.%int_3.2] +// CHECK:STDOUT: %impl.elem0.loc38_57: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc38_57: = bound_method %int_3, %impl.elem0.loc38_57 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc38_57: = specific_function %Convert.bound.loc38_57, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc38_57: init %i32 = call %Convert.specific_fn.loc38_57(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc38_57.5: init %i32 = converted %int_3, %int.convert_checked.loc38_57 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc38_57.6: ref %i32 = class_element_access %.loc38_57.2, element1 -// CHECK:STDOUT: %.loc38_57.7: init %i32 = initialize_from %.loc38_57.5 to %.loc38_57.6 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc38_57.7: init %i32 = initialize_from %.loc38_57.5 to %.loc38_57.6 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc38_57.8: init %C = class_init (%.loc38_57.4, %.loc38_57.7), %.loc38_57.2 [template = constants.%C.val] // CHECK:STDOUT: %.loc38_57.9: ref %C = temporary %.loc38_57.2, %.loc38_57.8 // CHECK:STDOUT: %.loc38_59: ref %C = converted %.loc38_57.1, %.loc38_57.9 diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 7441ecf269dc..af7d74a89d6d 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -441,25 +441,25 @@ fn CallReturnAbstract() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Abstract: type = class_type @Abstract [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Abstract [template] +// CHECK:STDOUT: %Derived.elem.513: type = unbound_element_type %Derived, %Abstract [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.1: type = struct_type {.base: %Abstract, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d.1 [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.b7a: type = struct_type {.base: %Abstract, .d: %i32} [template] +// CHECK:STDOUT: %complete_type.f66: = complete_type_witness %struct_type.base.d.b7a [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [template] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %struct_type.base.d.3: type = struct_type {.base: %struct_type.a, .d: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.base.d.9c6: type = struct_type {.base: %struct_type.a, .d: Core.IntLiteral} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -486,7 +486,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract @@ -495,9 +495,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %.loc8: %Derived.elem.1 = base_decl %Abstract.ref, element0 [template] -// CHECK:STDOUT: %.loc10: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc8: %Derived.elem.513 = base_decl %Abstract.ref, element0 [template] +// CHECK:STDOUT: %.loc10: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.b7a [template = constants.%complete_type.f66] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -512,7 +512,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %.loc22_26: %struct_type.a = struct_literal (%int_1) // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7] -// CHECK:STDOUT: %.loc22_35: %struct_type.base.d.3 = struct_literal (%.loc22_26, %int_7) +// CHECK:STDOUT: %.loc22_35: %struct_type.base.d.9c6 = struct_literal (%.loc22_26, %int_7) // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -521,21 +521,21 @@ fn CallReturnAbstract() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Abstract: type = class_type @Abstract [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Abstract [template] +// CHECK:STDOUT: %Derived.elem.513: type = unbound_element_type %Derived, %Abstract [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] // CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: %Abstract, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d [template] +// CHECK:STDOUT: %complete_type.f66: = complete_type_witness %struct_type.base.d [template] // CHECK:STDOUT: %Return.type: type = fn_type @Return [template] // CHECK:STDOUT: %Return: %Return.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -567,7 +567,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract @@ -576,9 +576,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %.loc8: %Derived.elem.1 = base_decl %Abstract.ref, element0 [template] -// CHECK:STDOUT: %.loc10: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc8: %Derived.elem.513 = base_decl %Abstract.ref, element0 [template] +// CHECK:STDOUT: %.loc10: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d [template = constants.%complete_type.f66] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -602,19 +602,19 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Abstract.elem: type = unbound_element_type %Abstract, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived, %Abstract [template] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.1: type = struct_type {.base: %Abstract, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.d.1 [template] +// CHECK:STDOUT: %Derived.elem.513: type = unbound_element_type %Derived, %Abstract [template] +// CHECK:STDOUT: %Derived.elem.d12: type = unbound_element_type %Derived, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.b7a: type = struct_type {.base: %Abstract, .d: %i32} [template] +// CHECK:STDOUT: %complete_type.f66: = complete_type_witness %struct_type.base.d.b7a [template] // CHECK:STDOUT: %Access.type: type = fn_type @Access [template] // CHECK:STDOUT: %Access: %Access.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -648,7 +648,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %.loc5: %Abstract.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract @@ -658,9 +658,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, file.%Abstract.decl [template = constants.%Abstract] -// CHECK:STDOUT: %.loc9: %Derived.elem.1 = base_decl %Abstract.ref, element0 [template] -// CHECK:STDOUT: %.loc11: %Derived.elem.2 = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc9: %Derived.elem.513 = base_decl %Abstract.ref, element0 [template] +// CHECK:STDOUT: %.loc11: %Derived.elem.d12 = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.b7a [template = constants.%complete_type.f66] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -673,7 +673,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: fn @Access(%d.param_patt: %Derived) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %base.ref: %Derived.elem.1 = name_ref base, @Derived.%.loc9 [template = @Derived.%.loc9] +// CHECK:STDOUT: %base.ref: %Derived.elem.513 = name_ref base, @Derived.%.loc9 [template = @Derived.%.loc9] // CHECK:STDOUT: %.loc15: ref %Abstract = class_element_access %d.ref, element0 // CHECK:STDOUT: %a.ref: = name_ref a, [template = ] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index 5a585232dade..617e076832ea 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -38,16 +38,16 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] +// CHECK:STDOUT: %F.type.945: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.ffd: %F.type.945 = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -65,36 +65,36 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c // CHECK:STDOUT: %c.param_patt: %Class = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %c.param: %Class = value_param runtime_param0 // CHECK:STDOUT: %Class.ref.loc20_9: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %c: %Class = bind_name c, %c.param -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param1 -// CHECK:STDOUT: %.loc20: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param1 +// CHECK:STDOUT: %.loc20: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref.loc20_19: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.945 = fn_decl @F.1 [template = constants.%F.ffd] { +// CHECK:STDOUT: %self.patt: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e71 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_24: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_24: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.e71 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self @@ -113,27 +113,27 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.1](); +// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.e71](); // CHECK:STDOUT: // CHECK:STDOUT: fn @G[%self.param_patt: %Class](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%c.param_patt: %Class, %p.param_patt: %ptr.1) { +// CHECK:STDOUT: fn @F.2(%c.param_patt: %Class, %p.param_patt: %ptr.e71) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref.loc27: %Class = name_ref c, %c -// CHECK:STDOUT: %F.ref.loc27: %F.type.1 = name_ref F, @Class.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc27: %F.type.945 = name_ref F, @Class.%F.decl [template = constants.%F.ffd] // CHECK:STDOUT: %F.bound.loc27: = bound_method %c.ref.loc27, %F.ref.loc27 // CHECK:STDOUT: %F.call.loc27: init %empty_tuple.type = call %F.bound.loc27() // CHECK:STDOUT: %c.ref.loc29: %Class = name_ref c, %c // CHECK:STDOUT: %G.ref.loc29: %G.type = name_ref G, @Class.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.bound.loc29: = bound_method %c.ref.loc29, %G.ref.loc29 // CHECK:STDOUT: %G.call.loc29: init %empty_tuple.type = call %G.bound.loc29(%c.ref.loc29) -// CHECK:STDOUT: %p.ref.loc32: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref.loc32: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc32: ref %Class = deref %p.ref.loc32 -// CHECK:STDOUT: %F.ref.loc32: %F.type.1 = name_ref F, @Class.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc32: %F.type.945 = name_ref F, @Class.%F.decl [template = constants.%F.ffd] // CHECK:STDOUT: %F.bound.loc32: = bound_method %.loc32, %F.ref.loc32 -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %.loc32 +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc32 // CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr) -// CHECK:STDOUT: %p.ref.loc34: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref.loc34: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc34_4.1: ref %Class = deref %p.ref.loc34 // CHECK:STDOUT: %G.ref.loc34: %G.type = name_ref G, @Class.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.bound.loc34: = bound_method %.loc34_4.1, %G.ref.loc34 diff --git a/toolchain/check/testdata/class/fail_base_bad_type.carbon b/toolchain/check/testdata/class/fail_base_bad_type.carbon index 2e4d8c582b78..948a3a216af0 100644 --- a/toolchain/check/testdata/class/fail_base_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_base_bad_type.carbon @@ -190,7 +190,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -256,8 +256,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.7 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -319,9 +319,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %DeriveFromi32.elem: type = unbound_element_type %DeriveFromi32, %i32 [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %DeriveFromi32 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] +// CHECK:STDOUT: %complete_type.c10: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %ptr.45c: type = ptr_type %DeriveFromi32 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %ConvertToBadBasei32.type: type = fn_type @ConvertToBadBasei32 [template] // CHECK:STDOUT: %ConvertToBadBasei32: %ConvertToBadBasei32.type = struct_value () [template] // CHECK:STDOUT: %AccessMemberWithInvalidBasei32.type: type = fn_type @AccessMemberWithInvalidBasei32 [template] @@ -330,7 +330,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -346,37 +346,37 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %DeriveFromi32.decl: type = class_decl @DeriveFromi32 [template = constants.%DeriveFromi32] {} {} // CHECK:STDOUT: %ConvertToBadBasei32.decl: %ConvertToBadBasei32.type = fn_decl @ConvertToBadBasei32 [template = constants.%ConvertToBadBasei32] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.45c = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.45c = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc14_49: type = ptr_type %i32 [template = constants.%ptr.2] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc14_40: type = splice_block %ptr.loc14_40 [template = constants.%ptr.1] { +// CHECK:STDOUT: %ptr.loc14_49: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %p.param: %ptr.45c = value_param runtime_param0 +// CHECK:STDOUT: %.loc14_40: type = splice_block %ptr.loc14_40 [template = constants.%ptr.45c] { // CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [template = constants.%DeriveFromi32] -// CHECK:STDOUT: %ptr.loc14_40: type = ptr_type %DeriveFromi32 [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc14_40: type = ptr_type %DeriveFromi32 [template = constants.%ptr.45c] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.45c = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBasei32.decl: %AccessMemberWithInvalidBasei32.type = fn_decl @AccessMemberWithInvalidBasei32 [template = constants.%AccessMemberWithInvalidBasei32] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.45c = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.45c = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc20_51: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.45c = value_param runtime_param0 +// CHECK:STDOUT: %.loc20_51: type = splice_block %ptr [template = constants.%ptr.45c] { // CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [template = constants.%DeriveFromi32] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromi32 [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromi32 [template = constants.%ptr.45c] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.45c = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -386,7 +386,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %.loc9: %DeriveFromi32.elem = base_decl %i32, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.c10] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%DeriveFromi32 @@ -395,19 +395,19 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBasei32(%p.param_patt: %ptr.1) -> %ptr.2 { +// CHECK:STDOUT: fn @ConvertToBadBasei32(%p.param_patt: %ptr.45c) -> %ptr.dc3 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.45c = name_ref p, %p // CHECK:STDOUT: %.loc14_61.1: ref %DeriveFromi32 = deref %p.ref // CHECK:STDOUT: %.loc14_61.2: ref %i32 = class_element_access %.loc14_61.1, element0 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %.loc14_61.2 -// CHECK:STDOUT: %.loc14_61.3: %ptr.2 = converted %p.ref, %addr +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of %.loc14_61.2 +// CHECK:STDOUT: %.loc14_61.3: %ptr.dc3 = converted %p.ref, %addr // CHECK:STDOUT: return %.loc14_61.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBasei32(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBasei32(%p.param_patt: %ptr.45c) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.45c = name_ref p, %p // CHECK:STDOUT: %.loc20_71: ref %DeriveFromi32 = deref %p.ref // CHECK:STDOUT: %n.ref: = name_ref n, [template = ] // CHECK:STDOUT: return @@ -418,12 +418,12 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %DeriveFromTuple: type = class_type @DeriveFromTuple [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%Base) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %DeriveFromTuple [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %tuple.type.2 [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.469: type = tuple_type (%Base) [template] +// CHECK:STDOUT: %ptr.340: type = ptr_type %DeriveFromTuple [template] +// CHECK:STDOUT: %ptr.1ab: type = ptr_type %tuple.type.469 [template] // CHECK:STDOUT: %ConvertToBadBaseTuple.type: type = fn_type @ConvertToBadBaseTuple [template] // CHECK:STDOUT: %ConvertToBadBaseTuple: %ConvertToBadBaseTuple.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] @@ -434,8 +434,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.7 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -453,45 +453,45 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} // CHECK:STDOUT: %DeriveFromTuple.decl: type = class_decl @DeriveFromTuple [template = constants.%DeriveFromTuple] {} {} // CHECK:STDOUT: %ConvertToBadBaseTuple.decl: %ConvertToBadBaseTuple.type = fn_decl @ConvertToBadBaseTuple [template = constants.%ConvertToBadBaseTuple] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.340 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.340 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.1ab = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.1ab = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc21_56: %tuple.type.1 = tuple_literal (%Base.ref) -// CHECK:STDOUT: %.loc21_57: type = converted %.loc21_56, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %ptr.loc21_57: type = ptr_type %tuple.type.2 [template = constants.%ptr.3] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc21_44: type = splice_block %ptr.loc21_44 [template = constants.%ptr.2] { +// CHECK:STDOUT: %.loc21_56: %tuple.type.85c = tuple_literal (%Base.ref) +// CHECK:STDOUT: %.loc21_57: type = converted %.loc21_56, constants.%tuple.type.469 [template = constants.%tuple.type.469] +// CHECK:STDOUT: %ptr.loc21_57: type = ptr_type %tuple.type.469 [template = constants.%ptr.1ab] +// CHECK:STDOUT: %p.param: %ptr.340 = value_param runtime_param0 +// CHECK:STDOUT: %.loc21_44: type = splice_block %ptr.loc21_44 [template = constants.%ptr.340] { // CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [template = constants.%DeriveFromTuple] -// CHECK:STDOUT: %ptr.loc21_44: type = ptr_type %DeriveFromTuple [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc21_44: type = ptr_type %DeriveFromTuple [template = constants.%ptr.340] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.3 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.340 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.1ab = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.1ab = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple.decl: %AccessMemberWithInvalidBaseTuple.type = fn_decl @AccessMemberWithInvalidBaseTuple [template = constants.%AccessMemberWithInvalidBaseTuple] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.340 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.340 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_55: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.340 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_55: type = splice_block %ptr [template = constants.%ptr.340] { // CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [template = constants.%DeriveFromTuple] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromTuple [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromTuple [template = constants.%ptr.340] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.340 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -500,8 +500,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @DeriveFromTuple { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %.loc11_22.1: %tuple.type.1 = tuple_literal (%Base.ref) -// CHECK:STDOUT: %.loc11_22.2: type = converted %.loc11_22.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc11_22.1: %tuple.type.85c = tuple_literal (%Base.ref) +// CHECK:STDOUT: %.loc11_22.2: type = converted %.loc11_22.1, constants.%tuple.type.469 [template = constants.%tuple.type.469] // CHECK:STDOUT: %.loc11_23: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: @@ -512,16 +512,16 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseTuple(%p.param_patt: %ptr.2) -> %ptr.3 { +// CHECK:STDOUT: fn @ConvertToBadBaseTuple(%p.param_patt: %ptr.340) -> %ptr.1ab { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %.loc21_69: %ptr.3 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.340 = name_ref p, %p +// CHECK:STDOUT: %.loc21_69: %ptr.1ab = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseTuple(%p.param_patt: %ptr.2) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseTuple(%p.param_patt: %ptr.340) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.340 = name_ref p, %p // CHECK:STDOUT: %.loc23_75: ref %DeriveFromTuple = deref %p.ref // CHECK:STDOUT: %n.ref: = name_ref n, [template = ] // CHECK:STDOUT: return @@ -534,8 +534,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %struct_type.a.b [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %DeriveFromStruct [template] +// CHECK:STDOUT: %ptr.570: type = ptr_type %struct_type.a.b [template] +// CHECK:STDOUT: %ptr.df0: type = ptr_type %DeriveFromStruct [template] // CHECK:STDOUT: %ConvertToBadBaseStruct.type: type = fn_type @ConvertToBadBaseStruct [template] // CHECK:STDOUT: %ConvertToBadBaseStruct: %ConvertToBadBaseStruct.type = struct_value () [template] // CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct.type: type = fn_type @AccessMemberWithInvalidBaseStruct [template] @@ -544,8 +544,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -561,40 +561,40 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %DeriveFromStruct.decl: type = class_decl @DeriveFromStruct [template = constants.%DeriveFromStruct] {} {} // CHECK:STDOUT: %ConvertToBadBaseStruct.decl: %ConvertToBadBaseStruct.type = fn_decl @ConvertToBadBaseStruct [template = constants.%ConvertToBadBaseStruct] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.1 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.df0 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.df0 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.570 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.570 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc21_57: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_57: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc21_66: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_66: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b] -// CHECK:STDOUT: %ptr.loc21_70: type = ptr_type %struct_type.a.b [template = constants.%ptr.1] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc21_46: type = splice_block %ptr.loc21_46 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc21_70: type = ptr_type %struct_type.a.b [template = constants.%ptr.570] +// CHECK:STDOUT: %p.param: %ptr.df0 = value_param runtime_param0 +// CHECK:STDOUT: %.loc21_46: type = splice_block %ptr.loc21_46 [template = constants.%ptr.df0] { // CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [template = constants.%DeriveFromStruct] -// CHECK:STDOUT: %ptr.loc21_46: type = ptr_type %DeriveFromStruct [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc21_46: type = ptr_type %DeriveFromStruct [template = constants.%ptr.df0] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.1 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.1 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.df0 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.570 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.570 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct.decl: %AccessMemberWithInvalidBaseStruct.type = fn_decl @AccessMemberWithInvalidBaseStruct [template = constants.%AccessMemberWithInvalidBaseStruct] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.df0 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.df0 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc24_57: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.df0 = value_param runtime_param0 +// CHECK:STDOUT: %.loc24_57: type = splice_block %ptr [template = constants.%ptr.df0] { // CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [template = constants.%DeriveFromStruct] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromStruct [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromStruct [template = constants.%ptr.df0] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.df0 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -616,16 +616,16 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseStruct(%p.param_patt: %ptr.2) -> %ptr.1 { +// CHECK:STDOUT: fn @ConvertToBadBaseStruct(%p.param_patt: %ptr.df0) -> %ptr.570 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %.loc21_82: %ptr.1 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.df0 = name_ref p, %p +// CHECK:STDOUT: %.loc21_82: %ptr.570 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseStruct(%p.param_patt: %ptr.2) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseStruct(%p.param_patt: %ptr.df0) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.df0 = name_ref p, %p // CHECK:STDOUT: %.loc24_77: ref %DeriveFromStruct = deref %p.ref // CHECK:STDOUT: %n.ref: = name_ref n, [template = ] // CHECK:STDOUT: return @@ -636,8 +636,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [template] // CHECK:STDOUT: %DeriveFromIncomplete: type = class_type @DeriveFromIncomplete [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %DeriveFromIncomplete [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Incomplete [template] +// CHECK:STDOUT: %ptr.089: type = ptr_type %DeriveFromIncomplete [template] +// CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [template] // CHECK:STDOUT: %ConvertToBadBaseIncomplete.type: type = fn_type @ConvertToBadBaseIncomplete [template] // CHECK:STDOUT: %ConvertToBadBaseIncomplete: %ConvertToBadBaseIncomplete.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] @@ -648,8 +648,8 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.7 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -667,36 +667,36 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [template = constants.%Incomplete] {} {} // CHECK:STDOUT: %DeriveFromIncomplete.decl: type = class_decl @DeriveFromIncomplete [template = constants.%DeriveFromIncomplete] {} {} // CHECK:STDOUT: %ConvertToBadBaseIncomplete.decl: %ConvertToBadBaseIncomplete.type = fn_decl @ConvertToBadBaseIncomplete [template = constants.%ConvertToBadBaseIncomplete] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.089 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.089 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.c62 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.c62 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [template = constants.%Incomplete] -// CHECK:STDOUT: %ptr.loc28_70: type = ptr_type %Incomplete [template = constants.%ptr.2] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc28_54: type = splice_block %ptr.loc28_54 [template = constants.%ptr.1] { +// CHECK:STDOUT: %ptr.loc28_70: type = ptr_type %Incomplete [template = constants.%ptr.c62] +// CHECK:STDOUT: %p.param: %ptr.089 = value_param runtime_param0 +// CHECK:STDOUT: %.loc28_54: type = splice_block %ptr.loc28_54 [template = constants.%ptr.089] { // CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete] -// CHECK:STDOUT: %ptr.loc28_54: type = ptr_type %DeriveFromIncomplete [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc28_54: type = ptr_type %DeriveFromIncomplete [template = constants.%ptr.089] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.089 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.c62 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.c62 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete.decl: %AccessMemberWithInvalidBaseIncomplete.type = fn_decl @AccessMemberWithInvalidBaseIncomplete [template = constants.%AccessMemberWithInvalidBaseIncomplete] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.089 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.089 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30_65: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.089 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30_65: type = splice_block %ptr [template = constants.%ptr.089] { // CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [template = constants.%DeriveFromIncomplete] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromIncomplete [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromIncomplete [template = constants.%ptr.089] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.089 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -716,16 +716,16 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseIncomplete(%p.param_patt: %ptr.1) -> %ptr.2 { +// CHECK:STDOUT: fn @ConvertToBadBaseIncomplete(%p.param_patt: %ptr.089) -> %ptr.c62 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p -// CHECK:STDOUT: %.loc28_82: %ptr.2 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.089 = name_ref p, %p +// CHECK:STDOUT: %.loc28_82: %ptr.c62 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseIncomplete(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseIncomplete(%p.param_patt: %ptr.089) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.089 = name_ref p, %p // CHECK:STDOUT: %.loc30_85: ref %DeriveFromIncomplete = deref %p.ref // CHECK:STDOUT: %n.ref: = name_ref n, [template = ] // CHECK:STDOUT: return @@ -739,13 +739,13 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Final.elem: type = unbound_element_type %Final, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %DeriveFromFinal: type = class_type @DeriveFromFinal [template] // CHECK:STDOUT: %DeriveFromFinal.elem: type = unbound_element_type %DeriveFromFinal, %Final [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Final} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %DeriveFromFinal [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %Final [template] +// CHECK:STDOUT: %struct_type.base.dae: type = struct_type {.base: %Final} [template] +// CHECK:STDOUT: %complete_type.970: = complete_type_witness %struct_type.base.dae [template] +// CHECK:STDOUT: %ptr.160: type = ptr_type %DeriveFromFinal [template] +// CHECK:STDOUT: %ptr.5f6: type = ptr_type %Final [template] // CHECK:STDOUT: %ConvertToBadBaseFinal.type: type = fn_type @ConvertToBadBaseFinal [template] // CHECK:STDOUT: %ConvertToBadBaseFinal: %ConvertToBadBaseFinal.type = struct_value () [template] // CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember.type: type = fn_type @AccessMemberWithInvalidBaseFinal_WithMember [template] @@ -756,7 +756,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -775,53 +775,53 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %Final.decl: type = class_decl @Final [template = constants.%Final] {} {} // CHECK:STDOUT: %DeriveFromFinal.decl: type = class_decl @DeriveFromFinal [template = constants.%DeriveFromFinal] {} {} // CHECK:STDOUT: %ConvertToBadBaseFinal.decl: %ConvertToBadBaseFinal.type = fn_decl @ConvertToBadBaseFinal [template = constants.%ConvertToBadBaseFinal] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.160 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.160 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.5f6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.5f6 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final.decl [template = constants.%Final] -// CHECK:STDOUT: %ptr.loc17_55: type = ptr_type %Final [template = constants.%ptr.3] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17_44 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc17_55: type = ptr_type %Final [template = constants.%ptr.5f6] +// CHECK:STDOUT: %p.param: %ptr.160 = value_param runtime_param0 +// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17_44 [template = constants.%ptr.160] { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr.loc17_44: type = ptr_type %DeriveFromFinal [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc17_44: type = ptr_type %DeriveFromFinal [template = constants.%ptr.160] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.3 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.5f6 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.5f6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember.decl: %AccessMemberWithInvalidBaseFinal_WithMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember [template = constants.%AccessMemberWithInvalidBaseFinal_WithMember] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.160 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.160 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.160 = value_param runtime_param0 +// CHECK:STDOUT: %.loc21: type = splice_block %ptr [template = constants.%ptr.160] { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal [template = constants.%ptr.160] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember.decl: %AccessMemberWithInvalidBaseFinal_NoMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember [template = constants.%AccessMemberWithInvalidBaseFinal_NoMember] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.160 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.160 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.160 = value_param runtime_param0 +// CHECK:STDOUT: %.loc25: type = splice_block %ptr [template = constants.%ptr.160] { // CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [template = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal [template = constants.%ptr.160] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -829,7 +829,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Final { // CHECK:STDOUT: %.loc5: %Final.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Final @@ -840,7 +840,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: class @DeriveFromFinal { // CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final.decl [template = constants.%Final] // CHECK:STDOUT: %.loc13: %DeriveFromFinal.elem = base_decl %Final.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.dae [template = constants.%complete_type.970] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%DeriveFromFinal @@ -849,19 +849,19 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseFinal(%p.param_patt: %ptr.2) -> %ptr.3 { +// CHECK:STDOUT: fn @ConvertToBadBaseFinal(%p.param_patt: %ptr.160) -> %ptr.5f6 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p // CHECK:STDOUT: %.loc18_11.1: ref %DeriveFromFinal = deref %p.ref // CHECK:STDOUT: %.loc18_11.2: ref %Final = class_element_access %.loc18_11.1, element0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc18_11.2 -// CHECK:STDOUT: %.loc18_11.3: %ptr.3 = converted %p.ref, %addr +// CHECK:STDOUT: %addr: %ptr.5f6 = addr_of %.loc18_11.2 +// CHECK:STDOUT: %.loc18_11.3: %ptr.5f6 = converted %p.ref, %addr // CHECK:STDOUT: return %.loc18_11.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_WithMember(%p.param_patt: %ptr.2) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_WithMember(%p.param_patt: %ptr.160) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p // CHECK:STDOUT: %.loc22_11: ref %DeriveFromFinal = deref %p.ref // CHECK:STDOUT: %a.ref: %Final.elem = name_ref a, @Final.%.loc5 [template = @Final.%.loc5] // CHECK:STDOUT: %.loc22_14.1: ref %Final = class_element_access %.loc22_11, element0 @@ -871,9 +871,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: return %.loc22_14.4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_NoMember(%p.param_patt: %ptr.2) -> %i32 { +// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_NoMember(%p.param_patt: %ptr.160) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p // CHECK:STDOUT: %.loc29: ref %DeriveFromFinal = deref %p.ref // CHECK:STDOUT: %b.ref: = name_ref b, [template = ] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/fail_base_method_define.carbon b/toolchain/check/testdata/class/fail_base_method_define.carbon index bb1bc1b3ca43..2fea4fa86ab4 100644 --- a/toolchain/check/testdata/class/fail_base_method_define.carbon +++ b/toolchain/check/testdata/class/fail_base_method_define.carbon @@ -35,21 +35,21 @@ fn D.C.F() {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.e92: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.d7d: %F.type.e92 = struct_value () [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.d89: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.046: %F.type.d89 = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %F.type.984: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.e90: %F.type.984 = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.e44: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -68,14 +68,14 @@ fn D.C.F() {} // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.984 = fn_decl @F.3 [template = constants.%F.e90] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.e44] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.e92 = fn_decl @F.1 [template = constants.%F.d7d] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -85,8 +85,8 @@ fn D.C.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %F.decl: %F.type.d89 = fn_decl @F.2 [template = constants.%F.046] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -97,7 +97,7 @@ fn D.C.F() {} // CHECK:STDOUT: class @D { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc20: %D.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D diff --git a/toolchain/check/testdata/class/fail_base_modifiers.carbon b/toolchain/check/testdata/class/fail_base_modifiers.carbon index 21ac89ffac72..6f394a69822d 100644 --- a/toolchain/check/testdata/class/fail_base_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_base_modifiers.carbon @@ -56,11 +56,11 @@ class C4 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C1: type = class_type @C1 [template] // CHECK:STDOUT: %C1.elem: type = unbound_element_type %C1, %B [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: %C2: type = class_type @C2 [template] // CHECK:STDOUT: %C2.elem: type = unbound_element_type %C2, %B [template] // CHECK:STDOUT: %C3: type = class_type @C3 [template] @@ -94,7 +94,7 @@ class C4 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -104,7 +104,7 @@ class C4 { // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc18: %C1.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C1 @@ -116,7 +116,7 @@ class C4 { // CHECK:STDOUT: class @C2 { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc30: %C2.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C2 @@ -127,7 +127,7 @@ class C4 { // CHECK:STDOUT: class @C3 { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc41: %C3.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C3 @@ -139,7 +139,7 @@ class C4 { // CHECK:STDOUT: class @C4 { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc51: %C4.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C4 diff --git a/toolchain/check/testdata/class/fail_base_no_extend.carbon b/toolchain/check/testdata/class/fail_base_no_extend.carbon index 42e7cb6c04b5..aa23946f41f7 100644 --- a/toolchain/check/testdata/class/fail_base_no_extend.carbon +++ b/toolchain/check/testdata/class/fail_base_no_extend.carbon @@ -22,11 +22,11 @@ class C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -48,7 +48,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -58,7 +58,7 @@ class C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc17: %C.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/class/fail_base_repeated.carbon b/toolchain/check/testdata/class/fail_base_repeated.carbon index 02f483a4eb37..7196c99a714e 100644 --- a/toolchain/check/testdata/class/fail_base_repeated.carbon +++ b/toolchain/check/testdata/class/fail_base_repeated.carbon @@ -40,12 +40,12 @@ class D { // CHECK:STDOUT: constants { // CHECK:STDOUT: %B1: type = class_type @B1 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B2: type = class_type @B2 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B1 [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B1} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.5ac: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B1 [template] // CHECK:STDOUT: } @@ -73,7 +73,7 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B1 { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B1 @@ -81,7 +81,7 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B2 @@ -92,7 +92,7 @@ class D { // CHECK:STDOUT: %B1.ref: type = name_ref B1, file.%B1.decl [template = constants.%B1] // CHECK:STDOUT: %.loc15: %C.elem = base_decl %B1.ref, element0 [template] // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [template = constants.%B2] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.5ac] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -105,7 +105,7 @@ class D { // CHECK:STDOUT: %B1.ref.loc28: type = name_ref B1, file.%B1.decl [template = constants.%B1] // CHECK:STDOUT: %.loc28: %D.elem = base_decl %B1.ref.loc28, element0 [template] // CHECK:STDOUT: %B1.ref.loc35: type = name_ref B1, file.%B1.decl [template = constants.%B1] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.5ac] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D diff --git a/toolchain/check/testdata/class/fail_base_unbound.carbon b/toolchain/check/testdata/class/fail_base_unbound.carbon index 1ed694588f75..ff011b00cb14 100644 --- a/toolchain/check/testdata/class/fail_base_unbound.carbon +++ b/toolchain/check/testdata/class/fail_base_unbound.carbon @@ -24,11 +24,11 @@ let b: B = C.base; // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -51,7 +51,7 @@ let b: B = C.base; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -61,7 +61,7 @@ let b: B = C.base; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc14: %C.elem = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon index deee7774126a..be58164fb261 100644 --- a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon +++ b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon @@ -34,19 +34,19 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %i32 [template] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.b [template] +// CHECK:STDOUT: %complete_type.d62: = complete_type_witness %struct_type.b [template] // CHECK:STDOUT: %AccessBInA.type: type = fn_type @AccessBInA [template] // CHECK:STDOUT: %AccessBInA: %AccessBInA.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -80,7 +80,7 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc12: %A.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -90,7 +90,7 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %.loc16: %B.elem = field_decl b, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [template = constants.%complete_type.d62] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B diff --git a/toolchain/check/testdata/class/fail_derived_to_base.carbon b/toolchain/check/testdata/class/fail_derived_to_base.carbon index 6b319c89ebdd..b6bfddfa849c 100644 --- a/toolchain/check/testdata/class/fail_derived_to_base.carbon +++ b/toolchain/check/testdata/class/fail_derived_to_base.carbon @@ -48,29 +48,29 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A1.elem: type = unbound_element_type %A1, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %A2: type = class_type @A2 [template] // CHECK:STDOUT: %A2.elem: type = unbound_element_type %A2, %i32 [template] // CHECK:STDOUT: %B2: type = class_type @B2 [template] -// CHECK:STDOUT: %B2.elem.1: type = unbound_element_type %B2, %A2 [template] -// CHECK:STDOUT: %B2.elem.2: type = unbound_element_type %B2, %i32 [template] -// CHECK:STDOUT: %struct_type.base.b.1: type = struct_type {.base: %A2, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.b.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %B2 [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %A1 [template] +// CHECK:STDOUT: %B2.elem.a92: type = unbound_element_type %B2, %A2 [template] +// CHECK:STDOUT: %B2.elem.9b9: type = unbound_element_type %B2, %i32 [template] +// CHECK:STDOUT: %struct_type.base.b.a12: type = struct_type {.base: %A2, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.304: = complete_type_witness %struct_type.base.b.a12 [template] +// CHECK:STDOUT: %ptr.afe: type = ptr_type %B2 [template] +// CHECK:STDOUT: %ptr.678: type = ptr_type %A1 [template] // CHECK:STDOUT: %ConvertUnrelated.type: type = fn_type @ConvertUnrelated [template] // CHECK:STDOUT: %ConvertUnrelated: %ConvertUnrelated.type = struct_value () [template] // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [template] -// CHECK:STDOUT: %ptr.6: type = ptr_type %Incomplete [template] -// CHECK:STDOUT: %ptr.7: type = ptr_type %A2 [template] +// CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [template] +// CHECK:STDOUT: %ptr.590: type = ptr_type %A2 [template] // CHECK:STDOUT: %ConvertIncomplete.type: type = fn_type @ConvertIncomplete [template] // CHECK:STDOUT: %ConvertIncomplete: %ConvertIncomplete.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -91,45 +91,45 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %A2.decl: type = class_decl @A2 [template = constants.%A2] {} {} // CHECK:STDOUT: %B2.decl: type = class_decl @B2 [template = constants.%B2] {} {} // CHECK:STDOUT: %ConvertUnrelated.decl: %ConvertUnrelated.type = fn_decl @ConvertUnrelated [template = constants.%ConvertUnrelated] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.afe = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.afe = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.678 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.678 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A1.ref: type = name_ref A1, file.%A1.decl [template = constants.%A1] -// CHECK:STDOUT: %ptr.loc31_34: type = ptr_type %A1 [template = constants.%ptr.3] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc31_26: type = splice_block %ptr.loc31_26 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc31_34: type = ptr_type %A1 [template = constants.%ptr.678] +// CHECK:STDOUT: %p.param: %ptr.afe = value_param runtime_param0 +// CHECK:STDOUT: %.loc31_26: type = splice_block %ptr.loc31_26 [template = constants.%ptr.afe] { // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [template = constants.%B2] -// CHECK:STDOUT: %ptr.loc31_26: type = ptr_type %B2 [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc31_26: type = ptr_type %B2 [template = constants.%ptr.afe] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.3 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.afe = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.678 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.678 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [template = constants.%Incomplete] {} {} // CHECK:STDOUT: %ConvertIncomplete.decl: %ConvertIncomplete.type = fn_decl @ConvertIncomplete [template = constants.%ConvertIncomplete] { -// CHECK:STDOUT: %p.patt: %ptr.6 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.6 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.7 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.7 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.c62 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.c62 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.590 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.590 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A2.ref: type = name_ref A2, file.%A2.decl [template = constants.%A2] -// CHECK:STDOUT: %ptr.loc41_43: type = ptr_type %A2 [template = constants.%ptr.7] -// CHECK:STDOUT: %p.param: %ptr.6 = value_param runtime_param0 -// CHECK:STDOUT: %.loc41_35: type = splice_block %ptr.loc41_35 [template = constants.%ptr.6] { +// CHECK:STDOUT: %ptr.loc41_43: type = ptr_type %A2 [template = constants.%ptr.590] +// CHECK:STDOUT: %p.param: %ptr.c62 = value_param runtime_param0 +// CHECK:STDOUT: %.loc41_35: type = splice_block %ptr.loc41_35 [template = constants.%ptr.c62] { // CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [template = constants.%Incomplete] -// CHECK:STDOUT: %ptr.loc41_35: type = ptr_type %Incomplete [template = constants.%ptr.6] +// CHECK:STDOUT: %ptr.loc41_35: type = ptr_type %Incomplete [template = constants.%ptr.c62] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.6 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.7 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.7 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.c62 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.590 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.590 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A1 { // CHECK:STDOUT: %.loc12: %A1.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A1 @@ -139,7 +139,7 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { // CHECK:STDOUT: %.loc16: %A2.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A2 @@ -149,9 +149,9 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { // CHECK:STDOUT: %A2.ref: type = name_ref A2, file.%A2.decl [template = constants.%A2] -// CHECK:STDOUT: %.loc20: %B2.elem.1 = base_decl %A2.ref, element0 [template] -// CHECK:STDOUT: %.loc21: %B2.elem.2 = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %.loc20: %B2.elem.a92 = base_decl %A2.ref, element0 [template] +// CHECK:STDOUT: %.loc21: %B2.elem.9b9 = field_decl b, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.a12 [template = constants.%complete_type.304] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B2 @@ -163,17 +163,17 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertUnrelated(%p.param_patt: %ptr.2) -> %ptr.3 { +// CHECK:STDOUT: fn @ConvertUnrelated(%p.param_patt: %ptr.afe) -> %ptr.678 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %.loc31_46: %ptr.3 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.afe = name_ref p, %p +// CHECK:STDOUT: %.loc31_46: %ptr.678 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertIncomplete(%p.param_patt: %ptr.6) -> %ptr.7 { +// CHECK:STDOUT: fn @ConvertIncomplete(%p.param_patt: %ptr.c62) -> %ptr.590 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.6 = name_ref p, %p -// CHECK:STDOUT: %.loc41_55: %ptr.7 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.c62 = name_ref p, %p +// CHECK:STDOUT: %.loc41_55: %ptr.590 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_extend_cycle.carbon b/toolchain/check/testdata/class/fail_extend_cycle.carbon index e451fc829426..e3afcf721d0f 100644 --- a/toolchain/check/testdata/class/fail_extend_cycle.carbon +++ b/toolchain/check/testdata/class/fail_extend_cycle.carbon @@ -36,13 +36,13 @@ base class A { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] -// CHECK:STDOUT: %.elem: type = unbound_element_type %.1, %A [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %.a95: type = class_type @.1 [template] +// CHECK:STDOUT: %.elem: type = unbound_element_type %.a95, %A [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -61,11 +61,11 @@ base class A { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a95] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -75,7 +75,7 @@ base class A { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc16: %B.elem = base_decl %A.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -91,7 +91,7 @@ base class A { // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: .base = %.loc27 // CHECK:STDOUT: .c = %.loc31 // CHECK:STDOUT: extend %A.ref diff --git a/toolchain/check/testdata/class/fail_field_modifiers.carbon b/toolchain/check/testdata/class/fail_field_modifiers.carbon index 3ab4be4f7532..ed1de6fbd501 100644 --- a/toolchain/check/testdata/class/fail_field_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_field_modifiers.carbon @@ -41,26 +41,26 @@ class Class { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.j.k [template] +// CHECK:STDOUT: %complete_type.f45: = complete_type_witness %struct_type.j.k [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -78,23 +78,23 @@ class Class { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc17: %Class.elem = field_decl j, element0 [template] // CHECK:STDOUT: %.loc23: %Class.elem = field_decl k, element1 [template] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_0, %impl.elem0.loc29 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc29_25.1: %i32 = value_of_initializer %int.convert_checked.loc29 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc29_25.2: %i32 = converted %int_0, %.loc29_25.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_0, %impl.elem0.loc29 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc29_25.1: %i32 = value_of_initializer %int.convert_checked.loc29 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc29_25.2: %i32 = converted %int_0, %.loc29_25.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %l: %i32 = bind_name l, %.loc29_25.2 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc34: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc34: = bound_method %int_1, %impl.elem0.loc34 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc34: = specific_function %Convert.bound.loc34, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc34: init %i32 = call %Convert.specific_fn.loc34(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc34_23.1: %i32 = value_of_initializer %int.convert_checked.loc34 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc34_23.2: %i32 = converted %int_1, %.loc34_23.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc34: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc34: = bound_method %int_1, %impl.elem0.loc34 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc34: = specific_function %Convert.bound.loc34, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc34: init %i32 = call %Convert.specific_fn.loc34(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc34_23.1: %i32 = value_of_initializer %int.convert_checked.loc34 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc34_23.2: %i32 = converted %int_1, %.loc34_23.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %m: %i32 = bind_name m, %.loc34_23.2 -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.f45] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/fail_generic_method.carbon b/toolchain/check/testdata/class/fail_generic_method.carbon index 5c1338f13150..04b1df23c63f 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -39,23 +39,23 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.a [symbolic] +// CHECK:STDOUT: %complete_type.628: = complete_type_witness %struct_type.a [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -74,7 +74,7 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %self.patt: = binding_pattern self // CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %n.patt: = binding_pattern n @@ -85,7 +85,7 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc32_10.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc32_10.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc32_10.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc32_10.2 (constants.%N.3e4)] // CHECK:STDOUT: %self.param: = value_param runtime_param0 // CHECK:STDOUT: %Self.ref: = name_ref Self, [template = ] // CHECK:STDOUT: %self: = bind_name self, %self.param @@ -100,13 +100,13 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %T.patt.loc11_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc11_13.2) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.loc11_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @Class.%T.loc11_13.2 (%T)} [symbolic = %struct_type.a (constants.%struct_type.a)] -// CHECK:STDOUT: %complete_type.loc14_1.2: = complete_type_witness @Class.%struct_type.a (%struct_type.a) [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %complete_type.loc14_1.2: = complete_type_witness @Class.%struct_type.a (%struct_type.a) [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.628)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %.loc12: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [template] @@ -126,7 +126,7 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.a [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.a [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.628)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -144,8 +144,8 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @.1(%N.loc32_10.1: %i32) { -// CHECK:STDOUT: %N.loc32_10.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc32_10.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc32_10.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc32_10.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -169,8 +169,8 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(%T.loc11_13.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%N.2) { -// CHECK:STDOUT: %N.loc32_10.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt => constants.%N.2 +// CHECK:STDOUT: specific @.1(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc32_10.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_import_misuses.carbon b/toolchain/check/testdata/class/fail_import_misuses.carbon index 48db94307c6a..886fad833fc6 100644 --- a/toolchain/check/testdata/class/fail_import_misuses.carbon +++ b/toolchain/check/testdata/class/fail_import_misuses.carbon @@ -86,46 +86,46 @@ var a: Incomplete; // CHECK:STDOUT: %Empty: type = class_type @Empty [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.a95: type = class_type @.1 [template] // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, Empty, loaded [template = constants.%Empty] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, Incomplete, loaded [template = constants.%Incomplete] +// CHECK:STDOUT: %import_ref.b50: type = import_ref Main//a, Empty, loaded [template = constants.%Empty] +// CHECK:STDOUT: %import_ref.81e: type = import_ref Main//a, Incomplete, loaded [template = constants.%Incomplete] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Main//a, loc5_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc5_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.fd7 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Empty = imports.%import_ref.1 -// CHECK:STDOUT: .Incomplete = imports.%import_ref.2 +// CHECK:STDOUT: .Empty = imports.%import_ref.b50 +// CHECK:STDOUT: .Incomplete = imports.%import_ref.81e // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a95] {} {} // CHECK:STDOUT: %a.var: ref = var a // CHECK:STDOUT: %a: ref = bind_name a, %a.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Empty [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.fd7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index d08f14abfb73..4d8cf90eb360 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -179,13 +179,13 @@ class C { // CHECK:STDOUT: %Class: type = class_type @Class [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: %CallClassFunction.type: type = fn_type @CallClassFunction [template] // CHECK:STDOUT: %CallClassFunction: %CallClassFunction.type = struct_value () [template] // CHECK:STDOUT: %ConvertFromStruct.type: type = fn_type @ConvertFromStruct [template] // CHECK:STDOUT: %ConvertFromStruct: %ConvertFromStruct.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -207,14 +207,14 @@ class C { // CHECK:STDOUT: %IncompleteAddrSelf: type = class_type @IncompleteAddrSelf [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %CallIncompleteAddrSelf.type: type = fn_type @CallIncompleteAddrSelf [template] // CHECK:STDOUT: %CallIncompleteAddrSelf: %CallIncompleteAddrSelf.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -240,7 +240,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: %CallClassFunction.decl: %CallClassFunction.type = fn_decl @CallClassFunction [template = constants.%CallClassFunction] {} {} // CHECK:STDOUT: %global_var.var: ref = var global_var // CHECK:STDOUT: %global_var: ref = bind_name global_var, %global_var.var @@ -253,65 +253,65 @@ class C { // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc44: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc44: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MemberAccess.decl: %MemberAccess.type = fn_decl @MemberAccess [template = constants.%MemberAccess] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc55: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc55: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Copy.decl: %Copy.type = fn_decl @Copy [template = constants.%Copy] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %Class = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %Class = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Class.ref.loc73_23: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc73: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc73: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref.loc73_12: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %Class = out_param runtime_param1 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Let.decl: %Let.type = fn_decl @Let [template = constants.%Let] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc77: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc77: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %TakeIncomplete.decl: %TakeIncomplete.type = fn_decl @TakeIncomplete [template = constants.%TakeIncomplete] { // CHECK:STDOUT: %c.patt: %Class = binding_pattern c @@ -330,28 +330,28 @@ class C { // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallTakeIncomplete.decl: %CallTakeIncomplete.type = fn_decl @CallTakeIncomplete [template = constants.%CallTakeIncomplete] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc92: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc92: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallReturnIncomplete.decl: %CallReturnIncomplete.type = fn_decl @CallReturnIncomplete [template = constants.%CallReturnIncomplete] {} {} // CHECK:STDOUT: %IncompleteAddrSelf.decl: type = class_decl @IncompleteAddrSelf [template = constants.%IncompleteAddrSelf] {} {} // CHECK:STDOUT: %CallIncompleteAddrSelf.decl: %CallIncompleteAddrSelf.type = fn_decl @CallIncompleteAddrSelf [template = constants.%CallIncompleteAddrSelf] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc136: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc136: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -359,18 +359,18 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: class @IncompleteAddrSelf { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e71 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc133_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc133_24: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc133_24: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.e71 = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IncompleteAddrSelf @@ -396,30 +396,30 @@ class C { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc52: ref %Class = deref %p.ref // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @MemberAccess(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @MemberAccess(%p.param_patt: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc63: ref %Class = deref %p.ref // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Copy(%p.param_patt: %ptr.1) -> %Class { +// CHECK:STDOUT: fn @Copy(%p.param_patt: %ptr.e71) -> %Class { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc74: ref %Class = deref %p.ref // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Let(%p.param_patt: %ptr.1) { +// CHECK:STDOUT: fn @Let(%p.param_patt: %ptr.e71) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc85: ref %Class = deref %p.ref // CHECK:STDOUT: %c: = bind_name c, // CHECK:STDOUT: return @@ -429,10 +429,10 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnIncomplete() -> %Class; // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallTakeIncomplete(%p.param_patt: %ptr.1) { +// CHECK:STDOUT: fn @CallTakeIncomplete(%p.param_patt: %ptr.e71) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %TakeIncomplete.ref.loc103: %TakeIncomplete.type = name_ref TakeIncomplete, file.%TakeIncomplete.decl [template = constants.%TakeIncomplete] -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc103: ref %Class = deref %p.ref // CHECK:STDOUT: %TakeIncomplete.call.loc103: init %empty_tuple.type = call %TakeIncomplete.ref.loc103() // CHECK:STDOUT: %TakeIncomplete.ref.loc115: %TakeIncomplete.type = name_ref TakeIncomplete, file.%TakeIncomplete.decl [template = constants.%TakeIncomplete] @@ -448,11 +448,11 @@ class C { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.1](); +// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.e71](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallIncompleteAddrSelf(%p.param_patt: %ptr.1) { +// CHECK:STDOUT: fn @CallIncompleteAddrSelf(%p.param_patt: %ptr.e71) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %IncompleteAddrSelf.ref: type = name_ref IncompleteAddrSelf, file.%IncompleteAddrSelf.decl [template = constants.%IncompleteAddrSelf] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @IncompleteAddrSelf.%F.decl [template = constants.%F] // CHECK:STDOUT: %.loc148: ref %Class = deref %p.ref diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index 9dc5ed8c4200..3ce725237fb1 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -38,28 +38,28 @@ fn F() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %struct_type.a.c: type = struct_type {.a: Core.IntLiteral, .c: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral, .c: Core.IntLiteral} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -79,7 +79,7 @@ fn F() { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Class.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -90,27 +90,27 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc21_10.1: %struct_type.a = struct_literal (%int_1.loc21) // CHECK:STDOUT: %Class.ref.loc21: type = name_ref Class, file.%Class.decl [template = constants.%Class] // CHECK:STDOUT: %.loc21_10.2: ref %Class = temporary_storage // CHECK:STDOUT: %.loc21_10.3: ref %Class = temporary %.loc21_10.2, // CHECK:STDOUT: %.loc21_12: ref %Class = converted %.loc21_10.1, %.loc21_10.3 -// CHECK:STDOUT: %int_1.loc26: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc26: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc26: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %.loc26_18.1: %struct_type.a.c = struct_literal (%int_1.loc26, %int_2.loc26) // CHECK:STDOUT: %Class.ref.loc26: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.loc26, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc26) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc26_18.2: init %i32 = converted %int_1.loc26, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1.loc26) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc26_18.2: init %i32 = converted %int_1.loc26, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc26_18.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc26_18.4: ref %i32 = class_element_access %.loc26_18.3, element0 -// CHECK:STDOUT: %.loc26_18.5: init %i32 = initialize_from %.loc26_18.2 to %.loc26_18.4 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc26_18.5: init %i32 = initialize_from %.loc26_18.2 to %.loc26_18.4 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc26_18.6: ref %Class = temporary %.loc26_18.3, // CHECK:STDOUT: %.loc26_20: ref %Class = converted %.loc26_18.1, %.loc26_18.6 -// CHECK:STDOUT: %int_1.loc30: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc30: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_2.loc30: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3] // CHECK:STDOUT: %.loc30_26.1: %struct_type.a.b.c = struct_literal (%int_1.loc30, %int_2.loc30, %int_3) diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index ffcd858adf61..a55346d219ce 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -34,33 +34,33 @@ fn F() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,15 +76,15 @@ fn F() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc16: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: } @@ -92,7 +92,7 @@ fn F() { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Class.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -101,31 +101,31 @@ fn F() { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.1); +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.e71); // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.var: ref %Class = var c // CHECK:STDOUT: %c: ref %Class = bind_name c, %c.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc25_33.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc25_33.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %impl.elem0.loc25_33.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc25_33.1: = bound_method %int_1, %impl.elem0.loc25_33.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc25_33.1: = specific_function %Convert.bound.loc25_33.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc25_33.1: init %i32 = call %Convert.specific_fn.loc25_33.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc25_33.2: init %i32 = converted %int_1, %int.convert_checked.loc25_33.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc25_33.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc25_33.1: = bound_method %int_1, %impl.elem0.loc25_33.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc25_33.1: = specific_function %Convert.bound.loc25_33.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc25_33.1: init %i32 = call %Convert.specific_fn.loc25_33.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc25_33.2: init %i32 = converted %int_1, %int.convert_checked.loc25_33.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc25_33.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc25_33.4: ref %i32 = class_element_access %.loc25_33.3, element0 -// CHECK:STDOUT: %.loc25_33.5: init %i32 = initialize_from %.loc25_33.2 to %.loc25_33.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc25_33.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc25_33.2: = bound_method %int_2, %impl.elem0.loc25_33.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc25_33.2: = specific_function %Convert.bound.loc25_33.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc25_33.2: init %i32 = call %Convert.specific_fn.loc25_33.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc25_33.6: init %i32 = converted %int_2, %int.convert_checked.loc25_33.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc25_33.5: init %i32 = initialize_from %.loc25_33.2 to %.loc25_33.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc25_33.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc25_33.2: = bound_method %int_2, %impl.elem0.loc25_33.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc25_33.2: = specific_function %Convert.bound.loc25_33.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc25_33.2: init %i32 = call %Convert.specific_fn.loc25_33.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc25_33.6: init %i32 = converted %int_2, %int.convert_checked.loc25_33.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc25_33.7: ref %i32 = class_element_access %.loc25_33.3, element1 -// CHECK:STDOUT: %.loc25_33.8: init %i32 = initialize_from %.loc25_33.6 to %.loc25_33.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc25_33.8: init %i32 = initialize_from %.loc25_33.6 to %.loc25_33.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc25_33.9: init %Class = class_init (%.loc25_33.5, %.loc25_33.8), %.loc25_33.3 [template = constants.%Class.val] // CHECK:STDOUT: %.loc25_33.10: ref %Class = temporary %.loc25_33.3, %.loc25_33.9 // CHECK:STDOUT: %.loc25_35.1: ref %Class = converted %.loc25_33.1, %.loc25_33.10 @@ -133,7 +133,7 @@ fn F() { // CHECK:STDOUT: assign %c.var, // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G] // CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %c.ref +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %c.ref // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index c3158aae6a1f..cc296ec74441 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -42,18 +42,18 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %A [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [template] +// CHECK:STDOUT: %F.type.76a: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.a9f: %F.type.76a = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %A} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.a.1 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %struct_type.a.72c: type = struct_type {.a: %A} [template] +// CHECK:STDOUT: %complete_type.2b9: = complete_type_witness %struct_type.a.72c [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -73,18 +73,18 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %s.patt: %struct_type.a.1 = binding_pattern s -// CHECK:STDOUT: %s.param_patt: %struct_type.a.1 = value_param_pattern %s.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { +// CHECK:STDOUT: %s.patt: %struct_type.a.72c = binding_pattern s +// CHECK:STDOUT: %s.param_patt: %struct_type.a.72c = value_param_pattern %s.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %B = binding_pattern b // CHECK:STDOUT: %b.param_patt: %B = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %s.param: %struct_type.a.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %struct_type.a [template = constants.%struct_type.a.1] { +// CHECK:STDOUT: %s.param: %struct_type.a.72c = value_param runtime_param0 +// CHECK:STDOUT: %.loc19: type = splice_block %struct_type.a [template = constants.%struct_type.a.72c] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %A} [template = constants.%struct_type.a.1] +// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %A} [template = constants.%struct_type.a.72c] // CHECK:STDOUT: } -// CHECK:STDOUT: %s: %struct_type.a.1 = bind_name s, %s.param +// CHECK:STDOUT: %s: %struct_type.a.72c = bind_name s, %s.param // CHECK:STDOUT: %b.param: %B = value_param runtime_param1 // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %b: %B = bind_name b, %b.param @@ -92,19 +92,19 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.76a = fn_decl @F.1 [template = constants.%F.a9f] { +// CHECK:STDOUT: %self.patt: %ptr.6db = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.6db = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_20: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.6db = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_20: type = splice_block %ptr [template = constants.%ptr.6db] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.6db] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.6db = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -114,7 +114,7 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %.loc16: %B.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.72c [template = constants.%complete_type.2b9] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -122,20 +122,20 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.1](); +// CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.6db](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%s.param_patt: %struct_type.a.1, %b.param_patt: %B) { +// CHECK:STDOUT: fn @F.2(%s.param_patt: %struct_type.a.72c, %b.param_patt: %B) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %s.ref: %struct_type.a.1 = name_ref s, %s +// CHECK:STDOUT: %s.ref: %struct_type.a.72c = name_ref s, %s // CHECK:STDOUT: %.loc28: %A = struct_access %s.ref, element0 -// CHECK:STDOUT: %F.ref.loc28: %F.type.1 = name_ref F, @A.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc28: %F.type.76a = name_ref F, @A.%F.decl [template = constants.%F.a9f] // CHECK:STDOUT: %F.bound.loc28: = bound_method %.loc28, %F.ref.loc28 // CHECK:STDOUT: %F.call.loc28: init %empty_tuple.type = call %F.bound.loc28() // CHECK:STDOUT: %b.ref: %B = name_ref b, %b // CHECK:STDOUT: %a.ref: %B.elem = name_ref a, @B.%.loc16 [template = @B.%.loc16] // CHECK:STDOUT: %.loc38_4.1: ref %A = class_element_access %b.ref, element0 // CHECK:STDOUT: %.loc38_4.2: %A = bind_value %.loc38_4.1 -// CHECK:STDOUT: %F.ref.loc38: %F.type.1 = name_ref F, @A.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc38: %F.type.76a = name_ref F, @A.%F.decl [template = constants.%F.a9f] // CHECK:STDOUT: %F.bound.loc38: = bound_method %.loc38_4.2, %F.ref.loc38 // CHECK:STDOUT: %F.call.loc38: init %empty_tuple.type = call %F.bound.loc38() // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index ef0e209f2ff3..c307a5052b70 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -34,14 +34,14 @@ fn T.F() {} // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -55,7 +55,7 @@ fn T.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { @@ -68,7 +68,7 @@ fn T.F() {} // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/fail_method_modifiers.carbon b/toolchain/check/testdata/class/fail_method_modifiers.carbon index c74835a28bd1..91ed51ce5a29 100644 --- a/toolchain/check/testdata/class/fail_method_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_method_modifiers.carbon @@ -59,8 +59,8 @@ base class BaseClass { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %FinalClass: type = class_type @FinalClass [template] -// CHECK:STDOUT: %Abstract.type.1: type = fn_type @Abstract.1 [template] -// CHECK:STDOUT: %Abstract.1: %Abstract.type.1 = struct_value () [template] +// CHECK:STDOUT: %Abstract.type.448: type = fn_type @Abstract.1 [template] +// CHECK:STDOUT: %Abstract.13d: %Abstract.type.448 = struct_value () [template] // CHECK:STDOUT: %Virtual.type: type = fn_type @Virtual [template] // CHECK:STDOUT: %Virtual: %Virtual.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -71,8 +71,8 @@ base class BaseClass { // CHECK:STDOUT: %Final.type: type = fn_type @Final [template] // CHECK:STDOUT: %Final: %Final.type = struct_value () [template] // CHECK:STDOUT: %BaseClass: type = class_type @BaseClass [template] -// CHECK:STDOUT: %Abstract.type.2: type = fn_type @Abstract.2 [template] -// CHECK:STDOUT: %Abstract.2: %Abstract.type.2 = struct_value () [template] +// CHECK:STDOUT: %Abstract.type.b0f: type = fn_type @Abstract.2 [template] +// CHECK:STDOUT: %Abstract.1de: %Abstract.type.b0f = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -96,7 +96,7 @@ base class BaseClass { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FinalClass { -// CHECK:STDOUT: %Abstract.decl: %Abstract.type.1 = fn_decl @Abstract.1 [template = constants.%Abstract.1] { +// CHECK:STDOUT: %Abstract.decl: %Abstract.type.448 = fn_decl @Abstract.1 [template = constants.%Abstract.13d] { // CHECK:STDOUT: %self.patt: %FinalClass = binding_pattern self // CHECK:STDOUT: %self.param_patt: %FinalClass = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -148,7 +148,7 @@ base class BaseClass { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @BaseClass { -// CHECK:STDOUT: %Abstract.decl: %Abstract.type.2 = fn_decl @Abstract.2 [template = constants.%Abstract.2] { +// CHECK:STDOUT: %Abstract.decl: %Abstract.type.b0f = fn_decl @Abstract.2 [template = constants.%Abstract.1de] { // CHECK:STDOUT: %self.patt: %BaseClass = binding_pattern self // CHECK:STDOUT: %self.param_patt: %BaseClass = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/class/fail_modifiers.carbon b/toolchain/check/testdata/class/fail_modifiers.carbon index dace1ba99771..fa8b96559a53 100644 --- a/toolchain/check/testdata/class/fail_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_modifiers.carbon @@ -105,7 +105,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: %BaseDecl: type = class_type @BaseDecl [template] // CHECK:STDOUT: %TwoAbstract: type = class_type @TwoAbstract [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Virtual: type = class_type @Virtual [template] // CHECK:STDOUT: %WrongOrder: type = class_type @WrongOrder [template] // CHECK:STDOUT: %AbstractAndBase: type = class_type @AbstractAndBase [template] @@ -116,7 +116,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %ptr: type = ptr_type [template] // CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.vptr [template] +// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -161,7 +161,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: class @BaseDecl; // CHECK:STDOUT: // CHECK:STDOUT: class @TwoAbstract { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%TwoAbstract @@ -169,7 +169,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Virtual { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Virtual @@ -177,7 +177,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongOrder { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%WrongOrder @@ -185,7 +185,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractAndBase { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AbstractAndBase @@ -195,7 +195,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: class @AbstractWithDefinition { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AbstractWithDefinition diff --git a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon index 7fee47768a63..8990ad0004b2 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -28,15 +28,15 @@ class Y { // CHECK:STDOUT: --- fail_redeclaration_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.1: type = class_type @A.1 [template] +// CHECK:STDOUT: %A.466: type = class_type @A.1 [template] // CHECK:STDOUT: %X: type = class_type @X [template] -// CHECK:STDOUT: %A.2: type = class_type @A.2 [template] -// CHECK:STDOUT: %B.1: type = class_type @B.1 [template] +// CHECK:STDOUT: %A.44f: type = class_type @A.2 [template] +// CHECK:STDOUT: %B.4f0: type = class_type @B.1 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %B.2: type = class_type @B.2 [template] +// CHECK:STDOUT: %B.491: type = class_type @B.2 [template] // CHECK:STDOUT: %Y: type = class_type @Y [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.c44: type = class_type @.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -54,25 +54,25 @@ class Y { // CHECK:STDOUT: .Y = %Y.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc11: type = class_decl @A.1 [template = constants.%A.1] {} {} +// CHECK:STDOUT: %A.decl.loc11: type = class_decl @A.1 [template = constants.%A.466] {} {} // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} -// CHECK:STDOUT: %A.decl.loc19: type = class_decl @A.1 [template = constants.%A.1] {} {} +// CHECK:STDOUT: %A.decl.loc19: type = class_decl @A.1 [template = constants.%A.466] {} {} // CHECK:STDOUT: %Y.decl: type = class_decl @Y [template = constants.%Y] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.1 { -// CHECK:STDOUT: %B.decl: type = class_decl @B.2 [template = constants.%B.2] {} {} +// CHECK:STDOUT: %B.decl: type = class_decl @B.2 [template = constants.%B.491] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.1 +// CHECK:STDOUT: .Self = constants.%A.466 // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { -// CHECK:STDOUT: %A.decl: type = class_decl @A.2 [template = constants.%A.2] {} {} -// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.1] {} {} +// CHECK:STDOUT: %A.decl: type = class_decl @A.2 [template = constants.%A.44f] {} {} +// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.4f0] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -82,11 +82,11 @@ class Y { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.2 { -// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.1] {} {} +// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.4f0] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.2 +// CHECK:STDOUT: .Self = constants.%A.44f // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -95,14 +95,14 @@ class Y { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B.1 +// CHECK:STDOUT: .Self = constants.%B.4f0 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.2; // CHECK:STDOUT: // CHECK:STDOUT: class @Y { -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.c44] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -114,7 +114,7 @@ class Y { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.c44 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index edcb3e1fd4ac..6126201dfc1a 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -48,21 +48,21 @@ fn Class.I() {} // CHECK:STDOUT: %Class: type = class_type @Class [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %H.type.1: type = fn_type @H.1 [template] -// CHECK:STDOUT: %H.1: %H.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.1: type = fn_type @I.1 [template] -// CHECK:STDOUT: %I.1: %I.type.1 = struct_value () [template] +// CHECK:STDOUT: %H.type.ba6: type = fn_type @H.1 [template] +// CHECK:STDOUT: %H.9d5: %H.type.ba6 = struct_value () [template] +// CHECK:STDOUT: %I.type.92e: type = fn_type @I.1 [template] +// CHECK:STDOUT: %I.f31: %I.type.92e = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] -// CHECK:STDOUT: %H.type.2: type = fn_type @H.2 [template] -// CHECK:STDOUT: %H.2: %H.type.2 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = fn_type @I.2 [template] -// CHECK:STDOUT: %I.2: %I.type.2 = struct_value () [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] +// CHECK:STDOUT: %.a95: type = class_type @.1 [template] +// CHECK:STDOUT: %G.type.aab: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.c83: %G.type.aab = struct_value () [template] +// CHECK:STDOUT: %H.type.607: type = fn_type @H.2 [template] +// CHECK:STDOUT: %H.f71: %H.type.607 = struct_value () [template] +// CHECK:STDOUT: %I.type.406: type = fn_type @I.2 [template] +// CHECK:STDOUT: %I.f46: %I.type.406 = struct_value () [template] +// CHECK:STDOUT: %G.type.bf5: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.5fa: %G.type.bf5 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -79,17 +79,17 @@ fn Class.I() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a95] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] {} {} -// CHECK:STDOUT: %H.decl: %H.type.1 = fn_decl @H.1 [template = constants.%H.1] {} {} -// CHECK:STDOUT: %I.decl: %I.type.1 = fn_decl @I.1 [template = constants.%I.1] {} {} +// CHECK:STDOUT: %G.decl: %G.type.bf5 = fn_decl @G.2 [template = constants.%G.5fa] {} {} +// CHECK:STDOUT: %H.decl: %H.type.ba6 = fn_decl @H.1 [template = constants.%H.9d5] {} {} +// CHECK:STDOUT: %I.decl: %I.type.92e = fn_decl @I.1 [template = constants.%I.f31] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %H.decl: %H.type.1 = fn_decl @H.1 [template = constants.%H.1] {} {} -// CHECK:STDOUT: %I.decl: %I.type.1 = fn_decl @I.1 [template = constants.%I.1] {} {} +// CHECK:STDOUT: %H.decl: %H.type.ba6 = fn_decl @H.1 [template = constants.%H.9d5] {} {} +// CHECK:STDOUT: %I.decl: %I.type.92e = fn_decl @I.1 [template = constants.%I.f31] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -102,13 +102,13 @@ fn Class.I() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] {} {} -// CHECK:STDOUT: %H.decl: %H.type.2 = fn_decl @H.2 [template = constants.%H.2] {} {} -// CHECK:STDOUT: %I.decl: %I.type.2 = fn_decl @I.2 [template = constants.%I.2] {} {} +// CHECK:STDOUT: %G.decl: %G.type.aab = fn_decl @G.1 [template = constants.%G.c83] {} {} +// CHECK:STDOUT: %H.decl: %H.type.607 = fn_decl @H.2 [template = constants.%H.f71] {} {} +// CHECK:STDOUT: %I.decl: %I.type.406 = fn_decl @I.2 [template = constants.%I.f46] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: .I = %I.decl diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index e6c748851dbe..61c591a33533 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -30,23 +30,23 @@ fn G() -> i32 { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -81,7 +81,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -91,13 +91,13 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc13_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index 3c642bb093f8..db137de0d2e6 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -59,23 +59,23 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.945: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.ffd: %F.type.945 = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %WrongSelf: type = class_type @WrongSelf [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.bfd: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.283: %F.type.bfd = struct_value () [template] // CHECK:STDOUT: %CallWrongSelf.type: type = fn_type @CallWrongSelf [template] // CHECK:STDOUT: %CallWrongSelf: %CallWrongSelf.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -90,7 +90,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.945 = fn_decl @F.1 [template = constants.%F.ffd] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -118,7 +118,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.945 = fn_decl @F.1 [template = constants.%F.ffd] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -144,7 +144,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongSelf { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.bfd = fn_decl @F.2 [template = constants.%F.283] { // CHECK:STDOUT: %self.patt: %Class = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Class = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -179,7 +179,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: fn @CallWrongSelf(%ws.param_patt: %WrongSelf) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ws.ref: %WrongSelf = name_ref ws, %ws -// CHECK:STDOUT: %F.ref: %F.type.2 = name_ref F, @WrongSelf.%F.decl [template = constants.%F.2] +// CHECK:STDOUT: %F.ref: %F.type.bfd = name_ref F, @WrongSelf.%F.decl [template = constants.%F.283] // CHECK:STDOUT: %F.bound: = bound_method %ws.ref, %F.ref // CHECK:STDOUT: %.loc55: %Class = converted %ws.ref, [template = ] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound() diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index 37f56bcf47ae..2d73b3886084 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -36,14 +36,14 @@ fn G() -> i32 { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.field [template] +// CHECK:STDOUT: %complete_type.4e4: = complete_type_witness %struct_type.field [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -79,7 +79,7 @@ fn G() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [template = constants.%complete_type.4e4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index 70ffa1b3537a..210798840161 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -28,14 +28,14 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -67,7 +67,7 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 08ae8650b4f5..1ba65a07573c 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -29,27 +29,27 @@ fn Run() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.j.k [template] +// CHECK:STDOUT: %complete_type.f45: = complete_type_witness %struct_type.j.k [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -69,7 +69,7 @@ fn Run() { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl j, element0 [template] // CHECK:STDOUT: %.loc13: %Class.elem = field_decl k, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.f45] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -85,22 +85,22 @@ fn Run() { // CHECK:STDOUT: %c.ref.loc18: ref %Class = name_ref c, %c // CHECK:STDOUT: %j.ref.loc18: %Class.elem = name_ref j, @Class.%.loc12 [template = @Class.%.loc12] // CHECK:STDOUT: %.loc18_4: ref %i32 = class_element_access %c.ref.loc18, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_1, %impl.elem0.loc18 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_7: init %i32 = converted %int_1, %int.convert_checked.loc18 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_1, %impl.elem0.loc18 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_7: init %i32 = converted %int_1, %int.convert_checked.loc18 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %.loc18_4, %.loc18_7 // CHECK:STDOUT: %c.ref.loc19: ref %Class = name_ref c, %c // CHECK:STDOUT: %k.ref.loc19: %Class.elem = name_ref k, @Class.%.loc13 [template = @Class.%.loc13] // CHECK:STDOUT: %.loc19_4: ref %i32 = class_element_access %c.ref.loc19, element1 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_7: init %i32 = converted %int_2, %int.convert_checked.loc19 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_7: init %i32 = converted %int_2, %int.convert_checked.loc19 [template = constants.%int_2.166] // CHECK:STDOUT: assign %.loc19_4, %.loc19_7 // CHECK:STDOUT: %cj.var: ref %i32 = var cj // CHECK:STDOUT: %cj: ref %i32 = bind_name cj, %cj.var diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index b8c78e3e92ff..d4b25bfc47c6 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -30,27 +30,27 @@ fn Test() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.j.k [template] +// CHECK:STDOUT: %complete_type.f45: = complete_type_witness %struct_type.j.k [template] // CHECK:STDOUT: %Test.type: type = fn_type @Test [template] // CHECK:STDOUT: %Test: %Test.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -70,7 +70,7 @@ fn Test() { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl j, element0 [template] // CHECK:STDOUT: %.loc13: %Class.elem = field_decl k, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.f45] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -86,22 +86,22 @@ fn Test() { // CHECK:STDOUT: %cv.ref.loc18: ref %Class = name_ref cv, %cv // CHECK:STDOUT: %j.ref.loc18: %Class.elem = name_ref j, @Class.%.loc12 [template = @Class.%.loc12] // CHECK:STDOUT: %.loc18_5: ref %i32 = class_element_access %cv.ref.loc18, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_1, %impl.elem0.loc18 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_8: init %i32 = converted %int_1, %int.convert_checked.loc18 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_1, %impl.elem0.loc18 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_8: init %i32 = converted %int_1, %int.convert_checked.loc18 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %.loc18_5, %.loc18_8 // CHECK:STDOUT: %cv.ref.loc19: ref %Class = name_ref cv, %cv // CHECK:STDOUT: %k.ref.loc19: %Class.elem = name_ref k, @Class.%.loc13 [template = @Class.%.loc13] // CHECK:STDOUT: %.loc19_5: ref %i32 = class_element_access %cv.ref.loc19, element1 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_8: init %i32 = converted %int_2, %int.convert_checked.loc19 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_8: init %i32 = converted %int_2, %int.convert_checked.loc19 [template = constants.%int_2.166] // CHECK:STDOUT: assign %.loc19_5, %.loc19_8 // CHECK:STDOUT: %cv.ref.loc20: ref %Class = name_ref cv, %cv // CHECK:STDOUT: %.loc20: %Class = bind_value %cv.ref.loc20 diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index e934762500d8..a22c6a3691e4 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -127,27 +127,27 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %C.elem.5ab: type = unbound_element_type %C.37e, %T [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] // CHECK:STDOUT: %Adapter: type = class_type @Adapter [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %C.268: type = class_type @C, @C(%i32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %i32 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.elem.dd4: type = unbound_element_type %C.268, %i32 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %Access.type: type = fn_type @Access [template] // CHECK:STDOUT: %Access: %Access.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -190,18 +190,18 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc4_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_9.2) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%T.loc4_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc4_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_9.2) [symbolic = %C (constants.%C.37e)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.37e), @C.%T.loc4_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.5ab)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.5ab) = field_decl x, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .x = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -211,9 +211,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.268] // CHECK:STDOUT: adapt_decl %C [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter @@ -226,10 +226,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] -// CHECK:STDOUT: %.loc13_13.1: %C.2 = as_compatible %a.ref -// CHECK:STDOUT: %.loc13_13.2: %C.2 = converted %a.ref, %.loc13_13.1 -// CHECK:STDOUT: %x.ref: %C.elem.2 = name_ref x, @C.%.loc5 [template = @C.%.loc5] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.268] +// CHECK:STDOUT: %.loc13_13.1: %C.268 = as_compatible %a.ref +// CHECK:STDOUT: %.loc13_13.2: %C.268 = converted %a.ref, %.loc13_13.1 +// CHECK:STDOUT: %x.ref: %C.elem.dd4 = name_ref x, @C.%.loc5 [template = @C.%.loc5] // CHECK:STDOUT: %.loc13_23.1: ref %i32 = class_element_access %.loc13_13.2, element0 // CHECK:STDOUT: %.loc13_23.2: %i32 = bind_value %.loc13_23.1 // CHECK:STDOUT: return %.loc13_23.2 @@ -247,11 +247,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %C => constants.%C.268 +// CHECK:STDOUT: %C.elem => constants.%C.elem.dd4 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.b74 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.f6d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_adapt_specific_type.carbon @@ -263,43 +263,43 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.x.1 [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] +// CHECK:STDOUT: %C.df4: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.2 [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %T [symbolic] +// CHECK:STDOUT: %C.3f8: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %struct_type.x.6d6: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.555: = complete_type_witness %struct_type.x.6d6 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %C.elem.0d5: type = unbound_element_type %C.df4, %T [symbolic] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %i32 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.elem.f99: type = unbound_element_type %C.3f8, %i32 [template] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [template] // CHECK:STDOUT: %ImportedAccess: %ImportedAccess.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %C.type = import_ref Main//adapt_specific_type, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//adapt_specific_type, Adapter, loaded [template = constants.%Adapter] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//adapt_specific_type, Access, unloaded +// CHECK:STDOUT: %import_ref.26e: %C.type = import_ref Main//adapt_specific_type, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.abc: type = import_ref Main//adapt_specific_type, Adapter, loaded [template = constants.%Adapter] +// CHECK:STDOUT: %import_ref.92d = import_ref Main//adapt_specific_type, Access, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.13 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.2)] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//adapt_specific_type, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9: @C.%C.elem (%C.elem.1) = import_ref Main//adapt_specific_type, loc5_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.11: = import_ref Main//adapt_specific_type, loc10_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.12 = import_ref Main//adapt_specific_type, inst42 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3ee: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.60a)] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//adapt_specific_type, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ec6: @C.%C.elem (%C.elem.0d5) = import_ref Main//adapt_specific_type, loc5_8, loaded [template = %.8d2] +// CHECK:STDOUT: %import_ref.377: = import_ref Main//adapt_specific_type, loc10_1, loaded [template = constants.%complete_type.555] +// CHECK:STDOUT: %import_ref.feb = import_ref Main//adapt_specific_type, inst42 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .Adapter = imports.%import_ref.2 -// CHECK:STDOUT: .Access = imports.%import_ref.3 +// CHECK:STDOUT: .C = imports.%import_ref.26e +// CHECK:STDOUT: .Adapter = imports.%import_ref.abc +// CHECK:STDOUT: .Access = imports.%import_ref.92d // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .ImportedAccess = %ImportedAccess.decl // CHECK:STDOUT: } @@ -314,7 +314,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %a.param: %Adapter = value_param runtime_param0 -// CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%import_ref.2 [template = constants.%Adapter] +// CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%import_ref.abc [template = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param @@ -323,8 +323,8 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter [from "adapt_specific_type.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.12 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.11 +// CHECK:STDOUT: .Self = imports.%import_ref.feb +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.377 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "adapt_specific_type.carbon"] { @@ -332,30 +332,30 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T (%T) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%T (%T) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type (constants.%complete_type.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.df4)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.df4), @C.%T (%T) [symbolic = %C.elem (constants.%C.elem.0d5)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .x = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: .x = imports.%import_ref.ec6 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3ee // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedAccess(%a.param_patt: %Adapter) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.1 [template = constants.%C.generic] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.26e [template = constants.%C.generic] // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] -// CHECK:STDOUT: %.loc7_13.1: %C.2 = as_compatible %a.ref -// CHECK:STDOUT: %.loc7_13.2: %C.2 = converted %a.ref, %.loc7_13.1 -// CHECK:STDOUT: %x.ref: %C.elem.2 = name_ref x, imports.%import_ref.9 [template = imports.%.1] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.3f8] +// CHECK:STDOUT: %.loc7_13.1: %C.3f8 = as_compatible %a.ref +// CHECK:STDOUT: %.loc7_13.2: %C.3f8 = converted %a.ref, %.loc7_13.1 +// CHECK:STDOUT: %x.ref: %C.elem.f99 = name_ref x, imports.%import_ref.ec6 [template = imports.%.8d2] // CHECK:STDOUT: %.loc7_23.1: ref %i32 = class_element_access %.loc7_13.2, element0 // CHECK:STDOUT: %.loc7_23.2: %i32 = bind_value %.loc7_23.1 // CHECK:STDOUT: return %.loc7_23.2 @@ -371,11 +371,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type => constants.%complete_type.3 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %C => constants.%C.3f8 +// CHECK:STDOUT: %C.elem => constants.%C.elem.f99 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.6d6 +// CHECK:STDOUT: %complete_type => constants.%complete_type.555 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(%T) {} @@ -387,28 +387,28 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %C.elem.5ab: type = unbound_element_type %C.37e, %T [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] // CHECK:STDOUT: %Adapter: type = class_type @Adapter [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %C.268: type = class_type @C, @C(%i32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %i32 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.elem.dd4: type = unbound_element_type %C.268, %i32 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %Access.type: type = fn_type @Access [template] // CHECK:STDOUT: %Access: %Access.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -451,18 +451,18 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc4_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_9.2) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%T.loc4_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc4_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc4_9.2) [symbolic = %C (constants.%C.37e)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.37e), @C.%T.loc4_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.5ab)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc4_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @C.%C.elem (%C.elem.5ab) = field_decl x, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .x = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -472,9 +472,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.268] // CHECK:STDOUT: adapt_decl %C [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter @@ -485,8 +485,8 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: fn @Access(%a.param_patt: %Adapter) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %x.ref: %C.elem.2 = name_ref x, @C.%.loc5 [template = @C.%.loc5] -// CHECK:STDOUT: %.loc21_11.1: %C.2 = converted %a.ref, [template = ] +// CHECK:STDOUT: %x.ref: %C.elem.dd4 = name_ref x, @C.%.loc5 [template = @C.%.loc5] +// CHECK:STDOUT: %.loc21_11.1: %C.268 = converted %a.ref, [template = ] // CHECK:STDOUT: %.loc21_11.2: %i32 = class_element_access , element0 [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -503,11 +503,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_9.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %C => constants.%C.268 +// CHECK:STDOUT: %C.elem => constants.%C.elem.dd4 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.b74 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.f6d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- extend_adapt_specific_type_library.carbon @@ -517,25 +517,25 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %C.elem.5ab: type = unbound_element_type %C.37e, %T [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] // CHECK:STDOUT: %Adapter: type = class_type @Adapter [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %C.268: type = class_type @C, @C(%i32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %i32 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.elem.dd4: type = unbound_element_type %C.268, %i32 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -563,18 +563,18 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc7_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc7_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc7_9.2) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%T.loc7_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc7_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc9_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T.loc7_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc7_9.2) [symbolic = %C (constants.%C.37e)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.37e), @C.%T.loc7_9.2 (%T) [symbolic = %C.elem (constants.%C.elem.5ab)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T.loc7_9.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc9_1.2: = complete_type_witness @C.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc8: @C.%C.elem (%C.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc9_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc8: @C.%C.elem (%C.elem.5ab) = field_decl x, element0 [template] +// CHECK:STDOUT: %complete_type.loc9_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .x = %.loc8 // CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1 // CHECK:STDOUT: } @@ -584,9 +584,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.268] // CHECK:STDOUT: adapt_decl %C [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.2 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter @@ -606,11 +606,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc7_9.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc9_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %C => constants.%C.268 +// CHECK:STDOUT: %C.elem => constants.%C.elem.dd4 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.b74 +// CHECK:STDOUT: %complete_type.loc9_1.2 => constants.%complete_type.f6d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_import_extend_adapt_specific_type.carbon @@ -620,43 +620,43 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.x.1 [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] +// CHECK:STDOUT: %C.df4: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.2 [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %T [symbolic] +// CHECK:STDOUT: %C.3f8: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %struct_type.x.6d6: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.555: = complete_type_witness %struct_type.x.6d6 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %C.elem.0d5: type = unbound_element_type %C.df4, %T [symbolic] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %i32 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.elem.f99: type = unbound_element_type %C.3f8, %i32 [template] // CHECK:STDOUT: %ImportedAccess.type: type = fn_type @ImportedAccess [template] // CHECK:STDOUT: %ImportedAccess: %ImportedAccess.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extend_adapt_specific_type_library, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//extend_adapt_specific_type_library, Adapter, loaded [template = constants.%Adapter] +// CHECK:STDOUT: %import_ref.2081 = import_ref Main//extend_adapt_specific_type_library, C, unloaded +// CHECK:STDOUT: %import_ref.abc: type = import_ref Main//extend_adapt_specific_type_library, Adapter, loaded [template = constants.%Adapter] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.13 -// CHECK:STDOUT: .ImplicitAs = %import_ref.14 +// CHECK:STDOUT: .Int = %import_ref.d69 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.2)] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//extend_adapt_specific_type_library, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: @C.%C.elem (%C.elem.1) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.10: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//extend_adapt_specific_type_library, inst42 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [template = constants.%C.2] +// CHECK:STDOUT: %import_ref.3ee: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.60a)] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//extend_adapt_specific_type_library, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ec6: @C.%C.elem (%C.elem.0d5) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [template = %.8d2] +// CHECK:STDOUT: %import_ref.377: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [template = constants.%complete_type.555] +// CHECK:STDOUT: %import_ref.feb = import_ref Main//extend_adapt_specific_type_library, inst42 [no loc], unloaded +// CHECK:STDOUT: %import_ref.f9d349.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [template = constants.%C.3f8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .Adapter = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.2081 +// CHECK:STDOUT: .Adapter = imports.%import_ref.abc // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .ImportedAccess = %ImportedAccess.decl // CHECK:STDOUT: } @@ -671,7 +671,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %a.param: %Adapter = value_param runtime_param0 -// CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%import_ref.2 [template = constants.%Adapter] +// CHECK:STDOUT: %Adapter.ref: type = name_ref Adapter, imports.%import_ref.abc [template = constants.%Adapter] // CHECK:STDOUT: %a: %Adapter = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param @@ -680,9 +680,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter [from "extend_adapt_specific_type_library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: extend imports.%import_ref.12 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.feb +// CHECK:STDOUT: extend imports.%import_ref.f9d349.2 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.377 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "extend_adapt_specific_type_library.carbon"] { @@ -690,25 +690,25 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T (%T) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%T (%T) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type (constants.%complete_type.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.df4)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.df4), @C.%T (%T) [symbolic = %C.elem (constants.%C.elem.0d5)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @C.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .x = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.6 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: .x = imports.%import_ref.ec6 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3ee // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedAccess(%a.param_patt: %Adapter) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %Adapter = name_ref a, %a -// CHECK:STDOUT: %x.ref: %C.elem.2 = name_ref x, imports.%import_ref.8 [template = imports.%.1] -// CHECK:STDOUT: %.loc14_11.1: %C.2 = converted %a.ref, [template = ] +// CHECK:STDOUT: %x.ref: %C.elem.f99 = name_ref x, imports.%import_ref.ec6 [template = imports.%.8d2] +// CHECK:STDOUT: %.loc14_11.1: %C.3f8 = converted %a.ref, [template = ] // CHECK:STDOUT: %.loc14_11.2: %i32 = class_element_access , element0 [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -723,11 +723,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type => constants.%complete_type.3 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %C => constants.%C.3f8 +// CHECK:STDOUT: %C.elem => constants.%C.elem.f99 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.6d6 +// CHECK:STDOUT: %complete_type => constants.%complete_type.555 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(%T) {} @@ -739,22 +739,22 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Adapter.type: type = generic_class_type @Adapter [template] // CHECK:STDOUT: %Adapter.generic: %Adapter.type = struct_value () [template] -// CHECK:STDOUT: %Adapter.1: type = class_type @Adapter, @Adapter(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %T [symbolic] +// CHECK:STDOUT: %Adapter.f46: type = class_type @Adapter, @Adapter(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %complete_type.27d: = complete_type_witness %T [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Adapter.2: type = class_type @Adapter, @Adapter(%i32) [template] +// CHECK:STDOUT: %Adapter.1d5: type = class_type @Adapter, @Adapter(%i32) [template] // CHECK:STDOUT: %Convert.type: type = fn_type @Convert [template] // CHECK:STDOUT: %Convert: %Convert.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.d0d: = complete_type_witness %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -775,21 +775,21 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %Convert.decl: %Convert.type = fn_decl @Convert [template = constants.%Convert] { -// CHECK:STDOUT: %a.patt: %Adapter.2 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %Adapter.2 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %Adapter.1d5 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %Adapter.1d5 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc8_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %a.param: %Adapter.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8: type = splice_block %Adapter [template = constants.%Adapter.2] { +// CHECK:STDOUT: %a.param: %Adapter.1d5 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8: type = splice_block %Adapter [template = constants.%Adapter.1d5] { // CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, file.%Adapter.decl [template = constants.%Adapter.generic] // CHECK:STDOUT: %int_32.loc8_23: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_23: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%i32) [template = constants.%Adapter.2] +// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%i32) [template = constants.%Adapter.1d5] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %Adapter.2 = bind_name a, %a.param +// CHECK:STDOUT: %a: %Adapter.1d5 = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -800,23 +800,23 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Adapter.%T.loc4_15.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Adapter.%T.loc4_15.2 (%T) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Adapter.%T.loc4_15.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Adapter.%T.loc4_15.2 (%T) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.27d)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.1 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: adapt_decl %T.ref [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %T [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %T [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.27d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Adapter.1 +// CHECK:STDOUT: .Self = constants.%Adapter.f46 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert(%a.param_patt: %Adapter.2) -> %i32 { +// CHECK:STDOUT: fn @Convert(%a.param_patt: %Adapter.1d5) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %Adapter.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %Adapter.1d5 = name_ref a, %a // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %.loc9_12.1: %i32 = as_compatible %a.ref @@ -834,8 +834,8 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_15.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.d0d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_adapt_generic_type.carbon @@ -844,43 +844,43 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %Adapter.type: type = generic_class_type @Adapter [template] // CHECK:STDOUT: %Adapter.generic: %Adapter.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %T [symbolic] +// CHECK:STDOUT: %complete_type.27d: = complete_type_witness %T [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Adapter.2: type = class_type @Adapter, @Adapter(%i32) [template] +// CHECK:STDOUT: %Adapter.070: type = class_type @Adapter, @Adapter(%i32) [template] // CHECK:STDOUT: %ImportedConvert.type: type = fn_type @ImportedConvert [template] // CHECK:STDOUT: %ImportedConvert: %ImportedConvert.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.d0d: = complete_type_witness %i32 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.n [template] -// CHECK:STDOUT: %Adapter.3: type = class_type @Adapter, @Adapter(%C) [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %Adapter.e9c: type = class_type @Adapter, @Adapter(%C) [template] // CHECK:STDOUT: %ImportedConvertLocal.type: type = fn_type @ImportedConvertLocal [template] // CHECK:STDOUT: %ImportedConvertLocal: %ImportedConvertLocal.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %C [template] +// CHECK:STDOUT: %complete_type.af2: = complete_type_witness %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Adapter.type = import_ref Main//adapt_generic_type, Adapter, loaded [template = constants.%Adapter.generic] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//adapt_generic_type, Convert, unloaded +// CHECK:STDOUT: %import_ref.ff3: %Adapter.type = import_ref Main//adapt_generic_type, Adapter, loaded [template = constants.%Adapter.generic] +// CHECK:STDOUT: %import_ref.00e = import_ref Main//adapt_generic_type, Convert, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.6 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//adapt_generic_type, loc6_1, loaded [symbolic = @Adapter.%complete_type (constants.%complete_type.1)] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//adapt_generic_type, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.115: = import_ref Main//adapt_generic_type, loc6_1, loaded [symbolic = @Adapter.%complete_type (constants.%complete_type.27d)] +// CHECK:STDOUT: %import_ref.a89 = import_ref Main//adapt_generic_type, inst27 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Adapter = imports.%import_ref.1 -// CHECK:STDOUT: .Convert = imports.%import_ref.2 +// CHECK:STDOUT: .Adapter = imports.%import_ref.ff3 +// CHECK:STDOUT: .Convert = imports.%import_ref.00e // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .ImportedConvert = %ImportedConvert.decl // CHECK:STDOUT: .C = %C.decl @@ -889,40 +889,40 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %ImportedConvert.decl: %ImportedConvert.type = fn_decl @ImportedConvert [template = constants.%ImportedConvert] { -// CHECK:STDOUT: %a.patt: %Adapter.2 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %Adapter.2 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %Adapter.070 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %Adapter.070 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %a.param: %Adapter.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %Adapter [template = constants.%Adapter.2] { -// CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%import_ref.1 [template = constants.%Adapter.generic] +// CHECK:STDOUT: %a.param: %Adapter.070 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6: type = splice_block %Adapter [template = constants.%Adapter.070] { +// CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%import_ref.ff3 [template = constants.%Adapter.generic] // CHECK:STDOUT: %int_32.loc6_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_31: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%i32) [template = constants.%Adapter.2] +// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%i32) [template = constants.%Adapter.070] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %Adapter.2 = bind_name a, %a.param +// CHECK:STDOUT: %a: %Adapter.070 = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %ImportedConvertLocal.decl: %ImportedConvertLocal.type = fn_decl @ImportedConvertLocal [template = constants.%ImportedConvertLocal] { -// CHECK:STDOUT: %a.patt: %Adapter.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %Adapter.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %Adapter.e9c = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %Adapter.e9c = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %a.param: %Adapter.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %Adapter [template = constants.%Adapter.3] { -// CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%import_ref.1 [template = constants.%Adapter.generic] +// CHECK:STDOUT: %a.param: %Adapter.e9c = value_param runtime_param0 +// CHECK:STDOUT: %.loc14: type = splice_block %Adapter [template = constants.%Adapter.e9c] { +// CHECK:STDOUT: %Adapter.ref: %Adapter.type = name_ref Adapter, imports.%import_ref.ff3 [template = constants.%Adapter.generic] // CHECK:STDOUT: %C.ref.loc14: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%C) [template = constants.%Adapter.3] +// CHECK:STDOUT: %Adapter: type = class_type @Adapter, @Adapter(constants.%C) [template = constants.%Adapter.e9c] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %Adapter.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %Adapter.e9c = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -933,19 +933,19 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Adapter.%T (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @Adapter.%T (%T) [symbolic = %complete_type (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Adapter.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @Adapter.%T (%T) [symbolic = %complete_type (constants.%complete_type.27d)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.a89 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.115 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc11: %C.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -953,9 +953,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ImportedConvert(%a.param_patt: %Adapter.2) -> %i32 { +// CHECK:STDOUT: fn @ImportedConvert(%a.param_patt: %Adapter.070) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %Adapter.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %Adapter.070 = name_ref a, %a // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %.loc7_12.1: %i32 = as_compatible %a.ref @@ -963,9 +963,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: return %.loc7_12.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ImportedConvertLocal(%a.param_patt: %Adapter.3) -> %i32 { +// CHECK:STDOUT: fn @ImportedConvertLocal(%a.param_patt: %Adapter.e9c) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %Adapter.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %Adapter.e9c = name_ref a, %a // CHECK:STDOUT: %C.ref.loc15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc15_13.1: %C = as_compatible %a.ref // CHECK:STDOUT: %.loc15_13.2: %C = converted %a.ref, %.loc15_13.1 @@ -985,8 +985,8 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %complete_type => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %complete_type => constants.%complete_type.d0d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Adapter(constants.%C) { @@ -994,7 +994,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %T.patt => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.5 -// CHECK:STDOUT: %complete_type => constants.%complete_type.6 +// CHECK:STDOUT: %require_complete => constants.%complete_type.9b7 +// CHECK:STDOUT: %complete_type => constants.%complete_type.af2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index e20aa461dc8b..9ee125ebd855 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -91,32 +91,32 @@ fn H() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Base.type: type = generic_class_type @Base [template] // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [template] -// CHECK:STDOUT: %Base.1: type = class_type @Base, @Base(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Base.elem.1: type = unbound_element_type %Base.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] +// CHECK:STDOUT: %Base.0cc: type = class_type @Base, @Base(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Base.elem.bb6: type = unbound_element_type %Base.0cc, %T [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] // CHECK:STDOUT: %Param: type = class_type @Param [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Param.elem: type = unbound_element_type %Param, %i32 [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.5e2: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] -// CHECK:STDOUT: %Base.2: type = class_type @Base, @Base(%Param) [template] -// CHECK:STDOUT: %Base.elem.2: type = unbound_element_type %Base.2, %Param [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %Param} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.x.2 [template] -// CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.2 [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base.2} [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %Base.cc4: type = class_type @Base, @Base(%Param) [template] +// CHECK:STDOUT: %Base.elem.8c2: type = unbound_element_type %Base.cc4, %Param [template] +// CHECK:STDOUT: %struct_type.x.975: type = struct_type {.x: %Param} [template] +// CHECK:STDOUT: %complete_type.db3: = complete_type_witness %struct_type.x.975 [template] +// CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base.cc4 [template] +// CHECK:STDOUT: %struct_type.base.d47: type = struct_type {.base: %Base.cc4} [template] +// CHECK:STDOUT: %complete_type.08e: = complete_type_witness %struct_type.base.d47 [template] // CHECK:STDOUT: %DoubleFieldAccess.type: type = fn_type @DoubleFieldAccess [template] // CHECK:STDOUT: %DoubleFieldAccess: %DoubleFieldAccess.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -161,18 +161,18 @@ fn H() { // CHECK:STDOUT: %T.patt.loc4_17.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.1), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.0cc)] +// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.0cc), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.bb6)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.bb6) = field_decl x, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Base.1 +// CHECK:STDOUT: .Self = constants.%Base.0cc // CHECK:STDOUT: .x = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -180,7 +180,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class @Param { // CHECK:STDOUT: %.loc9: %Param.elem = field_decl y, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.5e2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param @@ -191,9 +191,9 @@ fn H() { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: %Base.type = name_ref Base, file.%Base.decl [template = constants.%Base.generic] // CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [template = constants.%Param] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%Param) [template = constants.%Base.2] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(constants.%Param) [template = constants.%Base.cc4] // CHECK:STDOUT: %.loc13: %Derived.elem = base_decl %Base, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.6] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d47 [template = constants.%complete_type.08e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -205,9 +205,9 @@ fn H() { // CHECK:STDOUT: fn @DoubleFieldAccess(%d.param_patt: %Derived) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %x.ref: %Base.elem.2 = name_ref x, @Base.%.loc5 [template = @Base.%.loc5] -// CHECK:STDOUT: %.loc17_11.1: ref %Base.2 = class_element_access %d.ref, element0 -// CHECK:STDOUT: %.loc17_11.2: ref %Base.2 = converted %d.ref, %.loc17_11.1 +// CHECK:STDOUT: %x.ref: %Base.elem.8c2 = name_ref x, @Base.%.loc5 [template = @Base.%.loc5] +// CHECK:STDOUT: %.loc17_11.1: ref %Base.cc4 = class_element_access %d.ref, element0 +// CHECK:STDOUT: %.loc17_11.2: ref %Base.cc4 = converted %d.ref, %.loc17_11.1 // CHECK:STDOUT: %.loc17_11.3: ref %Param = class_element_access %.loc17_11.2, element0 // CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, @Param.%.loc9 [template = @Param.%.loc9] // CHECK:STDOUT: %.loc17_13.1: ref %i32 = class_element_access %.loc17_11.3, element0 @@ -227,11 +227,11 @@ fn H() { // CHECK:STDOUT: %T.patt.loc4_17.2 => constants.%Param // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %Base => constants.%Base.2 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%complete_type.5e2 +// CHECK:STDOUT: %Base => constants.%Base.cc4 +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.8c2 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.975 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.db3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import.carbon @@ -242,53 +242,53 @@ fn H() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %i32} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.a2b: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.1 [symbolic] -// CHECK:STDOUT: %Base.1: type = class_type @Base, @Base(%T) [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] +// CHECK:STDOUT: %Base.5e4: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Base.2: type = class_type @Base, @Base(%Param) [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base.2} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Base.elem.1: type = unbound_element_type %Base.1, %T [symbolic] -// CHECK:STDOUT: %Base.elem.2: type = unbound_element_type %Base.2, %Param [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %Param} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %Base.802: type = class_type @Base, @Base(%Param) [template] +// CHECK:STDOUT: %struct_type.base.875: type = struct_type {.base: %Base.802} [template] +// CHECK:STDOUT: %complete_type.868: = complete_type_witness %struct_type.base.875 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Base.elem.ace: type = unbound_element_type %Base.5e4, %T [symbolic] +// CHECK:STDOUT: %Base.elem.815: type = unbound_element_type %Base.802, %Param [template] +// CHECK:STDOUT: %struct_type.x.975: type = struct_type {.x: %Param} [template] +// CHECK:STDOUT: %complete_type.db3: = complete_type_witness %struct_type.x.975 [template] // CHECK:STDOUT: %ImportedDoubleFieldAccess.type: type = fn_type @ImportedDoubleFieldAccess [template] // CHECK:STDOUT: %ImportedDoubleFieldAccess: %ImportedDoubleFieldAccess.type = struct_value () [template] // CHECK:STDOUT: %Param.elem: type = unbound_element_type %Param, %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extend_generic_base, Base, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//extend_generic_base, Param, unloaded -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//extend_generic_base, Derived, loaded [template = constants.%Derived] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//extend_generic_base, DoubleFieldAccess, unloaded +// CHECK:STDOUT: %import_ref.210 = import_ref Main//extend_generic_base, Base, unloaded +// CHECK:STDOUT: %import_ref.877 = import_ref Main//extend_generic_base, Param, unloaded +// CHECK:STDOUT: %import_ref.502: type = import_ref Main//extend_generic_base, Derived, loaded [template = constants.%Derived] +// CHECK:STDOUT: %import_ref.ac8 = import_ref Main//extend_generic_base, DoubleFieldAccess, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.19 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.8: = import_ref Main//extend_generic_base, loc10_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//extend_generic_base, inst42 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.11: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.3)] -// CHECK:STDOUT: %import_ref.12 = import_ref Main//extend_generic_base, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.13: @Base.%Base.elem (%Base.elem.1) = import_ref Main//extend_generic_base, loc5_8, loaded [template = %.2] -// CHECK:STDOUT: %import_ref.15: = import_ref Main//extend_generic_base, loc14_1, loaded [template = constants.%complete_type.4] -// CHECK:STDOUT: %import_ref.16 = import_ref Main//extend_generic_base, inst76 [no loc], unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref Main//extend_generic_base, loc13_27, unloaded -// CHECK:STDOUT: %import_ref.18: type = import_ref Main//extend_generic_base, loc13_26, loaded [template = constants.%Base.2] +// CHECK:STDOUT: %import_ref.f46: = import_ref Main//extend_generic_base, loc10_1, loaded [template = constants.%complete_type.a2b] +// CHECK:STDOUT: %import_ref.446 = import_ref Main//extend_generic_base, inst42 [no loc], unloaded +// CHECK:STDOUT: %import_ref.c4e: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [template = %.7d9] +// CHECK:STDOUT: %import_ref.3ee: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.60a)] +// CHECK:STDOUT: %import_ref.a6b = import_ref Main//extend_generic_base, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8be: @Base.%Base.elem (%Base.elem.ace) = import_ref Main//extend_generic_base, loc5_8, loaded [template = %.9ad] +// CHECK:STDOUT: %import_ref.696: = import_ref Main//extend_generic_base, loc14_1, loaded [template = constants.%complete_type.868] +// CHECK:STDOUT: %import_ref.f6c = import_ref Main//extend_generic_base, inst76 [no loc], unloaded +// CHECK:STDOUT: %import_ref.626 = import_ref Main//extend_generic_base, loc13_27, unloaded +// CHECK:STDOUT: %import_ref.6c6788.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [template = constants.%Base.802] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Base = imports.%import_ref.1 -// CHECK:STDOUT: .Param = imports.%import_ref.2 -// CHECK:STDOUT: .Derived = imports.%import_ref.3 -// CHECK:STDOUT: .DoubleFieldAccess = imports.%import_ref.4 +// CHECK:STDOUT: .Base = imports.%import_ref.210 +// CHECK:STDOUT: .Param = imports.%import_ref.877 +// CHECK:STDOUT: .Derived = imports.%import_ref.502 +// CHECK:STDOUT: .DoubleFieldAccess = imports.%import_ref.ac8 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .ImportedDoubleFieldAccess = %ImportedDoubleFieldAccess.decl // CHECK:STDOUT: } @@ -303,7 +303,7 @@ fn H() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %d.param: %Derived = value_param runtime_param0 -// CHECK:STDOUT: %Derived.ref: type = name_ref Derived, imports.%import_ref.3 [template = constants.%Derived] +// CHECK:STDOUT: %Derived.ref: type = name_ref Derived, imports.%import_ref.502 [template = constants.%Derived] // CHECK:STDOUT: %d: %Derived = bind_name d, %d.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param @@ -312,17 +312,17 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived [from "extend_generic_base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.16 -// CHECK:STDOUT: .base = imports.%import_ref.17 -// CHECK:STDOUT: extend imports.%import_ref.18 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.15 +// CHECK:STDOUT: .Self = imports.%import_ref.f6c +// CHECK:STDOUT: .base = imports.%import_ref.626 +// CHECK:STDOUT: extend imports.%import_ref.6c6788.2 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.696 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Param [from "extend_generic_base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .y = imports.%import_ref.10 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8 +// CHECK:STDOUT: .Self = imports.%import_ref.446 +// CHECK:STDOUT: .y = imports.%import_ref.c4e +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.f46 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Base(constants.%T: type) [from "extend_generic_base.carbon"] { @@ -330,28 +330,28 @@ fn H() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T (%T) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.1), @Base.%T (%T) [symbolic = %Base.elem (constants.%Base.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @Base.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type (constants.%complete_type.3)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T) [symbolic = %Base (constants.%Base.5e4)] +// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.5e4), @Base.%T (%T) [symbolic = %Base.elem (constants.%Base.elem.ace)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Base.%T (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @Base.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.12 -// CHECK:STDOUT: .x = imports.%import_ref.13 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.11 +// CHECK:STDOUT: .Self = imports.%import_ref.a6b +// CHECK:STDOUT: .x = imports.%import_ref.8be +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3ee // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedDoubleFieldAccess(%d.param_patt: %Derived) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d -// CHECK:STDOUT: %x.ref: %Base.elem.2 = name_ref x, imports.%import_ref.13 [template = imports.%.2] -// CHECK:STDOUT: %.loc7_11.1: ref %Base.2 = class_element_access %d.ref, element0 -// CHECK:STDOUT: %.loc7_11.2: ref %Base.2 = converted %d.ref, %.loc7_11.1 +// CHECK:STDOUT: %x.ref: %Base.elem.815 = name_ref x, imports.%import_ref.8be [template = imports.%.9ad] +// CHECK:STDOUT: %.loc7_11.1: ref %Base.802 = class_element_access %d.ref, element0 +// CHECK:STDOUT: %.loc7_11.2: ref %Base.802 = converted %d.ref, %.loc7_11.1 // CHECK:STDOUT: %.loc7_11.3: ref %Param = class_element_access %.loc7_11.2, element0 -// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%import_ref.10 [template = imports.%.1] +// CHECK:STDOUT: %y.ref: %Param.elem = name_ref y, imports.%import_ref.c4e [template = imports.%.7d9] // CHECK:STDOUT: %.loc7_13.1: ref %i32 = class_element_access %.loc7_11.3, element0 // CHECK:STDOUT: %.loc7_13.2: %i32 = bind_value %.loc7_13.1 // CHECK:STDOUT: return %.loc7_13.2 @@ -367,11 +367,11 @@ fn H() { // CHECK:STDOUT: %T.patt => constants.%Param // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %Base => constants.%Base.2 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%complete_type.a2b +// CHECK:STDOUT: %Base => constants.%Base.802 +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.815 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.975 +// CHECK:STDOUT: %complete_type => constants.%complete_type.db3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(%T) {} @@ -383,7 +383,7 @@ fn H() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -392,7 +392,7 @@ fn H() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%X) [template] +// CHECK:STDOUT: %C.f9e: type = class_type @C, @C(%X) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -434,7 +434,7 @@ fn H() { // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: has_error // CHECK:STDOUT: complete_type_witness = %complete_type @@ -460,7 +460,7 @@ fn H() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.f9e] // CHECK:STDOUT: %G.ref: = name_ref G, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -485,44 +485,44 @@ fn H() { // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %X.type: type = generic_class_type @X [template] // CHECK:STDOUT: %X.generic: %X.type = struct_value () [template] -// CHECK:STDOUT: %X.1: type = class_type @X, @X(%U) [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G, @X(%U) [symbolic] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %X.847: type = class_type @X, @X(%U) [symbolic] +// CHECK:STDOUT: %G.type.9e7: type = fn_type @G, @X(%U) [symbolic] +// CHECK:STDOUT: %G.ca3: %G.type.9e7 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %G.specific_fn.1: = specific_function %G.1, @G(%U) [symbolic] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %G.specific_fn.a95: = specific_function %G.ca3, @G(%U) [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %X.2: type = class_type @X, @X(%T) [symbolic] -// CHECK:STDOUT: %G.type.2: type = fn_type @G, @X(%T) [symbolic] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %X.2 [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %X.2 [symbolic] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %X.2} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %X.643: type = class_type @X, @X(%T) [symbolic] +// CHECK:STDOUT: %G.type.709: type = fn_type @G, @X(%T) [symbolic] +// CHECK:STDOUT: %G.0f4: %G.type.709 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.c56: = require_complete_type %X.643 [symbolic] +// CHECK:STDOUT: %C.elem.513: type = unbound_element_type %C.37e, %X.643 [symbolic] +// CHECK:STDOUT: %struct_type.base.8ef: type = struct_type {.base: %X.643} [symbolic] +// CHECK:STDOUT: %complete_type.bbc: = complete_type_witness %struct_type.base.8ef [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] -// CHECK:STDOUT: %X.3: type = class_type @X, @X(%i32) [template] -// CHECK:STDOUT: %G.type.3: type = fn_type @G, @X(%i32) [template] -// CHECK:STDOUT: %G.3: %G.type.3 = struct_value () [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %X.3 [template] -// CHECK:STDOUT: %struct_type.base.2: type = struct_type {.base: %X.3} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.base.2 [template] -// CHECK:STDOUT: %G.specific_fn.2: = specific_function %G.3, @G(%i32) [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %C.268: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %X.05f: type = class_type @X, @X(%i32) [template] +// CHECK:STDOUT: %G.type.d5e: type = fn_type @G, @X(%i32) [template] +// CHECK:STDOUT: %G.842: %G.type.d5e = struct_value () [template] +// CHECK:STDOUT: %C.elem.610: type = unbound_element_type %C.268, %X.05f [template] +// CHECK:STDOUT: %struct_type.base.00d: type = struct_type {.base: %X.05f} [template] +// CHECK:STDOUT: %complete_type.b69: = complete_type_witness %struct_type.base.00d [template] +// CHECK:STDOUT: %G.specific_fn.af5: = specific_function %G.842, @G(%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -558,11 +558,11 @@ fn H() { // CHECK:STDOUT: %U.patt.loc4_14.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc4_14.2 (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U.loc4_14.2) [symbolic = %G.type (constants.%G.type.1)] -// CHECK:STDOUT: %G: @X.%G.type (%G.type.1) = struct_value () [symbolic = %G (constants.%G.1)] +// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U.loc4_14.2) [symbolic = %G.type (constants.%G.type.9e7)] +// CHECK:STDOUT: %G: @X.%G.type (%G.type.9e7) = struct_value () [symbolic = %G (constants.%G.ca3)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %G.decl: @X.%G.type (%G.type.1) = fn_decl @G [symbolic = @X.%G (constants.%G.1)] { +// CHECK:STDOUT: %G.decl: @X.%G.type (%G.type.9e7) = fn_decl @G [symbolic = @X.%G (constants.%G.ca3)] { // CHECK:STDOUT: %return.patt: @G.%U (%U) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @G.%U (%U) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -570,10 +570,10 @@ fn H() { // CHECK:STDOUT: %return.param: ref @G.%U (%U) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @G.%U (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%X.1 +// CHECK:STDOUT: .Self = constants.%X.847 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -584,22 +584,22 @@ fn H() { // CHECK:STDOUT: %T.patt.loc8_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %X.loc9_19.2: type = class_type @X, @X(%T.loc8_9.2) [symbolic = %X.loc9_19.2 (constants.%X.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%X.loc9_19.2 (%X.2) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc8_9.2) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%X.loc9_19.2 (%X.2) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: @C.%X.loc9_19.2 (%X.2)} [symbolic = %struct_type.base (constants.%struct_type.base.1)] -// CHECK:STDOUT: %complete_type.loc10_1.2: = complete_type_witness @C.%struct_type.base (%struct_type.base.1) [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %X.loc9_19.2: type = class_type @X, @X(%T.loc8_9.2) [symbolic = %X.loc9_19.2 (constants.%X.643)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%X.loc9_19.2 (%X.643) [symbolic = %require_complete (constants.%require_complete.c56)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T.loc8_9.2) [symbolic = %C (constants.%C.37e)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.37e), @C.%X.loc9_19.2 (%X.643) [symbolic = %C.elem (constants.%C.elem.513)] +// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: @C.%X.loc9_19.2 (%X.643)} [symbolic = %struct_type.base (constants.%struct_type.base.8ef)] +// CHECK:STDOUT: %complete_type.loc10_1.2: = complete_type_witness @C.%struct_type.base (%struct_type.base.8ef) [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.bbc)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %X.ref: %X.type = name_ref X, file.%X.decl [template = constants.%X.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_9.1 [symbolic = %T.loc8_9.2 (constants.%T)] -// CHECK:STDOUT: %X.loc9_19.1: type = class_type @X, @X(constants.%T) [symbolic = %X.loc9_19.2 (constants.%X.2)] -// CHECK:STDOUT: %.loc9: @C.%C.elem (%C.elem.1) = base_decl %X.loc9_19.1, element0 [template] -// CHECK:STDOUT: %complete_type.loc10_1.1: = complete_type_witness %struct_type.base.1 [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %X.loc9_19.1: type = class_type @X, @X(constants.%T) [symbolic = %X.loc9_19.2 (constants.%X.643)] +// CHECK:STDOUT: %.loc9: @C.%C.elem (%C.elem.513) = base_decl %X.loc9_19.1, element0 [template] +// CHECK:STDOUT: %complete_type.loc10_1.1: = complete_type_witness %struct_type.base.8ef [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.bbc)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: extend %X.loc9_19.1 // CHECK:STDOUT: complete_type_witness = %complete_type.loc10_1.1 @@ -610,16 +610,16 @@ fn H() { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @G.%U (%U) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.1)] -// CHECK:STDOUT: %G: @G.%G.type (%G.type.1) = struct_value () [symbolic = %G (constants.%G.1)] -// CHECK:STDOUT: %G.specific_fn.loc5_24.2: = specific_function %G, @G(%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @G.%U (%U) [symbolic = %require_complete (constants.%require_complete.427)] +// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.9e7)] +// CHECK:STDOUT: %G: @G.%G.type (%G.type.9e7) = struct_value () [symbolic = %G (constants.%G.ca3)] +// CHECK:STDOUT: %G.specific_fn.loc5_24.2: = specific_function %G, @G(%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.a95)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @G.%U (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc5_24: @G.%G.type (%G.type.1) = specific_constant @X.%G.decl, @X(constants.%U) [symbolic = %G (constants.%G.1)] -// CHECK:STDOUT: %G.ref: @G.%G.type (%G.type.1) = name_ref G, %.loc5_24 [symbolic = %G (constants.%G.1)] -// CHECK:STDOUT: %G.specific_fn.loc5_24.1: = specific_function %G.ref, @G(constants.%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.1)] +// CHECK:STDOUT: %.loc5_24: @G.%G.type (%G.type.9e7) = specific_constant @X.%G.decl, @X(constants.%U) [symbolic = %G (constants.%G.ca3)] +// CHECK:STDOUT: %G.ref: @G.%G.type (%G.type.9e7) = name_ref G, %.loc5_24 [symbolic = %G (constants.%G.ca3)] +// CHECK:STDOUT: %G.specific_fn.loc5_24.1: = specific_function %G.ref, @G(constants.%U) [symbolic = %G.specific_fn.loc5_24.2 (constants.%G.specific_fn.a95)] // CHECK:STDOUT: %G.call: init @G.%U (%U) = call %G.specific_fn.loc5_24.1() // CHECK:STDOUT: %.loc5_27.1: @G.%U (%U) = value_of_initializer %G.call // CHECK:STDOUT: %.loc5_27.2: @G.%U (%U) = converted %G.call, %.loc5_27.1 @@ -632,10 +632,10 @@ fn H() { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] -// CHECK:STDOUT: %.loc13_22: %G.type.3 = specific_constant @X.%G.decl, @X(constants.%i32) [template = constants.%G.3] -// CHECK:STDOUT: %G.ref: %G.type.3 = name_ref G, %.loc13_22 [template = constants.%G.3] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [template = constants.%G.specific_fn.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.268] +// CHECK:STDOUT: %.loc13_22: %G.type.d5e = specific_constant @X.%G.decl, @X(constants.%i32) [template = constants.%G.842] +// CHECK:STDOUT: %G.ref: %G.type.d5e = name_ref G, %.loc13_22 [template = constants.%G.842] +// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [template = constants.%G.specific_fn.af5] // CHECK:STDOUT: %G.call: init %i32 = call %G.specific_fn() // CHECK:STDOUT: %.loc13_26.1: %i32 = value_of_initializer %G.call // CHECK:STDOUT: %.loc13_26.2: %i32 = converted %G.call, %.loc13_26.1 @@ -648,18 +648,18 @@ fn H() { // CHECK:STDOUT: %U.patt.loc4_14.2 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.1 -// CHECK:STDOUT: %G => constants.%G.1 +// CHECK:STDOUT: %G.type => constants.%G.type.9e7 +// CHECK:STDOUT: %G => constants.%G.ca3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %G.type => constants.%G.type.1 -// CHECK:STDOUT: %G => constants.%G.1 -// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.427 +// CHECK:STDOUT: %G.type => constants.%G.type.9e7 +// CHECK:STDOUT: %G => constants.%G.ca3 +// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.a95 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(%U.loc4_14.2) {} @@ -678,8 +678,8 @@ fn H() { // CHECK:STDOUT: %U.patt.loc4_14.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.2 -// CHECK:STDOUT: %G => constants.%G.2 +// CHECK:STDOUT: %G.type => constants.%G.type.709 +// CHECK:STDOUT: %G => constants.%G.0f4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(@C.%T.loc8_9.2) {} @@ -691,12 +691,12 @@ fn H() { // CHECK:STDOUT: %T.patt.loc8_9.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %X.loc9_19.2 => constants.%X.3 -// CHECK:STDOUT: %require_complete => constants.%complete_type.1 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.base => constants.%struct_type.base.2 -// CHECK:STDOUT: %complete_type.loc10_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %X.loc9_19.2 => constants.%X.05f +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 +// CHECK:STDOUT: %C => constants.%C.268 +// CHECK:STDOUT: %C.elem => constants.%C.elem.610 +// CHECK:STDOUT: %struct_type.base => constants.%struct_type.base.00d +// CHECK:STDOUT: %complete_type.loc10_1.2 => constants.%complete_type.b69 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%i32) { @@ -704,18 +704,18 @@ fn H() { // CHECK:STDOUT: %U.patt.loc4_14.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.3 -// CHECK:STDOUT: %G => constants.%G.3 +// CHECK:STDOUT: %G.type => constants.%G.type.d5e +// CHECK:STDOUT: %G => constants.%G.842 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %G.type => constants.%G.type.3 -// CHECK:STDOUT: %G => constants.%G.3 -// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %G.type => constants.%G.type.d5e +// CHECK:STDOUT: %G => constants.%G.842 +// CHECK:STDOUT: %G.specific_fn.loc5_24.2 => constants.%G.specific_fn.af5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_extend_generic_symbolic_base.carbon @@ -726,60 +726,60 @@ fn H() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %X.2: type = class_type @X, @X(%T) [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %C.elem.1: type = unbound_element_type %C.1, %X.2 [symbolic] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %X.2} [symbolic] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [symbolic] +// CHECK:STDOUT: %X.ab1: type = class_type @X, @X(%T) [symbolic] +// CHECK:STDOUT: %C.df4: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.elem.b01: type = unbound_element_type %C.df4, %X.ab1 [symbolic] +// CHECK:STDOUT: %struct_type.base.404: type = struct_type {.base: %X.ab1} [symbolic] +// CHECK:STDOUT: %complete_type.fe7: = complete_type_witness %struct_type.base.404 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G, @X(%U) [symbolic] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %X.2 [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %G.specific_fn.1: = specific_function %G.1, @G(%U) [symbolic] -// CHECK:STDOUT: %G.type.2: type = fn_type @G, @X(%T) [symbolic] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%i32) [template] -// CHECK:STDOUT: %X.3: type = class_type @X, @X(%i32) [template] -// CHECK:STDOUT: %G.type.3: type = fn_type @G, @X(%i32) [template] -// CHECK:STDOUT: %G.3: %G.type.3 = struct_value () [template] -// CHECK:STDOUT: %C.elem.2: type = unbound_element_type %C.2, %X.3 [template] -// CHECK:STDOUT: %struct_type.base.2: type = struct_type {.base: %X.3} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.base.2 [template] -// CHECK:STDOUT: %G.specific_fn.2: = specific_function %G.3, @G(%i32) [template] +// CHECK:STDOUT: %G.type.804: type = fn_type @G, @X(%U) [symbolic] +// CHECK:STDOUT: %G.ed3: %G.type.804 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.8e8: = require_complete_type %X.ab1 [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %G.specific_fn.3dd: = specific_function %G.ed3, @G(%U) [symbolic] +// CHECK:STDOUT: %G.type.aaf: type = fn_type @G, @X(%T) [symbolic] +// CHECK:STDOUT: %G.ec7: %G.type.aaf = struct_value () [symbolic] +// CHECK:STDOUT: %C.733: type = class_type @C, @C(%i32) [template] +// CHECK:STDOUT: %X.3bf: type = class_type @X, @X(%i32) [template] +// CHECK:STDOUT: %G.type.aac: type = fn_type @G, @X(%i32) [template] +// CHECK:STDOUT: %G.08f: %G.type.aac = struct_value () [template] +// CHECK:STDOUT: %C.elem.123: type = unbound_element_type %C.733, %X.3bf [template] +// CHECK:STDOUT: %struct_type.base.1d9: type = struct_type {.base: %X.3bf} [template] +// CHECK:STDOUT: %complete_type.82b: = complete_type_witness %struct_type.base.1d9 [template] +// CHECK:STDOUT: %G.specific_fn.e4a: = specific_function %G.08f, @G(%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extend_generic_symbolic_base, X, unloaded -// CHECK:STDOUT: %import_ref.2: %C.type = import_ref Main//extend_generic_symbolic_base, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//extend_generic_symbolic_base, F, unloaded +// CHECK:STDOUT: %import_ref.4de = import_ref Main//extend_generic_symbolic_base, X, unloaded +// CHECK:STDOUT: %import_ref.26e: %C.type = import_ref Main//extend_generic_symbolic_base, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.b07 = import_ref Main//extend_generic_symbolic_base, F, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.4 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.8: = import_ref Main//extend_generic_symbolic_base, loc6_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//extend_generic_symbolic_base, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: @X.%G.type (%G.type.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%G (constants.%G.1)] -// CHECK:STDOUT: %import_ref.12: = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.4)] -// CHECK:STDOUT: %import_ref.13 = import_ref Main//extend_generic_symbolic_base, inst68 [no loc], unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Main//extend_generic_symbolic_base, loc9_20, unloaded -// CHECK:STDOUT: %import_ref.15: type = import_ref Main//extend_generic_symbolic_base, loc9_19, loaded [symbolic = @C.%X (constants.%X.2)] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//extend_generic_symbolic_base, loc6_1, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.839 = import_ref Main//extend_generic_symbolic_base, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ba8: @X.%G.type (%G.type.804) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%G (constants.%G.ed3)] +// CHECK:STDOUT: %import_ref.bb2: = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.fe7)] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//extend_generic_symbolic_base, inst68 [no loc], unloaded +// CHECK:STDOUT: %import_ref.004 = import_ref Main//extend_generic_symbolic_base, loc9_20, unloaded +// CHECK:STDOUT: %import_ref.b59216.2: type = import_ref Main//extend_generic_symbolic_base, loc9_19, loaded [symbolic = @C.%X (constants.%X.ab1)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .X = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .X = imports.%import_ref.4de +// CHECK:STDOUT: .C = imports.%import_ref.26e +// CHECK:STDOUT: .F = imports.%import_ref.b07 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } @@ -793,19 +793,19 @@ fn H() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %X: type = class_type @X, @X(%T) [symbolic = %X (constants.%X.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%X (%X.2) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.1), @C.%X (%X.2) [symbolic = %C.elem (constants.%C.elem.1)] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: @C.%X (%X.2)} [symbolic = %struct_type.base (constants.%struct_type.base.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.base (%struct_type.base.1) [symbolic = %complete_type (constants.%complete_type.4)] +// CHECK:STDOUT: %X: type = class_type @X, @X(%T) [symbolic = %X (constants.%X.ab1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%X (%X.ab1) [symbolic = %require_complete (constants.%require_complete.8e8)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.df4)] +// CHECK:STDOUT: %C.elem: type = unbound_element_type @C.%C (%C.df4), @C.%X (%X.ab1) [symbolic = %C.elem (constants.%C.elem.b01)] +// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: @C.%X (%X.ab1)} [symbolic = %struct_type.base (constants.%struct_type.base.404)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @C.%struct_type.base (%struct_type.base.404) [symbolic = %complete_type (constants.%complete_type.fe7)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.13 -// CHECK:STDOUT: .base = imports.%import_ref.14 -// CHECK:STDOUT: extend imports.%import_ref.15 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.12 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: .base = imports.%import_ref.004 +// CHECK:STDOUT: extend imports.%import_ref.b59216.2 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.bb2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -814,26 +814,26 @@ fn H() { // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.1)] -// CHECK:STDOUT: %G: @X.%G.type (%G.type.1) = struct_value () [symbolic = %G (constants.%G.1)] +// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.804)] +// CHECK:STDOUT: %G: @X.%G.type (%G.type.804) = struct_value () [symbolic = %G (constants.%G.ed3)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .G = imports.%import_ref.10 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8 +// CHECK:STDOUT: .Self = imports.%import_ref.839 +// CHECK:STDOUT: .G = imports.%import_ref.ba8 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.2 [template = constants.%C.generic] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.26e [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.2] -// CHECK:STDOUT: %.loc7_22: %G.type.3 = specific_constant imports.%import_ref.10, @X(constants.%i32) [template = constants.%G.3] -// CHECK:STDOUT: %G.ref: %G.type.3 = name_ref G, %.loc7_22 [template = constants.%G.3] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [template = constants.%G.specific_fn.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%i32) [template = constants.%C.733] +// CHECK:STDOUT: %.loc7_22: %G.type.aac = specific_constant imports.%import_ref.ba8, @X(constants.%i32) [template = constants.%G.08f] +// CHECK:STDOUT: %G.ref: %G.type.aac = name_ref G, %.loc7_22 [template = constants.%G.08f] +// CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%i32) [template = constants.%G.specific_fn.e4a] // CHECK:STDOUT: %G.call: init %i32 = call %G.specific_fn() // CHECK:STDOUT: %.loc7_26.1: %i32 = value_of_initializer %G.call // CHECK:STDOUT: %.loc7_26.2: %i32 = converted %G.call, %.loc7_26.1 @@ -845,10 +845,10 @@ fn H() { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @G.%U (%U) [symbolic = %require_complete (constants.%require_complete.3)] -// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.1)] -// CHECK:STDOUT: %G: @G.%G.type (%G.type.1) = struct_value () [symbolic = %G (constants.%G.1)] -// CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%U) [symbolic = %G.specific_fn (constants.%G.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @G.%U (%U) [symbolic = %require_complete (constants.%require_complete.427)] +// CHECK:STDOUT: %G.type: type = fn_type @G, @X(%U) [symbolic = %G.type (constants.%G.type.804)] +// CHECK:STDOUT: %G: @G.%G.type (%G.type.804) = struct_value () [symbolic = %G (constants.%G.ed3)] +// CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%U) [symbolic = %G.specific_fn (constants.%G.specific_fn.3dd)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @G.%U (%U); // CHECK:STDOUT: } @@ -858,8 +858,8 @@ fn H() { // CHECK:STDOUT: %U.patt => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.1 -// CHECK:STDOUT: %G => constants.%G.1 +// CHECK:STDOUT: %G.type => constants.%G.type.804 +// CHECK:STDOUT: %G => constants.%G.ed3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%T) { @@ -867,8 +867,8 @@ fn H() { // CHECK:STDOUT: %U.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.2 -// CHECK:STDOUT: %G => constants.%G.2 +// CHECK:STDOUT: %G.type => constants.%G.type.aaf +// CHECK:STDOUT: %G => constants.%G.ec7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { @@ -886,10 +886,10 @@ fn H() { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.3 -// CHECK:STDOUT: %G.type => constants.%G.type.1 -// CHECK:STDOUT: %G => constants.%G.1 -// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.427 +// CHECK:STDOUT: %G.type => constants.%G.type.804 +// CHECK:STDOUT: %G => constants.%G.ed3 +// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.3dd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(@G.%U) {} @@ -901,12 +901,12 @@ fn H() { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %X => constants.%X.3 -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %C.elem => constants.%C.elem.2 -// CHECK:STDOUT: %struct_type.base => constants.%struct_type.base.2 -// CHECK:STDOUT: %complete_type => constants.%complete_type.5 +// CHECK:STDOUT: %X => constants.%X.3bf +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 +// CHECK:STDOUT: %C => constants.%C.733 +// CHECK:STDOUT: %C.elem => constants.%C.elem.123 +// CHECK:STDOUT: %struct_type.base => constants.%struct_type.base.1d9 +// CHECK:STDOUT: %complete_type => constants.%complete_type.82b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(constants.%i32) { @@ -914,17 +914,17 @@ fn H() { // CHECK:STDOUT: %U.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %G.type => constants.%G.type.3 -// CHECK:STDOUT: %G => constants.%G.3 +// CHECK:STDOUT: %G.type => constants.%G.type.aac +// CHECK:STDOUT: %G => constants.%G.08f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%i32) { // CHECK:STDOUT: %U => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %G.type => constants.%G.type.3 -// CHECK:STDOUT: %G => constants.%G.3 -// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %G.type => constants.%G.type.aac +// CHECK:STDOUT: %G => constants.%G.08f +// CHECK:STDOUT: %G.specific_fn => constants.%G.specific_fn.e4a // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index 010af619c65c..d3c93ee7423d 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -31,19 +31,19 @@ class Declaration(T:! type); // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.53c: type = ptr_type %Class [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T) [symbolic] // CHECK:STDOUT: %GetAddr: %GetAddr.type = struct_value () [symbolic] // CHECK:STDOUT: %GetValue.type: type = fn_type @GetValue, @Class(%T) [symbolic] // CHECK:STDOUT: %GetValue: %GetValue.type = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %T} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.2 [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %require_complete.6c6: = require_complete_type %ptr.53c [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Declaration.type: type = generic_class_type @Declaration [template] // CHECK:STDOUT: %Declaration.generic: %Declaration.type = struct_value () [template] // CHECK:STDOUT: } @@ -87,7 +87,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %GetAddr: @Class.%GetAddr.type (%GetAddr.type) = struct_value () [symbolic = %GetAddr (constants.%GetAddr)] // CHECK:STDOUT: %GetValue.type: type = fn_type @GetValue, @Class(%T.loc11_13.2) [symbolic = %GetValue.type (constants.%GetValue.type)] // CHECK:STDOUT: %GetValue: @Class.%GetValue.type (%GetValue.type) = struct_value () [symbolic = %GetValue (constants.%GetValue)] -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc11_13.2) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.loc11_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.loc11_13.2 (%T)} [symbolic = %struct_type.k (constants.%struct_type.k)] @@ -95,23 +95,23 @@ class Declaration(T:! type); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr)] { -// CHECK:STDOUT: %self.patt: @GetAddr.%ptr.loc12_29.1 (%ptr.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @GetAddr.%ptr.loc12_29.1 (%ptr.1) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: @GetAddr.%ptr.loc12_29.1 (%ptr.53c) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @GetAddr.%ptr.loc12_29.1 (%ptr.53c) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc12_14: auto = addr_pattern %self.param_patt -// CHECK:STDOUT: %return.patt: @GetAddr.%ptr.loc12_38.1 (%ptr.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @GetAddr.%ptr.loc12_38.1 (%ptr.2) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @GetAddr.%ptr.loc12_38.1 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetAddr.%ptr.loc12_38.1 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc11_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_38.2: type = ptr_type %T [symbolic = %ptr.loc12_38.1 (constants.%ptr.2)] -// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc12_29.1 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_29: type = splice_block %ptr.loc12_29.2 [symbolic = %ptr.loc12_29.1 (constants.%ptr.1)] { +// CHECK:STDOUT: %ptr.loc12_38.2: type = ptr_type %T [symbolic = %ptr.loc12_38.1 (constants.%ptr.251)] +// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc12_29.1 (%ptr.53c) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_29: type = splice_block %ptr.loc12_29.2 [symbolic = %ptr.loc12_29.1 (constants.%ptr.53c)] { // CHECK:STDOUT: %.loc12_25: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_25 [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %ptr.loc12_29.2: type = ptr_type %Class [symbolic = %ptr.loc12_29.1 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_29.2: type = ptr_type %Class [symbolic = %ptr.loc12_29.1 (constants.%ptr.53c)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @GetAddr.%ptr.loc12_29.1 (%ptr.1) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc12_38.1 (%ptr.2) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc12_38.1 (%ptr.2) = return_slot %return.param +// CHECK:STDOUT: %self: @GetAddr.%ptr.loc12_29.1 (%ptr.53c) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc12_38.1 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc12_38.1 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GetValue.decl: @Class.%GetValue.type (%GetValue.type) = fn_decl @GetValue [symbolic = @Class.%GetValue (constants.%GetValue)] { // CHECK:STDOUT: %self.patt: @GetValue.%Class (%Class) = binding_pattern self @@ -151,22 +151,22 @@ class Declaration(T:! type); // CHECK:STDOUT: generic fn @GetAddr(@Class.%T.loc11_13.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %ptr.loc12_29.1: type = ptr_type @GetAddr.%Class (%Class) [symbolic = %ptr.loc12_29.1 (constants.%ptr.1)] -// CHECK:STDOUT: %ptr.loc12_38.1: type = ptr_type @GetAddr.%T (%T) [symbolic = %ptr.loc12_38.1 (constants.%ptr.2)] +// CHECK:STDOUT: %ptr.loc12_29.1: type = ptr_type @GetAddr.%Class (%Class) [symbolic = %ptr.loc12_29.1 (constants.%ptr.53c)] +// CHECK:STDOUT: %ptr.loc12_38.1: type = ptr_type @GetAddr.%T (%T) [symbolic = %ptr.loc12_38.1 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc12_34: = require_complete_type @GetAddr.%ptr.loc12_38.1 (%ptr.2) [symbolic = %require_complete.loc12_34 (constants.%require_complete.2)] -// CHECK:STDOUT: %require_complete.loc12_23: = require_complete_type @GetAddr.%ptr.loc12_29.1 (%ptr.1) [symbolic = %require_complete.loc12_23 (constants.%require_complete.3)] -// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @GetAddr.%Class (%Class) [symbolic = %require_complete.loc13 (constants.%require_complete.4)] +// CHECK:STDOUT: %require_complete.loc12_34: = require_complete_type @GetAddr.%ptr.loc12_38.1 (%ptr.251) [symbolic = %require_complete.loc12_34 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc12_23: = require_complete_type @GetAddr.%ptr.loc12_29.1 (%ptr.53c) [symbolic = %require_complete.loc12_23 (constants.%require_complete.6c6)] +// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @GetAddr.%Class (%Class) [symbolic = %require_complete.loc13 (constants.%require_complete.723)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @GetAddr.%Class (%Class), @GetAddr.%T (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr %self.param_patt: @GetAddr.%ptr.loc12_29.1 (%ptr.1)]() -> @GetAddr.%ptr.loc12_38.1 (%ptr.2) { +// CHECK:STDOUT: fn[addr %self.param_patt: @GetAddr.%ptr.loc12_29.1 (%ptr.53c)]() -> @GetAddr.%ptr.loc12_38.1 (%ptr.251) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc12_29.1 (%ptr.1) = name_ref self, %self +// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc12_29.1 (%ptr.53c) = name_ref self, %self // CHECK:STDOUT: %.loc13_17.1: ref @GetAddr.%Class (%Class) = deref %self.ref // CHECK:STDOUT: %k.ref: @GetAddr.%Class.elem (%Class.elem) = name_ref k, @Class.%.loc21 [template = @Class.%.loc21] // CHECK:STDOUT: %.loc13_17.2: ref @GetAddr.%T (%T) = class_element_access %.loc13_17.1, element0 -// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc12_38.1 (%ptr.2) = addr_of %.loc13_17.2 +// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc12_38.1 (%ptr.251) = addr_of %.loc13_17.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -176,9 +176,9 @@ class Declaration(T:! type); // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @GetValue.%Class (%Class) [symbolic = %require_complete.loc17 (constants.%require_complete.4)] +// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @GetValue.%Class (%Class) [symbolic = %require_complete.loc17 (constants.%require_complete.723)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @GetValue.%Class (%Class), @GetValue.%T (%T) [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc18: = require_complete_type @GetValue.%T (%T) [symbolic = %require_complete.loc18 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc18: = require_complete_type @GetValue.%T (%T) [symbolic = %require_complete.loc18 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @GetValue.%Class (%Class)]() -> @GetValue.%T (%T) { // CHECK:STDOUT: !entry: @@ -199,7 +199,7 @@ class Declaration(T:! type); // CHECK:STDOUT: %GetAddr => constants.%GetAddr // CHECK:STDOUT: %GetValue.type => constants.%GetValue.type // CHECK:STDOUT: %GetValue => constants.%GetValue -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.k => constants.%struct_type.k @@ -209,8 +209,8 @@ class Declaration(T:! type); // CHECK:STDOUT: specific @GetAddr(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Class => constants.%Class -// CHECK:STDOUT: %ptr.loc12_29.1 => constants.%ptr.1 -// CHECK:STDOUT: %ptr.loc12_38.1 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc12_29.1 => constants.%ptr.53c +// CHECK:STDOUT: %ptr.loc12_38.1 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(@GetAddr.%T) {} diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index 51db8a59b5cd..06b3f3894c98 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -93,24 +93,24 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class.1: type = class_type @Class, @Class(%T, %N.2) [symbolic] +// CHECK:STDOUT: %Class.78f: type = class_type @Class, @Class(%T, %N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %i32 [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %Class.2: type = class_type @Class, @Class(%ptr.1, %int_5.2) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %Class.3: type = class_type @Class, @Class(%empty_tuple.type, %int_0.2) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %Class.b0f: type = class_type @Class, @Class(%ptr.dc3, %int_5.70b) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %Class.c66: type = class_type @Class, @Class(%empty_tuple.type, %int_0.f61) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -127,8 +127,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [template = constants.%Class.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] @@ -137,52 +137,52 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.3e4)] // CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref %Class.2 = var a -// CHECK:STDOUT: %a: ref %Class.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %Class.3 = var b -// CHECK:STDOUT: %b: ref %Class.3 = bind_name b, %b.var +// CHECK:STDOUT: %a.var: ref %Class.b0f = var a +// CHECK:STDOUT: %a: ref %Class.b0f = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %Class.c66 = var b +// CHECK:STDOUT: %b: ref %Class.c66 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { // CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.1 +// CHECK:STDOUT: .Self = constants.%Class.78f // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.2) { +// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.3e4) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T -// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.2 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%ptr.1, constants.%int_5.2) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.1 -// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.1 -// CHECK:STDOUT: %N.loc4_23.2 => constants.%int_5.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%int_5.2 +// CHECK:STDOUT: specific @Class(constants.%ptr.dc3, constants.%int_5.70b) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.dc3 +// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.dc3 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%int_5.70b +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%int_5.70b // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%empty_tuple.type, constants.%int_0.2) { +// CHECK:STDOUT: specific @Class(constants.%empty_tuple.type, constants.%int_0.f61) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%empty_tuple.type // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%empty_tuple.type -// CHECK:STDOUT: %N.loc4_23.2 => constants.%int_0.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%int_0.2 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%int_0.f61 +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%int_0.f61 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -194,18 +194,18 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.2) [symbolic] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -221,8 +221,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [template = constants.%Class.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] @@ -231,7 +231,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref = var a // CHECK:STDOUT: %a: ref = bind_name a, %a.var @@ -240,13 +240,13 @@ class Outer(T:! type) { // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { // CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -254,11 +254,11 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.2) { +// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.3e4) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T -// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.2 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_too_many.carbon @@ -268,18 +268,18 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.2) [symbolic] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -295,8 +295,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [template = constants.%Class.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] @@ -305,7 +305,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref = var a // CHECK:STDOUT: %a: ref = bind_name a, %a.var @@ -314,13 +314,13 @@ class Outer(T:! type) { // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { // CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -328,11 +328,11 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.2) { +// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.3e4) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T -// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.2 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_no_conversion.carbon @@ -342,19 +342,19 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.2) [symbolic] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T, %N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -370,8 +370,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [template = constants.%Class.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_23.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_23.1, runtime_param [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] @@ -380,7 +380,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_23.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc4_23.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref = var a // CHECK:STDOUT: %a: ref = bind_name a, %a.var @@ -389,13 +389,13 @@ class Outer(T:! type) { // CHECK:STDOUT: generic class @Class(%T.loc4_13.1: type, %N.loc4_23.1: %i32) { // CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_23.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc4_23.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_23.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc4_23.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -403,11 +403,11 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.2) { +// CHECK:STDOUT: specific @Class(constants.%T, constants.%N.3e4) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T -// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.2 +// CHECK:STDOUT: %N.loc4_23.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_23.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- call_in_nested_return_type.carbon @@ -417,42 +417,42 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [template] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [template] -// CHECK:STDOUT: %Outer.1: type = class_type @Outer, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Outer.cc3: type = class_type @Outer, @Outer(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %Inner.type.1: type = generic_class_type @Inner, @Outer(%T) [symbolic] -// CHECK:STDOUT: %Inner.generic.1: %Inner.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.1: type = class_type @Inner, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %A.type.1: type = fn_type @A, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %A.1: %A.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Outer.2: type = class_type @Outer, @Outer(%U) [symbolic] -// CHECK:STDOUT: %B.type.1: type = fn_type @B, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %B.1: %B.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.2: type = class_type @Inner, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %C.type.1: type = fn_type @C, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %C.1: %C.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %D.type.1: type = fn_type @D, @Inner(%T, %U) [symbolic] -// CHECK:STDOUT: %D.1: %D.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.type.099: type = generic_class_type @Inner, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Inner.generic.c26: %Inner.type.099 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.188: type = class_type @Inner, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %A.type.828: type = fn_type @A, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %A.483: %A.type.828 = struct_value () [symbolic] +// CHECK:STDOUT: %Outer.074: type = class_type @Outer, @Outer(%U) [symbolic] +// CHECK:STDOUT: %B.type.d03: type = fn_type @B, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %B.4f9: %B.type.d03 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.ae6: type = class_type @Inner, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %C.type.e6b: type = fn_type @C, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %C.778: %C.type.e6b = struct_value () [symbolic] +// CHECK:STDOUT: %D.type.0e5: type = fn_type @D, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %D.74c: %D.type.0e5 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %Outer.1 [symbolic] -// CHECK:STDOUT: %Outer.val.1: %Outer.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.type.2: type = generic_class_type @Inner, @Outer(%U) [symbolic] -// CHECK:STDOUT: %Inner.generic.2: %Inner.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Outer.2 [symbolic] -// CHECK:STDOUT: %Outer.val.2: %Outer.2 = struct_value () [symbolic] -// CHECK:STDOUT: %A.type.2: type = fn_type @A, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %A.2: %A.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %B.type.2: type = fn_type @B, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %B.2: %B.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %C.type.2: type = fn_type @C, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %C.2: %C.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %D.type.2: type = fn_type @D, @Inner(%T, %T) [symbolic] -// CHECK:STDOUT: %D.2: %D.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %Inner.2 [symbolic] -// CHECK:STDOUT: %Inner.val.1: %Inner.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %Inner.1 [symbolic] -// CHECK:STDOUT: %Inner.val.2: %Inner.1 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.889: = require_complete_type %Outer.cc3 [symbolic] +// CHECK:STDOUT: %Outer.val.079: %Outer.cc3 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.type.7f1: type = generic_class_type @Inner, @Outer(%U) [symbolic] +// CHECK:STDOUT: %Inner.generic.9df: %Inner.type.7f1 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.0d5: = require_complete_type %Outer.074 [symbolic] +// CHECK:STDOUT: %Outer.val.5df: %Outer.074 = struct_value () [symbolic] +// CHECK:STDOUT: %A.type.daf: type = fn_type @A, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %A.7bc: %A.type.daf = struct_value () [symbolic] +// CHECK:STDOUT: %B.type.24d: type = fn_type @B, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %B.c71: %B.type.24d = struct_value () [symbolic] +// CHECK:STDOUT: %C.type.8cc: type = fn_type @C, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %C.516: %C.type.8cc = struct_value () [symbolic] +// CHECK:STDOUT: %D.type.36d: type = fn_type @D, @Inner(%T, %T) [symbolic] +// CHECK:STDOUT: %D.60f: %D.type.36d = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.a07: = require_complete_type %Inner.ae6 [symbolic] +// CHECK:STDOUT: %Inner.val.8ec: %Inner.ae6 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.ae5: = require_complete_type %Inner.188 [symbolic] +// CHECK:STDOUT: %Inner.val.2b2: %Inner.188 = struct_value () [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -482,11 +482,11 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt.loc2_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc2_13.2) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc2_13.2) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.1) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.1)] { +// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.099) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.c26)] { // CHECK:STDOUT: %U.patt.loc3_15.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc3_15.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc3_15.1, runtime_param [symbolic = %U.patt.loc3_15.2 (constants.%U.patt)] // CHECK:STDOUT: } { @@ -496,7 +496,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Outer.1 +// CHECK:STDOUT: .Self = constants.%Outer.cc3 // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -508,62 +508,62 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %A.type: type = fn_type @A, @Inner(%T, %U.loc3_15.2) [symbolic = %A.type (constants.%A.type.1)] -// CHECK:STDOUT: %A: @Inner.%A.type (%A.type.1) = struct_value () [symbolic = %A (constants.%A.1)] -// CHECK:STDOUT: %B.type: type = fn_type @B, @Inner(%T, %U.loc3_15.2) [symbolic = %B.type (constants.%B.type.1)] -// CHECK:STDOUT: %B: @Inner.%B.type (%B.type.1) = struct_value () [symbolic = %B (constants.%B.1)] -// CHECK:STDOUT: %C.type: type = fn_type @C, @Inner(%T, %U.loc3_15.2) [symbolic = %C.type (constants.%C.type.1)] -// CHECK:STDOUT: %C: @Inner.%C.type (%C.type.1) = struct_value () [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %D.type: type = fn_type @D, @Inner(%T, %U.loc3_15.2) [symbolic = %D.type (constants.%D.type.1)] -// CHECK:STDOUT: %D: @Inner.%D.type (%D.type.1) = struct_value () [symbolic = %D (constants.%D.1)] +// CHECK:STDOUT: %A.type: type = fn_type @A, @Inner(%T, %U.loc3_15.2) [symbolic = %A.type (constants.%A.type.828)] +// CHECK:STDOUT: %A: @Inner.%A.type (%A.type.828) = struct_value () [symbolic = %A (constants.%A.483)] +// CHECK:STDOUT: %B.type: type = fn_type @B, @Inner(%T, %U.loc3_15.2) [symbolic = %B.type (constants.%B.type.d03)] +// CHECK:STDOUT: %B: @Inner.%B.type (%B.type.d03) = struct_value () [symbolic = %B (constants.%B.4f9)] +// CHECK:STDOUT: %C.type: type = fn_type @C, @Inner(%T, %U.loc3_15.2) [symbolic = %C.type (constants.%C.type.e6b)] +// CHECK:STDOUT: %C: @Inner.%C.type (%C.type.e6b) = struct_value () [symbolic = %C (constants.%C.778)] +// CHECK:STDOUT: %D.type: type = fn_type @D, @Inner(%T, %U.loc3_15.2) [symbolic = %D.type (constants.%D.type.0e5)] +// CHECK:STDOUT: %D: @Inner.%D.type (%D.type.0e5) = struct_value () [symbolic = %D (constants.%D.74c)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %A.decl: @Inner.%A.type (%A.type.1) = fn_decl @A [symbolic = @Inner.%A (constants.%A.1)] { -// CHECK:STDOUT: %return.patt: @A.%Outer.loc4_22.1 (%Outer.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @A.%Outer.loc4_22.1 (%Outer.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %A.decl: @Inner.%A.type (%A.type.828) = fn_decl @A [symbolic = @Inner.%A (constants.%A.483)] { +// CHECK:STDOUT: %return.patt: @A.%Outer.loc4_22.1 (%Outer.cc3) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @A.%Outer.loc4_22.1 (%Outer.cc3) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Outer.loc4_22.2: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.1)] -// CHECK:STDOUT: %return.param: ref @A.%Outer.loc4_22.1 (%Outer.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @A.%Outer.loc4_22.1 (%Outer.1) = return_slot %return.param +// CHECK:STDOUT: %Outer.loc4_22.2: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.cc3)] +// CHECK:STDOUT: %return.param: ref @A.%Outer.loc4_22.1 (%Outer.cc3) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @A.%Outer.loc4_22.1 (%Outer.cc3) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %B.decl: @Inner.%B.type (%B.type.1) = fn_decl @B [symbolic = @Inner.%B (constants.%B.1)] { -// CHECK:STDOUT: %return.patt: @B.%Outer.loc7_22.1 (%Outer.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @B.%Outer.loc7_22.1 (%Outer.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %B.decl: @Inner.%B.type (%B.type.d03) = fn_decl @B [symbolic = @Inner.%B (constants.%B.4f9)] { +// CHECK:STDOUT: %return.patt: @B.%Outer.loc7_22.1 (%Outer.074) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @B.%Outer.loc7_22.1 (%Outer.074) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.generic] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Outer.loc7_22.2: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.2)] -// CHECK:STDOUT: %return.param: ref @B.%Outer.loc7_22.1 (%Outer.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @B.%Outer.loc7_22.1 (%Outer.2) = return_slot %return.param +// CHECK:STDOUT: %Outer.loc7_22.2: type = class_type @Outer, @Outer(constants.%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.074)] +// CHECK:STDOUT: %return.param: ref @B.%Outer.loc7_22.1 (%Outer.074) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @B.%Outer.loc7_22.1 (%Outer.074) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl: @Inner.%C.type (%C.type.1) = fn_decl @C [symbolic = @Inner.%C (constants.%C.1)] { -// CHECK:STDOUT: %return.patt: @C.%Inner.loc10_22.1 (%Inner.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @C.%Inner.loc10_22.1 (%Inner.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %C.decl: @Inner.%C.type (%C.type.e6b) = fn_decl @C [symbolic = @Inner.%C (constants.%C.778)] { +// CHECK:STDOUT: %return.patt: @C.%Inner.loc10_22.1 (%Inner.ae6) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @C.%Inner.loc10_22.1 (%Inner.ae6) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc10: @C.%Inner.type (%Inner.type.1) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.1)] -// CHECK:STDOUT: %Inner.ref: @C.%Inner.type (%Inner.type.1) = name_ref Inner, %.loc10 [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %.loc10: @C.%Inner.type (%Inner.type.099) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.c26)] +// CHECK:STDOUT: %Inner.ref: @C.%Inner.type (%Inner.type.099) = name_ref Inner, %.loc10 [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc2_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Inner.loc10_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.2)] -// CHECK:STDOUT: %return.param: ref @C.%Inner.loc10_22.1 (%Inner.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @C.%Inner.loc10_22.1 (%Inner.2) = return_slot %return.param +// CHECK:STDOUT: %Inner.loc10_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.ae6)] +// CHECK:STDOUT: %return.param: ref @C.%Inner.loc10_22.1 (%Inner.ae6) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @C.%Inner.loc10_22.1 (%Inner.ae6) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %D.decl: @Inner.%D.type (%D.type.1) = fn_decl @D [symbolic = @Inner.%D (constants.%D.1)] { -// CHECK:STDOUT: %return.patt: @D.%Inner.loc13_22.1 (%Inner.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @D.%Inner.loc13_22.1 (%Inner.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %D.decl: @Inner.%D.type (%D.type.0e5) = fn_decl @D [symbolic = @Inner.%D (constants.%D.74c)] { +// CHECK:STDOUT: %return.patt: @D.%Inner.loc13_22.1 (%Inner.188) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @D.%Inner.loc13_22.1 (%Inner.188) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc13: @D.%Inner.type (%Inner.type.1) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.1)] -// CHECK:STDOUT: %Inner.ref: @D.%Inner.type (%Inner.type.1) = name_ref Inner, %.loc13 [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %.loc13: @D.%Inner.type (%Inner.type.099) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.c26)] +// CHECK:STDOUT: %Inner.ref: @D.%Inner.type (%Inner.type.099) = name_ref Inner, %.loc13 [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: %U.ref: type = name_ref U, @Inner.%U.loc3_15.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Inner.loc13_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.1)] -// CHECK:STDOUT: %return.param: ref @D.%Inner.loc13_22.1 (%Inner.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @D.%Inner.loc13_22.1 (%Inner.1) = return_slot %return.param +// CHECK:STDOUT: %Inner.loc13_22.2: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.188)] +// CHECK:STDOUT: %return.param: ref @D.%Inner.loc13_22.1 (%Inner.188) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @D.%Inner.loc13_22.1 (%Inner.188) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Inner.1 +// CHECK:STDOUT: .Self = constants.%Inner.188 // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %C.decl @@ -574,73 +574,73 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @A(@Outer.%T.loc2_13.1: type, @Inner.%U.loc3_15.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Outer.loc4_22.1: type = class_type @Outer, @Outer(%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.1)] +// CHECK:STDOUT: %Outer.loc4_22.1: type = class_type @Outer, @Outer(%T) [symbolic = %Outer.loc4_22.1 (constants.%Outer.cc3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @A.%Outer.loc4_22.1 (%Outer.1) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Outer.val: @A.%Outer.loc4_22.1 (%Outer.1) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @A.%Outer.loc4_22.1 (%Outer.cc3) [symbolic = %require_complete (constants.%require_complete.889)] +// CHECK:STDOUT: %Outer.val: @A.%Outer.loc4_22.1 (%Outer.cc3) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.079)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param_patt: @A.%Outer.loc4_22.1 (%Outer.1) { +// CHECK:STDOUT: fn() -> %return.param_patt: @A.%Outer.loc4_22.1 (%Outer.cc3) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc5_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc5_15.2: init @A.%Outer.loc4_22.1 (%Outer.1) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.1)] -// CHECK:STDOUT: %.loc5_16: init @A.%Outer.loc4_22.1 (%Outer.1) = converted %.loc5_15.1, %.loc5_15.2 [symbolic = %Outer.val (constants.%Outer.val.1)] +// CHECK:STDOUT: %.loc5_15.2: init @A.%Outer.loc4_22.1 (%Outer.cc3) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.079)] +// CHECK:STDOUT: %.loc5_16: init @A.%Outer.loc4_22.1 (%Outer.cc3) = converted %.loc5_15.1, %.loc5_15.2 [symbolic = %Outer.val (constants.%Outer.val.079)] // CHECK:STDOUT: return %.loc5_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @B(@Outer.%T.loc2_13.1: type, @Inner.%U.loc3_15.1: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Outer.loc7_22.1: type = class_type @Outer, @Outer(%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.2)] +// CHECK:STDOUT: %Outer.loc7_22.1: type = class_type @Outer, @Outer(%U) [symbolic = %Outer.loc7_22.1 (constants.%Outer.074)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @B.%Outer.loc7_22.1 (%Outer.2) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Outer.val: @B.%Outer.loc7_22.1 (%Outer.2) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @B.%Outer.loc7_22.1 (%Outer.074) [symbolic = %require_complete (constants.%require_complete.0d5)] +// CHECK:STDOUT: %Outer.val: @B.%Outer.loc7_22.1 (%Outer.074) = struct_value () [symbolic = %Outer.val (constants.%Outer.val.5df)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param_patt: @B.%Outer.loc7_22.1 (%Outer.2) { +// CHECK:STDOUT: fn() -> %return.param_patt: @B.%Outer.loc7_22.1 (%Outer.074) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc8_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc8_15.2: init @B.%Outer.loc7_22.1 (%Outer.2) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.2)] -// CHECK:STDOUT: %.loc8_16: init @B.%Outer.loc7_22.1 (%Outer.2) = converted %.loc8_15.1, %.loc8_15.2 [symbolic = %Outer.val (constants.%Outer.val.2)] +// CHECK:STDOUT: %.loc8_15.2: init @B.%Outer.loc7_22.1 (%Outer.074) = class_init (), %return [symbolic = %Outer.val (constants.%Outer.val.5df)] +// CHECK:STDOUT: %.loc8_16: init @B.%Outer.loc7_22.1 (%Outer.074) = converted %.loc8_15.1, %.loc8_15.2 [symbolic = %Outer.val (constants.%Outer.val.5df)] // CHECK:STDOUT: return %.loc8_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @C(@Outer.%T.loc2_13.1: type, @Inner.%U.loc3_15.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @C.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] -// CHECK:STDOUT: %Inner.loc10_22.1: type = class_type @Inner, @Inner(%T, %T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.2)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @C.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] +// CHECK:STDOUT: %Inner.loc10_22.1: type = class_type @Inner, @Inner(%T, %T) [symbolic = %Inner.loc10_22.1 (constants.%Inner.ae6)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @C.%Inner.loc10_22.1 (%Inner.2) [symbolic = %require_complete (constants.%require_complete.3)] -// CHECK:STDOUT: %Inner.val: @C.%Inner.loc10_22.1 (%Inner.2) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @C.%Inner.loc10_22.1 (%Inner.ae6) [symbolic = %require_complete (constants.%require_complete.a07)] +// CHECK:STDOUT: %Inner.val: @C.%Inner.loc10_22.1 (%Inner.ae6) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.8ec)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param_patt: @C.%Inner.loc10_22.1 (%Inner.2) { +// CHECK:STDOUT: fn() -> %return.param_patt: @C.%Inner.loc10_22.1 (%Inner.ae6) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc11_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc11_15.2: init @C.%Inner.loc10_22.1 (%Inner.2) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.1)] -// CHECK:STDOUT: %.loc11_16: init @C.%Inner.loc10_22.1 (%Inner.2) = converted %.loc11_15.1, %.loc11_15.2 [symbolic = %Inner.val (constants.%Inner.val.1)] +// CHECK:STDOUT: %.loc11_15.2: init @C.%Inner.loc10_22.1 (%Inner.ae6) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.8ec)] +// CHECK:STDOUT: %.loc11_16: init @C.%Inner.loc10_22.1 (%Inner.ae6) = converted %.loc11_15.1, %.loc11_15.2 [symbolic = %Inner.val (constants.%Inner.val.8ec)] // CHECK:STDOUT: return %.loc11_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @D(@Outer.%T.loc2_13.1: type, @Inner.%U.loc3_15.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @D.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @D.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %Inner.loc13_22.1: type = class_type @Inner, @Inner(%T, %U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.1)] +// CHECK:STDOUT: %Inner.loc13_22.1: type = class_type @Inner, @Inner(%T, %U) [symbolic = %Inner.loc13_22.1 (constants.%Inner.188)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @D.%Inner.loc13_22.1 (%Inner.1) [symbolic = %require_complete (constants.%require_complete.4)] -// CHECK:STDOUT: %Inner.val: @D.%Inner.loc13_22.1 (%Inner.1) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @D.%Inner.loc13_22.1 (%Inner.188) [symbolic = %require_complete (constants.%require_complete.ae5)] +// CHECK:STDOUT: %Inner.val: @D.%Inner.loc13_22.1 (%Inner.188) = struct_value () [symbolic = %Inner.val (constants.%Inner.val.2b2)] // CHECK:STDOUT: -// CHECK:STDOUT: fn() -> %return.param_patt: @D.%Inner.loc13_22.1 (%Inner.1) { +// CHECK:STDOUT: fn() -> %return.param_patt: @D.%Inner.loc13_22.1 (%Inner.188) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc14_15.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc14_15.2: init @D.%Inner.loc13_22.1 (%Inner.1) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.2)] -// CHECK:STDOUT: %.loc14_16: init @D.%Inner.loc13_22.1 (%Inner.1) = converted %.loc14_15.1, %.loc14_15.2 [symbolic = %Inner.val (constants.%Inner.val.2)] +// CHECK:STDOUT: %.loc14_15.2: init @D.%Inner.loc13_22.1 (%Inner.188) = class_init (), %return [symbolic = %Inner.val (constants.%Inner.val.2b2)] +// CHECK:STDOUT: %.loc14_16: init @D.%Inner.loc13_22.1 (%Inner.188) = converted %.loc14_15.1, %.loc14_15.2 [symbolic = %Inner.val (constants.%Inner.val.2b2)] // CHECK:STDOUT: return %.loc14_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -650,8 +650,8 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt.loc2_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.1 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.1 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.099 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.c26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { @@ -660,19 +660,19 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %A.type => constants.%A.type.1 -// CHECK:STDOUT: %A => constants.%A.1 -// CHECK:STDOUT: %B.type => constants.%B.type.1 -// CHECK:STDOUT: %B => constants.%B.1 -// CHECK:STDOUT: %C.type => constants.%C.type.1 -// CHECK:STDOUT: %C => constants.%C.1 -// CHECK:STDOUT: %D.type => constants.%D.type.1 -// CHECK:STDOUT: %D => constants.%D.1 +// CHECK:STDOUT: %A.type => constants.%A.type.828 +// CHECK:STDOUT: %A => constants.%A.483 +// CHECK:STDOUT: %B.type => constants.%B.type.d03 +// CHECK:STDOUT: %B => constants.%B.4f9 +// CHECK:STDOUT: %C.type => constants.%C.type.e6b +// CHECK:STDOUT: %C => constants.%C.778 +// CHECK:STDOUT: %D.type => constants.%D.type.0e5 +// CHECK:STDOUT: %D => constants.%D.74c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Outer.loc4_22.1 => constants.%Outer.1 +// CHECK:STDOUT: %Outer.loc4_22.1 => constants.%Outer.cc3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(@A.%T) {} @@ -682,13 +682,13 @@ class Outer(T:! type) { // CHECK:STDOUT: %T.patt.loc2_13.2 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.2 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.7f1 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.9df // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @B(constants.%T, constants.%U) { // CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %Outer.loc7_22.1 => constants.%Outer.2 +// CHECK:STDOUT: %Outer.loc7_22.1 => constants.%Outer.074 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(@B.%U) {} @@ -699,21 +699,21 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %A.type => constants.%A.type.2 -// CHECK:STDOUT: %A => constants.%A.2 -// CHECK:STDOUT: %B.type => constants.%B.type.2 -// CHECK:STDOUT: %B => constants.%B.2 -// CHECK:STDOUT: %C.type => constants.%C.type.2 -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %D.type => constants.%D.type.2 -// CHECK:STDOUT: %D => constants.%D.2 +// CHECK:STDOUT: %A.type => constants.%A.type.daf +// CHECK:STDOUT: %A => constants.%A.7bc +// CHECK:STDOUT: %B.type => constants.%B.type.24d +// CHECK:STDOUT: %B => constants.%B.c71 +// CHECK:STDOUT: %C.type => constants.%C.type.8cc +// CHECK:STDOUT: %C => constants.%C.516 +// CHECK:STDOUT: %D.type => constants.%D.type.36d +// CHECK:STDOUT: %D => constants.%D.60f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.1 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.1 -// CHECK:STDOUT: %Inner.loc10_22.1 => constants.%Inner.2 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.099 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.c26 +// CHECK:STDOUT: %Inner.loc10_22.1 => constants.%Inner.ae6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(@C.%T) {} @@ -722,10 +722,10 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.1 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.1 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.099 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.c26 // CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %Inner.loc13_22.1 => constants.%Inner.1 +// CHECK:STDOUT: %Inner.loc13_22.1 => constants.%Inner.188 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(@D.%T) {} diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index b4991d6c36bb..d4acd0c5a25c 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -35,56 +35,56 @@ fn F(a: A(0)*) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template] -// CHECK:STDOUT: %Int.type.1: type = fn_type @Int.1 [template] -// CHECK:STDOUT: %Int.1: %Int.type.1 = struct_value () [template] +// CHECK:STDOUT: %Int.type.913: type = fn_type @Int.1 [template] +// CHECK:STDOUT: %Int.779: %Int.type.913 = struct_value () [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int.2, @Int.2(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %A.type: type = generic_class_type @A [template] // CHECK:STDOUT: %A.generic: %A.type = struct_value () [template] -// CHECK:STDOUT: %A.1: type = class_type @A, @A(%N.2) [symbolic] -// CHECK:STDOUT: %A.elem.1: type = unbound_element_type %A.1, %B [symbolic] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %N.2, %Convert.9 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn.1(%N.2) [symbolic] -// CHECK:STDOUT: %iN.builtin.2: type = int_type signed, %int.convert_checked [symbolic] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %iN.builtin.2 [symbolic] -// CHECK:STDOUT: %A.elem.2: type = unbound_element_type %A.1, %iN.builtin.2 [symbolic] -// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: %iN.builtin.2} [symbolic] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.n [symbolic] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.21: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_0.1, %Convert.11 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %A.2: type = class_type @A, @A(%int_0.2) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %A.2 [template] +// CHECK:STDOUT: %A.71d: type = class_type @A, @A(%N.3e4) [symbolic] +// CHECK:STDOUT: %A.elem.792: type = unbound_element_type %A.71d, %B [symbolic] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.d9b: = bound_method %N.3e4, %Convert.079 [symbolic] +// CHECK:STDOUT: %Convert.specific_fn.ad3: = specific_function %Convert.bound.d9b, @Convert.3(%int_32) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn.ad3(%N.3e4) [symbolic] +// CHECK:STDOUT: %iN.builtin.3ce: type = int_type signed, %int.convert_checked [symbolic] +// CHECK:STDOUT: %require_complete.47c: = require_complete_type %iN.builtin.3ce [symbolic] +// CHECK:STDOUT: %A.elem.674: type = unbound_element_type %A.71d, %iN.builtin.3ce [symbolic] +// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: %iN.builtin.3ce} [symbolic] +// CHECK:STDOUT: %complete_type.8e3: = complete_type_witness %struct_type.base.n [symbolic] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %A.b93: type = class_type @A, @A(%int_0.f61) [template] +// CHECK:STDOUT: %ptr.ee1: type = ptr_type %A.b93 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %B [template] -// CHECK:STDOUT: %A.elem.3: type = unbound_element_type %A.2, %B [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_0.2, %Convert.9 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.3(%int_32) [template] +// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [template] +// CHECK:STDOUT: %A.elem.fcc: type = unbound_element_type %A.b93, %B [template] +// CHECK:STDOUT: %Convert.bound.64e: = bound_method %int_0.f61, %Convert.079 [template] +// CHECK:STDOUT: %Convert.specific_fn.f03: = specific_function %Convert.bound.64e, @Convert.3(%int_32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IntLiteral = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .IntLiteral = %import_ref.8ee +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] +// CHECK:STDOUT: %import_ref.8ee: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -96,7 +96,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Int.decl: %Int.type.1 = fn_decl @Int.1 [template = constants.%Int.1] { +// CHECK:STDOUT: %Int.decl: %Int.type.913 = fn_decl @Int.1 [template = constants.%Int.779] { // CHECK:STDOUT: %N.patt: Core.IntLiteral = binding_pattern N // CHECK:STDOUT: %N.param_patt: Core.IntLiteral = value_param_pattern %N.patt, runtime_param0 // CHECK:STDOUT: %return.patt: type = return_slot_pattern @@ -105,7 +105,7 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param0 // CHECK:STDOUT: %.loc2_27.1: type = splice_block %.loc2_27.3 [template = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc2_27.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc2_27.3: type = converted %int_literal.make_type, %.loc2_27.2 [template = Core.IntLiteral] @@ -116,39 +116,39 @@ fn F(a: A(0)*) { // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: %A.decl: %A.type = class_decl @A [template = constants.%A.generic] { -// CHECK:STDOUT: %N.patt.loc6_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc6_9.1, runtime_param [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc6_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc6_9.1, runtime_param [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %N.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc6: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int.2, @Int.2(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc6_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc6_9.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc6_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc6_9.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %a.patt: %ptr.2 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.2 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.ee1 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.ee1 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15_13: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %a.param: %ptr.ee1 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15_13: type = splice_block %ptr [template = constants.%ptr.ee1] { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.10 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Convert.11] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc15_12.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc15_12.2: %i32 = converted %int_0, %.loc15_12.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%int_0.2) [template = constants.%A.2] -// CHECK:STDOUT: %ptr: type = ptr_type %A.2 [template = constants.%ptr.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc15_12.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc15_12.2: %i32 = converted %int_0, %.loc15_12.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%int_0.f61) [template = constants.%A.b93] +// CHECK:STDOUT: %ptr: type = ptr_type %A.b93 [template = constants.%ptr.ee1] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.2 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.ee1 = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -156,29 +156,29 @@ fn F(a: A(0)*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @A(%N.loc6_9.1: %i32) { -// CHECK:STDOUT: %N.loc6_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc6_9.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc6_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc6_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc6_9.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc6_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %A: type = class_type @A, @A(%N.loc6_9.2) [symbolic = %A (constants.%A.1)] -// CHECK:STDOUT: %A.elem.loc7: type = unbound_element_type @A.%A (%A.1), %B [symbolic = %A.elem.loc7 (constants.%A.elem.1)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc6_9.2, constants.%Convert.9 [symbolic = %Convert.bound (constants.%Convert.bound.1)] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn (constants.%Convert.specific_fn.1)] +// CHECK:STDOUT: %A: type = class_type @A, @A(%N.loc6_9.2) [symbolic = %A (constants.%A.71d)] +// CHECK:STDOUT: %A.elem.loc7: type = unbound_element_type @A.%A (%A.71d), %B [symbolic = %A.elem.loc7 (constants.%A.elem.792)] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc6_9.2, constants.%Convert.079 [symbolic = %Convert.bound (constants.%Convert.bound.d9b)] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn (constants.%Convert.specific_fn.ad3)] // CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.loc6_9.2) [symbolic = %int.convert_checked (constants.%int.convert_checked)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @A.%iN.builtin (%iN.builtin.2) [symbolic = %require_complete (constants.%require_complete.5)] -// CHECK:STDOUT: %A.elem.loc12: type = unbound_element_type @A.%A (%A.1), @A.%iN.builtin (%iN.builtin.2) [symbolic = %A.elem.loc12 (constants.%A.elem.2)] -// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: @A.%iN.builtin (%iN.builtin.2)} [symbolic = %struct_type.base.n (constants.%struct_type.base.n)] -// CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness @A.%struct_type.base.n (%struct_type.base.n) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.4)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.3ce)] +// CHECK:STDOUT: %require_complete: = require_complete_type @A.%iN.builtin (%iN.builtin.3ce) [symbolic = %require_complete (constants.%require_complete.47c)] +// CHECK:STDOUT: %A.elem.loc12: type = unbound_element_type @A.%A (%A.71d), @A.%iN.builtin (%iN.builtin.3ce) [symbolic = %A.elem.loc12 (constants.%A.elem.674)] +// CHECK:STDOUT: %struct_type.base.n: type = struct_type {.base: %B, .n: @A.%iN.builtin (%iN.builtin.3ce)} [symbolic = %struct_type.base.n (constants.%struct_type.base.n)] +// CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness @A.%struct_type.base.n (%struct_type.base.n) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.8e3)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %.loc7: @A.%A.elem.loc7 (%A.elem.1) = base_decl %B.ref, element0 [template] -// CHECK:STDOUT: %.loc12: @A.%A.elem.loc12 (%A.elem.2) = field_decl n, element1 [template] -// CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.base.n [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.4)] +// CHECK:STDOUT: %.loc7: @A.%A.elem.loc7 (%A.elem.792) = base_decl %B.ref, element0 [template] +// CHECK:STDOUT: %.loc12: @A.%A.elem.loc12 (%A.elem.674) = field_decl n, element1 [template] +// CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.base.n [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.8e3)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.1 +// CHECK:STDOUT: .Self = constants.%A.71d // CHECK:STDOUT: .base = %.loc7 // CHECK:STDOUT: .n = %.loc12 // CHECK:STDOUT: extend %B.ref @@ -188,34 +188,34 @@ fn F(a: A(0)*) { // CHECK:STDOUT: // CHECK:STDOUT: fn @Int.1(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%a.param_patt: %ptr.2) { +// CHECK:STDOUT: fn @F(%a.param_patt: %ptr.ee1) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.2 = name_ref a, %a -// CHECK:STDOUT: %.loc19_16.1: ref %A.2 = deref %a.ref +// CHECK:STDOUT: %a.ref: %ptr.ee1 = name_ref a, %a +// CHECK:STDOUT: %.loc19_16.1: ref %A.b93 = deref %a.ref // CHECK:STDOUT: %.loc19_16.2: ref %B = class_element_access %.loc19_16.1, element0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc19_16.2 -// CHECK:STDOUT: %.loc19_16.3: %ptr.3 = converted %a.ref, %addr -// CHECK:STDOUT: %b: %ptr.3 = bind_name b, %.loc19_16.3 +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc19_16.2 +// CHECK:STDOUT: %.loc19_16.3: %ptr.e79 = converted %a.ref, %addr +// CHECK:STDOUT: %b: %ptr.e79 = bind_name b, %.loc19_16.3 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A(constants.%N.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%N.2 +// CHECK:STDOUT: specific @A(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(%N.loc6_9.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @A(constants.%int_0.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_0.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_0.2 +// CHECK:STDOUT: specific @A(constants.%int_0.f61) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_0.f61 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_0.f61 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %A => constants.%A.2 -// CHECK:STDOUT: %A.elem.loc7 => constants.%A.elem.3 -// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.3 -// CHECK:STDOUT: %Convert.specific_fn => constants.%Convert.specific_fn.3 -// CHECK:STDOUT: %int.convert_checked => constants.%int_0.1 +// CHECK:STDOUT: %A => constants.%A.b93 +// CHECK:STDOUT: %A.elem.loc7 => constants.%A.elem.fcc +// CHECK:STDOUT: %Convert.bound => constants.%Convert.bound.64e +// CHECK:STDOUT: %Convert.specific_fn => constants.%Convert.specific_fn.f03 +// CHECK:STDOUT: %int.convert_checked => constants.%int_0.5c6 // CHECK:STDOUT: %iN.builtin => // CHECK:STDOUT: %require_complete => // CHECK:STDOUT: %A.elem.loc12 => diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index aaecb56e22d0..f5c9d5c5e01e 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -31,39 +31,39 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class.1: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Class.elem.1: type = unbound_element_type %Class.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] +// CHECK:STDOUT: %Class.2c9: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Class.elem.0a3: type = unbound_element_type %Class.2c9, %T [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Class.2: type = class_type @Class, @Class(%i32) [template] +// CHECK:STDOUT: %Class.d3a: type = class_type @Class, @Class(%i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Class.elem.2: type = unbound_element_type %Class.2, %i32 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Class.elem.0f0: type = unbound_element_type %Class.d3a, %i32 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %Class.1 [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class.2c9 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %Class.3: type = class_type @Class, @Class(%U) [symbolic] +// CHECK:STDOUT: %Class.ad5: type = class_type @Class, @Class(%U) [symbolic] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %Class.elem.3: type = unbound_element_type %Class.3, %U [symbolic] -// CHECK:STDOUT: %struct_type.x.3: type = struct_type {.x: %U} [symbolic] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.x.3 [symbolic] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %Class.3 [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %Class.elem.017: type = unbound_element_type %Class.ad5, %U [symbolic] +// CHECK:STDOUT: %struct_type.x.5e5: type = struct_type {.x: %U} [symbolic] +// CHECK:STDOUT: %complete_type.fd0: = complete_type_witness %struct_type.x.5e5 [symbolic] +// CHECK:STDOUT: %require_complete.5db: = require_complete_type %Class.ad5 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,63 +86,63 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %c.patt: %Class.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %Class.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %Class.d3a = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %Class.d3a = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_24: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_24: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %c.param: %Class.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %Class [template = constants.%Class.2] { +// CHECK:STDOUT: %c.param: %Class.d3a = value_param runtime_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %Class [template = constants.%Class.d3a] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %int_32.loc15_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.2] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.d3a] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %Class.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %Class.d3a = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %T.patt.loc19_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_6.1, runtime_param [symbolic = %T.patt.loc19_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %c.patt: @G.%Class.loc19_26.2 (%Class.1) = binding_pattern c -// CHECK:STDOUT: %c.param_patt: @G.%Class.loc19_26.2 (%Class.1) = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: @G.%Class.loc19_26.2 (%Class.2c9) = binding_pattern c +// CHECK:STDOUT: %c.param_patt: @G.%Class.loc19_26.2 (%Class.2c9) = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @G.%T.loc19_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @G.%T.loc19_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc19_32: type = name_ref T, %T.loc19_6.1 [symbolic = %T.loc19_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc19_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_6.2 (constants.%T)] -// CHECK:STDOUT: %c.param: @G.%Class.loc19_26.2 (%Class.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %Class.loc19_26.1 [symbolic = %Class.loc19_26.2 (constants.%Class.1)] { +// CHECK:STDOUT: %c.param: @G.%Class.loc19_26.2 (%Class.2c9) = value_param runtime_param0 +// CHECK:STDOUT: %.loc19: type = splice_block %Class.loc19_26.1 [symbolic = %Class.loc19_26.2 (constants.%Class.2c9)] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %T.ref.loc19_25: type = name_ref T, %T.loc19_6.1 [symbolic = %T.loc19_6.2 (constants.%T)] -// CHECK:STDOUT: %Class.loc19_26.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_26.2 (constants.%Class.1)] +// CHECK:STDOUT: %Class.loc19_26.1: type = class_type @Class, @Class(constants.%T) [symbolic = %Class.loc19_26.2 (constants.%Class.2c9)] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: @G.%Class.loc19_26.2 (%Class.1) = bind_name c, %c.param +// CHECK:STDOUT: %c: @G.%Class.loc19_26.2 (%Class.2c9) = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref @G.%T.loc19_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @G.%T.loc19_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { // CHECK:STDOUT: %U.patt.loc23_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc23_6.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc23_6.1, runtime_param [symbolic = %U.patt.loc23_6.2 (constants.%U.patt)] -// CHECK:STDOUT: %c.patt: @H.%Class.loc23_26.2 (%Class.3) = binding_pattern c -// CHECK:STDOUT: %c.param_patt: @H.%Class.loc23_26.2 (%Class.3) = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: @H.%Class.loc23_26.2 (%Class.ad5) = binding_pattern c +// CHECK:STDOUT: %c.param_patt: @H.%Class.loc23_26.2 (%Class.ad5) = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @H.%U.loc23_6.2 (%U) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @H.%U.loc23_6.2 (%U) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc23_32: type = name_ref U, %U.loc23_6.1 [symbolic = %U.loc23_6.2 (constants.%U)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc23_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc23_6.2 (constants.%U)] -// CHECK:STDOUT: %c.param: @H.%Class.loc23_26.2 (%Class.3) = value_param runtime_param0 -// CHECK:STDOUT: %.loc23: type = splice_block %Class.loc23_26.1 [symbolic = %Class.loc23_26.2 (constants.%Class.3)] { +// CHECK:STDOUT: %c.param: @H.%Class.loc23_26.2 (%Class.ad5) = value_param runtime_param0 +// CHECK:STDOUT: %.loc23: type = splice_block %Class.loc23_26.1 [symbolic = %Class.loc23_26.2 (constants.%Class.ad5)] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %U.ref.loc23_25: type = name_ref U, %U.loc23_6.1 [symbolic = %U.loc23_6.2 (constants.%U)] -// CHECK:STDOUT: %Class.loc23_26.1: type = class_type @Class, @Class(constants.%U) [symbolic = %Class.loc23_26.2 (constants.%Class.3)] +// CHECK:STDOUT: %Class.loc23_26.1: type = class_type @Class, @Class(constants.%U) [symbolic = %Class.loc23_26.2 (constants.%Class.ad5)] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: @H.%Class.loc23_26.2 (%Class.3) = bind_name c, %c.param +// CHECK:STDOUT: %c: @H.%Class.loc23_26.2 (%Class.ad5) = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref @H.%U.loc23_6.2 (%U) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @H.%U.loc23_6.2 (%U) = return_slot %return.param // CHECK:STDOUT: } @@ -153,27 +153,27 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc11_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc11_13.2) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.1), @Class.%T.loc11_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc11_13.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc11_13.2) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.2c9), @Class.%T.loc11_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc11_13.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc12: @Class.%Class.elem (%Class.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc12: @Class.%Class.elem (%Class.elem.0a3) = field_decl x, element0 [template] +// CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.1 +// CHECK:STDOUT: .Self = constants.%Class.2c9 // CHECK:STDOUT: .x = %.loc12 // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%c.param_patt: %Class.2) -> %i32 { +// CHECK:STDOUT: fn @F(%c.param_patt: %Class.d3a) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %Class.2 = name_ref c, %c -// CHECK:STDOUT: %x.ref: %Class.elem.2 = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] +// CHECK:STDOUT: %c.ref: %Class.d3a = name_ref c, %c +// CHECK:STDOUT: %x.ref: %Class.elem.0f0 = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] // CHECK:STDOUT: %.loc16_11.1: ref %i32 = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc16_11.2: %i32 = bind_value %.loc16_11.1 // CHECK:STDOUT: return %.loc16_11.2 @@ -182,17 +182,17 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: generic fn @G(%T.loc19_6.1: type) { // CHECK:STDOUT: %T.loc19_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc19_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %Class.loc19_26.2: type = class_type @Class, @Class(%T.loc19_6.2) [symbolic = %Class.loc19_26.2 (constants.%Class.1)] +// CHECK:STDOUT: %Class.loc19_26.2: type = class_type @Class, @Class(%T.loc19_6.2) [symbolic = %Class.loc19_26.2 (constants.%Class.2c9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19: = require_complete_type @G.%Class.loc19_26.2 (%Class.1) [symbolic = %require_complete.loc19 (constants.%require_complete.3)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @G.%Class.loc19_26.2 (%Class.1), @G.%T.loc19_6.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] -// CHECK:STDOUT: %require_complete.loc20: = require_complete_type @G.%T.loc19_6.2 (%T) [symbolic = %require_complete.loc20 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc19: = require_complete_type @G.%Class.loc19_26.2 (%Class.2c9) [symbolic = %require_complete.loc19 (constants.%require_complete.723)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @G.%Class.loc19_26.2 (%Class.2c9), @G.%T.loc19_6.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] +// CHECK:STDOUT: %require_complete.loc20: = require_complete_type @G.%T.loc19_6.2 (%T) [symbolic = %require_complete.loc20 (constants.%require_complete.db1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %c.param_patt: @G.%Class.loc19_26.2 (%Class.1)) -> @G.%T.loc19_6.2 (%T) { +// CHECK:STDOUT: fn(%T.param_patt: type, %c.param_patt: @G.%Class.loc19_26.2 (%Class.2c9)) -> @G.%T.loc19_6.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: @G.%Class.loc19_26.2 (%Class.1) = name_ref c, %c -// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.1) = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] +// CHECK:STDOUT: %c.ref: @G.%Class.loc19_26.2 (%Class.2c9) = name_ref c, %c +// CHECK:STDOUT: %x.ref: @G.%Class.elem (%Class.elem.0a3) = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] // CHECK:STDOUT: %.loc20_11.1: ref @G.%T.loc19_6.2 (%T) = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc20_11.2: @G.%T.loc19_6.2 (%T) = bind_value %.loc20_11.1 // CHECK:STDOUT: return %.loc20_11.2 @@ -202,17 +202,17 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: generic fn @H(%U.loc23_6.1: type) { // CHECK:STDOUT: %U.loc23_6.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc23_6.2 (constants.%U)] // CHECK:STDOUT: %U.patt.loc23_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc23_6.2 (constants.%U.patt)] -// CHECK:STDOUT: %Class.loc23_26.2: type = class_type @Class, @Class(%U.loc23_6.2) [symbolic = %Class.loc23_26.2 (constants.%Class.3)] +// CHECK:STDOUT: %Class.loc23_26.2: type = class_type @Class, @Class(%U.loc23_6.2) [symbolic = %Class.loc23_26.2 (constants.%Class.ad5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc23_29: = require_complete_type @H.%U.loc23_6.2 (%U) [symbolic = %require_complete.loc23_29 (constants.%require_complete.4)] -// CHECK:STDOUT: %require_complete.loc23_17: = require_complete_type @H.%Class.loc23_26.2 (%Class.3) [symbolic = %require_complete.loc23_17 (constants.%require_complete.5)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @H.%Class.loc23_26.2 (%Class.3), @H.%U.loc23_6.2 (%U) [symbolic = %Class.elem (constants.%Class.elem.3)] +// CHECK:STDOUT: %require_complete.loc23_29: = require_complete_type @H.%U.loc23_6.2 (%U) [symbolic = %require_complete.loc23_29 (constants.%require_complete.427)] +// CHECK:STDOUT: %require_complete.loc23_17: = require_complete_type @H.%Class.loc23_26.2 (%Class.ad5) [symbolic = %require_complete.loc23_17 (constants.%require_complete.5db)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @H.%Class.loc23_26.2 (%Class.ad5), @H.%U.loc23_6.2 (%U) [symbolic = %Class.elem (constants.%Class.elem.017)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%U.param_patt: type, %c.param_patt: @H.%Class.loc23_26.2 (%Class.3)) -> @H.%U.loc23_6.2 (%U) { +// CHECK:STDOUT: fn(%U.param_patt: type, %c.param_patt: @H.%Class.loc23_26.2 (%Class.ad5)) -> @H.%U.loc23_6.2 (%U) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: @H.%Class.loc23_26.2 (%Class.3) = name_ref c, %c -// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.3) = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] +// CHECK:STDOUT: %c.ref: @H.%Class.loc23_26.2 (%Class.ad5) = name_ref c, %c +// CHECK:STDOUT: %x.ref: @H.%Class.elem (%Class.elem.017) = name_ref x, @Class.%.loc12 [template = @Class.%.loc12] // CHECK:STDOUT: %.loc24_11.1: ref @H.%U.loc23_6.2 (%U) = class_element_access %c.ref, element0 // CHECK:STDOUT: %.loc24_11.2: @H.%U.loc23_6.2 (%U) = bind_value %.loc24_11.1 // CHECK:STDOUT: return %.loc24_11.2 @@ -224,11 +224,11 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Class => constants.%Class.1 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.1 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.1 -// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Class => constants.%Class.2c9 +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0a3 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.710 +// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.60a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(%T.loc11_13.2) {} @@ -238,17 +238,17 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %Class => constants.%Class.2 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Class => constants.%Class.d3a +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0f0 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.b74 +// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.f6d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%T) { // CHECK:STDOUT: %T.loc19_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc19_6.2 => constants.%T -// CHECK:STDOUT: %Class.loc19_26.2 => constants.%Class.1 +// CHECK:STDOUT: %Class.loc19_26.2 => constants.%Class.2c9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(@G.%T.loc19_6.2) {} @@ -258,17 +258,17 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.4 -// CHECK:STDOUT: %Class => constants.%Class.3 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.3 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.3 -// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%require_complete.427 +// CHECK:STDOUT: %Class => constants.%Class.ad5 +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.017 +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.5e5 +// CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type.fd0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @H(constants.%U) { // CHECK:STDOUT: %U.loc23_6.2 => constants.%U // CHECK:STDOUT: %U.patt.loc23_6.2 => constants.%U -// CHECK:STDOUT: %Class.loc23_26.2 => constants.%Class.3 +// CHECK:STDOUT: %Class.loc23_26.2 => constants.%Class.ad5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(@H.%U.loc23_6.2) {} diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 8298c1ed8dfc..f1782478a22d 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -93,31 +93,31 @@ class Class(U:! type) { // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] // CHECK:STDOUT: %CompleteClass.type: type = generic_class_type @CompleteClass [template] // CHECK:STDOUT: %CompleteClass.generic: %CompleteClass.type = struct_value () [template] -// CHECK:STDOUT: %CompleteClass.1: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.332: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass.1, %i32 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type %CompleteClass.332, %i32 [symbolic] +// CHECK:STDOUT: %F.type.24b: type = fn_type @F.1, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %F.b4a: %F.type.24b = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %CompleteClass.b7f: type = class_type @CompleteClass, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -145,16 +145,16 @@ class Class(U:! type) { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_21.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_21.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %return.patt: %CompleteClass.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %CompleteClass.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { +// CHECK:STDOUT: %return.patt: %CompleteClass.b7f = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %CompleteClass.b7f = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, file.%CompleteClass.decl [template = constants.%CompleteClass.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [template = constants.%CompleteClass.2] -// CHECK:STDOUT: %return.param: ref %CompleteClass.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %CompleteClass.2 = return_slot %return.param +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [template = constants.%CompleteClass.b7f] +// CHECK:STDOUT: %return.param: ref %CompleteClass.b7f = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %CompleteClass.b7f = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -170,14 +170,14 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc6_21.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_21.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T.loc6_21.2) [symbolic = %CompleteClass (constants.%CompleteClass.1)] -// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.1), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T.loc6_21.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T.loc6_21.2) [symbolic = %CompleteClass (constants.%CompleteClass.332)] +// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.332), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T.loc6_21.2) [symbolic = %F.type (constants.%F.type.24b)] +// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.24b) = struct_value () [symbolic = %F (constants.%F.b4a)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %.loc7: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem) = field_decl n, element0 [template] -// CHECK:STDOUT: %F.decl: @CompleteClass.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @CompleteClass.%F (constants.%F.1)] { +// CHECK:STDOUT: %F.decl: @CompleteClass.%F.type (%F.type.24b) = fn_decl @F.1 [symbolic = @CompleteClass.%F (constants.%F.b4a)] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -186,10 +186,10 @@ class Class(U:! type) { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%CompleteClass.1 +// CHECK:STDOUT: .Self = constants.%CompleteClass.332 // CHECK:STDOUT: .n = %.loc7 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: complete_type_witness = %complete_type @@ -201,18 +201,18 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_27.2: %i32 = converted %int_0, %.loc8_27.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc8_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc8_27.2: %i32 = converted %int_0, %.loc8_27.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc8_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() -> %CompleteClass.2; +// CHECK:STDOUT: fn @F.2() -> %CompleteClass.b7f; // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%T) { // CHECK:STDOUT: %T.loc4_13.2 => constants.%T @@ -224,10 +224,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.loc6_21.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.1 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.332 // CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 +// CHECK:STDOUT: %F.type => constants.%F.type.24b +// CHECK:STDOUT: %F => constants.%F.b4a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T) {} @@ -249,54 +249,54 @@ class Class(U:! type) { // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x [symbolic] // CHECK:STDOUT: %CompleteClass.type: type = generic_class_type @CompleteClass [template] // CHECK:STDOUT: %CompleteClass.generic: %CompleteClass.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.n.1: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.n.1 [template] -// CHECK:STDOUT: %CompleteClass.1: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.1: type = unbound_element_type %CompleteClass.1, %i32 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %CompleteClass.elem.2: type = unbound_element_type %CompleteClass.2, %i32 [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.n.2: type = struct_type {.n: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %struct_type.n.dff: type = struct_type {.n: %i32} [template] +// CHECK:STDOUT: %complete_type.a01: = complete_type_witness %struct_type.n.dff [template] +// CHECK:STDOUT: %CompleteClass.535: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.elem.9af: type = unbound_element_type %CompleteClass.535, %i32 [symbolic] +// CHECK:STDOUT: %F.type.7da: type = fn_type @F.1, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %F.2ba: %F.type.7da = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.a69: type = class_type @CompleteClass, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %CompleteClass.elem.030: type = unbound_element_type %CompleteClass.a69, %i32 [template] +// CHECK:STDOUT: %F.type.764: type = fn_type @F.1, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %F.9ca: %F.type.764 = struct_value () [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.n.44a: type = struct_type {.n: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.40a: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.764: = impl_witness (imports.%import_ref.154), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.f1c: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.4b8: %Convert.type.f1c = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.4b8 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %CompleteClass.val: %CompleteClass.2 = struct_value (%int_1.2) [template] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %CompleteClass.val: %CompleteClass.a69 = struct_value (%int_1.059) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] +// CHECK:STDOUT: %import_ref.ff5: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.255 -// CHECK:STDOUT: .ImplicitAs = %import_ref.256 +// CHECK:STDOUT: .Int = %import_ref.d69 +// CHECK:STDOUT: .ImplicitAs = %import_ref.edd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.251: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.4] -// CHECK:STDOUT: %import_ref.252 = import_ref Main//foo, inst37 [no loc], unloaded -// CHECK:STDOUT: %import_ref.253 = import_ref Main//foo, loc7_8, unloaded -// CHECK:STDOUT: %import_ref.254 = import_ref Main//foo, loc8_17, unloaded +// CHECK:STDOUT: %import_ref.dc0: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.a01] +// CHECK:STDOUT: %import_ref.8a7 = import_ref Main//foo, inst37 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b9f = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %import_ref.355 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .CompleteClass = imports.%import_ref.2 +// CHECK:STDOUT: .CompleteClass = imports.%import_ref.ff5 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } @@ -310,16 +310,16 @@ class Class(U:! type) { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %return.patt: %CompleteClass.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %CompleteClass.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { +// CHECK:STDOUT: %return.patt: %CompleteClass.a69 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %CompleteClass.a69 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, imports.%import_ref.2 [template = constants.%CompleteClass.generic] +// CHECK:STDOUT: %CompleteClass.ref: %CompleteClass.type = name_ref CompleteClass, imports.%import_ref.ff5 [template = constants.%CompleteClass.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [template = constants.%CompleteClass.2] -// CHECK:STDOUT: %return.param: ref %CompleteClass.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %CompleteClass.2 = return_slot %return.param +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(constants.%i32) [template = constants.%CompleteClass.a69] +// CHECK:STDOUT: %return.param: ref %CompleteClass.a69 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %CompleteClass.a69 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -328,15 +328,15 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.1 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.1 (%T) [symbolic = %require_complete (constants.%require_complete.5)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.1 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.1) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.1 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.1 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.3)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %.loc5: @Class.%Class.elem (%Class.elem) = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.3)] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -350,17 +350,17 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.1)] -// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.1), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.535)] +// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.535), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.9af)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.7da)] +// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.7da) = struct_value () [symbolic = %F (constants.%F.2ba)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.252 -// CHECK:STDOUT: .n = imports.%import_ref.253 -// CHECK:STDOUT: .F = imports.%import_ref.254 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.251 +// CHECK:STDOUT: .Self = imports.%import_ref.8a7 +// CHECK:STDOUT: .n = imports.%import_ref.b9f +// CHECK:STDOUT: .F = imports.%import_ref.355 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.dc0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -370,19 +370,19 @@ class Class(U:! type) { // CHECK:STDOUT: fn() -> %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() -> %return.param_patt: %CompleteClass.2 [from "foo.carbon"] { +// CHECK:STDOUT: fn @F.2() -> %return.param_patt: %CompleteClass.a69 [from "foo.carbon"] { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc9_17.1: %struct_type.n.2 = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0: %Convert.type.9 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc9_17.1: %struct_type.n.44a = struct_literal (%int_1) +// CHECK:STDOUT: %impl.elem0: %Convert.type.40a = impl_witness_access constants.%impl_witness.764, element0 [template = constants.%Convert.4b8] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_17.2: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.059] +// CHECK:STDOUT: %.loc9_17.2: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.059] // CHECK:STDOUT: %.loc9_17.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc9_17.4: init %i32 = initialize_from %.loc9_17.2 to %.loc9_17.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_17.5: init %CompleteClass.2 = class_init (%.loc9_17.4), %return [template = constants.%CompleteClass.val] -// CHECK:STDOUT: %.loc9_18: init %CompleteClass.2 = converted %.loc9_17.1, %.loc9_17.5 [template = constants.%CompleteClass.val] +// CHECK:STDOUT: %.loc9_17.4: init %i32 = initialize_from %.loc9_17.2 to %.loc9_17.3 [template = constants.%int_1.059] +// CHECK:STDOUT: %.loc9_17.5: init %CompleteClass.a69 = class_init (%.loc9_17.4), %return [template = constants.%CompleteClass.val] +// CHECK:STDOUT: %.loc9_18: init %CompleteClass.a69 = converted %.loc9_17.1, %.loc9_17.5 [template = constants.%CompleteClass.val] // CHECK:STDOUT: return %.loc9_18 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -398,10 +398,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.1 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.1 -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.535 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.9af +// CHECK:STDOUT: %F.type => constants.%F.type.7da +// CHECK:STDOUT: %F => constants.%F.2ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(%T) {} @@ -413,10 +413,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.2 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.2 -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a69 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.030 +// CHECK:STDOUT: %F.type => constants.%F.type.764 +// CHECK:STDOUT: %F => constants.%F.9ca // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_foo.carbon @@ -429,44 +429,44 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.type: type = generic_class_type @CompleteClass [template] // CHECK:STDOUT: %CompleteClass.generic: %CompleteClass.type = struct_value () [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %CompleteClass.1: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.535: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.1: type = unbound_element_type %CompleteClass.1, %i32 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %CompleteClass.elem.2: type = unbound_element_type %CompleteClass.2, %i32 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.2, @F.1(%i32) [template] +// CHECK:STDOUT: %CompleteClass.elem.bc2: type = unbound_element_type %CompleteClass.535, %i32 [symbolic] +// CHECK:STDOUT: %F.type.7da: type = fn_type @F.1, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %F.2ba: %F.type.7da = struct_value () [symbolic] +// CHECK:STDOUT: %CompleteClass.374: type = class_type @CompleteClass, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %CompleteClass.elem.cc9: type = unbound_element_type %CompleteClass.374, %i32 [template] +// CHECK:STDOUT: %F.type.8e1: type = fn_type @F.1, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %F.3dc: %F.type.8e1 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.3dc, @F.1(%i32) [template] // CHECK:STDOUT: %UseField.type: type = fn_type @UseField [template] // CHECK:STDOUT: %UseField: %UseField.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//foo, Class, unloaded -// CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] -// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, F, loaded [template = constants.%F.3] +// CHECK:STDOUT: %import_ref.73d = import_ref Main//foo, Class, unloaded +// CHECK:STDOUT: %import_ref.ff5: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] +// CHECK:STDOUT: %import_ref.7ee: %F.type.b25 = import_ref Main//foo, F, loaded [template = constants.%F.c41] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.4 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.8: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//foo, inst37 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.1) = import_ref Main//foo, loc7_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.11: @CompleteClass.%F.type (%F.type.1) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%F (constants.%F.1)] +// CHECK:STDOUT: %import_ref.dc0: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.9b7] +// CHECK:STDOUT: %import_ref.8a7 = import_ref Main//foo, inst37 [no loc], unloaded +// CHECK:STDOUT: %import_ref.78d: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.bc2) = import_ref Main//foo, loc7_8, loaded [template = %.817] +// CHECK:STDOUT: %import_ref.4bf: @CompleteClass.%F.type (%F.type.7da) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%F (constants.%F.2ba)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Class = imports.%import_ref.1 -// CHECK:STDOUT: .CompleteClass = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .Class = imports.%import_ref.73d +// CHECK:STDOUT: .CompleteClass = imports.%import_ref.ff5 +// CHECK:STDOUT: .F = imports.%import_ref.7ee // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .UseMethod = %UseMethod.decl // CHECK:STDOUT: .UseField = %UseField.decl @@ -498,31 +498,31 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.1)] -// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.1), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.535)] +// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.535), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.bc2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.7da)] +// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.7da) = struct_value () [symbolic = %F (constants.%F.2ba)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .n = imports.%import_ref.10 -// CHECK:STDOUT: .F = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8 +// CHECK:STDOUT: .Self = imports.%import_ref.8a7 +// CHECK:STDOUT: .n = imports.%import_ref.78d +// CHECK:STDOUT: .F = imports.%import_ref.4bf +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.dc0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @UseMethod() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %CompleteClass.2 = var v -// CHECK:STDOUT: %v: ref %CompleteClass.2 = bind_name v, %v.var -// CHECK:STDOUT: %F.ref.loc6: %F.type.3 = name_ref F, imports.%import_ref.3 [template = constants.%F.3] -// CHECK:STDOUT: %.loc6: ref %CompleteClass.2 = splice_block %v.var {} -// CHECK:STDOUT: %F.call.loc6: init %CompleteClass.2 = call %F.ref.loc6() to %.loc6 +// CHECK:STDOUT: %v.var: ref %CompleteClass.374 = var v +// CHECK:STDOUT: %v: ref %CompleteClass.374 = bind_name v, %v.var +// CHECK:STDOUT: %F.ref.loc6: %F.type.b25 = name_ref F, imports.%import_ref.7ee [template = constants.%F.c41] +// CHECK:STDOUT: %.loc6: ref %CompleteClass.374 = splice_block %v.var {} +// CHECK:STDOUT: %F.call.loc6: init %CompleteClass.374 = call %F.ref.loc6() to %.loc6 // CHECK:STDOUT: assign %v.var, %F.call.loc6 -// CHECK:STDOUT: %v.ref: ref %CompleteClass.2 = name_ref v, %v -// CHECK:STDOUT: %.loc7_11: %F.type.2 = specific_constant imports.%import_ref.11, @CompleteClass(constants.%i32) [template = constants.%F.2] -// CHECK:STDOUT: %F.ref.loc7: %F.type.2 = name_ref F, %.loc7_11 [template = constants.%F.2] +// CHECK:STDOUT: %v.ref: ref %CompleteClass.374 = name_ref v, %v +// CHECK:STDOUT: %.loc7_11: %F.type.8e1 = specific_constant imports.%import_ref.4bf, @CompleteClass(constants.%i32) [template = constants.%F.3dc] +// CHECK:STDOUT: %F.ref.loc7: %F.type.8e1 = name_ref F, %.loc7_11 [template = constants.%F.3dc] // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref.loc7, @F.1(constants.%i32) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call.loc7: init %i32 = call %F.specific_fn() // CHECK:STDOUT: %.loc7_15.1: %i32 = value_of_initializer %F.call.loc7 @@ -536,18 +536,18 @@ class Class(U:! type) { // CHECK:STDOUT: fn() -> %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() -> %CompleteClass.2 [from "foo.carbon"]; +// CHECK:STDOUT: fn @F.2() -> %CompleteClass.374 [from "foo.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @UseField() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %CompleteClass.2 = var v -// CHECK:STDOUT: %v: ref %CompleteClass.2 = bind_name v, %v.var -// CHECK:STDOUT: %F.ref: %F.type.3 = name_ref F, imports.%import_ref.3 [template = constants.%F.3] -// CHECK:STDOUT: %.loc11: ref %CompleteClass.2 = splice_block %v.var {} -// CHECK:STDOUT: %F.call: init %CompleteClass.2 = call %F.ref() to %.loc11 +// CHECK:STDOUT: %v.var: ref %CompleteClass.374 = var v +// CHECK:STDOUT: %v: ref %CompleteClass.374 = bind_name v, %v.var +// CHECK:STDOUT: %F.ref: %F.type.b25 = name_ref F, imports.%import_ref.7ee [template = constants.%F.c41] +// CHECK:STDOUT: %.loc11: ref %CompleteClass.374 = splice_block %v.var {} +// CHECK:STDOUT: %F.call: init %CompleteClass.374 = call %F.ref() to %.loc11 // CHECK:STDOUT: assign %v.var, %F.call -// CHECK:STDOUT: %v.ref: ref %CompleteClass.2 = name_ref v, %v -// CHECK:STDOUT: %n.ref: %CompleteClass.elem.2 = name_ref n, imports.%import_ref.10 [template = imports.%.1] +// CHECK:STDOUT: %v.ref: ref %CompleteClass.374 = name_ref v, %v +// CHECK:STDOUT: %n.ref: %CompleteClass.elem.cc9 = name_ref n, imports.%import_ref.78d [template = imports.%.817] // CHECK:STDOUT: %.loc12_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc12_11.2: %i32 = bind_value %.loc12_11.1 // CHECK:STDOUT: return %.loc12_11.2 @@ -558,10 +558,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.1 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.1 -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.535 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.bc2 +// CHECK:STDOUT: %F.type => constants.%F.type.7da +// CHECK:STDOUT: %F => constants.%F.2ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(%T) {} @@ -573,10 +573,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.2 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.2 -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.374 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.cc9 +// CHECK:STDOUT: %F.type => constants.%F.type.8e1 +// CHECK:STDOUT: %F => constants.%F.3dc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%i32) { @@ -593,47 +593,47 @@ class Class(U:! type) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.a01: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %CompleteClass.1: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %CompleteClass.535: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %CompleteClass.elem.1: type = unbound_element_type %CompleteClass.1, %i32 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @CompleteClass(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %i32 [template] -// CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%ptr.1) [template] -// CHECK:STDOUT: %CompleteClass.elem.2: type = unbound_element_type %CompleteClass.2, %i32 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @CompleteClass(%ptr.1) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %CompleteClass.3: type = class_type @CompleteClass, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %CompleteClass.elem.3: type = unbound_element_type %CompleteClass.3, %i32 [template] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.1, @CompleteClass(%i32) [template] -// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [template] +// CHECK:STDOUT: %CompleteClass.elem.9af: type = unbound_element_type %CompleteClass.535, %i32 [symbolic] +// CHECK:STDOUT: %F.type.7da: type = fn_type @F.1, @CompleteClass(%T) [symbolic] +// CHECK:STDOUT: %F.2ba: %F.type.7da = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.b05: type = ptr_type %i32 [template] +// CHECK:STDOUT: %CompleteClass.e96: type = class_type @CompleteClass, @CompleteClass(%ptr.b05) [template] +// CHECK:STDOUT: %CompleteClass.elem.d75: type = unbound_element_type %CompleteClass.e96, %i32 [template] +// CHECK:STDOUT: %F.type.bb4: type = fn_type @F.1, @CompleteClass(%ptr.b05) [template] +// CHECK:STDOUT: %F.9ec: %F.type.bb4 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %CompleteClass.a69: type = class_type @CompleteClass, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %CompleteClass.elem.030: type = unbound_element_type %CompleteClass.a69, %i32 [template] +// CHECK:STDOUT: %F.type.764: type = fn_type @F.1, @CompleteClass(%i32) [template] +// CHECK:STDOUT: %F.9ca: %F.type.764 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//foo, Class, unloaded -// CHECK:STDOUT: %import_ref.2: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] -// CHECK:STDOUT: %import_ref.3: %F.type.3 = import_ref Main//foo, F, loaded [template = constants.%F.3] +// CHECK:STDOUT: %import_ref.73d = import_ref Main//foo, Class, unloaded +// CHECK:STDOUT: %import_ref.ff5: %CompleteClass.type = import_ref Main//foo, CompleteClass, loaded [template = constants.%CompleteClass.generic] +// CHECK:STDOUT: %import_ref.7ee: %F.type.b25 = import_ref Main//foo, F, loaded [template = constants.%F.c41] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.11 -// CHECK:STDOUT: .ImplicitAs = %import_ref.12 +// CHECK:STDOUT: .Int = %import_ref.d69 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//foo, inst37 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//foo, loc7_8, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Main//foo, loc8_17, unloaded +// CHECK:STDOUT: %import_ref.dc0: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.a01] +// CHECK:STDOUT: %import_ref.8a7 = import_ref Main//foo, inst37 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b9f = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %import_ref.355 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Class = imports.%import_ref.1 -// CHECK:STDOUT: .CompleteClass = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .Class = imports.%import_ref.73d +// CHECK:STDOUT: .CompleteClass = imports.%import_ref.ff5 +// CHECK:STDOUT: .F = imports.%import_ref.7ee // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Use = %Use.decl // CHECK:STDOUT: } @@ -647,28 +647,28 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.1)] -// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.1), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] +// CHECK:STDOUT: %CompleteClass: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic = %CompleteClass (constants.%CompleteClass.535)] +// CHECK:STDOUT: %CompleteClass.elem: type = unbound_element_type @CompleteClass.%CompleteClass (%CompleteClass.535), %i32 [symbolic = %CompleteClass.elem (constants.%CompleteClass.elem.9af)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @CompleteClass(%T) [symbolic = %F.type (constants.%F.type.7da)] +// CHECK:STDOUT: %F: @CompleteClass.%F.type (%F.type.7da) = struct_value () [symbolic = %F (constants.%F.2ba)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .n = imports.%import_ref.9 -// CHECK:STDOUT: .F = imports.%import_ref.10 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.8a7 +// CHECK:STDOUT: .n = imports.%import_ref.b9f +// CHECK:STDOUT: .F = imports.%import_ref.355 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.dc0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Use() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %CompleteClass.2 = var v -// CHECK:STDOUT: %v: ref %CompleteClass.2 = bind_name v, %v.var -// CHECK:STDOUT: %F.ref: %F.type.3 = name_ref F, imports.%import_ref.3 [template = constants.%F.3] -// CHECK:STDOUT: %.loc14_34: ref %CompleteClass.3 = temporary_storage -// CHECK:STDOUT: %F.call: init %CompleteClass.3 = call %F.ref() to %.loc14_34 -// CHECK:STDOUT: %.loc14_35: %CompleteClass.2 = converted %F.call, [template = ] +// CHECK:STDOUT: %v.var: ref %CompleteClass.e96 = var v +// CHECK:STDOUT: %v: ref %CompleteClass.e96 = bind_name v, %v.var +// CHECK:STDOUT: %F.ref: %F.type.b25 = name_ref F, imports.%import_ref.7ee [template = constants.%F.c41] +// CHECK:STDOUT: %.loc14_34: ref %CompleteClass.a69 = temporary_storage +// CHECK:STDOUT: %F.call: init %CompleteClass.a69 = call %F.ref() to %.loc14_34 +// CHECK:STDOUT: %.loc14_35: %CompleteClass.e96 = converted %F.call, [template = ] // CHECK:STDOUT: assign %v.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -679,32 +679,32 @@ class Class(U:! type) { // CHECK:STDOUT: fn() -> %i32; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() -> %CompleteClass.3 [from "foo.carbon"]; +// CHECK:STDOUT: fn @F.2() -> %CompleteClass.a69 [from "foo.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.1 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.1 -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.535 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.9af +// CHECK:STDOUT: %F.type => constants.%F.type.7da +// CHECK:STDOUT: %F => constants.%F.2ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @CompleteClass(constants.%ptr.1) { -// CHECK:STDOUT: %T => constants.%ptr.1 -// CHECK:STDOUT: %T.patt => constants.%ptr.1 +// CHECK:STDOUT: specific @CompleteClass(constants.%ptr.b05) { +// CHECK:STDOUT: %T => constants.%ptr.b05 +// CHECK:STDOUT: %T.patt => constants.%ptr.b05 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.2 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.2 -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.e96 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.d75 +// CHECK:STDOUT: %F.type => constants.%F.type.bb4 +// CHECK:STDOUT: %F => constants.%F.9ec // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CompleteClass(constants.%i32) { @@ -712,10 +712,10 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.3 -// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.3 -// CHECK:STDOUT: %F.type => constants.%F.type.4 -// CHECK:STDOUT: %F => constants.%F.4 +// CHECK:STDOUT: %CompleteClass => constants.%CompleteClass.a69 +// CHECK:STDOUT: %CompleteClass.elem => constants.%CompleteClass.elem.030 +// CHECK:STDOUT: %F.type => constants.%F.type.764 +// CHECK:STDOUT: %F => constants.%F.9ca // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_foo.impl.carbon @@ -729,13 +729,13 @@ class Class(U:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%U) [symbolic] +// CHECK:STDOUT: %.fc8: type = class_type @.1, @.1(%U) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Class.type = import_ref Main//foo, Class, loaded [template = constants.%Class.generic] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//foo, CompleteClass, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//foo, F, unloaded +// CHECK:STDOUT: %import_ref.71c: %Class.type = import_ref Main//foo, Class, loaded [template = constants.%Class.generic] +// CHECK:STDOUT: %import_ref.8f0 = import_ref Main//foo, CompleteClass, unloaded +// CHECK:STDOUT: %import_ref.024 = import_ref Main//foo, F, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -744,9 +744,9 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Class = imports.%import_ref.1 -// CHECK:STDOUT: .CompleteClass = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .Class = imports.%import_ref.71c +// CHECK:STDOUT: .CompleteClass = imports.%import_ref.8f0 +// CHECK:STDOUT: .F = imports.%import_ref.024 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -779,7 +779,7 @@ class Class(U:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.fc8 // CHECK:STDOUT: .x = %.loc16 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index 58b33b621e74..05221d7bc0e6 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -49,29 +49,29 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class.1: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Class.elem.1: type = unbound_element_type %Class.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.k.1: type = struct_type {.k: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.k.1 [symbolic] +// CHECK:STDOUT: %Class.2c9: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Class.elem.0a3: type = unbound_element_type %Class.2c9, %T [symbolic] +// CHECK:STDOUT: %struct_type.k.11c: type = struct_type {.k: %T} [symbolic] +// CHECK:STDOUT: %complete_type.9f0: = complete_type_witness %struct_type.k.11c [symbolic] // CHECK:STDOUT: %InitFromStructGeneric.type: type = fn_type @InitFromStructGeneric [template] // CHECK:STDOUT: %InitFromStructGeneric: %InitFromStructGeneric.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Class.1 [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class.2c9 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %InitFromStructSpecific.type: type = fn_type @InitFromStructSpecific [template] // CHECK:STDOUT: %InitFromStructSpecific: %InitFromStructSpecific.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Class.2: type = class_type @Class, @Class(%i32) [template] -// CHECK:STDOUT: %Class.elem.2: type = unbound_element_type %Class.2, %i32 [template] -// CHECK:STDOUT: %struct_type.k.2: type = struct_type {.k: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.k.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Class.d3a: type = class_type @Class, @Class(%i32) [template] +// CHECK:STDOUT: %Class.elem.0f0: type = unbound_element_type %Class.d3a, %i32 [template] +// CHECK:STDOUT: %struct_type.k.990: type = struct_type {.k: %i32} [template] +// CHECK:STDOUT: %complete_type.631: = complete_type_witness %struct_type.k.990 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -133,18 +133,18 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.2) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.1), @Class.%T.loc4_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] -// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.loc4_13.2 (%T)} [symbolic = %struct_type.k (constants.%struct_type.k.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Class.%struct_type.k (%struct_type.k.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.2) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.2c9), @Class.%T.loc4_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] +// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @Class.%T.loc4_13.2 (%T)} [symbolic = %struct_type.k (constants.%struct_type.k.11c)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Class.%struct_type.k (%struct_type.k.11c) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.9f0)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Class.%Class.elem (%Class.elem.1) = field_decl k, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.k.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @Class.%Class.elem (%Class.elem.0a3) = field_decl k, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.k.11c [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.9f0)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.1 +// CHECK:STDOUT: .Self = constants.%Class.2c9 // CHECK:STDOUT: .k = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -155,25 +155,25 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc8_26.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_26.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc8: = require_complete_type @InitFromStructGeneric.%T.loc8_26.2 (%T) [symbolic = %require_complete.loc8 (constants.%require_complete.1)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc8_26.2) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @InitFromStructGeneric.%Class (%Class.1) [symbolic = %require_complete.loc9 (constants.%require_complete.2)] -// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @InitFromStructGeneric.%T.loc8_26.2 (%T)} [symbolic = %struct_type.k (constants.%struct_type.k.1)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @InitFromStructGeneric.%Class (%Class.1), @InitFromStructGeneric.%T.loc8_26.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] +// CHECK:STDOUT: %require_complete.loc8: = require_complete_type @InitFromStructGeneric.%T.loc8_26.2 (%T) [symbolic = %require_complete.loc8 (constants.%require_complete.db1)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc8_26.2) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @InitFromStructGeneric.%Class (%Class.2c9) [symbolic = %require_complete.loc9 (constants.%require_complete.723)] +// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: @InitFromStructGeneric.%T.loc8_26.2 (%T)} [symbolic = %struct_type.k (constants.%struct_type.k.11c)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @InitFromStructGeneric.%Class (%Class.2c9), @InitFromStructGeneric.%T.loc8_26.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @InitFromStructGeneric.%T.loc8_26.2 (%T)) -> @InitFromStructGeneric.%T.loc8_26.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref @InitFromStructGeneric.%Class (%Class.1) = var v -// CHECK:STDOUT: %v: ref @InitFromStructGeneric.%Class (%Class.1) = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref @InitFromStructGeneric.%Class (%Class.2c9) = var v +// CHECK:STDOUT: %v: ref @InitFromStructGeneric.%Class (%Class.2c9) = bind_name v, %v.var // CHECK:STDOUT: %x.ref: @InitFromStructGeneric.%T.loc8_26.2 (%T) = name_ref x, %x -// CHECK:STDOUT: %.loc9_28.1: @InitFromStructGeneric.%struct_type.k (%struct_type.k.1) = struct_literal (%x.ref) +// CHECK:STDOUT: %.loc9_28.1: @InitFromStructGeneric.%struct_type.k (%struct_type.k.11c) = struct_literal (%x.ref) // CHECK:STDOUT: %.loc9_28.2: ref @InitFromStructGeneric.%T.loc8_26.2 (%T) = class_element_access %v.var, element0 // CHECK:STDOUT: %.loc9_28.3: init @InitFromStructGeneric.%T.loc8_26.2 (%T) = initialize_from %x.ref to %.loc9_28.2 -// CHECK:STDOUT: %.loc9_28.4: init @InitFromStructGeneric.%Class (%Class.1) = class_init (%.loc9_28.3), %v.var -// CHECK:STDOUT: %.loc9_29: init @InitFromStructGeneric.%Class (%Class.1) = converted %.loc9_28.1, %.loc9_28.4 +// CHECK:STDOUT: %.loc9_28.4: init @InitFromStructGeneric.%Class (%Class.2c9) = class_init (%.loc9_28.3), %v.var +// CHECK:STDOUT: %.loc9_29: init @InitFromStructGeneric.%Class (%Class.2c9) = converted %.loc9_28.1, %.loc9_28.4 // CHECK:STDOUT: assign %v.var, %.loc9_29 -// CHECK:STDOUT: %v.ref: ref @InitFromStructGeneric.%Class (%Class.1) = name_ref v, %v -// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.1) = name_ref k, @Class.%.loc5 [template = @Class.%.loc5] +// CHECK:STDOUT: %v.ref: ref @InitFromStructGeneric.%Class (%Class.2c9) = name_ref v, %v +// CHECK:STDOUT: %k.ref: @InitFromStructGeneric.%Class.elem (%Class.elem.0a3) = name_ref k, @Class.%.loc5 [template = @Class.%.loc5] // CHECK:STDOUT: %.loc10_11.1: ref @InitFromStructGeneric.%T.loc8_26.2 (%T) = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc10_11.2: @InitFromStructGeneric.%T.loc8_26.2 (%T) = bind_value %.loc10_11.1 // CHECK:STDOUT: return %.loc10_11.2 @@ -182,17 +182,17 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @InitFromStructSpecific(%x.param_patt: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %Class.2 = var v -// CHECK:STDOUT: %v: ref %Class.2 = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref %Class.d3a = var v +// CHECK:STDOUT: %v: ref %Class.d3a = bind_name v, %v.var // CHECK:STDOUT: %x.ref: %i32 = name_ref x, %x -// CHECK:STDOUT: %.loc14_30.1: %struct_type.k.2 = struct_literal (%x.ref) +// CHECK:STDOUT: %.loc14_30.1: %struct_type.k.990 = struct_literal (%x.ref) // CHECK:STDOUT: %.loc14_30.2: ref %i32 = class_element_access %v.var, element0 // CHECK:STDOUT: %.loc14_30.3: init %i32 = initialize_from %x.ref to %.loc14_30.2 -// CHECK:STDOUT: %.loc14_30.4: init %Class.2 = class_init (%.loc14_30.3), %v.var -// CHECK:STDOUT: %.loc14_31: init %Class.2 = converted %.loc14_30.1, %.loc14_30.4 +// CHECK:STDOUT: %.loc14_30.4: init %Class.d3a = class_init (%.loc14_30.3), %v.var +// CHECK:STDOUT: %.loc14_31: init %Class.d3a = converted %.loc14_30.1, %.loc14_30.4 // CHECK:STDOUT: assign %v.var, %.loc14_31 -// CHECK:STDOUT: %v.ref: ref %Class.2 = name_ref v, %v -// CHECK:STDOUT: %k.ref: %Class.elem.2 = name_ref k, @Class.%.loc5 [template = @Class.%.loc5] +// CHECK:STDOUT: %v.ref: ref %Class.d3a = name_ref v, %v +// CHECK:STDOUT: %k.ref: %Class.elem.0f0 = name_ref k, @Class.%.loc5 [template = @Class.%.loc5] // CHECK:STDOUT: %.loc15_11.1: ref %i32 = class_element_access %v.ref, element0 // CHECK:STDOUT: %.loc15_11.2: %i32 = bind_value %.loc15_11.1 // CHECK:STDOUT: return %.loc15_11.2 @@ -203,11 +203,11 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Class => constants.%Class.1 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.1 -// CHECK:STDOUT: %struct_type.k => constants.%struct_type.k.1 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Class => constants.%Class.2c9 +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0a3 +// CHECK:STDOUT: %struct_type.k => constants.%struct_type.k.11c +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.9f0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(%T.loc4_13.2) {} @@ -224,11 +224,11 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %Class => constants.%Class.2 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.2 -// CHECK:STDOUT: %struct_type.k => constants.%struct_type.k.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Class => constants.%Class.d3a +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0f0 +// CHECK:STDOUT: %struct_type.k => constants.%struct_type.k.990 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.631 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- adapt.carbon @@ -238,25 +238,25 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Adapt.type: type = generic_class_type @Adapt [template] // CHECK:STDOUT: %Adapt.generic: %Adapt.type = struct_value () [template] -// CHECK:STDOUT: %Adapt.1: type = class_type @Adapt, @Adapt(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %T [symbolic] +// CHECK:STDOUT: %Adapt.31a: type = class_type @Adapt, @Adapt(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %complete_type.27d: = complete_type_witness %T [symbolic] // CHECK:STDOUT: %InitFromAdaptedGeneric.type: type = fn_type @InitFromAdaptedGeneric [template] // CHECK:STDOUT: %InitFromAdaptedGeneric: %InitFromAdaptedGeneric.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Adapt.1 [symbolic] +// CHECK:STDOUT: %require_complete.2c4: = require_complete_type %Adapt.31a [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %InitFromAdaptedSpecific.type: type = fn_type @InitFromAdaptedSpecific [template] // CHECK:STDOUT: %InitFromAdaptedSpecific: %InitFromAdaptedSpecific.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Adapt.2: type = class_type @Adapt, @Adapt(%i32) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Adapt.5d1: type = class_type @Adapt, @Adapt(%i32) [template] +// CHECK:STDOUT: %complete_type.d0d: = complete_type_witness %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -318,16 +318,16 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Adapt.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Adapt.%T.loc4_13.2 (%T) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Adapt.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Adapt.%T.loc4_13.2 (%T) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.27d)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_13.1 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: adapt_decl %T.ref [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %T [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %T [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.27d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Adapt.1 +// CHECK:STDOUT: .Self = constants.%Adapt.31a // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -337,18 +337,18 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc8_27.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_27.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc8: = require_complete_type @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) [symbolic = %require_complete.loc8 (constants.%require_complete.1)] -// CHECK:STDOUT: %Adapt.loc9_23.2: type = class_type @Adapt, @Adapt(%T.loc8_27.2) [symbolic = %Adapt.loc9_23.2 (constants.%Adapt.1)] -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.1) [symbolic = %require_complete.loc9 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc8: = require_complete_type @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) [symbolic = %require_complete.loc8 (constants.%require_complete.db1)] +// CHECK:STDOUT: %Adapt.loc9_23.2: type = class_type @Adapt, @Adapt(%T.loc8_27.2) [symbolic = %Adapt.loc9_23.2 (constants.%Adapt.31a)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.31a) [symbolic = %require_complete.loc9 (constants.%require_complete.2c4)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T)) -> @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = name_ref x, %x // CHECK:STDOUT: %Adapt.ref: %Adapt.type = name_ref Adapt, file.%Adapt.decl [template = constants.%Adapt.generic] // CHECK:STDOUT: %T.ref.loc9_22: type = name_ref T, %T.loc8_27.1 [symbolic = %T.loc8_27.2 (constants.%T)] -// CHECK:STDOUT: %Adapt.loc9_23.1: type = class_type @Adapt, @Adapt(constants.%T) [symbolic = %Adapt.loc9_23.2 (constants.%Adapt.1)] -// CHECK:STDOUT: %.loc9_13.1: @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.1) = as_compatible %x.ref -// CHECK:STDOUT: %.loc9_13.2: @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.1) = converted %x.ref, %.loc9_13.1 +// CHECK:STDOUT: %Adapt.loc9_23.1: type = class_type @Adapt, @Adapt(constants.%T) [symbolic = %Adapt.loc9_23.2 (constants.%Adapt.31a)] +// CHECK:STDOUT: %.loc9_13.1: @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.31a) = as_compatible %x.ref +// CHECK:STDOUT: %.loc9_13.2: @InitFromAdaptedGeneric.%Adapt.loc9_23.2 (%Adapt.31a) = converted %x.ref, %.loc9_13.1 // CHECK:STDOUT: %T.ref.loc9_29: type = name_ref T, %T.loc8_27.1 [symbolic = %T.loc8_27.2 (constants.%T)] // CHECK:STDOUT: %.loc9_26.1: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = as_compatible %.loc9_13.2 // CHECK:STDOUT: %.loc9_26.2: @InitFromAdaptedGeneric.%T.loc8_27.2 (%T) = converted %.loc9_13.2, %.loc9_26.1 @@ -362,9 +362,9 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %Adapt.ref: %Adapt.type = name_ref Adapt, file.%Adapt.decl [template = constants.%Adapt.generic] // CHECK:STDOUT: %int_32.loc13_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Adapt: type = class_type @Adapt, @Adapt(constants.%i32) [template = constants.%Adapt.2] -// CHECK:STDOUT: %.loc13_13.1: %Adapt.2 = as_compatible %x.ref -// CHECK:STDOUT: %.loc13_13.2: %Adapt.2 = converted %x.ref, %.loc13_13.1 +// CHECK:STDOUT: %Adapt: type = class_type @Adapt, @Adapt(constants.%i32) [template = constants.%Adapt.5d1] +// CHECK:STDOUT: %.loc13_13.1: %Adapt.5d1 = as_compatible %x.ref +// CHECK:STDOUT: %.loc13_13.2: %Adapt.5d1 = converted %x.ref, %.loc13_13.1 // CHECK:STDOUT: %int_32.loc13_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_31: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %.loc13_28.1: %i32 = as_compatible %.loc13_13.2 @@ -377,8 +377,8 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.27d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @InitFromAdaptedGeneric(constants.%T) { @@ -393,7 +393,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.d0d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_access.carbon b/toolchain/check/testdata/class/generic/member_access.carbon index 0402bca79648..1ed30e720445 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -55,47 +55,47 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class.1: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Class.elem.1: type = unbound_element_type %Class.1, %T [symbolic] -// CHECK:STDOUT: %Get.type.1: type = fn_type @Get, @Class(%T) [symbolic] -// CHECK:STDOUT: %Get.1: %Get.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class.1 [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %GetAddr.type.1: type = fn_type @GetAddr, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetAddr.1: %GetAddr.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x.1 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Class.1 [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %ptr.2 [symbolic] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %ptr.1 [symbolic] +// CHECK:STDOUT: %Class.2c9: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Class.elem.0a3: type = unbound_element_type %Class.2c9, %T [symbolic] +// CHECK:STDOUT: %Get.type.6c9: type = fn_type @Get, @Class(%T) [symbolic] +// CHECK:STDOUT: %Get.ca7: %Get.type.6c9 = struct_value () [symbolic] +// CHECK:STDOUT: %ptr.53c: type = ptr_type %Class.2c9 [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %GetAddr.type.911: type = fn_type @GetAddr, @Class(%T) [symbolic] +// CHECK:STDOUT: %GetAddr.fdb: %GetAddr.type.911 = struct_value () [symbolic] +// CHECK:STDOUT: %struct_type.x.710: type = struct_type {.x: %T} [symbolic] +// CHECK:STDOUT: %complete_type.60a: = complete_type_witness %struct_type.x.710 [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class.2c9 [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %require_complete.6c6: = require_complete_type %ptr.53c [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Class.2: type = class_type @Class, @Class(%i32) [template] +// CHECK:STDOUT: %Class.d3a: type = class_type @Class, @Class(%i32) [template] // CHECK:STDOUT: %DirectFieldAccess.type: type = fn_type @DirectFieldAccess [template] // CHECK:STDOUT: %DirectFieldAccess: %DirectFieldAccess.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Class.elem.2: type = unbound_element_type %Class.2, %i32 [template] -// CHECK:STDOUT: %Get.type.2: type = fn_type @Get, @Class(%i32) [template] -// CHECK:STDOUT: %Get.2: %Get.type.2 = struct_value () [template] -// CHECK:STDOUT: %GetAddr.type.2: type = fn_type @GetAddr, @Class(%i32) [template] -// CHECK:STDOUT: %GetAddr.2: %GetAddr.type.2 = struct_value () [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Class.elem.0f0: type = unbound_element_type %Class.d3a, %i32 [template] +// CHECK:STDOUT: %Get.type.22a: type = fn_type @Get, @Class(%i32) [template] +// CHECK:STDOUT: %Get.5ee: %Get.type.22a = struct_value () [template] +// CHECK:STDOUT: %GetAddr.type.913: type = fn_type @GetAddr, @Class(%i32) [template] +// CHECK:STDOUT: %GetAddr.07b: %GetAddr.type.913 = struct_value () [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %MethodCall.type: type = fn_type @MethodCall [template] // CHECK:STDOUT: %MethodCall: %MethodCall.type = struct_value () [template] -// CHECK:STDOUT: %ptr.5: type = ptr_type %Class.2 [template] +// CHECK:STDOUT: %ptr.367: type = ptr_type %Class.d3a [template] // CHECK:STDOUT: %AddrMethodCall.type: type = fn_type @AddrMethodCall [template] // CHECK:STDOUT: %AddrMethodCall: %AddrMethodCall.type = struct_value () [template] -// CHECK:STDOUT: %ptr.6: type = ptr_type %i32 [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %ptr.6 [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %ptr.5 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %complete_type.566: = complete_type_witness %ptr.dc3 [template] +// CHECK:STDOUT: %complete_type.576: = complete_type_witness %ptr.367 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -118,60 +118,60 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.loc2_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %DirectFieldAccess.decl: %DirectFieldAccess.type = fn_decl @DirectFieldAccess [template = constants.%DirectFieldAccess] { -// CHECK:STDOUT: %x.patt: %Class.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %Class.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %Class.d3a = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %Class.d3a = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc10_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc10_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %x.param: %Class.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc10: type = splice_block %Class [template = constants.%Class.2] { +// CHECK:STDOUT: %x.param: %Class.d3a = value_param runtime_param0 +// CHECK:STDOUT: %.loc10: type = splice_block %Class [template = constants.%Class.d3a] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %int_32.loc10_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc10_31: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.2] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.d3a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %Class.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %Class.d3a = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MethodCall.decl: %MethodCall.type = fn_decl @MethodCall [template = constants.%MethodCall] { -// CHECK:STDOUT: %x.patt: %Class.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %Class.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %Class.d3a = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %Class.d3a = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc14_33: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc14_33: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %x.param: %Class.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %Class [template = constants.%Class.2] { +// CHECK:STDOUT: %x.param: %Class.d3a = value_param runtime_param0 +// CHECK:STDOUT: %.loc14: type = splice_block %Class [template = constants.%Class.d3a] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %int_32.loc14_24: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc14_24: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.2] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.d3a] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %Class.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %Class.d3a = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AddrMethodCall.decl: %AddrMethodCall.type = fn_decl @AddrMethodCall [template = constants.%AddrMethodCall] { -// CHECK:STDOUT: %p.patt: %ptr.5 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.5 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.367 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.367 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc18_38: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc18_38: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.5 = value_param runtime_param0 -// CHECK:STDOUT: %.loc18: type = splice_block %ptr [template = constants.%ptr.5] { +// CHECK:STDOUT: %p.param: %ptr.367 = value_param runtime_param0 +// CHECK:STDOUT: %.loc18: type = splice_block %ptr [template = constants.%ptr.367] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %int_32.loc18_28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc18_28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.2] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.2 [template = constants.%ptr.5] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%i32) [template = constants.%Class.d3a] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.d3a [template = constants.%ptr.367] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.5 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.367 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -182,57 +182,57 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt.loc2_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc2_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc2_13.2) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.1), @Class.%T.loc2_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc2_13.2) [symbolic = %Get.type (constants.%Get.type.1)] -// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.1) = struct_value () [symbolic = %Get (constants.%Get.1)] -// CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T.loc2_13.2) [symbolic = %GetAddr.type (constants.%GetAddr.type.1)] -// CHECK:STDOUT: %GetAddr: @Class.%GetAddr.type (%GetAddr.type.1) = struct_value () [symbolic = %GetAddr (constants.%GetAddr.1)] -// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc2_13.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.1)] -// CHECK:STDOUT: %complete_type.loc8_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x.1) [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc2_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc2_13.2) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class.2c9), @Class.%T.loc2_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] +// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc2_13.2) [symbolic = %Get.type (constants.%Get.type.6c9)] +// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.6c9) = struct_value () [symbolic = %Get (constants.%Get.ca7)] +// CHECK:STDOUT: %GetAddr.type: type = fn_type @GetAddr, @Class(%T.loc2_13.2) [symbolic = %GetAddr.type (constants.%GetAddr.type.911)] +// CHECK:STDOUT: %GetAddr: @Class.%GetAddr.type (%GetAddr.type.911) = struct_value () [symbolic = %GetAddr (constants.%GetAddr.fdb)] +// CHECK:STDOUT: %struct_type.x: type = struct_type {.x: @Class.%T.loc2_13.2 (%T)} [symbolic = %struct_type.x (constants.%struct_type.x.710)] +// CHECK:STDOUT: %complete_type.loc8_1.2: = complete_type_witness @Class.%struct_type.x (%struct_type.x.710) [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc3: @Class.%Class.elem (%Class.elem.1) = field_decl x, element0 [template] -// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.1) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.1)] { -// CHECK:STDOUT: %self.patt: @Get.%Class (%Class.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @Get.%Class (%Class.1) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %.loc3: @Class.%Class.elem (%Class.elem.0a3) = field_decl x, element0 [template] +// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.6c9) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.ca7)] { +// CHECK:STDOUT: %self.patt: @Get.%Class (%Class.2c9) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @Get.%Class (%Class.2c9) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @Get.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Get.%T (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Get.%Class (%Class.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc5_16.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class.1)] { -// CHECK:STDOUT: %.loc5_16.2: type = specific_constant constants.%Class.1, @Class(constants.%T) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_16.2 [symbolic = %Class (constants.%Class.1)] +// CHECK:STDOUT: %self.param: @Get.%Class (%Class.2c9) = value_param runtime_param0 +// CHECK:STDOUT: %.loc5_16.1: type = splice_block %Self.ref [symbolic = %Class (constants.%Class.2c9)] { +// CHECK:STDOUT: %.loc5_16.2: type = specific_constant constants.%Class.2c9, @Class(constants.%T) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc5_16.2 [symbolic = %Class (constants.%Class.2c9)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Get.%Class (%Class.1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Get.%Class (%Class.2c9) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref @Get.%T (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @Get.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type.1) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr.1)] { -// CHECK:STDOUT: %self.patt: @GetAddr.%ptr.loc7_29.1 (%ptr.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @GetAddr.%ptr.loc7_29.1 (%ptr.1) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %GetAddr.decl: @Class.%GetAddr.type (%GetAddr.type.911) = fn_decl @GetAddr [symbolic = @Class.%GetAddr (constants.%GetAddr.fdb)] { +// CHECK:STDOUT: %self.patt: @GetAddr.%ptr.loc7_29.1 (%ptr.53c) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @GetAddr.%ptr.loc7_29.1 (%ptr.53c) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc7_14: auto = addr_pattern %self.param_patt -// CHECK:STDOUT: %return.patt: @GetAddr.%ptr.loc7_38.1 (%ptr.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @GetAddr.%ptr.loc7_38.1 (%ptr.2) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @GetAddr.%ptr.loc7_38.1 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetAddr.%ptr.loc7_38.1 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc2_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ptr.loc7_38.2: type = ptr_type %T [symbolic = %ptr.loc7_38.1 (constants.%ptr.2)] -// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc7_29.1 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_29: type = splice_block %ptr.loc7_29.2 [symbolic = %ptr.loc7_29.1 (constants.%ptr.1)] { -// CHECK:STDOUT: %.loc7_25: type = specific_constant constants.%Class.1, @Class(constants.%T) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc7_25 [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %ptr.loc7_29.2: type = ptr_type %Class.1 [symbolic = %ptr.loc7_29.1 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc7_38.2: type = ptr_type %T [symbolic = %ptr.loc7_38.1 (constants.%ptr.251)] +// CHECK:STDOUT: %self.param: @GetAddr.%ptr.loc7_29.1 (%ptr.53c) = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_29: type = splice_block %ptr.loc7_29.2 [symbolic = %ptr.loc7_29.1 (constants.%ptr.53c)] { +// CHECK:STDOUT: %.loc7_25: type = specific_constant constants.%Class.2c9, @Class(constants.%T) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc7_25 [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %ptr.loc7_29.2: type = ptr_type %Class.2c9 [symbolic = %ptr.loc7_29.1 (constants.%ptr.53c)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @GetAddr.%ptr.loc7_29.1 (%ptr.1) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc7_38.1 (%ptr.2) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc7_38.1 (%ptr.2) = return_slot %return.param +// CHECK:STDOUT: %self: @GetAddr.%ptr.loc7_29.1 (%ptr.53c) = bind_name self, %self.param +// CHECK:STDOUT: %return.param: ref @GetAddr.%ptr.loc7_38.1 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @GetAddr.%ptr.loc7_38.1 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness %struct_type.x.1 [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness %struct_type.x.710 [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.60a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.1 +// CHECK:STDOUT: .Self = constants.%Class.2c9 // CHECK:STDOUT: .x = %.loc3 // CHECK:STDOUT: .Get = %Get.decl // CHECK:STDOUT: .GetAddr = %GetAddr.decl @@ -242,17 +242,17 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Get(@Class.%T.loc2_13.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.1)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.2c9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc5_14: = require_complete_type @Get.%Class (%Class.1) [symbolic = %require_complete.loc5_14 (constants.%require_complete.2)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Get.%Class (%Class.1), @Get.%T (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] -// CHECK:STDOUT: %require_complete.loc5_42: = require_complete_type @Get.%T (%T) [symbolic = %require_complete.loc5_42 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc5_14: = require_complete_type @Get.%Class (%Class.2c9) [symbolic = %require_complete.loc5_14 (constants.%require_complete.723)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @Get.%Class (%Class.2c9), @Get.%T (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] +// CHECK:STDOUT: %require_complete.loc5_42: = require_complete_type @Get.%T (%T) [symbolic = %require_complete.loc5_42 (constants.%require_complete.db1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Get.%Class (%Class.1)]() -> @Get.%T (%T) { +// CHECK:STDOUT: fn[%self.param_patt: @Get.%Class (%Class.2c9)]() -> @Get.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @Get.%Class (%Class.1) = name_ref self, %self -// CHECK:STDOUT: %x.ref: @Get.%Class.elem (%Class.elem.1) = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] +// CHECK:STDOUT: %self.ref: @Get.%Class (%Class.2c9) = name_ref self, %self +// CHECK:STDOUT: %x.ref: @Get.%Class.elem (%Class.elem.0a3) = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] // CHECK:STDOUT: %.loc5_42.1: ref @Get.%T (%T) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc5_42.2: @Get.%T (%T) = bind_value %.loc5_42.1 // CHECK:STDOUT: return %.loc5_42.2 @@ -261,41 +261,41 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @GetAddr(@Class.%T.loc2_13.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.1)] -// CHECK:STDOUT: %ptr.loc7_29.1: type = ptr_type @GetAddr.%Class (%Class.1) [symbolic = %ptr.loc7_29.1 (constants.%ptr.1)] -// CHECK:STDOUT: %ptr.loc7_38.1: type = ptr_type @GetAddr.%T (%T) [symbolic = %ptr.loc7_38.1 (constants.%ptr.2)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class.2c9)] +// CHECK:STDOUT: %ptr.loc7_29.1: type = ptr_type @GetAddr.%Class (%Class.2c9) [symbolic = %ptr.loc7_29.1 (constants.%ptr.53c)] +// CHECK:STDOUT: %ptr.loc7_38.1: type = ptr_type @GetAddr.%T (%T) [symbolic = %ptr.loc7_38.1 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_34: = require_complete_type @GetAddr.%ptr.loc7_38.1 (%ptr.2) [symbolic = %require_complete.loc7_34 (constants.%require_complete.3)] -// CHECK:STDOUT: %require_complete.loc7_23: = require_complete_type @GetAddr.%ptr.loc7_29.1 (%ptr.1) [symbolic = %require_complete.loc7_23 (constants.%require_complete.4)] -// CHECK:STDOUT: %require_complete.loc7_54: = require_complete_type @GetAddr.%Class (%Class.1) [symbolic = %require_complete.loc7_54 (constants.%require_complete.2)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type @GetAddr.%Class (%Class.1), @GetAddr.%T (%T) [symbolic = %Class.elem (constants.%Class.elem.1)] +// CHECK:STDOUT: %require_complete.loc7_34: = require_complete_type @GetAddr.%ptr.loc7_38.1 (%ptr.251) [symbolic = %require_complete.loc7_34 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc7_23: = require_complete_type @GetAddr.%ptr.loc7_29.1 (%ptr.53c) [symbolic = %require_complete.loc7_23 (constants.%require_complete.6c6)] +// CHECK:STDOUT: %require_complete.loc7_54: = require_complete_type @GetAddr.%Class (%Class.2c9) [symbolic = %require_complete.loc7_54 (constants.%require_complete.723)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type @GetAddr.%Class (%Class.2c9), @GetAddr.%T (%T) [symbolic = %Class.elem (constants.%Class.elem.0a3)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[addr %self.param_patt: @GetAddr.%ptr.loc7_29.1 (%ptr.1)]() -> @GetAddr.%ptr.loc7_38.1 (%ptr.2) { +// CHECK:STDOUT: fn[addr %self.param_patt: @GetAddr.%ptr.loc7_29.1 (%ptr.53c)]() -> @GetAddr.%ptr.loc7_38.1 (%ptr.251) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc7_29.1 (%ptr.1) = name_ref self, %self -// CHECK:STDOUT: %.loc7_54.1: ref @GetAddr.%Class (%Class.1) = deref %self.ref -// CHECK:STDOUT: %x.ref: @GetAddr.%Class.elem (%Class.elem.1) = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] +// CHECK:STDOUT: %self.ref: @GetAddr.%ptr.loc7_29.1 (%ptr.53c) = name_ref self, %self +// CHECK:STDOUT: %.loc7_54.1: ref @GetAddr.%Class (%Class.2c9) = deref %self.ref +// CHECK:STDOUT: %x.ref: @GetAddr.%Class.elem (%Class.elem.0a3) = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] // CHECK:STDOUT: %.loc7_54.2: ref @GetAddr.%T (%T) = class_element_access %.loc7_54.1, element0 -// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc7_38.1 (%ptr.2) = addr_of %.loc7_54.2 +// CHECK:STDOUT: %addr: @GetAddr.%ptr.loc7_38.1 (%ptr.251) = addr_of %.loc7_54.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @DirectFieldAccess(%x.param_patt: %Class.2) -> %i32 { +// CHECK:STDOUT: fn @DirectFieldAccess(%x.param_patt: %Class.d3a) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref.loc11_10: %Class.2 = name_ref x, %x -// CHECK:STDOUT: %x.ref.loc11_11: %Class.elem.2 = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] +// CHECK:STDOUT: %x.ref.loc11_10: %Class.d3a = name_ref x, %x +// CHECK:STDOUT: %x.ref.loc11_11: %Class.elem.0f0 = name_ref x, @Class.%.loc3 [template = @Class.%.loc3] // CHECK:STDOUT: %.loc11_11.1: ref %i32 = class_element_access %x.ref.loc11_10, element0 // CHECK:STDOUT: %.loc11_11.2: %i32 = bind_value %.loc11_11.1 // CHECK:STDOUT: return %.loc11_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @MethodCall(%x.param_patt: %Class.2) -> %i32 { +// CHECK:STDOUT: fn @MethodCall(%x.param_patt: %Class.d3a) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: %Class.2 = name_ref x, %x -// CHECK:STDOUT: %.loc15_11: %Get.type.2 = specific_constant @Class.%Get.decl, @Class(constants.%i32) [template = constants.%Get.2] -// CHECK:STDOUT: %Get.ref: %Get.type.2 = name_ref Get, %.loc15_11 [template = constants.%Get.2] +// CHECK:STDOUT: %x.ref: %Class.d3a = name_ref x, %x +// CHECK:STDOUT: %.loc15_11: %Get.type.22a = specific_constant @Class.%Get.decl, @Class(constants.%i32) [template = constants.%Get.5ee] +// CHECK:STDOUT: %Get.ref: %Get.type.22a = name_ref Get, %.loc15_11 [template = constants.%Get.5ee] // CHECK:STDOUT: %Get.bound: = bound_method %x.ref, %Get.ref // CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.bound, @Get(constants.%i32) // CHECK:STDOUT: %Get.call: init %i32 = call %Get.specific_fn(%x.ref) @@ -304,18 +304,18 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: return %.loc15_17.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AddrMethodCall(%p.param_patt: %ptr.5) -> %i32 { +// CHECK:STDOUT: fn @AddrMethodCall(%p.param_patt: %ptr.367) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.5 = name_ref p, %p -// CHECK:STDOUT: %.loc19_12.1: ref %Class.2 = deref %p.ref -// CHECK:STDOUT: %.loc19_12.2: %GetAddr.type.2 = specific_constant @Class.%GetAddr.decl, @Class(constants.%i32) [template = constants.%GetAddr.2] -// CHECK:STDOUT: %GetAddr.ref: %GetAddr.type.2 = name_ref GetAddr, %.loc19_12.2 [template = constants.%GetAddr.2] +// CHECK:STDOUT: %p.ref: %ptr.367 = name_ref p, %p +// CHECK:STDOUT: %.loc19_12.1: ref %Class.d3a = deref %p.ref +// CHECK:STDOUT: %.loc19_12.2: %GetAddr.type.913 = specific_constant @Class.%GetAddr.decl, @Class(constants.%i32) [template = constants.%GetAddr.07b] +// CHECK:STDOUT: %GetAddr.ref: %GetAddr.type.913 = name_ref GetAddr, %.loc19_12.2 [template = constants.%GetAddr.07b] // CHECK:STDOUT: %GetAddr.bound: = bound_method %.loc19_12.1, %GetAddr.ref // CHECK:STDOUT: %GetAddr.specific_fn: = specific_function %GetAddr.bound, @GetAddr(constants.%i32) -// CHECK:STDOUT: %addr: %ptr.5 = addr_of %.loc19_12.1 -// CHECK:STDOUT: %GetAddr.call: init %ptr.6 = call %GetAddr.specific_fn(%addr) -// CHECK:STDOUT: %.loc19_22.1: %ptr.6 = value_of_initializer %GetAddr.call -// CHECK:STDOUT: %.loc19_22.2: %ptr.6 = converted %GetAddr.call, %.loc19_22.1 +// CHECK:STDOUT: %addr: %ptr.367 = addr_of %.loc19_12.1 +// CHECK:STDOUT: %GetAddr.call: init %ptr.dc3 = call %GetAddr.specific_fn(%addr) +// CHECK:STDOUT: %.loc19_22.1: %ptr.dc3 = value_of_initializer %GetAddr.call +// CHECK:STDOUT: %.loc19_22.2: %ptr.dc3 = converted %GetAddr.call, %.loc19_22.1 // CHECK:STDOUT: %.loc19_10.1: ref %i32 = deref %.loc19_22.2 // CHECK:STDOUT: %.loc19_10.2: %i32 = bind_value %.loc19_10.1 // CHECK:STDOUT: return %.loc19_10.2 @@ -326,29 +326,29 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt.loc2_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Class => constants.%Class.1 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.1 -// CHECK:STDOUT: %Get.type => constants.%Get.type.1 -// CHECK:STDOUT: %Get => constants.%Get.1 -// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.1 -// CHECK:STDOUT: %GetAddr => constants.%GetAddr.1 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.1 -// CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Class => constants.%Class.2c9 +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0a3 +// CHECK:STDOUT: %Get.type => constants.%Get.type.6c9 +// CHECK:STDOUT: %Get => constants.%Get.ca7 +// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.911 +// CHECK:STDOUT: %GetAddr => constants.%GetAddr.fdb +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.710 +// CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.60a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%T) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Class => constants.%Class.1 +// CHECK:STDOUT: %Class => constants.%Class.2c9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(@Get.%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @GetAddr(constants.%T) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %Class => constants.%Class.1 -// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.1 -// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.2 +// CHECK:STDOUT: %Class => constants.%Class.2c9 +// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.53c +// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(@GetAddr.%T) {} @@ -360,38 +360,38 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %T.patt.loc2_13.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %Class => constants.%Class.2 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.2 -// CHECK:STDOUT: %Get.type => constants.%Get.type.2 -// CHECK:STDOUT: %Get => constants.%Get.2 -// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.2 -// CHECK:STDOUT: %GetAddr => constants.%GetAddr.2 -// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.2 -// CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Class => constants.%Class.d3a +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0f0 +// CHECK:STDOUT: %Get.type => constants.%Get.type.22a +// CHECK:STDOUT: %Get => constants.%Get.5ee +// CHECK:STDOUT: %GetAddr.type => constants.%GetAddr.type.913 +// CHECK:STDOUT: %GetAddr => constants.%GetAddr.07b +// CHECK:STDOUT: %struct_type.x => constants.%struct_type.x.b74 +// CHECK:STDOUT: %complete_type.loc8_1.2 => constants.%complete_type.f6d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 -// CHECK:STDOUT: %Class => constants.%Class.2 +// CHECK:STDOUT: %Class => constants.%Class.d3a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc5_14 => constants.%complete_type.4 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.2 -// CHECK:STDOUT: %require_complete.loc5_42 => constants.%complete_type.3 +// CHECK:STDOUT: %require_complete.loc5_14 => constants.%complete_type.f6d +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0f0 +// CHECK:STDOUT: %require_complete.loc5_42 => constants.%complete_type.f8a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GetAddr(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 -// CHECK:STDOUT: %Class => constants.%Class.2 -// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.5 -// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.6 +// CHECK:STDOUT: %Class => constants.%Class.d3a +// CHECK:STDOUT: %ptr.loc7_29.1 => constants.%ptr.367 +// CHECK:STDOUT: %ptr.loc7_38.1 => constants.%ptr.dc3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_34 => constants.%complete_type.5 -// CHECK:STDOUT: %require_complete.loc7_23 => constants.%complete_type.6 -// CHECK:STDOUT: %require_complete.loc7_54 => constants.%complete_type.4 -// CHECK:STDOUT: %Class.elem => constants.%Class.elem.2 +// CHECK:STDOUT: %require_complete.loc7_34 => constants.%complete_type.566 +// CHECK:STDOUT: %require_complete.loc7_23 => constants.%complete_type.576 +// CHECK:STDOUT: %require_complete.loc7_54 => constants.%complete_type.f6d +// CHECK:STDOUT: %Class.elem => constants.%Class.elem.0f0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_static_member_fn_call.carbon @@ -406,18 +406,18 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Make: %Make.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class [symbolic] // CHECK:STDOUT: %Class.val: %Class = struct_value () [symbolic] // CHECK:STDOUT: %StaticMemberFunctionCall.type: type = fn_type @StaticMemberFunctionCall [template] // CHECK:STDOUT: %StaticMemberFunctionCall: %StaticMemberFunctionCall.type = struct_value () [template] // CHECK:STDOUT: %Make.specific_fn: = specific_function %Make, @Make(%T) [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%Class)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ImplicitAs.type.3 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.4b7: type = facet_type <@ImplicitAs, @ImplicitAs(%Class)> [symbolic] +// CHECK:STDOUT: %require_complete.3c3: = require_complete_type %ImplicitAs.type.4b7 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -486,7 +486,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.loc5_23.1: type = class_type @Class, @Class(%T) [symbolic = %Class.loc5_23.1 (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%Class.loc5_23.1 (%Class) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%Class.loc5_23.1 (%Class) [symbolic = %require_complete (constants.%require_complete.723)] // CHECK:STDOUT: %Class.val: @Make.%Class.loc5_23.1 (%Class) = struct_value () [symbolic = %Class.val (constants.%Class.val)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param_patt: @Make.%Class.loc5_23.1 (%Class) { @@ -504,12 +504,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.loc8_49.2: type = class_type @Class, @Class(%T.loc8_29.2) [symbolic = %Class.loc8_49.2 (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc15_18: = require_complete_type @StaticMemberFunctionCall.%Class.loc8_49.2 (%Class) [symbolic = %require_complete.loc15_18 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc15_18: = require_complete_type @StaticMemberFunctionCall.%Class.loc8_49.2 (%Class) [symbolic = %require_complete.loc15_18 (constants.%require_complete.723)] // CHECK:STDOUT: %Make.type: type = fn_type @Make, @Class(%T.loc8_29.2) [symbolic = %Make.type (constants.%Make.type)] // CHECK:STDOUT: %Make: @StaticMemberFunctionCall.%Make.type (%Make.type) = struct_value () [symbolic = %Make (constants.%Make)] // CHECK:STDOUT: %Make.specific_fn.loc15_18.2: = specific_function %Make, @Make(%T.loc8_29.2) [symbolic = %Make.specific_fn.loc15_18.2 (constants.%Make.specific_fn)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Class.loc8_49.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.3)] -// CHECK:STDOUT: %require_complete.loc15_25: = require_complete_type @StaticMemberFunctionCall.%ImplicitAs.type (%ImplicitAs.type.3) [symbolic = %require_complete.loc15_25 (constants.%require_complete.2)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%Class.loc8_49.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.4b7)] +// CHECK:STDOUT: %require_complete.loc15_25: = require_complete_type @StaticMemberFunctionCall.%ImplicitAs.type (%ImplicitAs.type.4b7) [symbolic = %require_complete.loc15_25 (constants.%require_complete.3c3)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type) -> %return.param_patt: @StaticMemberFunctionCall.%Class.loc8_49.2 (%Class) { // CHECK:STDOUT: !entry: @@ -540,7 +540,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: %Class.loc5_23.1 => constants.%Class // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.723 // CHECK:STDOUT: %Class.val => constants.%Class.val // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_inline.carbon b/toolchain/check/testdata/class/generic/member_inline.carbon index 70568599af86..1959cea9ade1 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -50,11 +50,11 @@ class C(T:! type) { // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T) [symbolic] // CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -88,7 +88,7 @@ class C(T:! type) { // CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] // CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T.loc4_13.2) [symbolic = %G.type (constants.%G.type)] // CHECK:STDOUT: %G: @Class.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.2) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.loc4_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.loc4_13.2 (%T)} [symbolic = %struct_type.n (constants.%struct_type.n)] @@ -140,7 +140,7 @@ class C(T:! type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%T (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%n.param_patt: @F.%T (%T)) -> @F.%T (%T) { // CHECK:STDOUT: !entry: @@ -154,9 +154,9 @@ class C(T:! type) { // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @G.%Class (%Class) [symbolic = %require_complete.loc9 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @G.%Class (%Class) [symbolic = %require_complete.loc9 (constants.%require_complete.723)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @G.%Class (%Class), @G.%T (%T) [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @G.%T (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @G.%T (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @G.%Class (%Class)]() -> @G.%T (%T) { // CHECK:STDOUT: !entry: @@ -177,7 +177,7 @@ class C(T:! type) { // CHECK:STDOUT: %F => constants.%F // CHECK:STDOUT: %G.type => constants.%G.type // CHECK:STDOUT: %G => constants.%G -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n diff --git a/toolchain/check/testdata/class/generic/member_lookup.carbon b/toolchain/check/testdata/class/generic/member_lookup.carbon index a526c11a87b0..2b2fcad9adf1 100644 --- a/toolchain/check/testdata/class/generic/member_lookup.carbon +++ b/toolchain/check/testdata/class/generic/member_lookup.carbon @@ -76,44 +76,44 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Base.type: type = generic_class_type @Base [template] // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [template] -// CHECK:STDOUT: %Base.1: type = class_type @Base, @Base(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Base.elem.1: type = unbound_element_type %Base.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.b.1: type = struct_type {.b: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.b.1 [symbolic] +// CHECK:STDOUT: %Base.0cc: type = class_type @Base, @Base(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Base.elem.bb6: type = unbound_element_type %Base.0cc, %T [symbolic] +// CHECK:STDOUT: %struct_type.b.6c4: type = struct_type {.b: %T} [symbolic] +// CHECK:STDOUT: %complete_type.85b: = complete_type_witness %struct_type.b.6c4 [symbolic] // CHECK:STDOUT: %Derived.type: type = generic_class_type @Derived [template] // CHECK:STDOUT: %Derived.generic: %Derived.type = struct_value () [template] -// CHECK:STDOUT: %Derived.1: type = class_type @Derived, @Derived(%T) [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Base.1 [symbolic] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived.1, %Base.1 [symbolic] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.base.d.1: type = struct_type {.base: %Base.1, .d: %T} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.d.1 [symbolic] +// CHECK:STDOUT: %Derived.336: type = class_type @Derived, @Derived(%T) [symbolic] +// CHECK:STDOUT: %require_complete.04f: = require_complete_type %Base.0cc [symbolic] +// CHECK:STDOUT: %Derived.elem.174: type = unbound_element_type %Derived.336, %Base.0cc [symbolic] +// CHECK:STDOUT: %Derived.elem.5ad: type = unbound_element_type %Derived.336, %T [symbolic] +// CHECK:STDOUT: %struct_type.base.d.fa7: type = struct_type {.base: %Base.0cc, .d: %T} [symbolic] +// CHECK:STDOUT: %complete_type.c70: = complete_type_witness %struct_type.base.d.fa7 [symbolic] // CHECK:STDOUT: %AccessDerived.type: type = fn_type @AccessDerived [template] // CHECK:STDOUT: %AccessDerived: %AccessDerived.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %Derived.1 [symbolic] +// CHECK:STDOUT: %require_complete.45e: = require_complete_type %Derived.336 [symbolic] // CHECK:STDOUT: %AccessBase.type: type = fn_type @AccessBase [template] // CHECK:STDOUT: %AccessBase: %AccessBase.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Derived.2: type = class_type @Derived, @Derived(%i32) [template] +// CHECK:STDOUT: %Derived.422: type = class_type @Derived, @Derived(%i32) [template] // CHECK:STDOUT: %AccessConcrete.type: type = fn_type @AccessConcrete [template] // CHECK:STDOUT: %AccessConcrete: %AccessConcrete.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Base.2: type = class_type @Base, @Base(%i32) [template] -// CHECK:STDOUT: %Base.elem.2: type = unbound_element_type %Base.2, %i32 [template] -// CHECK:STDOUT: %struct_type.b.2: type = struct_type {.b: %i32} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.b.2 [template] -// CHECK:STDOUT: %Derived.elem.3: type = unbound_element_type %Derived.2, %Base.2 [template] -// CHECK:STDOUT: %Derived.elem.4: type = unbound_element_type %Derived.2, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.3: type = struct_type {.base: %Base.2, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %struct_type.base.d.3 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Base.3b2: type = class_type @Base, @Base(%i32) [template] +// CHECK:STDOUT: %Base.elem.9d1: type = unbound_element_type %Base.3b2, %i32 [template] +// CHECK:STDOUT: %struct_type.b.fc0: type = struct_type {.b: %i32} [template] +// CHECK:STDOUT: %complete_type.d62: = complete_type_witness %struct_type.b.fc0 [template] +// CHECK:STDOUT: %Derived.elem.508: type = unbound_element_type %Derived.422, %Base.3b2 [template] +// CHECK:STDOUT: %Derived.elem.a04: type = unbound_element_type %Derived.422, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.244: type = struct_type {.base: %Base.3b2, .d: %i32} [template] +// CHECK:STDOUT: %complete_type.3ad: = complete_type_witness %struct_type.base.d.244 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -146,61 +146,61 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %AccessDerived.decl: %AccessDerived.type = fn_decl @AccessDerived [template = constants.%AccessDerived] { // CHECK:STDOUT: %T.patt.loc13_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_18.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_18.1, runtime_param [symbolic = %T.patt.loc13_18.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.336) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.336) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @AccessDerived.%T.loc13_18.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessDerived.%T.loc13_18.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_46: type = name_ref T, %T.loc13_18.1 [symbolic = %T.loc13_18.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc13_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_18.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @AccessDerived.%Derived.loc13_40.2 (%Derived.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc13: type = splice_block %Derived.loc13_40.1 [symbolic = %Derived.loc13_40.2 (constants.%Derived.1)] { +// CHECK:STDOUT: %x.param: @AccessDerived.%Derived.loc13_40.2 (%Derived.336) = value_param runtime_param0 +// CHECK:STDOUT: %.loc13: type = splice_block %Derived.loc13_40.1 [symbolic = %Derived.loc13_40.2 (constants.%Derived.336)] { // CHECK:STDOUT: %Derived.ref: %Derived.type = name_ref Derived, file.%Derived.decl [template = constants.%Derived.generic] // CHECK:STDOUT: %T.ref.loc13_39: type = name_ref T, %T.loc13_18.1 [symbolic = %T.loc13_18.2 (constants.%T)] -// CHECK:STDOUT: %Derived.loc13_40.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc13_40.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc13_40.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc13_40.2 (constants.%Derived.336)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @AccessDerived.%Derived.loc13_40.2 (%Derived.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @AccessDerived.%Derived.loc13_40.2 (%Derived.336) = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref @AccessDerived.%T.loc13_18.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @AccessDerived.%T.loc13_18.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessBase.decl: %AccessBase.type = fn_decl @AccessBase [template = constants.%AccessBase] { // CHECK:STDOUT: %T.patt.loc17_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc17_15.1, runtime_param [symbolic = %T.patt.loc17_15.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @AccessBase.%Derived.loc17_37.2 (%Derived.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @AccessBase.%Derived.loc17_37.2 (%Derived.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @AccessBase.%Derived.loc17_37.2 (%Derived.336) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @AccessBase.%Derived.loc17_37.2 (%Derived.336) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @AccessBase.%T.loc17_15.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessBase.%T.loc17_15.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc17_43: type = name_ref T, %T.loc17_15.1 [symbolic = %T.loc17_15.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc17_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc17_15.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @AccessBase.%Derived.loc17_37.2 (%Derived.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc17: type = splice_block %Derived.loc17_37.1 [symbolic = %Derived.loc17_37.2 (constants.%Derived.1)] { +// CHECK:STDOUT: %x.param: @AccessBase.%Derived.loc17_37.2 (%Derived.336) = value_param runtime_param0 +// CHECK:STDOUT: %.loc17: type = splice_block %Derived.loc17_37.1 [symbolic = %Derived.loc17_37.2 (constants.%Derived.336)] { // CHECK:STDOUT: %Derived.ref: %Derived.type = name_ref Derived, file.%Derived.decl [template = constants.%Derived.generic] // CHECK:STDOUT: %T.ref.loc17_36: type = name_ref T, %T.loc17_15.1 [symbolic = %T.loc17_15.2 (constants.%T)] -// CHECK:STDOUT: %Derived.loc17_37.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc17_37.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc17_37.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc17_37.2 (constants.%Derived.336)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @AccessBase.%Derived.loc17_37.2 (%Derived.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @AccessBase.%Derived.loc17_37.2 (%Derived.336) = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref @AccessBase.%T.loc17_15.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @AccessBase.%T.loc17_15.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessConcrete.decl: %AccessConcrete.type = fn_decl @AccessConcrete [template = constants.%AccessConcrete] { -// CHECK:STDOUT: %x.patt: %Derived.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %Derived.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %Derived.422 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %Derived.422 = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc21_39: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_39: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %x.param: %Derived.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %Derived [template = constants.%Derived.2] { +// CHECK:STDOUT: %x.param: %Derived.422 = value_param runtime_param0 +// CHECK:STDOUT: %.loc21: type = splice_block %Derived [template = constants.%Derived.422] { // CHECK:STDOUT: %Derived.ref: %Derived.type = name_ref Derived, file.%Derived.decl [template = constants.%Derived.generic] // CHECK:STDOUT: %int_32.loc21_30: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_30: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(constants.%i32) [template = constants.%Derived.2] +// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(constants.%i32) [template = constants.%Derived.422] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %Derived.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %Derived.422 = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -211,18 +211,18 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.1), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.1)] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.b (constants.%struct_type.b.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.b (%struct_type.b.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.0cc)] +// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.0cc), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.bb6)] +// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.b (constants.%struct_type.b.6c4)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.b (%struct_type.b.6c4) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.85b)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.1) = field_decl b, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.bb6) = field_decl b, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.6c4 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.85b)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Base.1 +// CHECK:STDOUT: .Self = constants.%Base.0cc // CHECK:STDOUT: .b = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -233,25 +233,25 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2: type = class_type @Base, @Base(%T.loc8_15.2) [symbolic = %Base.loc9_22.2 (constants.%Base.1)] -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @Derived.%Base.loc9_22.2 (%Base.1) [symbolic = %require_complete.loc9 (constants.%require_complete.2)] -// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc8_15.2) [symbolic = %Derived (constants.%Derived.1)] -// CHECK:STDOUT: %Derived.elem.loc9: type = unbound_element_type @Derived.%Derived (%Derived.1), @Derived.%Base.loc9_22.2 (%Base.1) [symbolic = %Derived.elem.loc9 (constants.%Derived.elem.1)] -// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @Derived.%T.loc8_15.2 (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.1)] -// CHECK:STDOUT: %Derived.elem.loc10: type = unbound_element_type @Derived.%Derived (%Derived.1), @Derived.%T.loc8_15.2 (%T) [symbolic = %Derived.elem.loc10 (constants.%Derived.elem.2)] -// CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: @Derived.%Base.loc9_22.2 (%Base.1), .d: @Derived.%T.loc8_15.2 (%T)} [symbolic = %struct_type.base.d (constants.%struct_type.base.d.1)] -// CHECK:STDOUT: %complete_type.loc11_1.2: = complete_type_witness @Derived.%struct_type.base.d (%struct_type.base.d.1) [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %Base.loc9_22.2: type = class_type @Base, @Base(%T.loc8_15.2) [symbolic = %Base.loc9_22.2 (constants.%Base.0cc)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @Derived.%Base.loc9_22.2 (%Base.0cc) [symbolic = %require_complete.loc9 (constants.%require_complete.04f)] +// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc8_15.2) [symbolic = %Derived (constants.%Derived.336)] +// CHECK:STDOUT: %Derived.elem.loc9: type = unbound_element_type @Derived.%Derived (%Derived.336), @Derived.%Base.loc9_22.2 (%Base.0cc) [symbolic = %Derived.elem.loc9 (constants.%Derived.elem.174)] +// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @Derived.%T.loc8_15.2 (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.db1)] +// CHECK:STDOUT: %Derived.elem.loc10: type = unbound_element_type @Derived.%Derived (%Derived.336), @Derived.%T.loc8_15.2 (%T) [symbolic = %Derived.elem.loc10 (constants.%Derived.elem.5ad)] +// CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: @Derived.%Base.loc9_22.2 (%Base.0cc), .d: @Derived.%T.loc8_15.2 (%T)} [symbolic = %struct_type.base.d (constants.%struct_type.base.d.fa7)] +// CHECK:STDOUT: %complete_type.loc11_1.2: = complete_type_witness @Derived.%struct_type.base.d (%struct_type.base.d.fa7) [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.c70)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Base.ref: %Base.type = name_ref Base, file.%Base.decl [template = constants.%Base.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.1 [symbolic = %T.loc8_15.2 (constants.%T)] -// CHECK:STDOUT: %Base.loc9_22.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc9_22.2 (constants.%Base.1)] -// CHECK:STDOUT: %.loc9: @Derived.%Derived.elem.loc9 (%Derived.elem.1) = base_decl %Base.loc9_22.1, element0 [template] -// CHECK:STDOUT: %.loc10: @Derived.%Derived.elem.loc10 (%Derived.elem.2) = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.1 [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %Base.loc9_22.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc9_22.2 (constants.%Base.0cc)] +// CHECK:STDOUT: %.loc9: @Derived.%Derived.elem.loc9 (%Derived.elem.174) = base_decl %Base.loc9_22.1, element0 [template] +// CHECK:STDOUT: %.loc10: @Derived.%Derived.elem.loc10 (%Derived.elem.5ad) = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.fa7 [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.c70)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Derived.1 +// CHECK:STDOUT: .Self = constants.%Derived.336 // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .d = %.loc10 // CHECK:STDOUT: extend %Base.loc9_22.1 @@ -262,17 +262,17 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: generic fn @AccessDerived(%T.loc13_18.1: type) { // CHECK:STDOUT: %T.loc13_18.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc13_18.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc13_18.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_18.2 (constants.%T.patt)] -// CHECK:STDOUT: %Derived.loc13_40.2: type = class_type @Derived, @Derived(%T.loc13_18.2) [symbolic = %Derived.loc13_40.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc13_40.2: type = class_type @Derived, @Derived(%T.loc13_18.2) [symbolic = %Derived.loc13_40.2 (constants.%Derived.336)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @AccessDerived.%Derived.loc13_40.2 (%Derived.1) [symbolic = %require_complete.loc13 (constants.%require_complete.3)] -// CHECK:STDOUT: %Derived.elem: type = unbound_element_type @AccessDerived.%Derived.loc13_40.2 (%Derived.1), @AccessDerived.%T.loc13_18.2 (%T) [symbolic = %Derived.elem (constants.%Derived.elem.2)] -// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @AccessDerived.%T.loc13_18.2 (%T) [symbolic = %require_complete.loc14 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @AccessDerived.%Derived.loc13_40.2 (%Derived.336) [symbolic = %require_complete.loc13 (constants.%require_complete.45e)] +// CHECK:STDOUT: %Derived.elem: type = unbound_element_type @AccessDerived.%Derived.loc13_40.2 (%Derived.336), @AccessDerived.%T.loc13_18.2 (%T) [symbolic = %Derived.elem (constants.%Derived.elem.5ad)] +// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @AccessDerived.%T.loc13_18.2 (%T) [symbolic = %require_complete.loc14 (constants.%require_complete.db1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.1)) -> @AccessDerived.%T.loc13_18.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessDerived.%Derived.loc13_40.2 (%Derived.336)) -> @AccessDerived.%T.loc13_18.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @AccessDerived.%Derived.loc13_40.2 (%Derived.1) = name_ref x, %x -// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.2) = name_ref d, @Derived.%.loc10 [template = @Derived.%.loc10] +// CHECK:STDOUT: %x.ref: @AccessDerived.%Derived.loc13_40.2 (%Derived.336) = name_ref x, %x +// CHECK:STDOUT: %d.ref: @AccessDerived.%Derived.elem (%Derived.elem.5ad) = name_ref d, @Derived.%.loc10 [template = @Derived.%.loc10] // CHECK:STDOUT: %.loc14_11.1: ref @AccessDerived.%T.loc13_18.2 (%T) = class_element_access %x.ref, element1 // CHECK:STDOUT: %.loc14_11.2: @AccessDerived.%T.loc13_18.2 (%T) = bind_value %.loc14_11.1 // CHECK:STDOUT: return %.loc14_11.2 @@ -282,33 +282,33 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: generic fn @AccessBase(%T.loc17_15.1: type) { // CHECK:STDOUT: %T.loc17_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_15.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc17_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_15.2 (constants.%T.patt)] -// CHECK:STDOUT: %Derived.loc17_37.2: type = class_type @Derived, @Derived(%T.loc17_15.2) [symbolic = %Derived.loc17_37.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc17_37.2: type = class_type @Derived, @Derived(%T.loc17_15.2) [symbolic = %Derived.loc17_37.2 (constants.%Derived.336)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @AccessBase.%Derived.loc17_37.2 (%Derived.1) [symbolic = %require_complete.loc17 (constants.%require_complete.3)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc17_15.2) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %require_complete.loc18_11: = require_complete_type @AccessBase.%Base (%Base.1) [symbolic = %require_complete.loc18_11 (constants.%require_complete.2)] -// CHECK:STDOUT: %Base.elem: type = unbound_element_type @AccessBase.%Base (%Base.1), @AccessBase.%T.loc17_15.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.1)] -// CHECK:STDOUT: %require_complete.loc18_13: = require_complete_type @AccessBase.%T.loc17_15.2 (%T) [symbolic = %require_complete.loc18_13 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @AccessBase.%Derived.loc17_37.2 (%Derived.336) [symbolic = %require_complete.loc17 (constants.%require_complete.45e)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc17_15.2) [symbolic = %Base (constants.%Base.0cc)] +// CHECK:STDOUT: %require_complete.loc18_11: = require_complete_type @AccessBase.%Base (%Base.0cc) [symbolic = %require_complete.loc18_11 (constants.%require_complete.04f)] +// CHECK:STDOUT: %Base.elem: type = unbound_element_type @AccessBase.%Base (%Base.0cc), @AccessBase.%T.loc17_15.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.bb6)] +// CHECK:STDOUT: %require_complete.loc18_13: = require_complete_type @AccessBase.%T.loc17_15.2 (%T) [symbolic = %require_complete.loc18_13 (constants.%require_complete.db1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessBase.%Derived.loc17_37.2 (%Derived.1)) -> @AccessBase.%T.loc17_15.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessBase.%Derived.loc17_37.2 (%Derived.336)) -> @AccessBase.%T.loc17_15.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @AccessBase.%Derived.loc17_37.2 (%Derived.1) = name_ref x, %x -// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.1) = name_ref b, @Base.%.loc5 [template = @Base.%.loc5] -// CHECK:STDOUT: %.loc18_11.1: ref @AccessBase.%Base (%Base.1) = class_element_access %x.ref, element0 -// CHECK:STDOUT: %.loc18_11.2: ref @AccessBase.%Base (%Base.1) = converted %x.ref, %.loc18_11.1 +// CHECK:STDOUT: %x.ref: @AccessBase.%Derived.loc17_37.2 (%Derived.336) = name_ref x, %x +// CHECK:STDOUT: %b.ref: @AccessBase.%Base.elem (%Base.elem.bb6) = name_ref b, @Base.%.loc5 [template = @Base.%.loc5] +// CHECK:STDOUT: %.loc18_11.1: ref @AccessBase.%Base (%Base.0cc) = class_element_access %x.ref, element0 +// CHECK:STDOUT: %.loc18_11.2: ref @AccessBase.%Base (%Base.0cc) = converted %x.ref, %.loc18_11.1 // CHECK:STDOUT: %.loc18_11.3: ref @AccessBase.%T.loc17_15.2 (%T) = class_element_access %.loc18_11.2, element0 // CHECK:STDOUT: %.loc18_11.4: @AccessBase.%T.loc17_15.2 (%T) = bind_value %.loc18_11.3 // CHECK:STDOUT: return %.loc18_11.4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessConcrete(%x.param_patt: %Derived.2) -> %i32 { +// CHECK:STDOUT: fn @AccessConcrete(%x.param_patt: %Derived.422) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: %Derived.2 = name_ref x, %x -// CHECK:STDOUT: %b.ref: %Base.elem.2 = name_ref b, @Base.%.loc5 [template = @Base.%.loc5] -// CHECK:STDOUT: %.loc22_11.1: ref %Base.2 = class_element_access %x.ref, element0 -// CHECK:STDOUT: %.loc22_11.2: ref %Base.2 = converted %x.ref, %.loc22_11.1 +// CHECK:STDOUT: %x.ref: %Derived.422 = name_ref x, %x +// CHECK:STDOUT: %b.ref: %Base.elem.9d1 = name_ref b, @Base.%.loc5 [template = @Base.%.loc5] +// CHECK:STDOUT: %.loc22_11.1: ref %Base.3b2 = class_element_access %x.ref, element0 +// CHECK:STDOUT: %.loc22_11.2: ref %Base.3b2 = converted %x.ref, %.loc22_11.1 // CHECK:STDOUT: %.loc22_11.3: ref %i32 = class_element_access %.loc22_11.2, element0 // CHECK:STDOUT: %.loc22_11.4: %i32 = bind_value %.loc22_11.3 // CHECK:STDOUT: return %.loc22_11.4 @@ -319,11 +319,11 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Base => constants.%Base.1 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.1 -// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.1 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Base => constants.%Base.0cc +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.bb6 +// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.6c4 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.85b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(%T.loc4_17.2) {} @@ -333,14 +333,14 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.1 -// CHECK:STDOUT: %require_complete.loc9 => constants.%require_complete.2 -// CHECK:STDOUT: %Derived => constants.%Derived.1 -// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.1 -// CHECK:STDOUT: %require_complete.loc10 => constants.%require_complete.1 -// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.2 -// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.1 -// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.2 +// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.0cc +// CHECK:STDOUT: %require_complete.loc9 => constants.%require_complete.04f +// CHECK:STDOUT: %Derived => constants.%Derived.336 +// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.174 +// CHECK:STDOUT: %require_complete.loc10 => constants.%require_complete.db1 +// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.5ad +// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.fa7 +// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.c70 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(@Derived.%T.loc8_15.2) {} @@ -350,7 +350,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: specific @AccessDerived(constants.%T) { // CHECK:STDOUT: %T.loc13_18.2 => constants.%T // CHECK:STDOUT: %T.patt.loc13_18.2 => constants.%T -// CHECK:STDOUT: %Derived.loc13_40.2 => constants.%Derived.1 +// CHECK:STDOUT: %Derived.loc13_40.2 => constants.%Derived.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Derived(@AccessDerived.%T.loc13_18.2) {} @@ -358,7 +358,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: specific @AccessBase(constants.%T) { // CHECK:STDOUT: %T.loc17_15.2 => constants.%T // CHECK:STDOUT: %T.patt.loc17_15.2 => constants.%T -// CHECK:STDOUT: %Derived.loc17_37.2 => constants.%Derived.1 +// CHECK:STDOUT: %Derived.loc17_37.2 => constants.%Derived.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Derived(@AccessBase.%T.loc17_15.2) {} @@ -370,14 +370,14 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.2 -// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.5 -// CHECK:STDOUT: %Derived => constants.%Derived.2 -// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.3 -// CHECK:STDOUT: %require_complete.loc10 => constants.%complete_type.4 -// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.4 -// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.3 -// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.6 +// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.3b2 +// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.d62 +// CHECK:STDOUT: %Derived => constants.%Derived.422 +// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.508 +// CHECK:STDOUT: %require_complete.loc10 => constants.%complete_type.f8a +// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.a04 +// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.244 +// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.3ad // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(constants.%i32) { @@ -385,11 +385,11 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %Base => constants.%Base.2 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.2 -// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Base => constants.%Base.3b2 +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.9d1 +// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.fc0 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.d62 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_no_member.carbon @@ -399,44 +399,44 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Base.type: type = generic_class_type @Base [template] // CHECK:STDOUT: %Base.generic: %Base.type = struct_value () [template] -// CHECK:STDOUT: %Base.1: type = class_type @Base, @Base(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Base.elem.1: type = unbound_element_type %Base.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.b.1: type = struct_type {.b: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.b.1 [symbolic] +// CHECK:STDOUT: %Base.0cc: type = class_type @Base, @Base(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Base.elem.bb6: type = unbound_element_type %Base.0cc, %T [symbolic] +// CHECK:STDOUT: %struct_type.b.6c4: type = struct_type {.b: %T} [symbolic] +// CHECK:STDOUT: %complete_type.85b: = complete_type_witness %struct_type.b.6c4 [symbolic] // CHECK:STDOUT: %Derived.type: type = generic_class_type @Derived [template] // CHECK:STDOUT: %Derived.generic: %Derived.type = struct_value () [template] -// CHECK:STDOUT: %Derived.1: type = class_type @Derived, @Derived(%T) [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Base.1 [symbolic] -// CHECK:STDOUT: %Derived.elem.1: type = unbound_element_type %Derived.1, %Base.1 [symbolic] -// CHECK:STDOUT: %Derived.elem.2: type = unbound_element_type %Derived.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.base.d.1: type = struct_type {.base: %Base.1, .d: %T} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.d.1 [symbolic] +// CHECK:STDOUT: %Derived.336: type = class_type @Derived, @Derived(%T) [symbolic] +// CHECK:STDOUT: %require_complete.04f: = require_complete_type %Base.0cc [symbolic] +// CHECK:STDOUT: %Derived.elem.174: type = unbound_element_type %Derived.336, %Base.0cc [symbolic] +// CHECK:STDOUT: %Derived.elem.5ad: type = unbound_element_type %Derived.336, %T [symbolic] +// CHECK:STDOUT: %struct_type.base.d.fa7: type = struct_type {.base: %Base.0cc, .d: %T} [symbolic] +// CHECK:STDOUT: %complete_type.c70: = complete_type_witness %struct_type.base.d.fa7 [symbolic] // CHECK:STDOUT: %AccessMissingBase.type: type = fn_type @AccessMissingBase [template] // CHECK:STDOUT: %AccessMissingBase: %AccessMissingBase.type = struct_value () [template] // CHECK:STDOUT: %AccessMissingDerived.type: type = fn_type @AccessMissingDerived [template] // CHECK:STDOUT: %AccessMissingDerived: %AccessMissingDerived.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %Derived.1 [symbolic] +// CHECK:STDOUT: %require_complete.45e: = require_complete_type %Derived.336 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Derived.2: type = class_type @Derived, @Derived(%i32) [template] +// CHECK:STDOUT: %Derived.422: type = class_type @Derived, @Derived(%i32) [template] // CHECK:STDOUT: %AccessMissingConcrete.type: type = fn_type @AccessMissingConcrete [template] // CHECK:STDOUT: %AccessMissingConcrete: %AccessMissingConcrete.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %Base.2: type = class_type @Base, @Base(%i32) [template] -// CHECK:STDOUT: %Base.elem.2: type = unbound_element_type %Base.2, %i32 [template] -// CHECK:STDOUT: %struct_type.b.2: type = struct_type {.b: %i32} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.b.2 [template] -// CHECK:STDOUT: %Derived.elem.3: type = unbound_element_type %Derived.2, %Base.2 [template] -// CHECK:STDOUT: %Derived.elem.4: type = unbound_element_type %Derived.2, %i32 [template] -// CHECK:STDOUT: %struct_type.base.d.3: type = struct_type {.base: %Base.2, .d: %i32} [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %struct_type.base.d.3 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %Base.3b2: type = class_type @Base, @Base(%i32) [template] +// CHECK:STDOUT: %Base.elem.9d1: type = unbound_element_type %Base.3b2, %i32 [template] +// CHECK:STDOUT: %struct_type.b.fc0: type = struct_type {.b: %i32} [template] +// CHECK:STDOUT: %complete_type.d62: = complete_type_witness %struct_type.b.fc0 [template] +// CHECK:STDOUT: %Derived.elem.508: type = unbound_element_type %Derived.422, %Base.3b2 [template] +// CHECK:STDOUT: %Derived.elem.a04: type = unbound_element_type %Derived.422, %i32 [template] +// CHECK:STDOUT: %struct_type.base.d.244: type = struct_type {.base: %Base.3b2, .d: %i32} [template] +// CHECK:STDOUT: %complete_type.3ad: = complete_type_witness %struct_type.base.d.244 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -469,61 +469,61 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %AccessMissingBase.decl: %AccessMissingBase.type = fn_decl @AccessMissingBase [template = constants.%AccessMissingBase] { // CHECK:STDOUT: %T.patt.loc13_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_22.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_22.1, runtime_param [symbolic = %T.patt.loc13_22.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @AccessMissingBase.%T.loc13_22.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessMissingBase.%T.loc13_22.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_47: type = name_ref T, %T.loc13_22.1 [symbolic = %T.loc13_22.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc13_22.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_22.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @AccessMissingBase.%Base.loc13_41.2 (%Base.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc13: type = splice_block %Base.loc13_41.1 [symbolic = %Base.loc13_41.2 (constants.%Base.1)] { +// CHECK:STDOUT: %x.param: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) = value_param runtime_param0 +// CHECK:STDOUT: %.loc13: type = splice_block %Base.loc13_41.1 [symbolic = %Base.loc13_41.2 (constants.%Base.0cc)] { // CHECK:STDOUT: %Base.ref: %Base.type = name_ref Base, file.%Base.decl [template = constants.%Base.generic] // CHECK:STDOUT: %T.ref.loc13_40: type = name_ref T, %T.loc13_22.1 [symbolic = %T.loc13_22.2 (constants.%T)] -// CHECK:STDOUT: %Base.loc13_41.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc13_41.2 (constants.%Base.1)] +// CHECK:STDOUT: %Base.loc13_41.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc13_41.2 (constants.%Base.0cc)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @AccessMissingBase.%Base.loc13_41.2 (%Base.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref @AccessMissingBase.%T.loc13_22.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @AccessMissingBase.%T.loc13_22.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMissingDerived.decl: %AccessMissingDerived.type = fn_decl @AccessMissingDerived [template = constants.%AccessMissingDerived] { // CHECK:STDOUT: %T.patt.loc21_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_25.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc21_25.1, runtime_param [symbolic = %T.patt.loc21_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @AccessMissingDerived.%T.loc21_25.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessMissingDerived.%T.loc21_25.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc21_53: type = name_ref T, %T.loc21_25.1 [symbolic = %T.loc21_25.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc21_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_25.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %Derived.loc21_47.1 [symbolic = %Derived.loc21_47.2 (constants.%Derived.1)] { +// CHECK:STDOUT: %x.param: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) = value_param runtime_param0 +// CHECK:STDOUT: %.loc21: type = splice_block %Derived.loc21_47.1 [symbolic = %Derived.loc21_47.2 (constants.%Derived.336)] { // CHECK:STDOUT: %Derived.ref: %Derived.type = name_ref Derived, file.%Derived.decl [template = constants.%Derived.generic] // CHECK:STDOUT: %T.ref.loc21_46: type = name_ref T, %T.loc21_25.1 [symbolic = %T.loc21_25.2 (constants.%T)] -// CHECK:STDOUT: %Derived.loc21_47.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc21_47.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc21_47.1: type = class_type @Derived, @Derived(constants.%T) [symbolic = %Derived.loc21_47.2 (constants.%Derived.336)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref @AccessMissingDerived.%T.loc21_25.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @AccessMissingDerived.%T.loc21_25.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMissingConcrete.decl: %AccessMissingConcrete.type = fn_decl @AccessMissingConcrete [template = constants.%AccessMissingConcrete] { -// CHECK:STDOUT: %x.patt: %Derived.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %Derived.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %Derived.422 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %Derived.422 = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc29_46: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc29_46: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %x.param: %Derived.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc29: type = splice_block %Derived [template = constants.%Derived.2] { +// CHECK:STDOUT: %x.param: %Derived.422 = value_param runtime_param0 +// CHECK:STDOUT: %.loc29: type = splice_block %Derived [template = constants.%Derived.422] { // CHECK:STDOUT: %Derived.ref: %Derived.type = name_ref Derived, file.%Derived.decl [template = constants.%Derived.generic] // CHECK:STDOUT: %int_32.loc29_37: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc29_37: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(constants.%i32) [template = constants.%Derived.2] +// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(constants.%i32) [template = constants.%Derived.422] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %Derived.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %Derived.422 = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -534,18 +534,18 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_17.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.1), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.1)] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.b (constants.%struct_type.b.1)] -// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.b (%struct_type.b.1) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Base.%T.loc4_17.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc4_17.2) [symbolic = %Base (constants.%Base.0cc)] +// CHECK:STDOUT: %Base.elem: type = unbound_element_type @Base.%Base (%Base.0cc), @Base.%T.loc4_17.2 (%T) [symbolic = %Base.elem (constants.%Base.elem.bb6)] +// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: @Base.%T.loc4_17.2 (%T)} [symbolic = %struct_type.b (constants.%struct_type.b.6c4)] +// CHECK:STDOUT: %complete_type.loc6_1.2: = complete_type_witness @Base.%struct_type.b (%struct_type.b.6c4) [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.85b)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.1) = field_decl b, element0 [template] -// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.1 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc5: @Base.%Base.elem (%Base.elem.bb6) = field_decl b, element0 [template] +// CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.6c4 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.85b)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Base.1 +// CHECK:STDOUT: .Self = constants.%Base.0cc // CHECK:STDOUT: .b = %.loc5 // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 // CHECK:STDOUT: } @@ -556,25 +556,25 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_15.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2: type = class_type @Base, @Base(%T.loc8_15.2) [symbolic = %Base.loc9_22.2 (constants.%Base.1)] -// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @Derived.%Base.loc9_22.2 (%Base.1) [symbolic = %require_complete.loc9 (constants.%require_complete.2)] -// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc8_15.2) [symbolic = %Derived (constants.%Derived.1)] -// CHECK:STDOUT: %Derived.elem.loc9: type = unbound_element_type @Derived.%Derived (%Derived.1), @Derived.%Base.loc9_22.2 (%Base.1) [symbolic = %Derived.elem.loc9 (constants.%Derived.elem.1)] -// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @Derived.%T.loc8_15.2 (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.1)] -// CHECK:STDOUT: %Derived.elem.loc10: type = unbound_element_type @Derived.%Derived (%Derived.1), @Derived.%T.loc8_15.2 (%T) [symbolic = %Derived.elem.loc10 (constants.%Derived.elem.2)] -// CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: @Derived.%Base.loc9_22.2 (%Base.1), .d: @Derived.%T.loc8_15.2 (%T)} [symbolic = %struct_type.base.d (constants.%struct_type.base.d.1)] -// CHECK:STDOUT: %complete_type.loc11_1.2: = complete_type_witness @Derived.%struct_type.base.d (%struct_type.base.d.1) [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %Base.loc9_22.2: type = class_type @Base, @Base(%T.loc8_15.2) [symbolic = %Base.loc9_22.2 (constants.%Base.0cc)] +// CHECK:STDOUT: %require_complete.loc9: = require_complete_type @Derived.%Base.loc9_22.2 (%Base.0cc) [symbolic = %require_complete.loc9 (constants.%require_complete.04f)] +// CHECK:STDOUT: %Derived: type = class_type @Derived, @Derived(%T.loc8_15.2) [symbolic = %Derived (constants.%Derived.336)] +// CHECK:STDOUT: %Derived.elem.loc9: type = unbound_element_type @Derived.%Derived (%Derived.336), @Derived.%Base.loc9_22.2 (%Base.0cc) [symbolic = %Derived.elem.loc9 (constants.%Derived.elem.174)] +// CHECK:STDOUT: %require_complete.loc10: = require_complete_type @Derived.%T.loc8_15.2 (%T) [symbolic = %require_complete.loc10 (constants.%require_complete.db1)] +// CHECK:STDOUT: %Derived.elem.loc10: type = unbound_element_type @Derived.%Derived (%Derived.336), @Derived.%T.loc8_15.2 (%T) [symbolic = %Derived.elem.loc10 (constants.%Derived.elem.5ad)] +// CHECK:STDOUT: %struct_type.base.d: type = struct_type {.base: @Derived.%Base.loc9_22.2 (%Base.0cc), .d: @Derived.%T.loc8_15.2 (%T)} [symbolic = %struct_type.base.d (constants.%struct_type.base.d.fa7)] +// CHECK:STDOUT: %complete_type.loc11_1.2: = complete_type_witness @Derived.%struct_type.base.d (%struct_type.base.d.fa7) [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.c70)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %Base.ref: %Base.type = name_ref Base, file.%Base.decl [template = constants.%Base.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_15.1 [symbolic = %T.loc8_15.2 (constants.%T)] -// CHECK:STDOUT: %Base.loc9_22.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc9_22.2 (constants.%Base.1)] -// CHECK:STDOUT: %.loc9: @Derived.%Derived.elem.loc9 (%Derived.elem.1) = base_decl %Base.loc9_22.1, element0 [template] -// CHECK:STDOUT: %.loc10: @Derived.%Derived.elem.loc10 (%Derived.elem.2) = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.1 [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.2)] +// CHECK:STDOUT: %Base.loc9_22.1: type = class_type @Base, @Base(constants.%T) [symbolic = %Base.loc9_22.2 (constants.%Base.0cc)] +// CHECK:STDOUT: %.loc9: @Derived.%Derived.elem.loc9 (%Derived.elem.174) = base_decl %Base.loc9_22.1, element0 [template] +// CHECK:STDOUT: %.loc10: @Derived.%Derived.elem.loc10 (%Derived.elem.5ad) = field_decl d, element1 [template] +// CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.fa7 [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.c70)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Derived.1 +// CHECK:STDOUT: .Self = constants.%Derived.336 // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .d = %.loc10 // CHECK:STDOUT: extend %Base.loc9_22.1 @@ -585,14 +585,14 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: generic fn @AccessMissingBase(%T.loc13_22.1: type) { // CHECK:STDOUT: %T.loc13_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc13_22.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc13_22.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_22.2 (constants.%T.patt)] -// CHECK:STDOUT: %Base.loc13_41.2: type = class_type @Base, @Base(%T.loc13_22.2) [symbolic = %Base.loc13_41.2 (constants.%Base.1)] +// CHECK:STDOUT: %Base.loc13_41.2: type = class_type @Base, @Base(%T.loc13_22.2) [symbolic = %Base.loc13_41.2 (constants.%Base.0cc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @AccessMissingBase.%Base.loc13_41.2 (%Base.1) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) [symbolic = %require_complete (constants.%require_complete.04f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.1)) -> @AccessMissingBase.%T.loc13_22.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc)) -> @AccessMissingBase.%T.loc13_22.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @AccessMissingBase.%Base.loc13_41.2 (%Base.1) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @AccessMissingBase.%Base.loc13_41.2 (%Base.0cc) = name_ref x, %x // CHECK:STDOUT: %nonesuch.ref: = name_ref nonesuch, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -601,24 +601,24 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: generic fn @AccessMissingDerived(%T.loc21_25.1: type) { // CHECK:STDOUT: %T.loc21_25.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc21_25.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc21_25.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %Derived.loc21_47.2: type = class_type @Derived, @Derived(%T.loc21_25.2) [symbolic = %Derived.loc21_47.2 (constants.%Derived.1)] +// CHECK:STDOUT: %Derived.loc21_47.2: type = class_type @Derived, @Derived(%T.loc21_25.2) [symbolic = %Derived.loc21_47.2 (constants.%Derived.336)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc21: = require_complete_type @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) [symbolic = %require_complete.loc21 (constants.%require_complete.3)] -// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc21_25.2) [symbolic = %Base (constants.%Base.1)] -// CHECK:STDOUT: %require_complete.loc26: = require_complete_type @AccessMissingDerived.%Base (%Base.1) [symbolic = %require_complete.loc26 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc21: = require_complete_type @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) [symbolic = %require_complete.loc21 (constants.%require_complete.45e)] +// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.loc21_25.2) [symbolic = %Base (constants.%Base.0cc)] +// CHECK:STDOUT: %require_complete.loc26: = require_complete_type @AccessMissingDerived.%Base (%Base.0cc) [symbolic = %require_complete.loc26 (constants.%require_complete.04f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1)) -> @AccessMissingDerived.%T.loc21_25.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336)) -> @AccessMissingDerived.%T.loc21_25.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.1) = name_ref x, %x +// CHECK:STDOUT: %x.ref: @AccessMissingDerived.%Derived.loc21_47.2 (%Derived.336) = name_ref x, %x // CHECK:STDOUT: %nonesuch.ref: = name_ref nonesuch, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMissingConcrete(%x.param_patt: %Derived.2) -> %i32 { +// CHECK:STDOUT: fn @AccessMissingConcrete(%x.param_patt: %Derived.422) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: %Derived.2 = name_ref x, %x +// CHECK:STDOUT: %x.ref: %Derived.422 = name_ref x, %x // CHECK:STDOUT: %nonesuch.ref: = name_ref nonesuch, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -628,11 +628,11 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Base => constants.%Base.1 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.1 -// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.1 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Base => constants.%Base.0cc +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.bb6 +// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.6c4 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.85b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(%T.loc4_17.2) {} @@ -642,14 +642,14 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.1 -// CHECK:STDOUT: %require_complete.loc9 => constants.%require_complete.2 -// CHECK:STDOUT: %Derived => constants.%Derived.1 -// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.1 -// CHECK:STDOUT: %require_complete.loc10 => constants.%require_complete.1 -// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.2 -// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.1 -// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.2 +// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.0cc +// CHECK:STDOUT: %require_complete.loc9 => constants.%require_complete.04f +// CHECK:STDOUT: %Derived => constants.%Derived.336 +// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.174 +// CHECK:STDOUT: %require_complete.loc10 => constants.%require_complete.db1 +// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.5ad +// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.fa7 +// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.c70 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(@Derived.%T.loc8_15.2) {} @@ -659,7 +659,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: specific @AccessMissingBase(constants.%T) { // CHECK:STDOUT: %T.loc13_22.2 => constants.%T // CHECK:STDOUT: %T.patt.loc13_22.2 => constants.%T -// CHECK:STDOUT: %Base.loc13_41.2 => constants.%Base.1 +// CHECK:STDOUT: %Base.loc13_41.2 => constants.%Base.0cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(@AccessMissingBase.%T.loc13_22.2) {} @@ -667,7 +667,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: specific @AccessMissingDerived(constants.%T) { // CHECK:STDOUT: %T.loc21_25.2 => constants.%T // CHECK:STDOUT: %T.patt.loc21_25.2 => constants.%T -// CHECK:STDOUT: %Derived.loc21_47.2 => constants.%Derived.1 +// CHECK:STDOUT: %Derived.loc21_47.2 => constants.%Derived.336 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Derived(@AccessMissingDerived.%T.loc21_25.2) {} @@ -679,14 +679,14 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc8_15.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.2 -// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.5 -// CHECK:STDOUT: %Derived => constants.%Derived.2 -// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.3 -// CHECK:STDOUT: %require_complete.loc10 => constants.%complete_type.4 -// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.4 -// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.3 -// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.6 +// CHECK:STDOUT: %Base.loc9_22.2 => constants.%Base.3b2 +// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.d62 +// CHECK:STDOUT: %Derived => constants.%Derived.422 +// CHECK:STDOUT: %Derived.elem.loc9 => constants.%Derived.elem.508 +// CHECK:STDOUT: %require_complete.loc10 => constants.%complete_type.f8a +// CHECK:STDOUT: %Derived.elem.loc10 => constants.%Derived.elem.a04 +// CHECK:STDOUT: %struct_type.base.d => constants.%struct_type.base.d.244 +// CHECK:STDOUT: %complete_type.loc11_1.2 => constants.%complete_type.3ad // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Base(constants.%i32) { @@ -694,10 +694,10 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_17.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %Base => constants.%Base.2 -// CHECK:STDOUT: %Base.elem => constants.%Base.elem.2 -// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.2 -// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Base => constants.%Base.3b2 +// CHECK:STDOUT: %Base.elem => constants.%Base.elem.9d1 +// CHECK:STDOUT: %struct_type.b => constants.%struct_type.b.fc0 +// CHECK:STDOUT: %complete_type.loc6_1.2 => constants.%complete_type.d62 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_out_of_line.carbon b/toolchain/check/testdata/class/generic/member_out_of_line.carbon index 5a4978535b1b..a46e50d169a2 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -117,11 +117,11 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T) [symbolic] // CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %T} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -188,7 +188,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] // CHECK:STDOUT: %G.type: type = fn_type @G, @Class(%T.loc4_13.2) [symbolic = %G.type (constants.%G.type)] // CHECK:STDOUT: %G: @Class.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc4_13.2) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.loc4_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Class.%T.loc4_13.2 (%T)} [symbolic = %struct_type.n (constants.%struct_type.n)] @@ -240,7 +240,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.loc5: type = bind_symbolic_name T, 0 [symbolic = %T.loc5 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%T.loc5 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%T.loc5 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%n.param_patt: %T) -> %T { // CHECK:STDOUT: !entry: @@ -254,9 +254,9 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc6) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @G.%Class (%Class) [symbolic = %require_complete.loc14 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @G.%Class (%Class) [symbolic = %require_complete.loc14 (constants.%require_complete.723)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @G.%Class (%Class), @G.%T.loc6 (%T) [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %require_complete.loc15: = require_complete_type @G.%T.loc6 (%T) [symbolic = %require_complete.loc15 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc15: = require_complete_type @G.%T.loc6 (%T) [symbolic = %require_complete.loc15 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: %Class]() -> %T { // CHECK:STDOUT: !entry: @@ -277,7 +277,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %F => constants.%F // CHECK:STDOUT: %G.type => constants.%G.type // CHECK:STDOUT: %G => constants.%G -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %struct_type.n => constants.%struct_type.n @@ -314,8 +314,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %B [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.15e: = require_complete_type %B [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -428,8 +428,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %B: type = class_type @B, @B(%T.loc6, %N.loc6) [symbolic = %B (constants.%B)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc10_31: = require_complete_type @F.%B (%B) [symbolic = %require_complete.loc10_31 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc10_40: = require_complete_type @F.%T.loc6 (%T) [symbolic = %require_complete.loc10_40 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc10_31: = require_complete_type @F.%B (%B) [symbolic = %require_complete.loc10_31 (constants.%require_complete.15e)] +// CHECK:STDOUT: %require_complete.loc10_40: = require_complete_type @F.%T.loc6 (%T) [symbolic = %require_complete.loc10_40 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: %B](%a.param_patt: %T) { // CHECK:STDOUT: !entry: @@ -479,7 +479,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -496,7 +496,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NotGeneric.decl: type = class_decl @NotGeneric [template = constants.%NotGeneric] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc15_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_15.2 (constants.%T)] // CHECK:STDOUT: } @@ -544,7 +544,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -567,7 +567,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Generic(%T.loc4_15.1: type) { @@ -623,7 +623,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -646,7 +646,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_12.2 (constants.%T)] // CHECK:STDOUT: %U.param: type = value_param runtime_param @@ -711,20 +711,20 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: --- fail_mismatched_wrong_arg_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.6ba: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d86: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template] -// CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T.1) [symbolic] -// CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType, @Generic(%T.1) [symbolic] +// CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T.6ba) [symbolic] +// CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType, @Generic(%T.6ba) [symbolic] // CHECK:STDOUT: %WrongType: %WrongType.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %T.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.b2a: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.e42: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -741,25 +741,25 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Generic.decl: %Generic.type = class_decl @Generic [template = constants.%Generic.generic] { -// CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T.6ba)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} { // CHECK:STDOUT: %T.param: %empty_tuple.type = value_param runtime_param // CHECK:STDOUT: %.loc14_17.1: type = splice_block %.loc14_17.3 [template = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc14_17.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc14_17.3: type = converted %.loc14_17.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc14_12.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_12.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc14_12.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_12.2 (constants.%T.b2a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Generic(%T.loc4_15.1: type) { -// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc4_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType, @Generic(%T.loc4_15.2) [symbolic = %WrongType.type (constants.%WrongType.type)] @@ -782,8 +782,8 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @.1(%T.loc14_12.1: %empty_tuple.type) { -// CHECK:STDOUT: %T.loc14_12.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_12.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt.2)] +// CHECK:STDOUT: %T.loc14_12.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_12.2 (constants.%T.b2a)] +// CHECK:STDOUT: %T.patt: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt.e42)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -793,17 +793,17 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Generic(constants.%T.1) { -// CHECK:STDOUT: %T.loc4_15.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_15.2 => constants.%T.1 +// CHECK:STDOUT: specific @Generic(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc4_15.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc4_15.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @WrongType(constants.%T.1) {} +// CHECK:STDOUT: specific @WrongType(constants.%T.6ba) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(%T.loc4_15.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%T.2) { -// CHECK:STDOUT: %T.loc14_12.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt => constants.%T.2 +// CHECK:STDOUT: specific @.1(constants.%T.b2a) { +// CHECK:STDOUT: %T.loc14_12.2 => constants.%T.b2a +// CHECK:STDOUT: %T.patt => constants.%T.b2a // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index abffce41b6dd..62baf692a979 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -29,40 +29,40 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class.1: type = class_type @Class, @Class(%T) [symbolic] +// CHECK:STDOUT: %Class.2c9: type = class_type @Class, @Class(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%T, %U) [symbolic] -// CHECK:STDOUT: %Get.type.1: type = fn_type @Get, @Class(%T) [symbolic] -// CHECK:STDOUT: %Get.1: %Get.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %GetNoDeduce.type.1: type = fn_type @GetNoDeduce, @Class(%T) [symbolic] -// CHECK:STDOUT: %GetNoDeduce.1: %GetNoDeduce.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %tuple.type.2 [symbolic] -// CHECK:STDOUT: %Get.specific_fn.1: = specific_function %Get.1, @Get(%T, %U) [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.1: = specific_function %GetNoDeduce.1, @GetNoDeduce(%T, %U) [symbolic] -// CHECK:STDOUT: %Class.2: type = class_type @Class, @Class(%A) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%A, %B) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.cab: type = tuple_type (%T, %U) [symbolic] +// CHECK:STDOUT: %Get.type.6c9: type = fn_type @Get, @Class(%T) [symbolic] +// CHECK:STDOUT: %Get.ca7: %Get.type.6c9 = struct_value () [symbolic] +// CHECK:STDOUT: %GetNoDeduce.type.2b9: type = fn_type @GetNoDeduce, @Class(%T) [symbolic] +// CHECK:STDOUT: %GetNoDeduce.9f5: %GetNoDeduce.type.2b9 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.73f: = require_complete_type %tuple.type.cab [symbolic] +// CHECK:STDOUT: %Get.specific_fn.62e: = specific_function %Get.ca7, @Get(%T, %U) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %GetNoDeduce.specific_fn.157: = specific_function %GetNoDeduce.9f5, @GetNoDeduce(%T, %U) [symbolic] +// CHECK:STDOUT: %Class.b0a: type = class_type @Class, @Class(%A) [template] +// CHECK:STDOUT: %tuple.type.cc6: type = tuple_type (%A, %B) [template] // CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [template] // CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [template] -// CHECK:STDOUT: %Get.type.2: type = fn_type @Get, @Class(%A) [template] -// CHECK:STDOUT: %Get.2: %Get.type.2 = struct_value () [template] -// CHECK:STDOUT: %GetNoDeduce.type.2: type = fn_type @GetNoDeduce, @Class(%A) [template] -// CHECK:STDOUT: %GetNoDeduce.2: %GetNoDeduce.type.2 = struct_value () [template] -// CHECK:STDOUT: %Get.specific_fn.2: = specific_function %Get.2, @Get(%A, %B) [template] +// CHECK:STDOUT: %Get.type.c9b: type = fn_type @Get, @Class(%A) [template] +// CHECK:STDOUT: %Get.0f1: %Get.type.c9b = struct_value () [template] +// CHECK:STDOUT: %GetNoDeduce.type.bd6: type = fn_type @GetNoDeduce, @Class(%A) [template] +// CHECK:STDOUT: %GetNoDeduce.073: %GetNoDeduce.type.bd6 = struct_value () [template] +// CHECK:STDOUT: %Get.specific_fn.f78: = specific_function %Get.0f1, @Get(%A, %B) [template] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.type: type = fn_type @CallGenericMethodWithNonDeducedParam [template] // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam: %CallGenericMethodWithNonDeducedParam.type = struct_value () [template] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.2: = specific_function %GetNoDeduce.2, @GetNoDeduce(%A, %B) [template] +// CHECK:STDOUT: %GetNoDeduce.specific_fn.21a: = specific_function %GetNoDeduce.073, @GetNoDeduce(%A, %B) [template] // CHECK:STDOUT: %A.val: %A = struct_value () [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %tuple.type.3 [template] +// CHECK:STDOUT: %complete_type.56a: = complete_type_witness %tuple.type.cc6 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -92,49 +92,49 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.loc14_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [template = constants.%CallGenericMethod] { -// CHECK:STDOUT: %c.patt: %Class.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %Class.2 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %Class.b0a = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %Class.b0a = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.cc6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.cc6 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc19_39: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %B.ref.loc19: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %.loc19_43.1: %tuple.type.1 = tuple_literal (%A.ref.loc19_39, %B.ref.loc19) -// CHECK:STDOUT: %.loc19_43.2: type = converted %.loc19_43.1, constants.%tuple.type.3 [template = constants.%tuple.type.3] -// CHECK:STDOUT: %c.param: %Class.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc19_32: type = splice_block %Class [template = constants.%Class.2] { +// CHECK:STDOUT: %.loc19_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc19_39, %B.ref.loc19) +// CHECK:STDOUT: %.loc19_43.2: type = converted %.loc19_43.1, constants.%tuple.type.cc6 [template = constants.%tuple.type.cc6] +// CHECK:STDOUT: %c.param: %Class.b0a = value_param runtime_param0 +// CHECK:STDOUT: %.loc19_32: type = splice_block %Class [template = constants.%Class.b0a] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %A.ref.loc19_31: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [template = constants.%Class.2] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [template = constants.%Class.b0a] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %Class.2 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %tuple.type.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.3 = return_slot %return.param +// CHECK:STDOUT: %c: %Class.b0a = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %tuple.type.cc6 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.cc6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericMethodWithNonDeducedParam.decl: %CallGenericMethodWithNonDeducedParam.type = fn_decl @CallGenericMethodWithNonDeducedParam [template = constants.%CallGenericMethodWithNonDeducedParam] { -// CHECK:STDOUT: %c.patt: %Class.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %Class.2 = value_param_pattern %c.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %c.patt: %Class.b0a = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %Class.b0a = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.cc6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.cc6 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc23_58: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %.loc23_62.1: %tuple.type.1 = tuple_literal (%A.ref.loc23_58, %B.ref.loc23) -// CHECK:STDOUT: %.loc23_62.2: type = converted %.loc23_62.1, constants.%tuple.type.3 [template = constants.%tuple.type.3] -// CHECK:STDOUT: %c.param: %Class.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_51: type = splice_block %Class [template = constants.%Class.2] { +// CHECK:STDOUT: %.loc23_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc23_58, %B.ref.loc23) +// CHECK:STDOUT: %.loc23_62.2: type = converted %.loc23_62.1, constants.%tuple.type.cc6 [template = constants.%tuple.type.cc6] +// CHECK:STDOUT: %c.param: %Class.b0a = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_51: type = splice_block %Class [template = constants.%Class.b0a] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [template = constants.%Class.generic] // CHECK:STDOUT: %A.ref.loc23_50: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [template = constants.%Class.2] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [template = constants.%Class.b0a] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %Class.2 = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %tuple.type.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.3 = return_slot %return.param +// CHECK:STDOUT: %c: %Class.b0a = bind_name c, %c.param +// CHECK:STDOUT: %return.param: ref %tuple.type.cc6 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.cc6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -142,7 +142,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -154,51 +154,51 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.patt.loc14_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc14_13.2) [symbolic = %Get.type (constants.%Get.type.1)] -// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.1) = struct_value () [symbolic = %Get (constants.%Get.1)] -// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T.loc14_13.2) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.1)] -// CHECK:STDOUT: %GetNoDeduce: @Class.%GetNoDeduce.type (%GetNoDeduce.type.1) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.1)] +// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc14_13.2) [symbolic = %Get.type (constants.%Get.type.6c9)] +// CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.6c9) = struct_value () [symbolic = %Get (constants.%Get.ca7)] +// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T.loc14_13.2) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.2b9)] +// CHECK:STDOUT: %GetNoDeduce: @Class.%GetNoDeduce.type (%GetNoDeduce.type.2b9) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.9f5)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.1) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.1)] { +// CHECK:STDOUT: %Get.decl: @Class.%Get.type (%Get.type.6c9) = fn_decl @Get [symbolic = @Class.%Get (constants.%Get.ca7)] { // CHECK:STDOUT: %U.patt.loc15_10.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_10.1 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc15_10.2, runtime_param [symbolic = %U.patt.loc15_10.1 (constants.%U.patt)] -// CHECK:STDOUT: %return.patt: @Get.%tuple.type (%tuple.type.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @Get.%tuple.type (%tuple.type.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @Get.%tuple.type (%tuple.type.cab) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Get.%tuple.type (%tuple.type.cab) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc15_27: type = name_ref U, %U.loc15_10.2 [symbolic = %U.loc15_10.1 (constants.%U)] -// CHECK:STDOUT: %.loc15_28.1: %tuple.type.1 = tuple_literal (%T.ref, %U.ref.loc15_27) -// CHECK:STDOUT: %.loc15_28.2: type = converted %.loc15_28.1, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc15_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc15_27) +// CHECK:STDOUT: %.loc15_28.2: type = converted %.loc15_28.1, constants.%tuple.type.cab [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc15_10.2: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc15_10.1 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @Get.%tuple.type (%tuple.type.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @Get.%tuple.type (%tuple.type.2) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @Get.%tuple.type (%tuple.type.cab) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @Get.%tuple.type (%tuple.type.cab) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GetNoDeduce.decl: @Class.%GetNoDeduce.type (%GetNoDeduce.type.1) = fn_decl @GetNoDeduce [symbolic = @Class.%GetNoDeduce (constants.%GetNoDeduce.1)] { +// CHECK:STDOUT: %GetNoDeduce.decl: @Class.%GetNoDeduce.type (%GetNoDeduce.type.2b9) = fn_decl @GetNoDeduce [symbolic = @Class.%GetNoDeduce (constants.%GetNoDeduce.9f5)] { // CHECK:STDOUT: %x.patt: @GetNoDeduce.%T (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @GetNoDeduce.%T (%T) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %U.patt.loc16_24.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc16_24.1 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc16_24.2, runtime_param [symbolic = %U.patt.loc16_24.1 (constants.%U.patt)] -// CHECK:STDOUT: %return.patt: @GetNoDeduce.%tuple.type (%tuple.type.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%tuple.type (%tuple.type.2) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @GetNoDeduce.%tuple.type (%tuple.type.cab) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%tuple.type (%tuple.type.cab) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc16_38: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.ref.loc16_41: type = name_ref U, %U.loc16_24.2 [symbolic = %U.loc16_24.1 (constants.%U)] -// CHECK:STDOUT: %.loc16_42.1: %tuple.type.1 = tuple_literal (%T.ref.loc16_38, %U.ref.loc16_41) -// CHECK:STDOUT: %.loc16_42.2: type = converted %.loc16_42.1, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc16_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc16_38, %U.ref.loc16_41) +// CHECK:STDOUT: %.loc16_42.2: type = converted %.loc16_42.1, constants.%tuple.type.cab [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: %x.param: @GetNoDeduce.%T (%T) = value_param runtime_param0 // CHECK:STDOUT: %T.ref.loc16_21: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %x: @GetNoDeduce.%T (%T) = bind_name x, %x.param // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc16_24.2: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc16_24.1 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @GetNoDeduce.%tuple.type (%tuple.type.2) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @GetNoDeduce.%tuple.type (%tuple.type.2) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @GetNoDeduce.%tuple.type (%tuple.type.cab) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @GetNoDeduce.%tuple.type (%tuple.type.cab) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.1 +// CHECK:STDOUT: .Self = constants.%Class.2c9 // CHECK:STDOUT: .Get = %Get.decl // CHECK:STDOUT: .GetNoDeduce = %GetNoDeduce.decl // CHECK:STDOUT: complete_type_witness = %complete_type @@ -209,25 +209,25 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %U.loc15_10.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc15_10.1 (constants.%U)] // CHECK:STDOUT: %U.patt.loc15_10.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc15_10.1 (constants.%U.patt)] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@Get.%T (%T), @Get.%U.loc15_10.1 (%U)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@Get.%T (%T), @Get.%U.loc15_10.1 (%U)) [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc15_20: = require_complete_type @Get.%tuple.type (%tuple.type.2) [symbolic = %require_complete.loc15_20 (constants.%require_complete.1)] -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T) [symbolic = %Get.type (constants.%Get.type.1)] -// CHECK:STDOUT: %Get: @Get.%Get.type (%Get.type.1) = struct_value () [symbolic = %Get (constants.%Get.1)] -// CHECK:STDOUT: %Get.specific_fn.loc15_39.2: = specific_function %Get, @Get(%T, %U.loc15_10.1) [symbolic = %Get.specific_fn.loc15_39.2 (constants.%Get.specific_fn.1)] -// CHECK:STDOUT: %require_complete.loc15_44.1: = require_complete_type @Get.%T (%T) [symbolic = %require_complete.loc15_44.1 (constants.%require_complete.2)] -// CHECK:STDOUT: %require_complete.loc15_44.2: = require_complete_type @Get.%U.loc15_10.1 (%U) [symbolic = %require_complete.loc15_44.2 (constants.%require_complete.3)] +// CHECK:STDOUT: %require_complete.loc15_20: = require_complete_type @Get.%tuple.type (%tuple.type.cab) [symbolic = %require_complete.loc15_20 (constants.%require_complete.73f)] +// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T) [symbolic = %Get.type (constants.%Get.type.6c9)] +// CHECK:STDOUT: %Get: @Get.%Get.type (%Get.type.6c9) = struct_value () [symbolic = %Get (constants.%Get.ca7)] +// CHECK:STDOUT: %Get.specific_fn.loc15_39.2: = specific_function %Get, @Get(%T, %U.loc15_10.1) [symbolic = %Get.specific_fn.loc15_39.2 (constants.%Get.specific_fn.62e)] +// CHECK:STDOUT: %require_complete.loc15_44.1: = require_complete_type @Get.%T (%T) [symbolic = %require_complete.loc15_44.1 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc15_44.2: = require_complete_type @Get.%U.loc15_10.1 (%U) [symbolic = %require_complete.loc15_44.2 (constants.%require_complete.427)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%U.param_patt: type) -> %return.param_patt: @Get.%tuple.type (%tuple.type.2) { +// CHECK:STDOUT: fn(%U.param_patt: type) -> %return.param_patt: @Get.%tuple.type (%tuple.type.cab) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_39: @Get.%Get.type (%Get.type.1) = specific_constant @Class.%Get.decl, @Class(constants.%T) [symbolic = %Get (constants.%Get.1)] -// CHECK:STDOUT: %Get.ref: @Get.%Get.type (%Get.type.1) = name_ref Get, %.loc15_39 [symbolic = %Get (constants.%Get.1)] +// CHECK:STDOUT: %.loc15_39: @Get.%Get.type (%Get.type.6c9) = specific_constant @Class.%Get.decl, @Class(constants.%T) [symbolic = %Get (constants.%Get.ca7)] +// CHECK:STDOUT: %Get.ref: @Get.%Get.type (%Get.type.6c9) = name_ref Get, %.loc15_39 [symbolic = %Get (constants.%Get.ca7)] // CHECK:STDOUT: %U.ref.loc15_43: type = name_ref U, %U.loc15_10.2 [symbolic = %U.loc15_10.1 (constants.%U)] -// CHECK:STDOUT: %Get.specific_fn.loc15_39.1: = specific_function %Get.ref, @Get(constants.%T, constants.%U) [symbolic = %Get.specific_fn.loc15_39.2 (constants.%Get.specific_fn.1)] -// CHECK:STDOUT: %.loc15_44.1: ref @Get.%tuple.type (%tuple.type.2) = temporary_storage -// CHECK:STDOUT: %Get.call: init @Get.%tuple.type (%tuple.type.2) = call %Get.specific_fn.loc15_39.1() to %.loc15_44.1 -// CHECK:STDOUT: %.loc15_44.2: ref @Get.%tuple.type (%tuple.type.2) = temporary %.loc15_44.1, %Get.call +// CHECK:STDOUT: %Get.specific_fn.loc15_39.1: = specific_function %Get.ref, @Get(constants.%T, constants.%U) [symbolic = %Get.specific_fn.loc15_39.2 (constants.%Get.specific_fn.62e)] +// CHECK:STDOUT: %.loc15_44.1: ref @Get.%tuple.type (%tuple.type.cab) = temporary_storage +// CHECK:STDOUT: %Get.call: init @Get.%tuple.type (%tuple.type.cab) = call %Get.specific_fn.loc15_39.1() to %.loc15_44.1 +// CHECK:STDOUT: %.loc15_44.2: ref @Get.%tuple.type (%tuple.type.cab) = temporary %.loc15_44.1, %Get.call // CHECK:STDOUT: %tuple.elem0.loc15_44.1: ref @Get.%T (%T) = tuple_access %.loc15_44.2, element0 // CHECK:STDOUT: %.loc15_44.3: @Get.%T (%T) = bind_value %tuple.elem0.loc15_44.1 // CHECK:STDOUT: %tuple.elem0.loc15_44.2: ref @Get.%T (%T) = tuple_access %return, element0 @@ -236,8 +236,8 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %.loc15_44.5: @Get.%U.loc15_10.1 (%U) = bind_value %tuple.elem1.loc15_44.1 // CHECK:STDOUT: %tuple.elem1.loc15_44.2: ref @Get.%U.loc15_10.1 (%U) = tuple_access %return, element1 // CHECK:STDOUT: %.loc15_44.6: init @Get.%U.loc15_10.1 (%U) = initialize_from %.loc15_44.5 to %tuple.elem1.loc15_44.2 -// CHECK:STDOUT: %.loc15_44.7: init @Get.%tuple.type (%tuple.type.2) = tuple_init (%.loc15_44.4, %.loc15_44.6) to %return -// CHECK:STDOUT: %.loc15_45: init @Get.%tuple.type (%tuple.type.2) = converted %Get.call, %.loc15_44.7 +// CHECK:STDOUT: %.loc15_44.7: init @Get.%tuple.type (%tuple.type.cab) = tuple_init (%.loc15_44.4, %.loc15_44.6) to %return +// CHECK:STDOUT: %.loc15_45: init @Get.%tuple.type (%tuple.type.cab) = converted %Get.call, %.loc15_44.7 // CHECK:STDOUT: return %.loc15_45 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -246,26 +246,26 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %U.loc16_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc16_24.1 (constants.%U)] // CHECK:STDOUT: %U.patt.loc16_24.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc16_24.1 (constants.%U.patt)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@GetNoDeduce.%T (%T), @GetNoDeduce.%U.loc16_24.1 (%U)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@GetNoDeduce.%T (%T), @GetNoDeduce.%U.loc16_24.1 (%U)) [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_19: = require_complete_type @GetNoDeduce.%T (%T) [symbolic = %require_complete.loc16_19 (constants.%require_complete.2)] -// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.1)] -// CHECK:STDOUT: %GetNoDeduce: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.1) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.1)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2: = specific_function %GetNoDeduce, @GetNoDeduce(%T, %U.loc16_24.1) [symbolic = %GetNoDeduce.specific_fn.loc16_53.2 (constants.%GetNoDeduce.specific_fn.1)] -// CHECK:STDOUT: %require_complete.loc16_70: = require_complete_type @GetNoDeduce.%tuple.type (%tuple.type.2) [symbolic = %require_complete.loc16_70 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc16_69: = require_complete_type @GetNoDeduce.%U.loc16_24.1 (%U) [symbolic = %require_complete.loc16_69 (constants.%require_complete.3)] +// CHECK:STDOUT: %require_complete.loc16_19: = require_complete_type @GetNoDeduce.%T (%T) [symbolic = %require_complete.loc16_19 (constants.%require_complete.db1)] +// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.2b9)] +// CHECK:STDOUT: %GetNoDeduce: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.2b9) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.9f5)] +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2: = specific_function %GetNoDeduce, @GetNoDeduce(%T, %U.loc16_24.1) [symbolic = %GetNoDeduce.specific_fn.loc16_53.2 (constants.%GetNoDeduce.specific_fn.157)] +// CHECK:STDOUT: %require_complete.loc16_70: = require_complete_type @GetNoDeduce.%tuple.type (%tuple.type.cab) [symbolic = %require_complete.loc16_70 (constants.%require_complete.73f)] +// CHECK:STDOUT: %require_complete.loc16_69: = require_complete_type @GetNoDeduce.%U.loc16_24.1 (%U) [symbolic = %require_complete.loc16_69 (constants.%require_complete.427)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param_patt: @GetNoDeduce.%T (%T), %U.param_patt: type) -> %return.param_patt: @GetNoDeduce.%tuple.type (%tuple.type.2) { +// CHECK:STDOUT: fn(%x.param_patt: @GetNoDeduce.%T (%T), %U.param_patt: type) -> %return.param_patt: @GetNoDeduce.%tuple.type (%tuple.type.cab) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc16_53: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.1) = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%T) [symbolic = %GetNoDeduce (constants.%GetNoDeduce.1)] -// CHECK:STDOUT: %GetNoDeduce.ref: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.1) = name_ref GetNoDeduce, %.loc16_53 [symbolic = %GetNoDeduce (constants.%GetNoDeduce.1)] +// CHECK:STDOUT: %.loc16_53: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.2b9) = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%T) [symbolic = %GetNoDeduce (constants.%GetNoDeduce.9f5)] +// CHECK:STDOUT: %GetNoDeduce.ref: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.2b9) = name_ref GetNoDeduce, %.loc16_53 [symbolic = %GetNoDeduce (constants.%GetNoDeduce.9f5)] // CHECK:STDOUT: %x.ref: @GetNoDeduce.%T (%T) = name_ref x, %x // CHECK:STDOUT: %U.ref.loc16_68: type = name_ref U, %U.loc16_24.2 [symbolic = %U.loc16_24.1 (constants.%U)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.1: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%T, constants.%U) [symbolic = %GetNoDeduce.specific_fn.loc16_53.2 (constants.%GetNoDeduce.specific_fn.1)] -// CHECK:STDOUT: %.loc16_69.1: ref @GetNoDeduce.%tuple.type (%tuple.type.2) = temporary_storage -// CHECK:STDOUT: %GetNoDeduce.call: init @GetNoDeduce.%tuple.type (%tuple.type.2) = call %GetNoDeduce.specific_fn.loc16_53.1(%x.ref) to %.loc16_69.1 -// CHECK:STDOUT: %.loc16_69.2: ref @GetNoDeduce.%tuple.type (%tuple.type.2) = temporary %.loc16_69.1, %GetNoDeduce.call +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.1: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%T, constants.%U) [symbolic = %GetNoDeduce.specific_fn.loc16_53.2 (constants.%GetNoDeduce.specific_fn.157)] +// CHECK:STDOUT: %.loc16_69.1: ref @GetNoDeduce.%tuple.type (%tuple.type.cab) = temporary_storage +// CHECK:STDOUT: %GetNoDeduce.call: init @GetNoDeduce.%tuple.type (%tuple.type.cab) = call %GetNoDeduce.specific_fn.loc16_53.1(%x.ref) to %.loc16_69.1 +// CHECK:STDOUT: %.loc16_69.2: ref @GetNoDeduce.%tuple.type (%tuple.type.cab) = temporary %.loc16_69.1, %GetNoDeduce.call // CHECK:STDOUT: %tuple.elem0.loc16_69.1: ref @GetNoDeduce.%T (%T) = tuple_access %.loc16_69.2, element0 // CHECK:STDOUT: %.loc16_69.3: @GetNoDeduce.%T (%T) = bind_value %tuple.elem0.loc16_69.1 // CHECK:STDOUT: %tuple.elem0.loc16_69.2: ref @GetNoDeduce.%T (%T) = tuple_access %return, element0 @@ -274,39 +274,39 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %.loc16_69.5: @GetNoDeduce.%U.loc16_24.1 (%U) = bind_value %tuple.elem1.loc16_69.1 // CHECK:STDOUT: %tuple.elem1.loc16_69.2: ref @GetNoDeduce.%U.loc16_24.1 (%U) = tuple_access %return, element1 // CHECK:STDOUT: %.loc16_69.6: init @GetNoDeduce.%U.loc16_24.1 (%U) = initialize_from %.loc16_69.5 to %tuple.elem1.loc16_69.2 -// CHECK:STDOUT: %.loc16_69.7: init @GetNoDeduce.%tuple.type (%tuple.type.2) = tuple_init (%.loc16_69.4, %.loc16_69.6) to %return -// CHECK:STDOUT: %.loc16_70: init @GetNoDeduce.%tuple.type (%tuple.type.2) = converted %GetNoDeduce.call, %.loc16_69.7 +// CHECK:STDOUT: %.loc16_69.7: init @GetNoDeduce.%tuple.type (%tuple.type.cab) = tuple_init (%.loc16_69.4, %.loc16_69.6) to %return +// CHECK:STDOUT: %.loc16_70: init @GetNoDeduce.%tuple.type (%tuple.type.cab) = converted %GetNoDeduce.call, %.loc16_69.7 // CHECK:STDOUT: return %.loc16_70 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallGenericMethod(%c.param_patt: %Class.2) -> %return.param_patt: %tuple.type.3 { +// CHECK:STDOUT: fn @CallGenericMethod(%c.param_patt: %Class.b0a) -> %return.param_patt: %tuple.type.cc6 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %Class.2 = name_ref c, %c -// CHECK:STDOUT: %.loc20: %Get.type.2 = specific_constant @Class.%Get.decl, @Class(constants.%A) [template = constants.%Get.2] -// CHECK:STDOUT: %Get.ref: %Get.type.2 = name_ref Get, %.loc20 [template = constants.%Get.2] +// CHECK:STDOUT: %c.ref: %Class.b0a = name_ref c, %c +// CHECK:STDOUT: %.loc20: %Get.type.c9b = specific_constant @Class.%Get.decl, @Class(constants.%A) [template = constants.%Get.0f1] +// CHECK:STDOUT: %Get.ref: %Get.type.c9b = name_ref Get, %.loc20 [template = constants.%Get.0f1] // CHECK:STDOUT: %B.ref.loc20: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%A, constants.%B) [template = constants.%Get.specific_fn.2] -// CHECK:STDOUT: %.loc19_35: ref %tuple.type.3 = splice_block %return {} -// CHECK:STDOUT: %Get.call: init %tuple.type.3 = call %Get.specific_fn() to %.loc19_35 +// CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%A, constants.%B) [template = constants.%Get.specific_fn.f78] +// CHECK:STDOUT: %.loc19_35: ref %tuple.type.cc6 = splice_block %return {} +// CHECK:STDOUT: %Get.call: init %tuple.type.cc6 = call %Get.specific_fn() to %.loc19_35 // CHECK:STDOUT: return %Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallGenericMethodWithNonDeducedParam(%c.param_patt: %Class.2) -> %return.param_patt: %tuple.type.3 { +// CHECK:STDOUT: fn @CallGenericMethodWithNonDeducedParam(%c.param_patt: %Class.b0a) -> %return.param_patt: %tuple.type.cc6 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %Class.2 = name_ref c, %c -// CHECK:STDOUT: %.loc24_11: %GetNoDeduce.type.2 = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%A) [template = constants.%GetNoDeduce.2] -// CHECK:STDOUT: %GetNoDeduce.ref: %GetNoDeduce.type.2 = name_ref GetNoDeduce, %.loc24_11 [template = constants.%GetNoDeduce.2] +// CHECK:STDOUT: %c.ref: %Class.b0a = name_ref c, %c +// CHECK:STDOUT: %.loc24_11: %GetNoDeduce.type.bd6 = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%A) [template = constants.%GetNoDeduce.073] +// CHECK:STDOUT: %GetNoDeduce.ref: %GetNoDeduce.type.bd6 = name_ref GetNoDeduce, %.loc24_11 [template = constants.%GetNoDeduce.073] // CHECK:STDOUT: %.loc24_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %B.ref.loc24: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%A, constants.%B) [template = constants.%GetNoDeduce.specific_fn.2] -// CHECK:STDOUT: %.loc23_54: ref %tuple.type.3 = splice_block %return {} +// CHECK:STDOUT: %GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%A, constants.%B) [template = constants.%GetNoDeduce.specific_fn.21a] +// CHECK:STDOUT: %.loc23_54: ref %tuple.type.cc6 = splice_block %return {} // CHECK:STDOUT: %.loc24_25.2: ref %A = temporary_storage // CHECK:STDOUT: %.loc24_25.3: init %A = class_init (), %.loc24_25.2 [template = constants.%A.val] // CHECK:STDOUT: %.loc24_25.4: ref %A = temporary %.loc24_25.2, %.loc24_25.3 // CHECK:STDOUT: %.loc24_25.5: ref %A = converted %.loc24_25.1, %.loc24_25.4 // CHECK:STDOUT: %.loc24_25.6: %A = bind_value %.loc24_25.5 -// CHECK:STDOUT: %GetNoDeduce.call: init %tuple.type.3 = call %GetNoDeduce.specific_fn(%.loc24_25.6) to %.loc23_54 +// CHECK:STDOUT: %GetNoDeduce.call: init %tuple.type.cc6 = call %GetNoDeduce.specific_fn(%.loc24_25.6) to %.loc23_54 // CHECK:STDOUT: return %GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -315,40 +315,40 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.patt.loc14_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.1 -// CHECK:STDOUT: %Get => constants.%Get.1 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.1 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.1 +// CHECK:STDOUT: %Get.type => constants.%Get.type.6c9 +// CHECK:STDOUT: %Get => constants.%Get.ca7 +// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.2b9 +// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.9f5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%T, constants.%U) { // CHECK:STDOUT: %U.loc15_10.1 => constants.%U // CHECK:STDOUT: %U.patt.loc15_10.1 => constants.%U // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cab // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc15_20 => constants.%require_complete.1 -// CHECK:STDOUT: %Get.type => constants.%Get.type.1 -// CHECK:STDOUT: %Get => constants.%Get.1 -// CHECK:STDOUT: %Get.specific_fn.loc15_39.2 => constants.%Get.specific_fn.1 -// CHECK:STDOUT: %require_complete.loc15_44.1 => constants.%require_complete.2 -// CHECK:STDOUT: %require_complete.loc15_44.2 => constants.%require_complete.3 +// CHECK:STDOUT: %require_complete.loc15_20 => constants.%require_complete.73f +// CHECK:STDOUT: %Get.type => constants.%Get.type.6c9 +// CHECK:STDOUT: %Get => constants.%Get.ca7 +// CHECK:STDOUT: %Get.specific_fn.loc15_39.2 => constants.%Get.specific_fn.62e +// CHECK:STDOUT: %require_complete.loc15_44.1 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc15_44.2 => constants.%require_complete.427 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GetNoDeduce(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %U.loc16_24.1 => constants.%U // CHECK:STDOUT: %U.patt.loc16_24.1 => constants.%U -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cab // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_19 => constants.%require_complete.2 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.1 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.1 -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2 => constants.%GetNoDeduce.specific_fn.1 -// CHECK:STDOUT: %require_complete.loc16_70 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc16_69 => constants.%require_complete.3 +// CHECK:STDOUT: %require_complete.loc16_19 => constants.%require_complete.db1 +// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.2b9 +// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.9f5 +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2 => constants.%GetNoDeduce.specific_fn.157 +// CHECK:STDOUT: %require_complete.loc16_70 => constants.%require_complete.73f +// CHECK:STDOUT: %require_complete.loc16_69 => constants.%require_complete.427 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(%T.loc14_13.2) {} @@ -366,39 +366,39 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %T.patt.loc14_13.2 => constants.%A // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type => constants.%Get.type.2 -// CHECK:STDOUT: %Get => constants.%Get.2 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.2 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.2 +// CHECK:STDOUT: %Get.type => constants.%Get.type.c9b +// CHECK:STDOUT: %Get => constants.%Get.0f1 +// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.bd6 +// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.073 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%A, constants.%B) { // CHECK:STDOUT: %U.loc15_10.1 => constants.%B // CHECK:STDOUT: %U.patt.loc15_10.1 => constants.%B // CHECK:STDOUT: %T => constants.%A -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.3 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc15_20 => constants.%complete_type.2 -// CHECK:STDOUT: %Get.type => constants.%Get.type.2 -// CHECK:STDOUT: %Get => constants.%Get.2 -// CHECK:STDOUT: %Get.specific_fn.loc15_39.2 => constants.%Get.specific_fn.2 -// CHECK:STDOUT: %require_complete.loc15_44.1 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc15_44.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete.loc15_20 => constants.%complete_type.56a +// CHECK:STDOUT: %Get.type => constants.%Get.type.c9b +// CHECK:STDOUT: %Get => constants.%Get.0f1 +// CHECK:STDOUT: %Get.specific_fn.loc15_39.2 => constants.%Get.specific_fn.f78 +// CHECK:STDOUT: %require_complete.loc15_44.1 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc15_44.2 => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GetNoDeduce(constants.%A, constants.%B) { // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %U.loc16_24.1 => constants.%B // CHECK:STDOUT: %U.patt.loc16_24.1 => constants.%B -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.3 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_19 => constants.%complete_type.1 -// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.2 -// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.2 -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2 => constants.%GetNoDeduce.specific_fn.2 -// CHECK:STDOUT: %require_complete.loc16_70 => constants.%complete_type.2 -// CHECK:STDOUT: %require_complete.loc16_69 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete.loc16_19 => constants.%complete_type.357 +// CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.bd6 +// CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.073 +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc16_53.2 => constants.%GetNoDeduce.specific_fn.21a +// CHECK:STDOUT: %require_complete.loc16_70 => constants.%complete_type.56a +// CHECK:STDOUT: %require_complete.loc16_69 => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/redeclare.carbon b/toolchain/check/testdata/class/generic/redeclare.carbon index 867a293925e2..bed465ec4238 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -155,7 +155,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%T) [symbolic] +// CHECK:STDOUT: %.a77: type = class_type @.1, @.1(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -195,7 +195,7 @@ class E(U:! type) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a77 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -210,24 +210,24 @@ class E(U:! type) {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %B.type: type = generic_class_type @B [template] // CHECK:STDOUT: %B.generic: %B.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %N.3: %T = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.3: %T = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.27f: %T = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.451: %T = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%T, %N.3) [symbolic] +// CHECK:STDOUT: %.aab: type = class_type @.1, @.1(%T, %N.27f) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -240,33 +240,33 @@ class E(U:! type) {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %B.decl: %B.type = class_decl @B [template = constants.%B.generic] { -// CHECK:STDOUT: %N.patt.loc4_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_9.1, runtime_param [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_9.1, runtime_param [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %N.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc4: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_9.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_9.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %T.patt.loc12_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_9.1, runtime_param [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc12_19.1: @.1.%T.loc12_9.2 (%T) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.3)] -// CHECK:STDOUT: %N.param_patt: @.1.%T.loc12_9.2 (%T) = value_param_pattern %N.patt.loc12_19.1, runtime_param [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.3)] +// CHECK:STDOUT: %N.patt.loc12_19.1: @.1.%T.loc12_9.2 (%T) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.451)] +// CHECK:STDOUT: %N.param_patt: @.1.%T.loc12_9.2 (%T) = value_param_pattern %N.patt.loc12_19.1, runtime_param [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.451)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc12_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T)] // CHECK:STDOUT: %N.param: @.1.%T.loc12_9.2 (%T) = value_param runtime_param // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_9.1 [symbolic = %T.loc12_9.2 (constants.%T)] -// CHECK:STDOUT: %N.loc12_19.1: @.1.%T.loc12_9.2 (%T) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc12_19.2 (constants.%N.3)] +// CHECK:STDOUT: %N.loc12_19.1: @.1.%T.loc12_9.2 (%T) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc12_19.2 (constants.%N.27f)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @B(%N.loc4_9.1: %i32) { -// CHECK:STDOUT: %N.loc4_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_9.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_9.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: class; // CHECK:STDOUT: } @@ -274,30 +274,30 @@ class E(U:! type) {} // CHECK:STDOUT: generic class @.1(%T.loc12_9.1: type, %N.loc12_19.1: @.1.%T.loc12_9.2 (%T)) { // CHECK:STDOUT: %T.loc12_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_9.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc12_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc12_19.2: %T = bind_symbolic_name N, 1 [symbolic = %N.loc12_19.2 (constants.%N.3)] -// CHECK:STDOUT: %N.patt.loc12_19.2: %T = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.3)] +// CHECK:STDOUT: %N.loc12_19.2: %T = bind_symbolic_name N, 1 [symbolic = %N.loc12_19.2 (constants.%N.27f)] +// CHECK:STDOUT: %N.patt.loc12_19.2: %T = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc12_19.2 (constants.%N.patt.451)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.aab // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @B(constants.%N.2) { -// CHECK:STDOUT: %N.loc4_9.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%N.2 +// CHECK:STDOUT: specific @B(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc4_9.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%T, constants.%N.3) { +// CHECK:STDOUT: specific @.1(constants.%T, constants.%N.27f) { // CHECK:STDOUT: %T.loc12_9.2 => constants.%T // CHECK:STDOUT: %T.patt.loc12_9.2 => constants.%T -// CHECK:STDOUT: %N.loc12_19.2 => constants.%N.3 -// CHECK:STDOUT: %N.patt.loc12_19.2 => constants.%N.3 +// CHECK:STDOUT: %N.loc12_19.2 => constants.%N.27f +// CHECK:STDOUT: %N.patt.loc12_19.2 => constants.%N.27f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_mismatch_param_count.carbon @@ -313,14 +313,14 @@ class E(U:! type) {} // CHECK:STDOUT: %U.patt: %i32 = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%T, %U) [symbolic] +// CHECK:STDOUT: %.b25: type = class_type @.1, @.1(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -372,10 +372,10 @@ class E(U:! type) {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.b25 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -395,24 +395,24 @@ class E(U:! type) {} // CHECK:STDOUT: --- fail_mismatch_param_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.6ba: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d86: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %D.type: type = generic_class_type @D [template] // CHECK:STDOUT: %D.generic: %D.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %T.2: %i32 = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %i32 = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.0de: %i32 = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.92b: %i32 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%T.2) [symbolic] +// CHECK:STDOUT: %.3b8: type = class_type @.1, @.1(%T.0de) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -425,55 +425,55 @@ class E(U:! type) {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %D.decl: %D.type = class_decl @D [template = constants.%D.generic] { -// CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_9.1, runtime_param [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T.6ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.generic] { -// CHECK:STDOUT: %T.patt.loc12_9.1: %i32 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %i32 = value_param_pattern %T.patt.loc12_9.1, runtime_param [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc12_9.1: %i32 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.92b)] +// CHECK:STDOUT: %T.param_patt: %i32 = value_param_pattern %T.patt.loc12_9.1, runtime_param [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.92b)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc12: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc12_9.1: %i32 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc12_9.1: %i32 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_9.2 (constants.%T.0de)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @D(%T.loc4_9.1: type) { -// CHECK:STDOUT: %T.loc4_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc4_9.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_9.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc4_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: class; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @.1(%T.loc12_9.1: %i32) { -// CHECK:STDOUT: %T.loc12_9.2: %i32 = bind_symbolic_name T, 0 [symbolic = %T.loc12_9.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc12_9.2: %i32 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.loc12_9.2: %i32 = bind_symbolic_name T, 0 [symbolic = %T.loc12_9.2 (constants.%T.0de)] +// CHECK:STDOUT: %T.patt.loc12_9.2: %i32 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_9.2 (constants.%T.patt.92b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.3b8 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @D(constants.%T.1) { -// CHECK:STDOUT: %T.loc4_9.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_9.2 => constants.%T.1 +// CHECK:STDOUT: specific @D(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc4_9.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc4_9.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%T.2) { -// CHECK:STDOUT: %T.loc12_9.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc12_9.2 => constants.%T.2 +// CHECK:STDOUT: specific @.1(constants.%T.0de) { +// CHECK:STDOUT: %T.loc12_9.2 => constants.%T.0de +// CHECK:STDOUT: %T.patt.loc12_9.2 => constants.%T.0de // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_mismatch_param_name.carbon @@ -487,7 +487,7 @@ class E(U:! type) {} // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%U) [symbolic] +// CHECK:STDOUT: %.fc8: type = class_type @.1, @.1(%U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -538,7 +538,7 @@ class E(U:! type) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.fc8 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index 40a20ce0bd9a..742145dfa8fd 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -100,7 +100,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -154,29 +154,29 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [template] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [template] -// CHECK:STDOUT: %Outer.1: type = class_type @Outer, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Outer.cc3: type = class_type @Outer, @Outer(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %Inner.type.1: type = generic_class_type @Inner, @Outer(%T) [symbolic] -// CHECK:STDOUT: %Inner.generic.1: %Inner.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.1: type = class_type @Inner, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.type.099: type = generic_class_type @Inner, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Inner.generic.c26: %Inner.type.099 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.188: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %empty_struct_type [template] -// CHECK:STDOUT: %Outer.2: type = class_type @Outer, @Outer(%ptr.1) [template] -// CHECK:STDOUT: %Inner.type.2: type = generic_class_type @Inner, @Outer(%ptr.1) [template] -// CHECK:STDOUT: %Inner.generic.2: %Inner.type.2 = struct_value () [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [template] +// CHECK:STDOUT: %Outer.246: type = class_type @Outer, @Outer(%ptr.c28) [template] +// CHECK:STDOUT: %Inner.type.5f0: type = generic_class_type @Inner, @Outer(%ptr.c28) [template] +// CHECK:STDOUT: %Inner.generic.521: %Inner.type.5f0 = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %struct_type.a [template] -// CHECK:STDOUT: %Inner.2: type = class_type @Inner, @Inner(%ptr.1, %ptr.2) [template] +// CHECK:STDOUT: %ptr.1b6: type = ptr_type %struct_type.a [template] +// CHECK:STDOUT: %Inner.fef: type = class_type @Inner, @Inner(%ptr.c28, %ptr.1b6) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -197,10 +197,10 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %v.var: ref %Outer.2 = var v -// CHECK:STDOUT: %v: ref %Outer.2 = bind_name v, %v.var -// CHECK:STDOUT: %w.var: ref %Inner.2 = var w -// CHECK:STDOUT: %w: ref %Inner.2 = bind_name w, %w.var +// CHECK:STDOUT: %v.var: ref %Outer.246 = var v +// CHECK:STDOUT: %v: ref %Outer.246 = bind_name v, %v.var +// CHECK:STDOUT: %w.var: ref %Inner.fef = var w +// CHECK:STDOUT: %w: ref %Inner.fef = bind_name w, %w.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Outer(%T.loc4_13.1: type) { @@ -208,21 +208,21 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc4_13.2) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc4_13.2) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.1) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.1)] { +// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.099) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.c26)] { // CHECK:STDOUT: %U.patt.loc5_15.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc5_15.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc5_15.1, runtime_param [symbolic = %U.patt.loc5_15.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc5_15.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Outer.1 +// CHECK:STDOUT: .Self = constants.%Outer.cc3 // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -235,18 +235,18 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Inner.1 +// CHECK:STDOUT: .Self = constants.%Inner.188 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.ref: ref %Outer.2 = name_ref v, file.%v -// CHECK:STDOUT: %.loc19: %Inner.2 = converted %v.ref, [template = ] +// CHECK:STDOUT: %v.ref: ref %Outer.246 = name_ref v, file.%v +// CHECK:STDOUT: %.loc19: %Inner.fef = converted %v.ref, [template = ] // CHECK:STDOUT: assign file.%w.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -263,18 +263,18 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(%T.loc4_13.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Outer(constants.%ptr.1) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.1 -// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.1 +// CHECK:STDOUT: specific @Outer(constants.%ptr.c28) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.c28 +// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.c28 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.2 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.5f0 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.521 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%ptr.1, constants.%ptr.2) { -// CHECK:STDOUT: %U.loc5_15.2 => constants.%ptr.2 -// CHECK:STDOUT: %U.patt.loc5_15.2 => constants.%ptr.2 +// CHECK:STDOUT: specific @Inner(constants.%ptr.c28, constants.%ptr.1b6) { +// CHECK:STDOUT: %U.loc5_15.2 => constants.%ptr.1b6 +// CHECK:STDOUT: %U.patt.loc5_15.2 => constants.%ptr.1b6 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -285,21 +285,21 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%N.2) [symbolic] +// CHECK:STDOUT: %C.3b9: type = class_type @C, @C(%N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_123.2: %i32 = int_value 123 [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%int_123.2) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_123.641: %i32 = int_value 123 [template] +// CHECK:STDOUT: %C.af0: type = class_type @C, @C(%int_123.641) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -313,31 +313,31 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] { -// CHECK:STDOUT: %N.patt.loc4_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_9.1, runtime_param [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_9.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_9.1, runtime_param [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %N.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc4: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_9.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_9.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_9.2 (constants.%N.3e4)] // CHECK:STDOUT: } -// CHECK:STDOUT: %v.var: ref %C.2 = var v -// CHECK:STDOUT: %v: ref %C.2 = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref %C.af0 = var v +// CHECK:STDOUT: %v: ref %C.af0 = bind_name v, %v.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(%N.loc4_9.1: %i32) { -// CHECK:STDOUT: %N.loc4_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_9.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_9.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_9.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_9.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_9.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.3b9 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -345,19 +345,19 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc13_18: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_19: %C.2 = converted %.loc13_18, [template = ] +// CHECK:STDOUT: %.loc13_19: %C.af0 = converted %.loc13_18, [template = ] // CHECK:STDOUT: assign file.%v.var, // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%N.2) { -// CHECK:STDOUT: %N.loc4_9.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%N.2 +// CHECK:STDOUT: specific @C(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc4_9.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_123.2) { -// CHECK:STDOUT: %N.loc4_9.2 => constants.%int_123.2 -// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%int_123.2 +// CHECK:STDOUT: specific @C(constants.%int_123.641) { +// CHECK:STDOUT: %N.loc4_9.2 => constants.%int_123.641 +// CHECK:STDOUT: %N.patt.loc4_9.2 => constants.%int_123.641 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -369,35 +369,35 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %F: %D = bind_symbolic_name F, 0 [symbolic] // CHECK:STDOUT: %F.patt: %D = symbolic_binding_pattern F, 0 [symbolic] // CHECK:STDOUT: %E.type: type = generic_class_type @E [template] // CHECK:STDOUT: %E.generic: %E.type = struct_value () [template] // CHECK:STDOUT: %E: type = class_type @E, @E(%F) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %D.val.2: %D = struct_value (%int_3.2, %int_4.2) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %D.val.e2a: %D = struct_value (%int_3.25b, %int_4.2ec) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -427,7 +427,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: class @D { // CHECK:STDOUT: %.loc5: %D.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc6: %D.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -443,7 +443,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%E @@ -455,26 +455,26 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc24_31: %empty_struct_type = struct_literal () // CHECK:STDOUT: %E.ref: %E.type = name_ref E, file.%E.decl [template = constants.%E.generic] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc24_53.1: %struct_type.a.b.2 = struct_literal (%int_3, %int_4) +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc24_53.1: %struct_type.a.b.cfd = struct_literal (%int_3, %int_4) // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %impl.elem0.loc24_53.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc24_53.1: = bound_method %int_3, %impl.elem0.loc24_53.1 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc24_53.1: = specific_function %Convert.bound.loc24_53.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc24_53.1: init %i32 = call %Convert.specific_fn.loc24_53.1(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc24_53.2: init %i32 = converted %int_3, %int.convert_checked.loc24_53.1 [template = constants.%int_3.2] +// CHECK:STDOUT: %impl.elem0.loc24_53.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc24_53.1: = bound_method %int_3, %impl.elem0.loc24_53.1 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc24_53.1: = specific_function %Convert.bound.loc24_53.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc24_53.1: init %i32 = call %Convert.specific_fn.loc24_53.1(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc24_53.2: init %i32 = converted %int_3, %int.convert_checked.loc24_53.1 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc24_53.3: ref %D = temporary_storage // CHECK:STDOUT: %.loc24_53.4: ref %i32 = class_element_access %.loc24_53.3, element0 -// CHECK:STDOUT: %.loc24_53.5: init %i32 = initialize_from %.loc24_53.2 to %.loc24_53.4 [template = constants.%int_3.2] -// CHECK:STDOUT: %impl.elem0.loc24_53.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc24_53.2: = bound_method %int_4, %impl.elem0.loc24_53.2 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc24_53.2: = specific_function %Convert.bound.loc24_53.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc24_53.2: init %i32 = call %Convert.specific_fn.loc24_53.2(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc24_53.6: init %i32 = converted %int_4, %int.convert_checked.loc24_53.2 [template = constants.%int_4.2] +// CHECK:STDOUT: %.loc24_53.5: init %i32 = initialize_from %.loc24_53.2 to %.loc24_53.4 [template = constants.%int_3.25b] +// CHECK:STDOUT: %impl.elem0.loc24_53.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc24_53.2: = bound_method %int_4, %impl.elem0.loc24_53.2 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc24_53.2: = specific_function %Convert.bound.loc24_53.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc24_53.2: init %i32 = call %Convert.specific_fn.loc24_53.2(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc24_53.6: init %i32 = converted %int_4, %int.convert_checked.loc24_53.2 [template = constants.%int_4.2ec] // CHECK:STDOUT: %.loc24_53.7: ref %i32 = class_element_access %.loc24_53.3, element1 -// CHECK:STDOUT: %.loc24_53.8: init %i32 = initialize_from %.loc24_53.6 to %.loc24_53.7 [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc24_53.9: init %D = class_init (%.loc24_53.5, %.loc24_53.8), %.loc24_53.3 [template = constants.%D.val.2] +// CHECK:STDOUT: %.loc24_53.8: init %i32 = initialize_from %.loc24_53.6 to %.loc24_53.7 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc24_53.9: init %D = class_init (%.loc24_53.5, %.loc24_53.8), %.loc24_53.3 [template = constants.%D.val.e2a] // CHECK:STDOUT: %.loc24_53.10: ref %D = temporary %.loc24_53.3, %.loc24_53.9 // CHECK:STDOUT: %.loc24_55.1: ref %D = converted %.loc24_53.1, %.loc24_53.10 // CHECK:STDOUT: %.loc24_55.2: %D = bind_value %.loc24_55.1 diff --git a/toolchain/check/testdata/class/generic_method.carbon b/toolchain/check/testdata/class/generic_method.carbon index bee25bbdd809..ec8f0f5b76d0 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -23,13 +23,13 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Class [symbolic] +// CHECK:STDOUT: %require_complete.723: = require_complete_type %Class [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -77,7 +77,7 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %T.patt.loc11_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Class.%T.loc11_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc11_13.2) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: %Class.elem: type = unbound_element_type @Class.%Class (%Class), @Class.%T.loc11_13.2 (%T) [symbolic = %Class.elem (constants.%Class.elem)] // CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type)] @@ -118,8 +118,8 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc13) [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_26: = require_complete_type @F.%Class (%Class) [symbolic = %require_complete.loc16_26 (constants.%require_complete.2)] -// CHECK:STDOUT: %require_complete.loc16_35: = require_complete_type @F.%T.loc13 (%T) [symbolic = %require_complete.loc16_35 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc16_26: = require_complete_type @F.%Class (%Class) [symbolic = %require_complete.loc16_26 (constants.%require_complete.723)] +// CHECK:STDOUT: %require_complete.loc16_35: = require_complete_type @F.%T.loc13 (%T) [symbolic = %require_complete.loc16_35 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: %Class](%n.param_patt: %T) { // CHECK:STDOUT: !entry: @@ -132,7 +132,7 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: %Class => constants.%Class // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %F.type => constants.%F.type diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index d5be6b77c7e9..aa40f5210a22 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -54,13 +54,13 @@ fn Run() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Empty: type = class_type @Empty [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Field: type = class_type @Field [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Field.elem: type = unbound_element_type %Field, %i32 [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %ForwardDeclared: type = class_type @ForwardDeclared [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] @@ -72,7 +72,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -95,7 +95,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Empty { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Empty @@ -104,7 +104,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Field { // CHECK:STDOUT: %.loc8: %Field.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Field @@ -133,7 +133,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %self: %ptr = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ForwardDeclared @@ -156,70 +156,70 @@ fn Run() { // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: %Empty: type = class_type @Empty [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Empty.val: %Empty = struct_value () [template] // CHECK:STDOUT: %Field: type = class_type @Field [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.1 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.22), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Field.val: %Field = struct_value (%int_1.2) [template] +// CHECK:STDOUT: %struct_type.x.6d6: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.555: = complete_type_witness %struct_type.x.6d6 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.e4d: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Field.val: %Field = struct_value (%int_1.059) [template] // CHECK:STDOUT: %Field.elem: type = unbound_element_type %Field, %i32 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %ForwardDeclared.1: type = class_type @ForwardDeclared.1 [template] -// CHECK:STDOUT: %ForwardDeclared.val: %ForwardDeclared.1 = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] +// CHECK:STDOUT: %ForwardDeclared.7b34f2.1: type = class_type @ForwardDeclared.1 [template] +// CHECK:STDOUT: %ForwardDeclared.val: %ForwardDeclared.7b34f2.1 = struct_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %ForwardDeclared.1 [template] +// CHECK:STDOUT: %ptr.6cf: type = ptr_type %ForwardDeclared.7b34f2.1 [template] // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type %Incomplete [template] +// CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, Empty, loaded [template = constants.%Empty] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, Field, loaded [template = constants.%Field] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//a, ForwardDeclared, loaded [template = constants.%ForwardDeclared.1] -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//a, Incomplete, loaded [template = constants.%Incomplete] +// CHECK:STDOUT: %import_ref.b50: type = import_ref Main//a, Empty, loaded [template = constants.%Empty] +// CHECK:STDOUT: %import_ref.ad2: type = import_ref Main//a, Field, loaded [template = constants.%Field] +// CHECK:STDOUT: %import_ref.a15: type = import_ref Main//a, ForwardDeclared, loaded [template = constants.%ForwardDeclared.7b34f2.1] +// CHECK:STDOUT: %import_ref.81e: type = import_ref Main//a, Incomplete, loaded [template = constants.%Incomplete] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.13 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: = import_ref Main//a, loc5_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//a, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref Main//a, loc9_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//a, inst21 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: %Field.elem = import_ref Main//a, loc8_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.260: = import_ref Main//a, loc16_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.261 = import_ref Main//a, inst56 [no loc], unloaded -// CHECK:STDOUT: %import_ref.262: %F.type = import_ref Main//a, loc14_21, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.263: %G.type = import_ref Main//a, loc15_27, loaded [template = constants.%G] -// CHECK:STDOUT: %import_ref.264: = import_ref Main//a, loc16_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.265 = import_ref Main//a, inst56 [no loc], unloaded -// CHECK:STDOUT: %import_ref.266 = import_ref Main//a, loc14_21, unloaded -// CHECK:STDOUT: %import_ref.267 = import_ref Main//a, loc15_27, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//a, loc5_1, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.fd7 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.377: = import_ref Main//a, loc9_1, loaded [template = constants.%complete_type.555] +// CHECK:STDOUT: %import_ref.845 = import_ref Main//a, inst21 [no loc], unloaded +// CHECK:STDOUT: %import_ref.64e: %Field.elem = import_ref Main//a, loc8_8, loaded [template = %.259] +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//a, loc16_1, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.39e731.1 = import_ref Main//a, inst56 [no loc], unloaded +// CHECK:STDOUT: %import_ref.40e: %F.type = import_ref Main//a, loc14_21, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.876: %G.type = import_ref Main//a, loc15_27, loaded [template = constants.%G] +// CHECK:STDOUT: %import_ref.8f24d3.3: = import_ref Main//a, loc16_1, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.39e731.2 = import_ref Main//a, inst56 [no loc], unloaded +// CHECK:STDOUT: %import_ref.31e = import_ref Main//a, loc14_21, unloaded +// CHECK:STDOUT: %import_ref.ed7 = import_ref Main//a, loc15_27, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Empty = imports.%import_ref.1 -// CHECK:STDOUT: .Field = imports.%import_ref.2 -// CHECK:STDOUT: .ForwardDeclared = imports.%import_ref.3 -// CHECK:STDOUT: .Incomplete = imports.%import_ref.4 +// CHECK:STDOUT: .Empty = imports.%import_ref.b50 +// CHECK:STDOUT: .Field = imports.%import_ref.ad2 +// CHECK:STDOUT: .ForwardDeclared = imports.%import_ref.a15 +// CHECK:STDOUT: .Incomplete = imports.%import_ref.81e // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } @@ -230,31 +230,31 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Empty [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.fd7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: .x = imports.%import_ref.12 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.845 +// CHECK:STDOUT: .x = imports.%import_ref.64e +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.377 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.261 -// CHECK:STDOUT: .F = imports.%import_ref.262 -// CHECK:STDOUT: .G = imports.%import_ref.263 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.260 +// CHECK:STDOUT: .Self = imports.%import_ref.39e731.1 +// CHECK:STDOUT: .F = imports.%import_ref.40e +// CHECK:STDOUT: .G = imports.%import_ref.876 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.2 [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.265 -// CHECK:STDOUT: .F = imports.%import_ref.266 -// CHECK:STDOUT: .G = imports.%import_ref.267 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.264 +// CHECK:STDOUT: .Self = imports.%import_ref.39e731.2 +// CHECK:STDOUT: .F = imports.%import_ref.31e +// CHECK:STDOUT: .G = imports.%import_ref.ed7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete [from "a.carbon"]; @@ -269,55 +269,55 @@ fn Run() { // CHECK:STDOUT: assign %a.var, %.loc7_20 // CHECK:STDOUT: %b.var: ref %Field = var b // CHECK:STDOUT: %b: ref %Field = bind_name b, %b.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.2 = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc9: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9: = bound_method %int_1, %impl.elem0.loc9 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc9: = specific_function %Convert.bound.loc9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %Convert.specific_fn.loc9(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_25.2: init %i32 = converted %int_1, %int.convert_checked.loc9 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) +// CHECK:STDOUT: %impl.elem0.loc9: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9: = bound_method %int_1, %impl.elem0.loc9 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc9: = specific_function %Convert.bound.loc9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %Convert.specific_fn.loc9(%int_1) [template = constants.%int_1.059] +// CHECK:STDOUT: %.loc9_25.2: init %i32 = converted %int_1, %int.convert_checked.loc9 [template = constants.%int_1.059] // CHECK:STDOUT: %.loc9_25.3: ref %i32 = class_element_access %b.var, element0 -// CHECK:STDOUT: %.loc9_25.4: init %i32 = initialize_from %.loc9_25.2 to %.loc9_25.3 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc9_25.4: init %i32 = initialize_from %.loc9_25.2 to %.loc9_25.3 [template = constants.%int_1.059] // CHECK:STDOUT: %.loc9_25.5: init %Field = class_init (%.loc9_25.4), %b.var [template = constants.%Field.val] // CHECK:STDOUT: %.loc9_26: init %Field = converted %.loc9_25.1, %.loc9_25.5 [template = constants.%Field.val] // CHECK:STDOUT: assign %b.var, %.loc9_26 // CHECK:STDOUT: %b.ref: ref %Field = name_ref b, %b -// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%import_ref.12 [template = imports.%.1] +// CHECK:STDOUT: %x.ref: %Field.elem = name_ref x, imports.%import_ref.64e [template = imports.%.259] // CHECK:STDOUT: %.loc10_4: ref %i32 = class_element_access %b.ref, element0 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc10: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc10: = bound_method %int_2, %impl.elem0.loc10 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc10: = specific_function %Convert.bound.loc10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %Convert.specific_fn.loc10(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc10_7: init %i32 = converted %int_2, %int.convert_checked.loc10 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc10: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc10: = bound_method %int_2, %impl.elem0.loc10 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc10: = specific_function %Convert.bound.loc10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %Convert.specific_fn.loc10(%int_2) [template = constants.%int_2.ed9] +// CHECK:STDOUT: %.loc10_7: init %i32 = converted %int_2, %int.convert_checked.loc10 [template = constants.%int_2.ed9] // CHECK:STDOUT: assign %.loc10_4, %.loc10_7 -// CHECK:STDOUT: %c.var: ref %ForwardDeclared.1 = var c -// CHECK:STDOUT: %c: ref %ForwardDeclared.1 = bind_name c, %c.var +// CHECK:STDOUT: %c.var: ref %ForwardDeclared.7b34f2.1 = var c +// CHECK:STDOUT: %c: ref %ForwardDeclared.7b34f2.1 = bind_name c, %c.var // CHECK:STDOUT: %.loc12_29.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc12_29.2: init %ForwardDeclared.1 = class_init (), %c.var [template = constants.%ForwardDeclared.val] -// CHECK:STDOUT: %.loc12_30: init %ForwardDeclared.1 = converted %.loc12_29.1, %.loc12_29.2 [template = constants.%ForwardDeclared.val] +// CHECK:STDOUT: %.loc12_29.2: init %ForwardDeclared.7b34f2.1 = class_init (), %c.var [template = constants.%ForwardDeclared.val] +// CHECK:STDOUT: %.loc12_30: init %ForwardDeclared.7b34f2.1 = converted %.loc12_29.1, %.loc12_29.2 [template = constants.%ForwardDeclared.val] // CHECK:STDOUT: assign %c.var, %.loc12_30 -// CHECK:STDOUT: %c.ref.loc13: ref %ForwardDeclared.1 = name_ref c, %c -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.262 [template = constants.%F] +// CHECK:STDOUT: %c.ref.loc13: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.40e [template = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %c.ref.loc13, %F.ref -// CHECK:STDOUT: %.loc13: %ForwardDeclared.1 = bind_value %c.ref.loc13 +// CHECK:STDOUT: %.loc13: %ForwardDeclared.7b34f2.1 = bind_value %c.ref.loc13 // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc13) -// CHECK:STDOUT: %c.ref.loc14: ref %ForwardDeclared.1 = name_ref c, %c -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%import_ref.263 [template = constants.%G] +// CHECK:STDOUT: %c.ref.loc14: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c +// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%import_ref.876 [template = constants.%G] // CHECK:STDOUT: %G.bound: = bound_method %c.ref.loc14, %G.ref -// CHECK:STDOUT: %addr.loc14: %ptr.3 = addr_of %c.ref.loc14 +// CHECK:STDOUT: %addr.loc14: %ptr.6cf = addr_of %c.ref.loc14 // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound(%addr.loc14) -// CHECK:STDOUT: %d.var: ref %ptr.3 = var d -// CHECK:STDOUT: %d: ref %ptr.3 = bind_name d, %d.var -// CHECK:STDOUT: %c.ref.loc16: ref %ForwardDeclared.1 = name_ref c, %c -// CHECK:STDOUT: %addr.loc16: %ptr.3 = addr_of %c.ref.loc16 +// CHECK:STDOUT: %d.var: ref %ptr.6cf = var d +// CHECK:STDOUT: %d: ref %ptr.6cf = bind_name d, %d.var +// CHECK:STDOUT: %c.ref.loc16: ref %ForwardDeclared.7b34f2.1 = name_ref c, %c +// CHECK:STDOUT: %addr.loc16: %ptr.6cf = addr_of %c.ref.loc16 // CHECK:STDOUT: assign %d.var, %addr.loc16 -// CHECK:STDOUT: %e.var: ref %ptr.4 = var e -// CHECK:STDOUT: %e: ref %ptr.4 = bind_name e, %e.var +// CHECK:STDOUT: %e.var: ref %ptr.c62 = var e +// CHECK:STDOUT: %e: ref %ptr.c62 = bind_name e, %e.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F[%self.param_patt: %ForwardDeclared.1]() [from "a.carbon"]; +// CHECK:STDOUT: fn @F[%self.param_patt: %ForwardDeclared.7b34f2.1]() [from "a.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @G[addr .inst1019: %ptr.3]() [from "a.carbon"]; +// CHECK:STDOUT: fn @G[addr .inst1019: %ptr.6cf]() [from "a.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 6537229e5a31..4057c7c4079a 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -48,16 +48,16 @@ fn Run() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] // CHECK:STDOUT: %struct_type.x.unused: type = struct_type {.x: %i32, .unused: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.unused [template] +// CHECK:STDOUT: %complete_type.39a: = complete_type_witness %struct_type.x.unused [template] // CHECK:STDOUT: %Child: type = class_type @Child [template] // CHECK:STDOUT: %Child.elem: type = unbound_element_type %Child, %Base [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -93,7 +93,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8: %Base.elem = field_decl x, element0 [template] // CHECK:STDOUT: %.loc9: %Base.elem = field_decl unused, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.unused [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.unused [template = constants.%complete_type.39a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -107,7 +107,7 @@ fn Run() { // CHECK:STDOUT: class @Child { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc13: %Child.elem = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Child @@ -130,59 +130,59 @@ fn Run() { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.x.unused.1: type = struct_type {.x: %i32, .unused: %i32} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.x.unused.1 [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base.1 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.x.unused.2: type = struct_type {.x: Core.IntLiteral, .unused: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct_type.base.3: type = struct_type {.base: %struct_type.x.unused.2} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.26), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Base.val: %Base = struct_value (%int_0.2, %int_1.2) [template] +// CHECK:STDOUT: %struct_type.x.unused.53c: type = struct_type {.x: %i32, .unused: %i32} [template] +// CHECK:STDOUT: %complete_type.847: = complete_type_witness %struct_type.x.unused.53c [template] +// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.x.unused.c45: type = struct_type {.x: Core.IntLiteral, .unused: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.base.6c7: type = struct_type {.base: %struct_type.x.unused.c45} [template] +// CHECK:STDOUT: %Convert.type.e4d: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.300: %i32 = int_value 0 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Base.val: %Base = struct_value (%int_0.300, %int_1.059) [template] // CHECK:STDOUT: %Child.val: %Child = struct_value (%Base.val) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//a, Base, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, Child, loaded [template = constants.%Child] +// CHECK:STDOUT: %import_ref.fb5 = import_ref Main//a, Base, unloaded +// CHECK:STDOUT: %import_ref.d08d: type = import_ref Main//a, Child, loaded [template = constants.%Child] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.17 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: = import_ref Main//a, loc10_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//a, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: %F.type = import_ref Main//a, loc5_21, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//a, loc6_26, unloaded -// CHECK:STDOUT: %import_ref.10: %Base.elem = import_ref Main//a, loc8_8, loaded [template = %.1] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//a, loc9_13, unloaded -// CHECK:STDOUT: %import_ref.13: = import_ref Main//a, loc14_1, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.14 = import_ref Main//a, inst70 [no loc], unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//a, loc13_20, unloaded -// CHECK:STDOUT: %import_ref.16: type = import_ref Main//a, loc13_16, loaded [template = constants.%Base] +// CHECK:STDOUT: %import_ref.38f: = import_ref Main//a, loc10_1, loaded [template = constants.%complete_type.847] +// CHECK:STDOUT: %import_ref.1f3 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.1e1: %F.type = import_ref Main//a, loc5_21, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.a0a = import_ref Main//a, loc6_26, unloaded +// CHECK:STDOUT: %import_ref.56c: %Base.elem = import_ref Main//a, loc8_8, loaded [template = %.09f] +// CHECK:STDOUT: %import_ref.7c5 = import_ref Main//a, loc9_13, unloaded +// CHECK:STDOUT: %import_ref.c5f: = import_ref Main//a, loc14_1, loaded [template = constants.%complete_type.15c] +// CHECK:STDOUT: %import_ref.9a9 = import_ref Main//a, inst70 [no loc], unloaded +// CHECK:STDOUT: %import_ref.000 = import_ref Main//a, loc13_20, unloaded +// CHECK:STDOUT: %import_ref.909ec2.2: type = import_ref Main//a, loc13_16, loaded [template = constants.%Base] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Base = imports.%import_ref.1 -// CHECK:STDOUT: .Child = imports.%import_ref.2 +// CHECK:STDOUT: .Base = imports.%import_ref.fb5 +// CHECK:STDOUT: .Child = imports.%import_ref.d08d // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } @@ -193,64 +193,64 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Child [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.14 -// CHECK:STDOUT: .base = imports.%import_ref.15 -// CHECK:STDOUT: extend imports.%import_ref.16 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.13 +// CHECK:STDOUT: .Self = imports.%import_ref.9a9 +// CHECK:STDOUT: .base = imports.%import_ref.000 +// CHECK:STDOUT: extend imports.%import_ref.909ec2.2 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.c5f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .F = imports.%import_ref.8 -// CHECK:STDOUT: .Unused = imports.%import_ref.9 -// CHECK:STDOUT: .x = imports.%import_ref.10 -// CHECK:STDOUT: .unused = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.6 +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .F = imports.%import_ref.1e1 +// CHECK:STDOUT: .Unused = imports.%import_ref.a0a +// CHECK:STDOUT: .x = imports.%import_ref.56c +// CHECK:STDOUT: .unused = imports.%import_ref.7c5 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.38f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %Child = var a // CHECK:STDOUT: %a: ref %Child = bind_name a, %a.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc7_47.1: %struct_type.x.unused.2 = struct_literal (%int_0, %int_1) -// CHECK:STDOUT: %.loc7_48.1: %struct_type.base.3 = struct_literal (%.loc7_47.1) -// CHECK:STDOUT: %impl.elem0.loc7_47.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc7_47.1: = specific_function %Convert.bound.loc7_47.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc7_47.1: init %i32 = call %Convert.specific_fn.loc7_47.1(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc7_47.2: init %i32 = converted %int_0, %int.convert_checked.loc7_47.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc7_47.1: %struct_type.x.unused.c45 = struct_literal (%int_0, %int_1) +// CHECK:STDOUT: %.loc7_48.1: %struct_type.base.6c7 = struct_literal (%.loc7_47.1) +// CHECK:STDOUT: %impl.elem0.loc7_47.1: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc7_47.1: = specific_function %Convert.bound.loc7_47.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc7_47.1: init %i32 = call %Convert.specific_fn.loc7_47.1(%int_0) [template = constants.%int_0.300] +// CHECK:STDOUT: %.loc7_47.2: init %i32 = converted %int_0, %int.convert_checked.loc7_47.1 [template = constants.%int_0.300] // CHECK:STDOUT: %.loc7_48.2: ref %Base = class_element_access %a.var, element0 // CHECK:STDOUT: %.loc7_47.3: ref %i32 = class_element_access %.loc7_48.2, element0 -// CHECK:STDOUT: %.loc7_47.4: init %i32 = initialize_from %.loc7_47.2 to %.loc7_47.3 [template = constants.%int_0.2] -// CHECK:STDOUT: %impl.elem0.loc7_47.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc7_47.2: = bound_method %int_1, %impl.elem0.loc7_47.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc7_47.2: = specific_function %Convert.bound.loc7_47.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc7_47.2: init %i32 = call %Convert.specific_fn.loc7_47.2(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7_47.5: init %i32 = converted %int_1, %int.convert_checked.loc7_47.2 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc7_47.4: init %i32 = initialize_from %.loc7_47.2 to %.loc7_47.3 [template = constants.%int_0.300] +// CHECK:STDOUT: %impl.elem0.loc7_47.2: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc7_47.2: = bound_method %int_1, %impl.elem0.loc7_47.2 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc7_47.2: = specific_function %Convert.bound.loc7_47.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc7_47.2: init %i32 = call %Convert.specific_fn.loc7_47.2(%int_1) [template = constants.%int_1.059] +// CHECK:STDOUT: %.loc7_47.5: init %i32 = converted %int_1, %int.convert_checked.loc7_47.2 [template = constants.%int_1.059] // CHECK:STDOUT: %.loc7_47.6: ref %i32 = class_element_access %.loc7_48.2, element1 -// CHECK:STDOUT: %.loc7_47.7: init %i32 = initialize_from %.loc7_47.5 to %.loc7_47.6 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc7_47.7: init %i32 = initialize_from %.loc7_47.5 to %.loc7_47.6 [template = constants.%int_1.059] // CHECK:STDOUT: %.loc7_47.8: init %Base = class_init (%.loc7_47.4, %.loc7_47.7), %.loc7_48.2 [template = constants.%Base.val] // CHECK:STDOUT: %.loc7_48.3: init %Base = converted %.loc7_47.1, %.loc7_47.8 [template = constants.%Base.val] // CHECK:STDOUT: %.loc7_48.4: init %Child = class_init (%.loc7_48.3), %a.var [template = constants.%Child.val] // CHECK:STDOUT: %.loc7_49: init %Child = converted %.loc7_48.1, %.loc7_48.4 [template = constants.%Child.val] // CHECK:STDOUT: assign %a.var, %.loc7_49 // CHECK:STDOUT: %a.ref.loc8: ref %Child = name_ref a, %a -// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%import_ref.10 [template = imports.%.1] +// CHECK:STDOUT: %x.ref: %Base.elem = name_ref x, imports.%import_ref.56c [template = imports.%.09f] // CHECK:STDOUT: %.loc8_4.1: ref %Base = class_element_access %a.ref.loc8, element0 // CHECK:STDOUT: %.loc8_4.2: ref %Base = converted %a.ref.loc8, %.loc8_4.1 // CHECK:STDOUT: %.loc8_4.3: ref %i32 = class_element_access %.loc8_4.2, element0 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc8: = bound_method %int_2, %impl.elem0.loc8 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc8: = specific_function %Convert.bound.loc8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc8_7: init %i32 = converted %int_2, %int.convert_checked.loc8 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.e4d = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc8: = bound_method %int_2, %impl.elem0.loc8 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc8: = specific_function %Convert.bound.loc8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_2) [template = constants.%int_2.ed9] +// CHECK:STDOUT: %.loc8_7: init %i32 = converted %int_2, %int.convert_checked.loc8 [template = constants.%int_2.ed9] // CHECK:STDOUT: assign %.loc8_4.3, %.loc8_7 // CHECK:STDOUT: %a.ref.loc9: ref %Child = name_ref a, %a -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.8 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1e1 [template = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %a.ref.loc9, %F.ref // CHECK:STDOUT: %.loc9_3.1: ref %Base = class_element_access %a.ref.loc9, element0 // CHECK:STDOUT: %.loc9_3.2: ref %Base = converted %a.ref.loc9, %.loc9_3.1 diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index 543b8f626471..634d02d2d032 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -139,22 +139,22 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .D = %D // CHECK:STDOUT: .b_val = %b_val @@ -162,18 +162,18 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %b_val.var: ref %C = var b_val // CHECK:STDOUT: %b_val: ref %C = bind_name b_val, %b_val.var -// CHECK:STDOUT: %b_ptr.var: ref %ptr.2 = var b_ptr -// CHECK:STDOUT: %b_ptr: ref %ptr.2 = bind_name b_ptr, %b_ptr.var +// CHECK:STDOUT: %b_ptr.var: ref %ptr.019 = var b_ptr +// CHECK:STDOUT: %b_ptr: ref %ptr.019 = bind_name b_ptr, %b_ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -183,7 +183,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc8_18: init %C = converted %.loc8_17.1, %.loc8_17.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%b_val.var, %.loc8_18 // CHECK:STDOUT: %b_val.ref: ref %C = name_ref b_val, file.%b_val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %b_val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %b_val.ref // CHECK:STDOUT: assign file.%b_ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -195,22 +195,22 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .E = %E // CHECK:STDOUT: .c_val = %c_val @@ -218,18 +218,18 @@ var ptr: E* = &val; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %E: type = bind_alias E, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %E: type = bind_alias E, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %c_val.var: ref %C = var c_val // CHECK:STDOUT: %c_val: ref %C = bind_name c_val, %c_val.var -// CHECK:STDOUT: %c_ptr.var: ref %ptr.2 = var c_ptr -// CHECK:STDOUT: %c_ptr: ref %ptr.2 = bind_name c_ptr, %c_ptr.var +// CHECK:STDOUT: %c_ptr.var: ref %ptr.019 = var c_ptr +// CHECK:STDOUT: %c_ptr: ref %ptr.019 = bind_name c_ptr, %c_ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -239,7 +239,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc8_18: init %C = converted %.loc8_17.1, %.loc8_17.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%c_val.var, %.loc8_18 // CHECK:STDOUT: %c_val.ref: ref %C = name_ref c_val, file.%c_val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %c_val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c_val.ref // CHECK:STDOUT: assign file.%c_ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -251,28 +251,28 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//b, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//b, b_val, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//b, b_ptr, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.af7: type = import_ref Main//b, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0da = import_ref Main//b, b_val, unloaded +// CHECK:STDOUT: %import_ref.ff5 = import_ref Main//b, b_ptr, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 -// CHECK:STDOUT: .b_val = imports.%import_ref.3 -// CHECK:STDOUT: .b_ptr = imports.%import_ref.4 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .D = imports.%import_ref.af7 +// CHECK:STDOUT: .b_val = imports.%import_ref.0da +// CHECK:STDOUT: .b_ptr = imports.%import_ref.ff5 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .val = %val // CHECK:STDOUT: .ptr = %ptr @@ -281,14 +281,14 @@ var ptr: E* = &val; // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %val.var: ref %C = var val // CHECK:STDOUT: %val: ref %C = bind_name val, %val.var -// CHECK:STDOUT: %ptr.var: ref %ptr.2 = var ptr -// CHECK:STDOUT: %ptr: ref %ptr.2 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.var: ref %ptr.019 = var ptr +// CHECK:STDOUT: %ptr: ref %ptr.019 = bind_name ptr, %ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -298,7 +298,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_16: init %C = converted %.loc7_15.1, %.loc7_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_16 // CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -310,28 +310,28 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//b, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//b, b_val, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//b, b_ptr, unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.af7: type = import_ref Main//b, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0da = import_ref Main//b, b_val, unloaded +// CHECK:STDOUT: %import_ref.ff5 = import_ref Main//b, b_ptr, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 -// CHECK:STDOUT: .b_val = imports.%import_ref.2 -// CHECK:STDOUT: .b_ptr = imports.%import_ref.3 -// CHECK:STDOUT: .C = imports.%import_ref.4 +// CHECK:STDOUT: .D = imports.%import_ref.af7 +// CHECK:STDOUT: .b_val = imports.%import_ref.0da +// CHECK:STDOUT: .b_ptr = imports.%import_ref.ff5 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .val = %val // CHECK:STDOUT: .ptr = %ptr @@ -340,14 +340,14 @@ var ptr: E* = &val; // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %val.var: ref %C = var val // CHECK:STDOUT: %val: ref %C = bind_name val, %val.var -// CHECK:STDOUT: %ptr.var: ref %ptr.2 = var ptr -// CHECK:STDOUT: %ptr: ref %ptr.2 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.var: ref %ptr.019 = var ptr +// CHECK:STDOUT: %ptr: ref %ptr.019 = bind_name ptr, %ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -357,7 +357,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_16: init %C = converted %.loc7_15.1, %.loc7_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_16 // CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -369,32 +369,32 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//b, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//b, b_val, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//b, b_ptr, unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//c, E, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//c, c_val, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//c, c_ptr, unloaded +// CHECK:STDOUT: %import_ref.af7: type = import_ref Main//b, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0da = import_ref Main//b, b_val, unloaded +// CHECK:STDOUT: %import_ref.ff5 = import_ref Main//b, b_ptr, unloaded +// CHECK:STDOUT: %import_ref.bbb: type = import_ref Main//c, E, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.963 = import_ref Main//c, c_val, unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//c, c_ptr, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: = import_ref Main//b, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//b, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//b, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//b, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 -// CHECK:STDOUT: .b_val = imports.%import_ref.2 -// CHECK:STDOUT: .b_ptr = imports.%import_ref.3 -// CHECK:STDOUT: .E = imports.%import_ref.4 -// CHECK:STDOUT: .c_val = imports.%import_ref.5 -// CHECK:STDOUT: .c_ptr = imports.%import_ref.6 +// CHECK:STDOUT: .D = imports.%import_ref.af7 +// CHECK:STDOUT: .b_val = imports.%import_ref.0da +// CHECK:STDOUT: .b_ptr = imports.%import_ref.ff5 +// CHECK:STDOUT: .E = imports.%import_ref.bbb +// CHECK:STDOUT: .c_val = imports.%import_ref.963 +// CHECK:STDOUT: .c_ptr = imports.%import_ref.be6 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .val = %val // CHECK:STDOUT: .ptr = %ptr @@ -403,14 +403,14 @@ var ptr: E* = &val; // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %val.var: ref %C = var val // CHECK:STDOUT: %val: ref %C = bind_name val, %val.var -// CHECK:STDOUT: %ptr.var: ref %ptr.2 = var ptr -// CHECK:STDOUT: %ptr: ref %ptr.2 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.var: ref %ptr.019 = var ptr +// CHECK:STDOUT: %ptr: ref %ptr.019 = bind_name ptr, %ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -420,7 +420,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_16: init %C = converted %.loc7_15.1, %.loc7_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_16 // CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -432,32 +432,32 @@ var ptr: E* = &val; // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//c, E, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//c, c_val, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c, c_ptr, unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//b, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//b, b_val, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//b, b_ptr, unloaded +// CHECK:STDOUT: %import_ref.bbb: type = import_ref Main//c, E, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.963 = import_ref Main//c, c_val, unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//c, c_ptr, unloaded +// CHECK:STDOUT: %import_ref.af7: type = import_ref Main//b, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0da = import_ref Main//b, b_val, unloaded +// CHECK:STDOUT: %import_ref.ff5 = import_ref Main//b, b_ptr, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.7: = import_ref Main//b, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//b, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//b, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//b, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .E = imports.%import_ref.1 -// CHECK:STDOUT: .c_val = imports.%import_ref.2 -// CHECK:STDOUT: .c_ptr = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 -// CHECK:STDOUT: .b_val = imports.%import_ref.5 -// CHECK:STDOUT: .b_ptr = imports.%import_ref.6 +// CHECK:STDOUT: .E = imports.%import_ref.bbb +// CHECK:STDOUT: .c_val = imports.%import_ref.963 +// CHECK:STDOUT: .c_ptr = imports.%import_ref.be6 +// CHECK:STDOUT: .D = imports.%import_ref.af7 +// CHECK:STDOUT: .b_val = imports.%import_ref.0da +// CHECK:STDOUT: .b_ptr = imports.%import_ref.ff5 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .val = %val // CHECK:STDOUT: .ptr = %ptr @@ -466,14 +466,14 @@ var ptr: E* = &val; // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %val.var: ref %C = var val // CHECK:STDOUT: %val: ref %C = bind_name val, %val.var -// CHECK:STDOUT: %ptr.var: ref %ptr.2 = var ptr -// CHECK:STDOUT: %ptr: ref %ptr.2 = bind_name ptr, %ptr.var +// CHECK:STDOUT: %ptr.var: ref %ptr.019 = var ptr +// CHECK:STDOUT: %ptr: ref %ptr.019 = bind_name ptr, %ptr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -483,7 +483,7 @@ var ptr: E* = &val; // CHECK:STDOUT: %.loc7_16: init %C = converted %.loc7_15.1, %.loc7_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%val.var, %.loc7_16 // CHECK:STDOUT: %val.ref: ref %C = name_ref val, file.%val -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %val.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %val.ref // CHECK:STDOUT: assign file.%ptr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index 091f67709c82..977a06826a84 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -74,19 +74,19 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, Cycle, loaded [template = constants.%Cycle] +// CHECK:STDOUT: %import_ref.a2c: type = import_ref Main//a, Cycle, loaded [template = constants.%Cycle] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//a, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.72d: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.3a6 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.4e0 = import_ref Main//a, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Cycle = imports.%import_ref.1 +// CHECK:STDOUT: .Cycle = imports.%import_ref.a2c // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } @@ -97,9 +97,9 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .a = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.3a6 +// CHECK:STDOUT: .a = imports.%import_ref.4e0 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.72d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/import_struct_cyle.carbon b/toolchain/check/testdata/class/import_struct_cyle.carbon index f095db044631..1d4f51c73dca 100644 --- a/toolchain/check/testdata/class/import_struct_cyle.carbon +++ b/toolchain/check/testdata/class/import_struct_cyle.carbon @@ -78,29 +78,29 @@ fn Run() { // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: %Cycle: type = class_type @Cycle [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Cycle [template] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr.1} [template] +// CHECK:STDOUT: %ptr.257: type = ptr_type %Cycle [template] +// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %ptr.257} [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %struct_type.b} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c [template] // CHECK:STDOUT: %Cycle.elem: type = unbound_element_type %Cycle, %struct_type.b [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//a, Cycle, unloaded -// CHECK:STDOUT: %import_ref.2: ref %struct_type.b = import_ref Main//a, a, loaded +// CHECK:STDOUT: %import_ref.498 = import_ref Main//a, Cycle, unloaded +// CHECK:STDOUT: %import_ref.e18: ref %struct_type.b = import_ref Main//a, a, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Main//a, loc11_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//a, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: %Cycle.elem = import_ref Main//a, loc10_8, loaded [template = %.1] +// CHECK:STDOUT: %import_ref.b93: = import_ref Main//a, loc11_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.3a6 = import_ref Main//a, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.455: %Cycle.elem = import_ref Main//a, loc10_8, loaded [template = %.354] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Cycle = imports.%import_ref.1 -// CHECK:STDOUT: .a = imports.%import_ref.2 +// CHECK:STDOUT: .Cycle = imports.%import_ref.498 +// CHECK:STDOUT: .a = imports.%import_ref.e18 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Run = %Run.decl // CHECK:STDOUT: } @@ -111,23 +111,23 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .c = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.3a6 +// CHECK:STDOUT: .c = imports.%import_ref.455 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.b93 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref.loc7_3: ref %struct_type.b = name_ref a, imports.%import_ref.2 -// CHECK:STDOUT: %.loc7_4: ref %ptr.1 = struct_access %a.ref.loc7_3, element0 -// CHECK:STDOUT: %a.ref.loc7_11: ref %struct_type.b = name_ref a, imports.%import_ref.2 -// CHECK:STDOUT: %.loc7_12.1: ref %ptr.1 = struct_access %a.ref.loc7_11, element0 -// CHECK:STDOUT: %.loc7_12.2: %ptr.1 = bind_value %.loc7_12.1 +// CHECK:STDOUT: %a.ref.loc7_3: ref %struct_type.b = name_ref a, imports.%import_ref.e18 +// CHECK:STDOUT: %.loc7_4: ref %ptr.257 = struct_access %a.ref.loc7_3, element0 +// CHECK:STDOUT: %a.ref.loc7_11: ref %struct_type.b = name_ref a, imports.%import_ref.e18 +// CHECK:STDOUT: %.loc7_12.1: ref %ptr.257 = struct_access %a.ref.loc7_11, element0 +// CHECK:STDOUT: %.loc7_12.2: %ptr.257 = bind_value %.loc7_12.1 // CHECK:STDOUT: %.loc7_10: ref %Cycle = deref %.loc7_12.2 -// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%import_ref.5 [template = imports.%.1] +// CHECK:STDOUT: %c.ref: %Cycle.elem = name_ref c, imports.%import_ref.455 [template = imports.%.354] // CHECK:STDOUT: %.loc7_15: ref %struct_type.b = class_element_access %.loc7_10, element0 -// CHECK:STDOUT: %.loc7_17.1: ref %ptr.1 = struct_access %.loc7_15, element0 -// CHECK:STDOUT: %.loc7_17.2: %ptr.1 = bind_value %.loc7_17.1 +// CHECK:STDOUT: %.loc7_17.1: ref %ptr.257 = struct_access %.loc7_15, element0 +// CHECK:STDOUT: %.loc7_17.2: %ptr.257 = bind_value %.loc7_17.1 // CHECK:STDOUT: assign %.loc7_4, %.loc7_17.2 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index a8899e5c7f88..b32dc3cff4fa 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -234,20 +234,20 @@ class B { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Shape.elem: type = unbound_element_type %Shape, %i32 [template] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.y [template] +// CHECK:STDOUT: %complete_type.032: = complete_type_witness %struct_type.x.y [template] // CHECK:STDOUT: %Circle: type = class_type @Circle [template] // CHECK:STDOUT: %Circle.elem: type = unbound_element_type %Circle, %Shape [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %GetPosition.type: type = fn_type @GetPosition [template] // CHECK:STDOUT: %GetPosition: %GetPosition.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Shape} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ed: type = struct_type {.base: %Shape} [template] +// CHECK:STDOUT: %complete_type.a2b: = complete_type_witness %struct_type.base.0ed [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -267,7 +267,7 @@ class B { // CHECK:STDOUT: class @Shape { // CHECK:STDOUT: %.loc5: %Shape.elem = field_decl x, element0 [template] // CHECK:STDOUT: %.loc6: %Shape.elem = field_decl y, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y [template = constants.%complete_type.032] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Shape @@ -282,22 +282,22 @@ class B { // CHECK:STDOUT: %GetPosition.decl: %GetPosition.type = fn_decl @GetPosition [template = constants.%GetPosition] { // CHECK:STDOUT: %self.patt: %Circle = binding_pattern self // CHECK:STDOUT: %self.param_patt: %Circle = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc12_36: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_36: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc12_41: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_41: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc12_44.1: %tuple.type.1 = tuple_literal (%i32.loc12_36, %i32.loc12_41) -// CHECK:STDOUT: %.loc12_44.2: type = converted %.loc12_44.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc12_44.1: %tuple.type.24b = tuple_literal (%i32.loc12_36, %i32.loc12_41) +// CHECK:STDOUT: %.loc12_44.2: type = converted %.loc12_44.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %self.param: %Circle = value_param runtime_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Circle [template = constants.%Circle] // CHECK:STDOUT: %self: %Circle = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %return.param: ref %tuple.type.471 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.471 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ed [template = constants.%complete_type.a2b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Circle @@ -307,7 +307,7 @@ class B { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Circle]() -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Circle]() -> %return.param_patt: %tuple.type.471 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc13_13: %Circle = name_ref self, %self // CHECK:STDOUT: %x.ref: %Shape.elem = name_ref x, @Shape.%.loc5 [template = @Shape.%.loc5] @@ -319,15 +319,15 @@ class B { // CHECK:STDOUT: %.loc13_25.1: ref %Shape = class_element_access %self.ref.loc13_21, element0 // CHECK:STDOUT: %.loc13_25.2: ref %Shape = converted %self.ref.loc13_21, %.loc13_25.1 // CHECK:STDOUT: %.loc13_25.3: ref %i32 = class_element_access %.loc13_25.2, element1 -// CHECK:STDOUT: %.loc13_27.1: %tuple.type.2 = tuple_literal (%.loc13_17.3, %.loc13_25.3) +// CHECK:STDOUT: %.loc13_27.1: %tuple.type.471 = tuple_literal (%.loc13_17.3, %.loc13_25.3) // CHECK:STDOUT: %.loc13_17.4: %i32 = bind_value %.loc13_17.3 // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return, element0 // CHECK:STDOUT: %.loc13_27.2: init %i32 = initialize_from %.loc13_17.4 to %tuple.elem0 // CHECK:STDOUT: %.loc13_25.4: %i32 = bind_value %.loc13_25.3 // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return, element1 // CHECK:STDOUT: %.loc13_27.3: init %i32 = initialize_from %.loc13_25.4 to %tuple.elem1 -// CHECK:STDOUT: %.loc13_27.4: init %tuple.type.2 = tuple_init (%.loc13_27.2, %.loc13_27.3) to %return -// CHECK:STDOUT: %.loc13_28: init %tuple.type.2 = converted %.loc13_27.1, %.loc13_27.4 +// CHECK:STDOUT: %.loc13_27.4: init %tuple.type.471 = tuple_init (%.loc13_27.2, %.loc13_27.3) to %return +// CHECK:STDOUT: %.loc13_28: init %tuple.type.471 = converted %.loc13_27.1, %.loc13_27.4 // CHECK:STDOUT: return %.loc13_28 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -335,31 +335,31 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.76a: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.a9f: %F.type.76a = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %F.type.e92: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.d7d: %F.type.e92 = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.3: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.3 [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -379,8 +379,8 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %F.decl: %F.type.76a = fn_decl @F.1 [template = constants.%F.a9f] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -391,7 +391,7 @@ class B { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc9: %B.elem = base_decl %A.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.e92 = fn_decl @F.2 [template = constants.%F.d7d] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -400,7 +400,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -427,7 +427,7 @@ class B { // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param1 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.3 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -444,7 +444,7 @@ class B { // CHECK:STDOUT: fn @G[%self.param_patt: %C]() -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %C = name_ref self, %self -// CHECK:STDOUT: %F.ref: %F.type.1 = name_ref F, @A.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref: %F.type.76a = name_ref F, @A.%F.decl [template = constants.%F.a9f] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: %.loc15_44.1: ref %empty_tuple.type = temporary_storage // CHECK:STDOUT: %.loc15_44.2: ref %empty_tuple.type = temporary %.loc15_44.1, %F.call @@ -459,18 +459,18 @@ class B { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.1, %Convert.10 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %SomeProtectedFunction.type: type = fn_type @SomeProtectedFunction [template] // CHECK:STDOUT: %SomeProtectedFunction: %SomeProtectedFunction.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -478,13 +478,13 @@ class B { // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -502,13 +502,13 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_39.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_39.2: %i32 = converted %int_5, %.loc5_39.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_39.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_39.2: %i32 = converted %int_5, %.loc5_39.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %SOME_CONSTANT: %i32 = bind_name SOME_CONSTANT, %.loc5_39.2 // CHECK:STDOUT: %SomeProtectedFunction.decl: %SomeProtectedFunction.type = fn_decl @SomeProtectedFunction [template = constants.%SomeProtectedFunction] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -519,7 +519,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -549,7 +549,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -562,13 +562,13 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeProtectedFunction() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_5, %.loc7_13.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc7_13.2: %i32 = converted %int_5, %.loc7_13.1 [template = constants.%int_5.70b] // CHECK:STDOUT: return %.loc7_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -597,18 +597,18 @@ class B { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Shape.elem: type = unbound_element_type %Shape, %i32 [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.5e2: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %Square: type = class_type @Square [template] // CHECK:STDOUT: %Square.elem: type = unbound_element_type %Square, %Shape [template] // CHECK:STDOUT: %GetPosition.type: type = fn_type @GetPosition [template] // CHECK:STDOUT: %GetPosition: %GetPosition.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Shape} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ed: type = struct_type {.base: %Shape} [template] +// CHECK:STDOUT: %complete_type.a2b: = complete_type_witness %struct_type.base.0ed [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -627,7 +627,7 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: class @Shape { // CHECK:STDOUT: %.loc5: %Shape.elem = field_decl y, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.5e2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Shape @@ -652,7 +652,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ed [template = constants.%complete_type.a2b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Square @@ -784,13 +784,13 @@ class B { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -813,7 +813,7 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -825,7 +825,7 @@ class B { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc9: %C.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -855,13 +855,13 @@ class B { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -884,7 +884,7 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -896,7 +896,7 @@ class B { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] // CHECK:STDOUT: %.loc9: %C.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -925,16 +925,16 @@ class B { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.1, %Convert.10 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Internal: type = class_type @Internal [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %Internal [template] @@ -942,14 +942,14 @@ class B { // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %SomeFunc.type: type = fn_type @SomeFunc [template] // CHECK:STDOUT: %SomeFunc: %SomeFunc.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.internal.1: type = struct_type {.internal: %Internal} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.internal.1 [template] +// CHECK:STDOUT: %struct_type.internal.6f5: type = struct_type {.internal: %Internal} [template] +// CHECK:STDOUT: %complete_type.d77: = complete_type_witness %struct_type.internal.6f5 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -969,23 +969,23 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_5.loc5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5.loc5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc5: = bound_method %int_5.loc5, %impl.elem0.loc5 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc5: = specific_function %Convert.bound.loc5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_5.loc5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_49.1: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc5_49.2: %i32 = converted %int_5.loc5, %.loc5_49.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_5.loc5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_49.1: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc5_49.2: %i32 = converted %int_5.loc5, %.loc5_49.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %SOME_PROTECTED_CONSTANT: %i32 = bind_name SOME_PROTECTED_CONSTANT, %.loc5_49.2 -// CHECK:STDOUT: %int_5.loc6: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5.loc6: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc6: = bound_method %int_5.loc6, %impl.elem0.loc6 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc6: = specific_function %Convert.bound.loc6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_5.loc6) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_45.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc6_45.2: %i32 = converted %int_5.loc6, %.loc6_45.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_5.loc6) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_45.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc6_45.2: %i32 = converted %int_5.loc6, %.loc6_45.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %SOME_PRIVATE_CONSTANT: %i32 = bind_name SOME_PRIVATE_CONSTANT, %.loc6_45.2 -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -995,15 +995,15 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Internal { -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc10_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc10_43.2: %i32 = converted %int_5, %.loc10_43.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc10_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc10_43.2: %i32 = converted %int_5, %.loc10_43.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %INTERNAL_CONSTANT: %i32 = bind_name INTERNAL_CONSTANT, %.loc10_43.2 -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Internal @@ -1036,7 +1036,7 @@ class B { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.internal.1 [template = constants.%complete_type.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.internal.6f5 [template = constants.%complete_type.d77] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -1073,18 +1073,18 @@ class B { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1103,7 +1103,7 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -1122,7 +1122,7 @@ class B { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] // CHECK:STDOUT: %self: %B = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -1148,18 +1148,18 @@ class B { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %A} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [template] +// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base.953 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1178,7 +1178,7 @@ class B { // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: %.loc5: %A.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -1197,7 +1197,7 @@ class B { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B] // CHECK:STDOUT: %self: %B = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index 37309376670d..e5165b5e4ec5 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -27,21 +27,21 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %Class: type = class_type @Class [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Class.elem.1: type = unbound_element_type %Class, %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] -// CHECK:STDOUT: %Class.elem.2: type = unbound_element_type %Class, %ptr.1 [template] -// CHECK:STDOUT: %struct_type.n.next: type = struct_type {.n: %i32, .next: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n.next [template] +// CHECK:STDOUT: %Class.elem.0a0: type = unbound_element_type %Class, %i32 [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] +// CHECK:STDOUT: %Class.elem.0c0: type = unbound_element_type %Class, %ptr.e71 [template] +// CHECK:STDOUT: %struct_type.n.next: type = struct_type {.n: %i32, .next: %ptr.e71} [template] +// CHECK:STDOUT: %complete_type.0a9: = complete_type_witness %struct_type.n.next [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] // CHECK:STDOUT: %MakeReorder.type: type = fn_type @MakeReorder [template] // CHECK:STDOUT: %MakeReorder: %MakeReorder.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.next.n: type = struct_type {.next: %ptr.1, .n: %i32} [template] +// CHECK:STDOUT: %struct_type.next.n: type = struct_type {.next: %ptr.e71, .n: %i32} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -59,8 +59,8 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 -// CHECK:STDOUT: %next.patt: %ptr.1 = binding_pattern next -// CHECK:STDOUT: %next.param_patt: %ptr.1 = value_param_pattern %next.patt, runtime_param1 +// CHECK:STDOUT: %next.patt: %ptr.e71 = binding_pattern next +// CHECK:STDOUT: %next.param_patt: %ptr.e71 = value_param_pattern %next.patt, runtime_param1 // CHECK:STDOUT: %return.patt: %Class = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %Class = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { @@ -71,20 +71,20 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param -// CHECK:STDOUT: %next.param: %ptr.1 = value_param runtime_param1 -// CHECK:STDOUT: %.loc16_28: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %next.param: %ptr.e71 = value_param runtime_param1 +// CHECK:STDOUT: %.loc16_28: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref.loc16_23: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %next: %ptr.1 = bind_name next, %next.param +// CHECK:STDOUT: %next: %ptr.e71 = bind_name next, %next.param // CHECK:STDOUT: %return.param: ref %Class = out_param runtime_param2 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %MakeReorder.decl: %MakeReorder.type = fn_decl @MakeReorder [template = constants.%MakeReorder] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 -// CHECK:STDOUT: %next.patt: %ptr.1 = binding_pattern next -// CHECK:STDOUT: %next.param_patt: %ptr.1 = value_param_pattern %next.patt, runtime_param1 +// CHECK:STDOUT: %next.patt: %ptr.e71 = binding_pattern next +// CHECK:STDOUT: %next.param_patt: %ptr.e71 = value_param_pattern %next.patt, runtime_param1 // CHECK:STDOUT: %return.patt: %Class = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %Class = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { @@ -95,21 +95,21 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param -// CHECK:STDOUT: %next.param: %ptr.1 = value_param runtime_param1 -// CHECK:STDOUT: %.loc20_35: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %next.param: %ptr.e71 = value_param runtime_param1 +// CHECK:STDOUT: %.loc20_35: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref.loc20_30: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %next: %ptr.1 = bind_name next, %next.param +// CHECK:STDOUT: %next: %ptr.e71 = bind_name next, %next.param // CHECK:STDOUT: %return.param: ref %Class = out_param runtime_param2 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %.loc12: %Class.elem.1 = field_decl n, element0 [template] -// CHECK:STDOUT: %.loc13: %Class.elem.2 = field_decl next, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.next [template = constants.%complete_type.3] +// CHECK:STDOUT: %.loc12: %Class.elem.0a0 = field_decl n, element0 [template] +// CHECK:STDOUT: %.loc13: %Class.elem.0c0 = field_decl next, element1 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.next [template = constants.%complete_type.0a9] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -118,29 +118,29 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make(%n.param_patt: %i32, %next.param_patt: %ptr.1) -> %return.param_patt: %Class { +// CHECK:STDOUT: fn @Make(%n.param_patt: %i32, %next.param_patt: %ptr.e71) -> %return.param_patt: %Class { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n -// CHECK:STDOUT: %next.ref: %ptr.1 = name_ref next, %next +// CHECK:STDOUT: %next.ref: %ptr.e71 = name_ref next, %next // CHECK:STDOUT: %.loc17_31.1: %struct_type.n.next = struct_literal (%n.ref, %next.ref) // CHECK:STDOUT: %.loc17_31.2: ref %i32 = class_element_access %return, element0 // CHECK:STDOUT: %.loc17_31.3: init %i32 = initialize_from %n.ref to %.loc17_31.2 -// CHECK:STDOUT: %.loc17_31.4: ref %ptr.1 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc17_31.5: init %ptr.1 = initialize_from %next.ref to %.loc17_31.4 +// CHECK:STDOUT: %.loc17_31.4: ref %ptr.e71 = class_element_access %return, element1 +// CHECK:STDOUT: %.loc17_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc17_31.4 // CHECK:STDOUT: %.loc17_31.6: init %Class = class_init (%.loc17_31.3, %.loc17_31.5), %return // CHECK:STDOUT: %.loc17_32: init %Class = converted %.loc17_31.1, %.loc17_31.6 // CHECK:STDOUT: return %.loc17_32 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @MakeReorder(%n.param_patt: %i32, %next.param_patt: %ptr.1) -> %return.param_patt: %Class { +// CHECK:STDOUT: fn @MakeReorder(%n.param_patt: %i32, %next.param_patt: %ptr.e71) -> %return.param_patt: %Class { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %next.ref: %ptr.1 = name_ref next, %next +// CHECK:STDOUT: %next.ref: %ptr.e71 = name_ref next, %next // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %.loc21_31.1: %struct_type.next.n = struct_literal (%next.ref, %n.ref) // CHECK:STDOUT: %.loc21_31.2: ref %i32 = class_element_access %return, element1 // CHECK:STDOUT: %.loc21_31.3: init %i32 = initialize_from %n.ref to %.loc21_31.2 -// CHECK:STDOUT: %.loc21_31.4: ref %ptr.1 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc21_31.5: init %ptr.1 = initialize_from %next.ref to %.loc21_31.4 +// CHECK:STDOUT: %.loc21_31.4: ref %ptr.e71 = class_element_access %return, element0 +// CHECK:STDOUT: %.loc21_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc21_31.4 // CHECK:STDOUT: %.loc21_31.6: init %Class = class_init (%.loc21_31.3, %.loc21_31.5), %return // CHECK:STDOUT: %.loc21_32: init %Class = converted %.loc21_31.1, %.loc21_31.6 // CHECK:STDOUT: return %.loc21_32 to %return diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 6348a65008b9..2e910fded1e5 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -24,30 +24,30 @@ fn F() -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -75,7 +75,7 @@ fn F() -> i32 { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %.loc12: %Class.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Class.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -86,25 +86,25 @@ fn F() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc17_26.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc17_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %impl.elem0.loc17_26.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_26.1: = bound_method %int_1, %impl.elem0.loc17_26.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc17_26.1: = specific_function %Convert.bound.loc17_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc17_26.1: init %i32 = call %Convert.specific_fn.loc17_26.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_26.2: init %i32 = converted %int_1, %int.convert_checked.loc17_26.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc17_26.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_26.1: = bound_method %int_1, %impl.elem0.loc17_26.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc17_26.1: = specific_function %Convert.bound.loc17_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc17_26.1: init %i32 = call %Convert.specific_fn.loc17_26.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_26.2: init %i32 = converted %int_1, %int.convert_checked.loc17_26.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc17_26.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc17_26.4: ref %i32 = class_element_access %.loc17_26.3, element0 -// CHECK:STDOUT: %.loc17_26.5: init %i32 = initialize_from %.loc17_26.2 to %.loc17_26.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc17_26.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_26.2: = bound_method %int_2, %impl.elem0.loc17_26.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc17_26.2: = specific_function %Convert.bound.loc17_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc17_26.2: init %i32 = call %Convert.specific_fn.loc17_26.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_26.6: init %i32 = converted %int_2, %int.convert_checked.loc17_26.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_26.5: init %i32 = initialize_from %.loc17_26.2 to %.loc17_26.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc17_26.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_26.2: = bound_method %int_2, %impl.elem0.loc17_26.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc17_26.2: = specific_function %Convert.bound.loc17_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc17_26.2: init %i32 = call %Convert.specific_fn.loc17_26.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_26.6: init %i32 = converted %int_2, %int.convert_checked.loc17_26.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_26.7: ref %i32 = class_element_access %.loc17_26.3, element1 -// CHECK:STDOUT: %.loc17_26.8: init %i32 = initialize_from %.loc17_26.6 to %.loc17_26.7 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_26.8: init %i32 = initialize_from %.loc17_26.6 to %.loc17_26.7 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_26.9: init %Class = class_init (%.loc17_26.5, %.loc17_26.8), %.loc17_26.3 [template = constants.%Class.val] // CHECK:STDOUT: %.loc17_26.10: ref %Class = temporary %.loc17_26.3, %.loc17_26.9 // CHECK:STDOUT: %.loc17_28: ref %Class = converted %.loc17_26.1, %.loc17_26.10 diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 27268658e03a..3c1c2b2097fa 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -32,20 +32,20 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %i32 [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b [template] // CHECK:STDOUT: %MakeInner.type: type = fn_type @MakeInner [template] // CHECK:STDOUT: %MakeInner: %MakeInner.type = struct_value () [template] // CHECK:STDOUT: %Outer: type = class_type @Outer [template] // CHECK:STDOUT: %Outer.elem: type = unbound_element_type %Outer, %Inner [template] -// CHECK:STDOUT: %struct_type.c.d.1: type = struct_type {.c: %Inner, .d: %Inner} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.c.d.1 [template] +// CHECK:STDOUT: %struct_type.c.d.dce: type = struct_type {.c: %Inner, .d: %Inner} [template] +// CHECK:STDOUT: %complete_type.8b6: = complete_type_witness %struct_type.c.d.dce [template] // CHECK:STDOUT: %MakeOuter.type: type = fn_type @MakeOuter [template] // CHECK:STDOUT: %MakeOuter: %MakeOuter.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -83,7 +83,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: class @Inner { // CHECK:STDOUT: %.loc12: %Inner.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %Inner.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner @@ -95,7 +95,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: class @Outer { // CHECK:STDOUT: %.loc19: %Outer.elem = field_decl c, element0 [template] // CHECK:STDOUT: %.loc20: %Outer.elem = field_decl d, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.d.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.d.dce [template = constants.%complete_type.8b6] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer @@ -114,7 +114,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %MakeInner.ref.loc24_34: %MakeInner.type = name_ref MakeInner, file.%MakeInner.decl [template = constants.%MakeInner] // CHECK:STDOUT: %.loc24_45.2: ref %Inner = class_element_access %return, element1 // CHECK:STDOUT: %MakeInner.call.loc24_44: init %Inner = call %MakeInner.ref.loc24_34() to %.loc24_45.2 -// CHECK:STDOUT: %.loc24_45.3: %struct_type.c.d.1 = struct_literal (%MakeInner.call.loc24_26, %MakeInner.call.loc24_44) +// CHECK:STDOUT: %.loc24_45.3: %struct_type.c.d.dce = struct_literal (%MakeInner.call.loc24_26, %MakeInner.call.loc24_44) // CHECK:STDOUT: %.loc24_45.4: init %Outer = class_init (%MakeInner.call.loc24_26, %MakeInner.call.loc24_44), %return // CHECK:STDOUT: %.loc24_46: init %Outer = converted %.loc24_45.3, %.loc24_45.4 // CHECK:STDOUT: return %.loc24_46 to %return diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index a33f735c2dde..babec8d6af28 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -66,28 +66,28 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] -// CHECK:STDOUT: %struct_type.k.1: type = struct_type {.k: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.k.1 [template] +// CHECK:STDOUT: %struct_type.k.990: type = struct_type {.k: %i32} [template] +// CHECK:STDOUT: %complete_type.631: = complete_type_witness %struct_type.k.990 [template] // CHECK:STDOUT: %Call.type: type = fn_type @Call [template] // CHECK:STDOUT: %Call: %Call.type = struct_value () [template] // CHECK:STDOUT: %CallAlias.type: type = fn_type @CallAlias [template] // CHECK:STDOUT: %CallAlias: %CallAlias.type = struct_value () [template] // CHECK:STDOUT: %CallOnConstBoundMethod.type: type = fn_type @CallOnConstBoundMethod [template] // CHECK:STDOUT: %CallOnConstBoundMethod: %CallOnConstBoundMethod.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.k.2: type = struct_type {.k: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.k.240: type = struct_type {.k: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.2) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.c60) [template] // CHECK:STDOUT: %CallWithAddr.type: type = fn_type @CallWithAddr [template] // CHECK:STDOUT: %CallWithAddr: %CallWithAddr.type = struct_value () [template] // CHECK:STDOUT: %CallFThroughPointer.type: type = fn_type @CallFThroughPointer [template] @@ -104,8 +104,8 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -188,36 +188,36 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallFThroughPointer.decl: %CallFThroughPointer.type = fn_decl @CallFThroughPointer [template = constants.%CallFThroughPointer] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc43: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc43: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallGThroughPointer.decl: %CallGThroughPointer.type = fn_decl @CallGThroughPointer [template = constants.%CallGThroughPointer] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.e71 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.e71 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc47: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %p.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc47: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -265,27 +265,27 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.loc12: ref %i32 = return_slot %return.param.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e71 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc13_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc13_23: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc13_23: type = splice_block %ptr [template = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.e71 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.ref: %F.type = name_ref F, %F.decl [template = constants.%F] // CHECK:STDOUT: %A: %F.type = bind_alias A, %F.decl [template = constants.%F] // CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.990 [template = constants.%complete_type.631] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -305,7 +305,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: return %.loc21_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G[addr %self.param_patt: %ptr.1]() -> %i32; +// CHECK:STDOUT: fn @G[addr %self.param_patt: %ptr.e71]() -> %i32; // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%c.param_patt: %Class) -> %i32 { // CHECK:STDOUT: !entry: @@ -331,17 +331,17 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @CallOnConstBoundMethod() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc35_18.1: %struct_type.k.2 = struct_literal (%int_1) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc35_18.1: %struct_type.k.240 = struct_literal (%int_1) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc35_18.2: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc35_18.2: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc35_18.3: ref %Class = temporary_storage // CHECK:STDOUT: %.loc35_18.4: ref %i32 = class_element_access %.loc35_18.3, element0 -// CHECK:STDOUT: %.loc35_18.5: init %i32 = initialize_from %.loc35_18.2 to %.loc35_18.4 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc35_18.5: init %i32 = initialize_from %.loc35_18.2 to %.loc35_18.4 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc35_18.6: init %Class = class_init (%.loc35_18.5), %.loc35_18.3 [template = constants.%Class.val] // CHECK:STDOUT: %.loc35_18.7: ref %Class = temporary %.loc35_18.3, %.loc35_18.6 // CHECK:STDOUT: %.loc35_20.1: ref %Class = converted %.loc35_18.1, %.loc35_18.7 @@ -361,16 +361,16 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c // CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.bound: = bound_method %c.ref, %G.ref -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %c.ref +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %c.ref // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) // CHECK:STDOUT: %.loc40_15.1: %i32 = value_of_initializer %G.call // CHECK:STDOUT: %.loc40_15.2: %i32 = converted %G.call, %.loc40_15.1 // CHECK:STDOUT: return %.loc40_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallFThroughPointer(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @CallFThroughPointer(%p.param_patt: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc44_11.1: ref %Class = deref %p.ref // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [template = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %.loc44_11.1, %F.ref @@ -381,13 +381,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: return %.loc44_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallGThroughPointer(%p.param_patt: %ptr.1) -> %i32 { +// CHECK:STDOUT: fn @CallGThroughPointer(%p.param_patt: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p // CHECK:STDOUT: %.loc48_11: ref %Class = deref %p.ref // CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.bound: = bound_method %.loc48_11, %G.ref -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %.loc48_11 +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc48_11 // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) // CHECK:STDOUT: %.loc48_18.1: %i32 = value_of_initializer %G.call // CHECK:STDOUT: %.loc48_18.2: %i32 = converted %G.call, %.loc48_18.1 @@ -419,7 +419,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %.loc58_15.2: ref %Class = temporary %.loc58_15.1, %Make.call // CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.bound: = bound_method %.loc58_15.2, %G.ref -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %.loc58_15.2 +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc58_15.2 // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) // CHECK:STDOUT: %.loc58_20.1: %i32 = value_of_initializer %G.call // CHECK:STDOUT: %.loc58_20.2: %i32 = converted %G.call, %.loc58_20.1 diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index a865fc3547a4..cdbee2136c31 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -53,25 +53,25 @@ fn F(a: Outer*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Outer: type = class_type @Outer [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.3b3: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.d9a: %F.type.3b3 = struct_value () [template] // CHECK:STDOUT: %Inner: type = class_type @Inner [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Inner [template] -// CHECK:STDOUT: %Inner.elem.1: type = unbound_element_type %Inner, %ptr.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Outer [template] -// CHECK:STDOUT: %Inner.elem.2: type = unbound_element_type %Inner, %ptr.2 [template] +// CHECK:STDOUT: %ptr.0ea: type = ptr_type %Inner [template] +// CHECK:STDOUT: %Inner.elem.8be: type = unbound_element_type %Inner, %ptr.0ea [template] +// CHECK:STDOUT: %ptr.5df: type = ptr_type %Outer [template] +// CHECK:STDOUT: %Inner.elem.18c: type = unbound_element_type %Inner, %ptr.5df [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.pi.po.qi: type = struct_type {.pi: %ptr.1, .po: %ptr.2, .qi: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.pi.po.qi [template] +// CHECK:STDOUT: %struct_type.pi.po.qi: type = struct_type {.pi: %ptr.0ea, .po: %ptr.5df, .qi: %ptr.0ea} [template] +// CHECK:STDOUT: %complete_type.32c: = complete_type_witness %struct_type.pi.po.qi [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %Outer.elem.1: type = unbound_element_type %Outer, %ptr.2 [template] -// CHECK:STDOUT: %Outer.elem.2: type = unbound_element_type %Outer, %ptr.1 [template] -// CHECK:STDOUT: %struct_type.po.qo.pi: type = struct_type {.po: %ptr.2, .qo: %ptr.2, .pi: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.po.qo.pi [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %Outer.elem.a16: type = unbound_element_type %Outer, %ptr.5df [template] +// CHECK:STDOUT: %Outer.elem.0fc: type = unbound_element_type %Outer, %ptr.0ea [template] +// CHECK:STDOUT: %struct_type.po.qo.pi: type = struct_type {.po: %ptr.5df, .qo: %ptr.5df, .pi: %ptr.0ea} [template] +// CHECK:STDOUT: %complete_type.d40: = complete_type_witness %struct_type.po.qo.pi [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,27 +89,27 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Outer.decl: type = class_decl @Outer [template = constants.%Outer] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %a.patt: %ptr.2 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.2 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { +// CHECK:STDOUT: %a.patt: %ptr.5df = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.5df = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc41: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %a.param: %ptr.5df = value_param runtime_param0 +// CHECK:STDOUT: %.loc41: type = splice_block %ptr [template = constants.%ptr.5df] { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [template = constants.%Outer] -// CHECK:STDOUT: %ptr: type = ptr_type %Outer [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %Outer [template = constants.%ptr.5df] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.2 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.5df = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.3b3 = fn_decl @F.1 [template = constants.%F.d9a] {} {} // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} {} -// CHECK:STDOUT: %.loc36: %Outer.elem.1 = field_decl po, element0 [template] -// CHECK:STDOUT: %.loc37: %Outer.elem.1 = field_decl qo, element1 [template] -// CHECK:STDOUT: %.loc38: %Outer.elem.2 = field_decl pi, element2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.po.qo.pi [template = constants.%complete_type.2] +// CHECK:STDOUT: %.loc36: %Outer.elem.a16 = field_decl po, element0 [template] +// CHECK:STDOUT: %.loc37: %Outer.elem.a16 = field_decl qo, element1 [template] +// CHECK:STDOUT: %.loc38: %Outer.elem.0fc = field_decl pi, element2 [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.po.qo.pi [template = constants.%complete_type.d40] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer @@ -123,11 +123,11 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { -// CHECK:STDOUT: %.loc19: %Inner.elem.1 = field_decl pi, element0 [template] -// CHECK:STDOUT: %.loc20: %Inner.elem.2 = field_decl po, element1 [template] -// CHECK:STDOUT: %.loc21: %Inner.elem.1 = field_decl qi, element2 [template] +// CHECK:STDOUT: %.loc19: %Inner.elem.8be = field_decl pi, element0 [template] +// CHECK:STDOUT: %.loc20: %Inner.elem.18c = field_decl po, element1 [template] +// CHECK:STDOUT: %.loc21: %Inner.elem.8be = field_decl qi, element2 [template] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.pi.po.qi [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.pi.po.qi [template = constants.%complete_type.32c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner @@ -165,61 +165,61 @@ fn F(a: Outer*) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%a.param_patt: %ptr.2) { +// CHECK:STDOUT: fn @F.2(%a.param_patt: %ptr.5df) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref.loc42: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref.loc42: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc42_26: ref %Outer = deref %a.ref.loc42 -// CHECK:STDOUT: %pi.ref.loc42: %Outer.elem.2 = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] -// CHECK:STDOUT: %.loc42_29.1: ref %ptr.1 = class_element_access %.loc42_26, element2 -// CHECK:STDOUT: %.loc42_29.2: %ptr.1 = bind_value %.loc42_29.1 -// CHECK:STDOUT: %b: %ptr.1 = bind_name b, %.loc42_29.2 -// CHECK:STDOUT: %a.ref.loc44_3: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %pi.ref.loc42: %Outer.elem.0fc = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] +// CHECK:STDOUT: %.loc42_29.1: ref %ptr.0ea = class_element_access %.loc42_26, element2 +// CHECK:STDOUT: %.loc42_29.2: %ptr.0ea = bind_value %.loc42_29.1 +// CHECK:STDOUT: %b: %ptr.0ea = bind_name b, %.loc42_29.2 +// CHECK:STDOUT: %a.ref.loc44_3: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc44_4.1: ref %Outer = deref %a.ref.loc44_3 -// CHECK:STDOUT: %po.ref.loc44: %Outer.elem.1 = name_ref po, @Outer.%.loc36 [template = @Outer.%.loc36] -// CHECK:STDOUT: %.loc44_4.2: ref %ptr.2 = class_element_access %.loc44_4.1, element0 -// CHECK:STDOUT: %a.ref.loc44_11: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %po.ref.loc44: %Outer.elem.a16 = name_ref po, @Outer.%.loc36 [template = @Outer.%.loc36] +// CHECK:STDOUT: %.loc44_4.2: ref %ptr.5df = class_element_access %.loc44_4.1, element0 +// CHECK:STDOUT: %a.ref.loc44_11: %ptr.5df = name_ref a, %a // CHECK:STDOUT: assign %.loc44_4.2, %a.ref.loc44_11 -// CHECK:STDOUT: %a.ref.loc45_3: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref.loc45_3: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc45_4.1: ref %Outer = deref %a.ref.loc45_3 -// CHECK:STDOUT: %qo.ref: %Outer.elem.1 = name_ref qo, @Outer.%.loc37 [template = @Outer.%.loc37] -// CHECK:STDOUT: %.loc45_4.2: ref %ptr.2 = class_element_access %.loc45_4.1, element1 -// CHECK:STDOUT: %a.ref.loc45_11: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %qo.ref: %Outer.elem.a16 = name_ref qo, @Outer.%.loc37 [template = @Outer.%.loc37] +// CHECK:STDOUT: %.loc45_4.2: ref %ptr.5df = class_element_access %.loc45_4.1, element1 +// CHECK:STDOUT: %a.ref.loc45_11: %ptr.5df = name_ref a, %a // CHECK:STDOUT: assign %.loc45_4.2, %a.ref.loc45_11 -// CHECK:STDOUT: %a.ref.loc46_3: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref.loc46_3: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc46_4.1: ref %Outer = deref %a.ref.loc46_3 -// CHECK:STDOUT: %pi.ref.loc46_4: %Outer.elem.2 = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] -// CHECK:STDOUT: %.loc46_4.2: ref %ptr.1 = class_element_access %.loc46_4.1, element2 -// CHECK:STDOUT: %a.ref.loc46_11: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %pi.ref.loc46_4: %Outer.elem.0fc = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] +// CHECK:STDOUT: %.loc46_4.2: ref %ptr.0ea = class_element_access %.loc46_4.1, element2 +// CHECK:STDOUT: %a.ref.loc46_11: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc46_12.1: ref %Outer = deref %a.ref.loc46_11 -// CHECK:STDOUT: %pi.ref.loc46_12: %Outer.elem.2 = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] -// CHECK:STDOUT: %.loc46_12.2: ref %ptr.1 = class_element_access %.loc46_12.1, element2 -// CHECK:STDOUT: %.loc46_12.3: %ptr.1 = bind_value %.loc46_12.2 +// CHECK:STDOUT: %pi.ref.loc46_12: %Outer.elem.0fc = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] +// CHECK:STDOUT: %.loc46_12.2: ref %ptr.0ea = class_element_access %.loc46_12.1, element2 +// CHECK:STDOUT: %.loc46_12.3: %ptr.0ea = bind_value %.loc46_12.2 // CHECK:STDOUT: assign %.loc46_4.2, %.loc46_12.3 -// CHECK:STDOUT: %b.ref.loc47: %ptr.1 = name_ref b, %b +// CHECK:STDOUT: %b.ref.loc47: %ptr.0ea = name_ref b, %b // CHECK:STDOUT: %.loc47_4.1: ref %Inner = deref %b.ref.loc47 -// CHECK:STDOUT: %po.ref.loc47: %Inner.elem.2 = name_ref po, @Inner.%.loc20 [template = @Inner.%.loc20] -// CHECK:STDOUT: %.loc47_4.2: ref %ptr.2 = class_element_access %.loc47_4.1, element1 -// CHECK:STDOUT: %a.ref.loc47: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %po.ref.loc47: %Inner.elem.18c = name_ref po, @Inner.%.loc20 [template = @Inner.%.loc20] +// CHECK:STDOUT: %.loc47_4.2: ref %ptr.5df = class_element_access %.loc47_4.1, element1 +// CHECK:STDOUT: %a.ref.loc47: %ptr.5df = name_ref a, %a // CHECK:STDOUT: assign %.loc47_4.2, %a.ref.loc47 -// CHECK:STDOUT: %b.ref.loc48: %ptr.1 = name_ref b, %b +// CHECK:STDOUT: %b.ref.loc48: %ptr.0ea = name_ref b, %b // CHECK:STDOUT: %.loc48_4.1: ref %Inner = deref %b.ref.loc48 -// CHECK:STDOUT: %pi.ref.loc48_4: %Inner.elem.1 = name_ref pi, @Inner.%.loc19 [template = @Inner.%.loc19] -// CHECK:STDOUT: %.loc48_4.2: ref %ptr.1 = class_element_access %.loc48_4.1, element0 -// CHECK:STDOUT: %a.ref.loc48: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %pi.ref.loc48_4: %Inner.elem.8be = name_ref pi, @Inner.%.loc19 [template = @Inner.%.loc19] +// CHECK:STDOUT: %.loc48_4.2: ref %ptr.0ea = class_element_access %.loc48_4.1, element0 +// CHECK:STDOUT: %a.ref.loc48: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc48_12.1: ref %Outer = deref %a.ref.loc48 -// CHECK:STDOUT: %pi.ref.loc48_12: %Outer.elem.2 = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] -// CHECK:STDOUT: %.loc48_12.2: ref %ptr.1 = class_element_access %.loc48_12.1, element2 -// CHECK:STDOUT: %.loc48_12.3: %ptr.1 = bind_value %.loc48_12.2 +// CHECK:STDOUT: %pi.ref.loc48_12: %Outer.elem.0fc = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] +// CHECK:STDOUT: %.loc48_12.2: ref %ptr.0ea = class_element_access %.loc48_12.1, element2 +// CHECK:STDOUT: %.loc48_12.3: %ptr.0ea = bind_value %.loc48_12.2 // CHECK:STDOUT: assign %.loc48_4.2, %.loc48_12.3 -// CHECK:STDOUT: %b.ref.loc49: %ptr.1 = name_ref b, %b +// CHECK:STDOUT: %b.ref.loc49: %ptr.0ea = name_ref b, %b // CHECK:STDOUT: %.loc49_4.1: ref %Inner = deref %b.ref.loc49 -// CHECK:STDOUT: %qi.ref: %Inner.elem.1 = name_ref qi, @Inner.%.loc21 [template = @Inner.%.loc21] -// CHECK:STDOUT: %.loc49_4.2: ref %ptr.1 = class_element_access %.loc49_4.1, element2 -// CHECK:STDOUT: %a.ref.loc49: %ptr.2 = name_ref a, %a +// CHECK:STDOUT: %qi.ref: %Inner.elem.8be = name_ref qi, @Inner.%.loc21 [template = @Inner.%.loc21] +// CHECK:STDOUT: %.loc49_4.2: ref %ptr.0ea = class_element_access %.loc49_4.1, element2 +// CHECK:STDOUT: %a.ref.loc49: %ptr.5df = name_ref a, %a // CHECK:STDOUT: %.loc49_12.1: ref %Outer = deref %a.ref.loc49 -// CHECK:STDOUT: %pi.ref.loc49: %Outer.elem.2 = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] -// CHECK:STDOUT: %.loc49_12.2: ref %ptr.1 = class_element_access %.loc49_12.1, element2 -// CHECK:STDOUT: %.loc49_12.3: %ptr.1 = bind_value %.loc49_12.2 +// CHECK:STDOUT: %pi.ref.loc49: %Outer.elem.0fc = name_ref pi, @Outer.%.loc38 [template = @Outer.%.loc38] +// CHECK:STDOUT: %.loc49_12.2: ref %ptr.0ea = class_element_access %.loc49_12.1, element2 +// CHECK:STDOUT: %.loc49_12.3: %ptr.0ea = bind_value %.loc49_12.2 // CHECK:STDOUT: assign %.loc49_4.2, %.loc49_12.3 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 342fc4c135d4..1343046b635d 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -31,9 +31,9 @@ fn G(o: Outer) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -42,7 +42,7 @@ fn G(o: Outer) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,7 +86,7 @@ fn G(o: Outer) { // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer @@ -96,7 +96,7 @@ fn G(o: Outer) { // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { // CHECK:STDOUT: %.loc13: %Inner.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner diff --git a/toolchain/check/testdata/class/no_prelude/export_name.carbon b/toolchain/check/testdata/class/no_prelude/export_name.carbon index 07da9891059a..542d878cf9e3 100644 --- a/toolchain/check/testdata/class/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/class/no_prelude/export_name.carbon @@ -70,9 +70,9 @@ var c: C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//base, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -80,13 +80,13 @@ var c: C = {}; // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -99,14 +99,14 @@ var c: C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, inst19 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export, inst20 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//export, inst19 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export, inst20 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -116,8 +116,8 @@ var c: C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/no_prelude/extern.carbon b/toolchain/check/testdata/class/no_prelude/extern.carbon index 59683a4e5526..d8cb699b63b1 100644 --- a/toolchain/check/testdata/class/no_prelude/extern.carbon +++ b/toolchain/check/testdata/class/no_prelude/extern.carbon @@ -354,7 +354,7 @@ extern class C; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -362,7 +362,7 @@ extern class C; // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C; @@ -495,12 +495,12 @@ extern class C; // CHECK:STDOUT: --- fail_import_extern_decl_then_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_decl, C, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//extern_decl, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -508,12 +508,12 @@ extern class C; // CHECK:STDOUT: --- fail_import_decl_then_extern_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//decl, C, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//decl, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -521,12 +521,12 @@ extern class C; // CHECK:STDOUT: --- fail_import_extern_decl_then_def.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_decl, C, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//extern_decl, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -534,12 +534,12 @@ extern class C; // CHECK:STDOUT: --- fail_import_ownership_conflict.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_decl, C, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//extern_decl, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -547,12 +547,12 @@ extern class C; // CHECK:STDOUT: --- fail_todo_import_extern_decl_copy.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_decl, C, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//extern_decl, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -604,8 +604,8 @@ extern class C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.2: = import_ref Main//def, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//def, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -618,8 +618,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_import_def.carbon @@ -631,8 +631,8 @@ extern class C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.2: = import_ref Main//def, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//def, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -645,7 +645,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon index fd54e2a739ff..ae2eb83dbd4e 100644 --- a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon @@ -64,29 +64,29 @@ fn F(T:! type) { // CHECK:STDOUT: %NotGenericButParams: type = class_type @NotGenericButParams [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %GenericAndParams.type.1: type = generic_class_type @GenericAndParams.1 [template] -// CHECK:STDOUT: %GenericAndParams.generic.1: %GenericAndParams.type.1 = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.1: type = class_type @GenericAndParams.1, @GenericAndParams.1(%T) [symbolic] +// CHECK:STDOUT: %GenericAndParams.type.c8d: type = generic_class_type @GenericAndParams.1 [template] +// CHECK:STDOUT: %GenericAndParams.generic.1e4: %GenericAndParams.type.c8d = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.9d2: type = class_type @GenericAndParams.1, @GenericAndParams.1(%T) [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %GenericNoParams.1: type = class_type @GenericNoParams [template] -// CHECK:STDOUT: %GenericNoParams.2: type = class_type @GenericNoParams, @GenericNoParams(%T) [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %GenericNoParams.0a9: type = class_type @GenericNoParams [template] +// CHECK:STDOUT: %GenericNoParams.495: type = class_type @GenericNoParams, @GenericNoParams(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %GenericAndParams.type.2: type = generic_class_type @GenericAndParams.2, @C(%T) [symbolic] -// CHECK:STDOUT: %GenericAndParams.generic.2: %GenericAndParams.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %GenericAndParams.2: type = class_type @GenericAndParams.2, @GenericAndParams.2(%T, %U) [symbolic] +// CHECK:STDOUT: %GenericAndParams.type.889: type = generic_class_type @GenericAndParams.2, @C(%T) [symbolic] +// CHECK:STDOUT: %GenericAndParams.generic.7c2: %GenericAndParams.type.889 = struct_value () [symbolic] +// CHECK:STDOUT: %GenericAndParams.b6f: type = class_type @GenericAndParams.2, @GenericAndParams.2(%T, %U) [symbolic] // CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: %NotGenericNoParams.val: %NotGenericNoParams = struct_value () [template] // CHECK:STDOUT: %NotGenericButParams.val: %NotGenericButParams = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.3: type = class_type @GenericAndParams.1, @GenericAndParams.1(%X) [template] -// CHECK:STDOUT: %GenericAndParams.val.1: %GenericAndParams.3 = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.type.3: type = generic_class_type @GenericAndParams.2, @C(%X) [template] -// CHECK:STDOUT: %GenericAndParams.generic.3: %GenericAndParams.type.3 = struct_value () [template] -// CHECK:STDOUT: %GenericNoParams.val: %GenericNoParams.1 = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.4: type = class_type @GenericAndParams.2, @GenericAndParams.2(%X, %X) [template] -// CHECK:STDOUT: %GenericAndParams.val.2: %GenericAndParams.4 = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.0da: type = class_type @GenericAndParams.1, @GenericAndParams.1(%X) [template] +// CHECK:STDOUT: %GenericAndParams.val.378: %GenericAndParams.0da = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.type.531: type = generic_class_type @GenericAndParams.2, @C(%X) [template] +// CHECK:STDOUT: %GenericAndParams.generic.6cc: %GenericAndParams.type.531 = struct_value () [template] +// CHECK:STDOUT: %GenericNoParams.val: %GenericNoParams.0a9 = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.ace: type = class_type @GenericAndParams.2, @GenericAndParams.2(%X, %X) [template] +// CHECK:STDOUT: %GenericAndParams.val.32a: %GenericAndParams.ace = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -104,7 +104,7 @@ fn F(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %NotGenericNoParams.decl: type = class_decl @NotGenericNoParams [template = constants.%NotGenericNoParams] {} {} // CHECK:STDOUT: %NotGenericButParams.decl: %NotGenericButParams.type = class_decl @NotGenericButParams [template = constants.%NotGenericButParams.generic] {} {} -// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.1 = class_decl @GenericAndParams.1 [template = constants.%GenericAndParams.generic.1] { +// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.c8d = class_decl @GenericAndParams.1 [template = constants.%GenericAndParams.generic.1e4] { // CHECK:STDOUT: %T.patt.loc6_24.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_24.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_24.1, runtime_param [symbolic = %T.patt.loc6_24.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -123,12 +123,12 @@ fn F(T:! type) { // CHECK:STDOUT: %a: ref %NotGenericNoParams = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %NotGenericButParams = var b // CHECK:STDOUT: %b: ref %NotGenericButParams = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %GenericAndParams.3 = var c -// CHECK:STDOUT: %c: ref %GenericAndParams.3 = bind_name c, %c.var -// CHECK:STDOUT: %d.var: ref %GenericNoParams.1 = var d -// CHECK:STDOUT: %d: ref %GenericNoParams.1 = bind_name d, %d.var -// CHECK:STDOUT: %e.var: ref %GenericAndParams.4 = var e -// CHECK:STDOUT: %e: ref %GenericAndParams.4 = bind_name e, %e.var +// CHECK:STDOUT: %c.var: ref %GenericAndParams.0da = var c +// CHECK:STDOUT: %c: ref %GenericAndParams.0da = bind_name c, %c.var +// CHECK:STDOUT: %d.var: ref %GenericNoParams.0a9 = var d +// CHECK:STDOUT: %d: ref %GenericNoParams.0a9 = bind_name d, %d.var +// CHECK:STDOUT: %e.var: ref %GenericAndParams.ace = var e +// CHECK:STDOUT: %e: ref %GenericAndParams.ace = bind_name e, %e.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NotGenericNoParams { @@ -157,7 +157,7 @@ fn F(T:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%GenericAndParams.1 +// CHECK:STDOUT: .Self = constants.%GenericAndParams.9d2 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -167,12 +167,12 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc8_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type: type = generic_class_type @GenericAndParams.2, @C(%T.loc8_9.2) [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.2)] -// CHECK:STDOUT: %GenericAndParams.generic: @C.%GenericAndParams.type (%GenericAndParams.type.2) = struct_value () [symbolic = %GenericAndParams.generic (constants.%GenericAndParams.generic.2)] +// CHECK:STDOUT: %GenericAndParams.type: type = generic_class_type @GenericAndParams.2, @C(%T.loc8_9.2) [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.889)] +// CHECK:STDOUT: %GenericAndParams.generic: @C.%GenericAndParams.type (%GenericAndParams.type.889) = struct_value () [symbolic = %GenericAndParams.generic (constants.%GenericAndParams.generic.7c2)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %GenericNoParams.decl: type = class_decl @GenericNoParams [template = constants.%GenericNoParams.1] {} {} -// CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.2) = class_decl @GenericAndParams.2 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.2)] { +// CHECK:STDOUT: %GenericNoParams.decl: type = class_decl @GenericNoParams [template = constants.%GenericNoParams.0a9] {} {} +// CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.889) = class_decl @GenericAndParams.2 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.7c2)] { // CHECK:STDOUT: %U.patt.loc10_26.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_26.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc10_26.1, runtime_param [symbolic = %U.patt.loc10_26.2 (constants.%U.patt)] // CHECK:STDOUT: } { @@ -182,7 +182,7 @@ fn F(T:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl // CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl // CHECK:STDOUT: complete_type_witness = %complete_type @@ -196,7 +196,7 @@ fn F(T:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%GenericNoParams.2 +// CHECK:STDOUT: .Self = constants.%GenericNoParams.495 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -211,7 +211,7 @@ fn F(T:! type) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%GenericAndParams.2 +// CHECK:STDOUT: .Self = constants.%GenericAndParams.b6f // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -235,16 +235,16 @@ fn F(T:! type) { // CHECK:STDOUT: %.loc16_34: init %NotGenericButParams = converted %.loc16_33.1, %.loc16_33.2 [template = constants.%NotGenericButParams.val] // CHECK:STDOUT: assign file.%b.var, %.loc16_34 // CHECK:STDOUT: %.loc17_31.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc17_31.2: init %GenericAndParams.3 = class_init (), file.%c.var [template = constants.%GenericAndParams.val.1] -// CHECK:STDOUT: %.loc17_32: init %GenericAndParams.3 = converted %.loc17_31.1, %.loc17_31.2 [template = constants.%GenericAndParams.val.1] +// CHECK:STDOUT: %.loc17_31.2: init %GenericAndParams.0da = class_init (), file.%c.var [template = constants.%GenericAndParams.val.378] +// CHECK:STDOUT: %.loc17_32: init %GenericAndParams.0da = converted %.loc17_31.1, %.loc17_31.2 [template = constants.%GenericAndParams.val.378] // CHECK:STDOUT: assign file.%c.var, %.loc17_32 // CHECK:STDOUT: %.loc18_32.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc18_32.2: init %GenericNoParams.1 = class_init (), file.%d.var [template = constants.%GenericNoParams.val] -// CHECK:STDOUT: %.loc18_33: init %GenericNoParams.1 = converted %.loc18_32.1, %.loc18_32.2 [template = constants.%GenericNoParams.val] +// CHECK:STDOUT: %.loc18_32.2: init %GenericNoParams.0a9 = class_init (), file.%d.var [template = constants.%GenericNoParams.val] +// CHECK:STDOUT: %.loc18_33: init %GenericNoParams.0a9 = converted %.loc18_32.1, %.loc18_32.2 [template = constants.%GenericNoParams.val] // CHECK:STDOUT: assign file.%d.var, %.loc18_33 // CHECK:STDOUT: %.loc19_36.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc19_36.2: init %GenericAndParams.4 = class_init (), file.%e.var [template = constants.%GenericAndParams.val.2] -// CHECK:STDOUT: %.loc19_37: init %GenericAndParams.4 = converted %.loc19_36.1, %.loc19_36.2 [template = constants.%GenericAndParams.val.2] +// CHECK:STDOUT: %.loc19_36.2: init %GenericAndParams.ace = class_init (), file.%e.var [template = constants.%GenericAndParams.val.32a] +// CHECK:STDOUT: %.loc19_37: init %GenericAndParams.ace = converted %.loc19_36.1, %.loc19_36.2 [template = constants.%GenericAndParams.val.32a] // CHECK:STDOUT: assign file.%e.var, %.loc19_37 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -280,8 +280,8 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc8_9.2 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.3 -// CHECK:STDOUT: %GenericAndParams.generic => constants.%GenericAndParams.generic.3 +// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.531 +// CHECK:STDOUT: %GenericAndParams.generic => constants.%GenericAndParams.generic.6cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.2(constants.%X, constants.%X) { diff --git a/toolchain/check/testdata/class/no_prelude/implicit_import.carbon b/toolchain/check/testdata/class/no_prelude/implicit_import.carbon index d6c8b2013e8c..c8122a153a85 100644 --- a/toolchain/check/testdata/class/no_prelude/implicit_import.carbon +++ b/toolchain/check/testdata/class/no_prelude/implicit_import.carbon @@ -155,8 +155,8 @@ class B {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.2: = import_ref Main//redecl_after_def, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//redecl_after_def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//redecl_after_def, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//redecl_after_def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -170,8 +170,8 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redef_after_def.carbon @@ -203,35 +203,35 @@ class B {} // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.a95: type = class_type @.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//redef_after_def, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//redef_after_def, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//redef_after_def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//redef_after_def, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//redef_after_def, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//redef_after_def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a95] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "redef_after_def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -257,24 +257,24 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.a95: type = class_type @.1 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//def_alias, C, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//def_alias, B, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.85d = import_ref Main//def_alias, C, unloaded +// CHECK:STDOUT: %import_ref.79a: type = import_ref Main//def_alias, B, loaded [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .B = imports.%import_ref.79a // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a95] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "def_alias.carbon"]; @@ -283,7 +283,7 @@ class B {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/import_access.carbon b/toolchain/check/testdata/class/no_prelude/import_access.carbon index 6b5ca0a8d2b7..96dadad50191 100644 --- a/toolchain/check/testdata/class/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/class/no_prelude/import_access.carbon @@ -207,14 +207,14 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Test//def, Def, loaded [template = constants.%Def] -// CHECK:STDOUT: %import_ref.2: = import_ref Test//def, loc4_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Test//def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9e9: type = import_ref Test//def, Def, loaded [template = constants.%Def] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Test//def, loc4_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.4ce = import_ref Test//def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Def [private] = imports.%import_ref.1 +// CHECK:STDOUT: .Def [private] = imports.%import_ref.9e9 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %Test.import = import Test @@ -225,8 +225,8 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: class @Def [from "def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.4ce +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -299,14 +299,14 @@ private class Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [template = constants.%ForwardWithDef] -// CHECK:STDOUT: %import_ref.2: = import_ref Test//forward_with_def, loc6_23, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Test//forward_with_def, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.570: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [template = constants.%ForwardWithDef] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Test//forward_with_def, loc6_23, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.414 = import_ref Test//forward_with_def, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .ForwardWithDef [private] = imports.%import_ref.1 +// CHECK:STDOUT: .ForwardWithDef [private] = imports.%import_ref.570 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %Test.import = import Test @@ -317,8 +317,8 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardWithDef [from "forward_with_def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.414 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon index 2a4c655cb344..b2804511c80c 100644 --- a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon @@ -154,10 +154,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//a, loc5_10, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.d18 = import_ref Main//a, loc5_10, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -165,14 +165,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .F = imports.%import_ref.d18 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- d.carbon @@ -198,15 +198,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//c, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c, inst20 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//c, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//c, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//c, inst20 [indirect], unloaded +// CHECK:STDOUT: %import_ref.3b6 = import_ref Main//c, inst21 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -215,8 +215,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %package.ref: = name_ref package, package [template = package] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %C: type = bind_alias C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4a7 [template = constants.%C] +// CHECK:STDOUT: %C: type = bind_alias C, imports.%import_ref.4a7 [template = constants.%C] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -227,9 +227,9 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.3b6 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- f.carbon @@ -257,15 +257,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Main//a, loc5_10, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//a, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//a, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.a6e: %F.type = import_ref Main//a, loc5_10, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -275,17 +275,17 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .F = imports.%import_ref.a6e +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.a6e [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return @@ -303,15 +303,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//c, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c, inst20 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//c, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//c, inst20 [indirect], unloaded +// CHECK:STDOUT: %import_ref.861: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -321,17 +321,17 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.861 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4a7 [template = constants.%C] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.861 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return @@ -349,15 +349,15 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//c, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c, inst20 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//c, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//c, inst19 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//c, inst20 [indirect], unloaded +// CHECK:STDOUT: %import_ref.861: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -367,17 +367,17 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.861 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4a7 [template = constants.%C] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.861 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return @@ -396,18 +396,18 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//e, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//e, loc8_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//e, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//e, loc7_9, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//e, inst22 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//e, inst23 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.275: type = import_ref Main//e, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//e, loc8_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref Main//e, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.08c: type = import_ref Main//e, loc7_9, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f3: = import_ref Main//e, inst22 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.db8 = import_ref Main//e, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.e47: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 +// CHECK:STDOUT: .D = imports.%import_ref.275 // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -417,25 +417,25 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .C = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .C = imports.%import_ref.08c +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "e.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .F = imports.%import_ref.7 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .F = imports.%import_ref.e47 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.7 [template = constants.%F] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.08c [template = constants.%C] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.e47 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return @@ -454,18 +454,18 @@ var x: () = D.C.F(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//e, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//e, loc8_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//e, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//e, loc7_9, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//e, inst22 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//e, inst23 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.275: type = import_ref Main//e, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//e, loc8_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref Main//e, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.08c: type = import_ref Main//e, loc7_9, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f3: = import_ref Main//e, inst22 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.db8 = import_ref Main//e, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.e47: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 +// CHECK:STDOUT: .D = imports.%import_ref.275 // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -475,25 +475,25 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .C = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .C = imports.%import_ref.08c +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "e.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .F = imports.%import_ref.7 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .F = imports.%import_ref.e47 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4 [template = constants.%C] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.7 [template = constants.%F] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.08c [template = constants.%C] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.e47 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: assign file.%x.var, %F.call // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon index d4d34a0a9298..1faf4b94a056 100644 --- a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon @@ -364,7 +364,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%a) [symbolic] +// CHECK:STDOUT: %.12f: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -416,7 +416,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.12f // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -587,16 +587,16 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//two_file, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.930: type = import_ref Main//two_file, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .D = imports.%import_ref.930 // CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: .Bar = %Bar.decl // CHECK:STDOUT: } @@ -607,7 +607,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc4, runtime_param [symbolic = constants.%a.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %a.loc4: %C = bind_symbolic_name a, 0, %a.param [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = class_decl @Bar [template = constants.%Bar.generic] { @@ -615,15 +615,15 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc5, runtime_param [symbolic = constants.%a.patt] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.930 [template = constants.%C] // CHECK:STDOUT: %a.loc5: %C = bind_symbolic_name a, 0, %a.param [symbolic = constants.%a] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -680,7 +680,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %b.patt: %C = symbolic_binding_pattern b, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%b) [symbolic] +// CHECK:STDOUT: %.374: type = class_type @.1, @.1(%b) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -735,7 +735,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.374 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -762,7 +762,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%a) [symbolic] +// CHECK:STDOUT: %.1c1: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -817,7 +817,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.1c1 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -844,7 +844,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%a) [symbolic] +// CHECK:STDOUT: %.1c1: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -899,7 +899,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.1c1 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -976,21 +976,21 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: .D = %D // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %Foo.decl: %Foo.type = class_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc6: %C = symbolic_binding_pattern a, 0 [symbolic = constants.%a.patt] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6, runtime_param [symbolic = constants.%a.patt] @@ -1003,8 +1003,8 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -1040,7 +1040,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%a) [symbolic] +// CHECK:STDOUT: %.5f5: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1099,7 +1099,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.5f5 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1120,13 +1120,13 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %empty_tuple.type [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Base [template] +// CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %empty_tuple.type} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.bf1: %.type = struct_value () [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1135,33 +1135,33 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: .Base = %Base.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.bf1] { +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc16_11: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc16_26: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc16_26: type = splice_block %ptr [template = constants.%ptr.11f] { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %ptr: type = ptr_type %Base [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.11f = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %.loc5: %Base.elem = field_decl a, element0 [template] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc7_8: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_23: type = splice_block %ptr [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_23: type = splice_block %ptr [template = constants.%ptr.11f] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Base [template = constants.%Base] -// CHECK:STDOUT: %ptr: type = ptr_type %Base [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.1 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.11f = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type] // CHECK:STDOUT: @@ -1172,11 +1172,11 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.1](); +// CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.11f](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @.1[addr %self.param_patt: %ptr.1]() { +// CHECK:STDOUT: fn @.1[addr %self.param_patt: %ptr.11f]() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.1 = name_ref self, %self +// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self // CHECK:STDOUT: %.loc17_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc5 [template = @Base.%.loc5] // CHECK:STDOUT: %.loc17_10: ref %empty_tuple.type = class_element_access %.loc17_4, element0 diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 79ab8c843c56..9e8be6b18d38 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -26,23 +26,23 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -56,18 +56,18 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt.loc17_17: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt.loc17_21: %ptr.1 = value_param_pattern %self.patt.loc17_17, runtime_param0 +// CHECK:STDOUT: %self.patt.loc17_17: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt.loc17_21: %ptr.e71 = value_param_pattern %self.patt.loc17_17, runtime_param0 // CHECK:STDOUT: %.loc17_12: auto = addr_pattern %self.param_patt.loc17_21 // CHECK:STDOUT: %self.patt.loc17_30: %i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc17_36: %i32 = value_param_pattern %self.patt.loc17_30, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc17_21: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc17_27: type = splice_block %ptr.loc17 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc17_21: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc17_27: type = splice_block %ptr.loc17 [template = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc17_17: %ptr.1 = bind_name self, %self.param.loc17_21 +// CHECK:STDOUT: %self.loc17_17: %ptr.e71 = bind_name self, %self.param.loc17_21 // CHECK:STDOUT: %self.param.loc17_36: %i32 = value_param runtime_param1 // CHECK:STDOUT: %.loc17_38: type = splice_block %i32.loc17 [template = constants.%i32] { // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [template = constants.%int_32] @@ -80,15 +80,15 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %self.param_patt.loc21_16: %Class = value_param_pattern %self.patt.loc21_12, runtime_param0 // CHECK:STDOUT: %self.patt.loc21_24: %i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc21_30: %i32 = value_param_pattern %self.patt.loc21_24, runtime_param1 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc21_41: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_41: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc21_46: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21_46: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc21_49.1: %tuple.type.1 = tuple_literal (%i32.loc21_41, %i32.loc21_46) -// CHECK:STDOUT: %.loc21_49.2: type = converted %.loc21_49.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc21_49.1: %tuple.type.24b = tuple_literal (%i32.loc21_41, %i32.loc21_46) +// CHECK:STDOUT: %.loc21_49.2: type = converted %.loc21_49.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %self.param.loc21_16: %Class = value_param runtime_param0 // CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %self.loc21_12: %Class = bind_name self, %self.param.loc21_16 @@ -98,25 +98,25 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc21_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc21_24: %i32 = bind_name r#self, %self.param.loc21_30 -// CHECK:STDOUT: %return.param.loc21: ref %tuple.type.2 = out_param runtime_param2 -// CHECK:STDOUT: %return.loc21: ref %tuple.type.2 = return_slot %return.param.loc21 +// CHECK:STDOUT: %return.param.loc21: ref %tuple.type.471 = out_param runtime_param2 +// CHECK:STDOUT: %return.loc21: ref %tuple.type.471 = return_slot %return.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %self.patt.loc17_17: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt.loc17_21: %ptr.1 = value_param_pattern %self.patt.loc17_17, runtime_param0 +// CHECK:STDOUT: %self.patt.loc17_17: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt.loc17_21: %ptr.e71 = value_param_pattern %self.patt.loc17_17, runtime_param0 // CHECK:STDOUT: %.loc17_12: auto = addr_pattern %self.param_patt.loc17_21 // CHECK:STDOUT: %self.patt.loc17_30: %i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc17_36: %i32 = value_param_pattern %self.patt.loc17_30, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc12_17: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr.loc12 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc12_17: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr.loc12 [template = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref.loc12: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %ptr.loc12: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc12: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc12_13: %ptr.1 = bind_name self, %self.param.loc12_17 +// CHECK:STDOUT: %self.loc12_13: %ptr.e71 = bind_name self, %self.param.loc12_17 // CHECK:STDOUT: %self.param.loc12_32: %i32 = value_param runtime_param1 // CHECK:STDOUT: %.loc12_34: type = splice_block %i32.loc12 [template = constants.%i32] { // CHECK:STDOUT: %int_32.loc12: Core.IntLiteral = int_value 32 [template = constants.%int_32] @@ -129,15 +129,15 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %self.param_patt.loc21_16: %Class = value_param_pattern %self.patt.loc21_12, runtime_param0 // CHECK:STDOUT: %self.patt.loc21_24: %i32 = binding_pattern r#self // CHECK:STDOUT: %self.param_patt.loc21_30: %i32 = value_param_pattern %self.patt.loc21_24, runtime_param1 -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc13_37: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_37: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc13_42: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_42: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc13_45.1: %tuple.type.1 = tuple_literal (%i32.loc13_37, %i32.loc13_42) -// CHECK:STDOUT: %.loc13_45.2: type = converted %.loc13_45.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc13_45.1: %tuple.type.24b = tuple_literal (%i32.loc13_37, %i32.loc13_42) +// CHECK:STDOUT: %.loc13_45.2: type = converted %.loc13_45.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %self.param.loc13_12: %Class = value_param runtime_param0 // CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%Class [template = constants.%Class] // CHECK:STDOUT: %self.loc13_8: %Class = bind_name self, %self.param.loc13_12 @@ -147,11 +147,11 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %i32.loc13_28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %self.loc13_20: %i32 = bind_name r#self, %self.param.loc13_26 -// CHECK:STDOUT: %return.param.loc13: ref %tuple.type.2 = out_param runtime_param2 -// CHECK:STDOUT: %return.loc13: ref %tuple.type.2 = return_slot %return.param.loc13 +// CHECK:STDOUT: %return.param.loc13: ref %tuple.type.471 = out_param runtime_param2 +// CHECK:STDOUT: %return.loc13: ref %tuple.type.471 = return_slot %return.param.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc14: %Class.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -161,9 +161,9 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F[addr %self.param_patt.loc17_21: %ptr.1](%self.param_patt.loc17_36: %i32) { +// CHECK:STDOUT: fn @F[addr %self.param_patt.loc17_21: %ptr.e71](%self.param_patt.loc17_36: %i32) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref.loc18_5: %ptr.1 = name_ref self, %self.loc17_17 +// CHECK:STDOUT: %self.ref.loc18_5: %ptr.e71 = name_ref self, %self.loc17_17 // CHECK:STDOUT: %.loc18_4: ref %Class = deref %self.ref.loc18_5 // CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc14 [template = @Class.%.loc14] // CHECK:STDOUT: %.loc18_10: ref %i32 = class_element_access %.loc18_4, element0 @@ -172,20 +172,20 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G[%self.param_patt.loc21_16: %Class](%self.param_patt.loc21_30: %i32) -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @G[%self.param_patt.loc21_16: %Class](%self.param_patt.loc21_30: %i32) -> %return.param_patt: %tuple.type.471 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref.loc22_11: %Class = name_ref self, %self.loc21_12 // CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc14 [template = @Class.%.loc14] // CHECK:STDOUT: %.loc22_15.1: ref %i32 = class_element_access %self.ref.loc22_11, element0 // CHECK:STDOUT: %.loc22_15.2: %i32 = bind_value %.loc22_15.1 // CHECK:STDOUT: %self.ref.loc22_19: %i32 = name_ref r#self, %self.loc21_24 -// CHECK:STDOUT: %.loc22_25.1: %tuple.type.2 = tuple_literal (%.loc22_15.2, %self.ref.loc22_19) +// CHECK:STDOUT: %.loc22_25.1: %tuple.type.471 = tuple_literal (%.loc22_15.2, %self.ref.loc22_19) // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return.loc21, element0 // CHECK:STDOUT: %.loc22_25.2: init %i32 = initialize_from %.loc22_15.2 to %tuple.elem0 // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return.loc21, element1 // CHECK:STDOUT: %.loc22_25.3: init %i32 = initialize_from %self.ref.loc22_19 to %tuple.elem1 -// CHECK:STDOUT: %.loc22_25.4: init %tuple.type.2 = tuple_init (%.loc22_25.2, %.loc22_25.3) to %return.loc21 -// CHECK:STDOUT: %.loc22_26: init %tuple.type.2 = converted %.loc22_25.1, %.loc22_25.4 +// CHECK:STDOUT: %.loc22_25.4: init %tuple.type.471 = tuple_init (%.loc22_25.2, %.loc22_25.3) to %return.loc21 +// CHECK:STDOUT: %.loc22_26: init %tuple.type.471 = converted %.loc22_25.1, %.loc22_25.4 // CHECK:STDOUT: return %.loc22_26 to %return.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index 586d5f67f3c7..a6bdb0e67e95 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -27,15 +27,15 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Class: type = class_type @Class [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.945: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.ffd: %F.type.945 = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %MemberNamedSelf: type = class_type @MemberNamedSelf [template] // CHECK:STDOUT: %Self: type = class_type @Self [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.db9: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.7cf: %F.type.db9 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -54,7 +54,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} // CHECK:STDOUT: %MemberNamedSelf.decl: type = class_decl @MemberNamedSelf [template = constants.%MemberNamedSelf] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.db9 = fn_decl @F.2 [template = constants.%F.7cf] { // CHECK:STDOUT: %x.patt: %MemberNamedSelf = binding_pattern x // CHECK:STDOUT: %x.param_patt: %MemberNamedSelf = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %y.patt: %Self = binding_pattern y @@ -70,7 +70,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.945 = fn_decl @F.1 [template = constants.%F.ffd] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -81,7 +81,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: // CHECK:STDOUT: class @MemberNamedSelf { // CHECK:STDOUT: %Self.decl: type = class_decl @Self [template = constants.%Self] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.db9 = fn_decl @F.2 [template = constants.%F.7cf] { // CHECK:STDOUT: %x.patt: %MemberNamedSelf = binding_pattern x // CHECK:STDOUT: %x.param_patt: %MemberNamedSelf = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %y.patt: %Self = binding_pattern y @@ -113,12 +113,12 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Self.var: ref %ptr.1 = var r#Self -// CHECK:STDOUT: %Self: ref %ptr.1 = bind_name r#Self, %Self.var -// CHECK:STDOUT: %p.var: ref %ptr.1 = var p -// CHECK:STDOUT: %p: ref %ptr.1 = bind_name p, %p.var -// CHECK:STDOUT: %Self.ref: ref %ptr.1 = name_ref r#Self, %Self -// CHECK:STDOUT: %.loc14: %ptr.1 = bind_value %Self.ref +// CHECK:STDOUT: %Self.var: ref %ptr.e71 = var r#Self +// CHECK:STDOUT: %Self: ref %ptr.e71 = bind_name r#Self, %Self.var +// CHECK:STDOUT: %p.var: ref %ptr.e71 = var p +// CHECK:STDOUT: %p: ref %ptr.e71 = bind_name p, %p.var +// CHECK:STDOUT: %Self.ref: ref %ptr.e71 = name_ref r#Self, %Self +// CHECK:STDOUT: %.loc14: %ptr.e71 = bind_value %Self.ref // CHECK:STDOUT: assign %p.var, %.loc14 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index cd7ee591a915..c59437603e92 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -29,12 +29,12 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -77,7 +77,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index cf1fd87e92fd..968be74b56aa 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -29,21 +29,21 @@ class Class { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -77,7 +77,7 @@ class Class { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -98,13 +98,13 @@ class Class { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_13.2: %i32 = converted %int_1, %.loc17_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_13.2: %i32 = converted %int_1, %.loc17_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc17_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index a7b4375d458f..cc5b79904265 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -58,60 +58,60 @@ class A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %i32 [template] -// CHECK:STDOUT: %struct_type.b.1: type = struct_type {.b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.b.1 [template] +// CHECK:STDOUT: %struct_type.b.fc0: type = struct_type {.b: %i32} [template] +// CHECK:STDOUT: %complete_type.d62: = complete_type_witness %struct_type.b.fc0 [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %DF.type: type = fn_type @DF [template] // CHECK:STDOUT: %DF: %DF.type = struct_value () [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %i32 [template] -// CHECK:STDOUT: %struct_type.d.1: type = struct_type {.d: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.d.1 [template] +// CHECK:STDOUT: %struct_type.d.227: type = struct_type {.d: %i32} [template] +// CHECK:STDOUT: %complete_type.23b: = complete_type_witness %struct_type.d.227 [template] // CHECK:STDOUT: %CF.type: type = fn_type @CF [template] // CHECK:STDOUT: %CF: %CF.type = struct_value () [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.c.1: type = struct_type {.c: %i32} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.c.1 [template] +// CHECK:STDOUT: %struct_type.c.8db: type = struct_type {.c: %i32} [template] +// CHECK:STDOUT: %complete_type.da4: = complete_type_witness %struct_type.c.8db [template] // CHECK:STDOUT: %AF.type: type = fn_type @AF [template] // CHECK:STDOUT: %AF: %AF.type = struct_value () [template] // CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %struct_type.a.1 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.2) [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.b.2: type = struct_type {.b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %B.val: %B = struct_value (%int_2.2) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %struct_type.c.2: type = struct_type {.c: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%int_3.2) [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %struct_type.d.2: type = struct_type {.d: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %D.val: %D = struct_value (%int_4.2) [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a.7cc [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %A.val: %A = struct_value (%int_1.c60) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %B.val: %B = struct_value (%int_2.166) [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %struct_type.c.5b8: type = struct_type {.c: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%int_3.25b) [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %struct_type.d.3ea: type = struct_type {.d: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %D.val: %D = struct_value (%int_4.2ec) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -131,7 +131,7 @@ class A { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %AF.decl: %AF.type = fn_decl @AF [template = constants.%AF] {} {} // CHECK:STDOUT: %.loc46: %A.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.1 [template = constants.%complete_type.6] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.7cc [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -145,7 +145,7 @@ class A { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %BF.decl: %BF.type = fn_decl @BF [template = constants.%BF] {} {} // CHECK:STDOUT: %.loc16: %B.elem = field_decl b, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.fc0 [template = constants.%complete_type.d62] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -160,7 +160,7 @@ class A { // CHECK:STDOUT: %DF.decl: %DF.type = fn_decl @DF [template = constants.%DF] {} {} // CHECK:STDOUT: %CF.decl: %CF.type = fn_decl @CF [template = constants.%CF] {} {} // CHECK:STDOUT: %.loc42: %C.elem = field_decl c, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.1 [template = constants.%complete_type.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.8db [template = constants.%complete_type.da4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -174,7 +174,7 @@ class A { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %DF.decl: %DF.type = fn_decl @DF [template = constants.%DF] {} {} // CHECK:STDOUT: %.loc24: %D.elem = field_decl d, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d.227 [template = constants.%complete_type.23b] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -192,57 +192,57 @@ class A { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %A = var a // CHECK:STDOUT: %a: ref %A = bind_name a, %a.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc29_25.1: %struct_type.a.2 = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_1, %impl.elem0.loc29 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc29_25.2: init %i32 = converted %int_1, %int.convert_checked.loc29 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc29_25.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_1, %impl.elem0.loc29 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc29_25.2: init %i32 = converted %int_1, %int.convert_checked.loc29 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc29_25.3: ref %i32 = class_element_access %a.var, element0 -// CHECK:STDOUT: %.loc29_25.4: init %i32 = initialize_from %.loc29_25.2 to %.loc29_25.3 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc29_25.4: init %i32 = initialize_from %.loc29_25.2 to %.loc29_25.3 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc29_25.5: init %A = class_init (%.loc29_25.4), %a.var [template = constants.%A.val] // CHECK:STDOUT: %.loc29_26: init %A = converted %.loc29_25.1, %.loc29_25.5 [template = constants.%A.val] // CHECK:STDOUT: assign %a.var, %.loc29_26 // CHECK:STDOUT: %b.var: ref %B = var b // CHECK:STDOUT: %b: ref %B = bind_name b, %b.var -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc30_25.1: %struct_type.b.2 = struct_literal (%int_2) -// CHECK:STDOUT: %impl.elem0.loc30: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc30: = bound_method %int_2, %impl.elem0.loc30 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc30: = specific_function %Convert.bound.loc30, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %Convert.specific_fn.loc30(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc30_25.2: init %i32 = converted %int_2, %int.convert_checked.loc30 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc30_25.1: %struct_type.b.a15 = struct_literal (%int_2) +// CHECK:STDOUT: %impl.elem0.loc30: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc30: = bound_method %int_2, %impl.elem0.loc30 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc30: = specific_function %Convert.bound.loc30, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %Convert.specific_fn.loc30(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc30_25.2: init %i32 = converted %int_2, %int.convert_checked.loc30 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc30_25.3: ref %i32 = class_element_access %b.var, element0 -// CHECK:STDOUT: %.loc30_25.4: init %i32 = initialize_from %.loc30_25.2 to %.loc30_25.3 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc30_25.4: init %i32 = initialize_from %.loc30_25.2 to %.loc30_25.3 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc30_25.5: init %B = class_init (%.loc30_25.4), %b.var [template = constants.%B.val] // CHECK:STDOUT: %.loc30_26: init %B = converted %.loc30_25.1, %.loc30_25.5 [template = constants.%B.val] // CHECK:STDOUT: assign %b.var, %.loc30_26 // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc31_25.1: %struct_type.c.2 = struct_literal (%int_3) -// CHECK:STDOUT: %impl.elem0.loc31: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc31: = bound_method %int_3, %impl.elem0.loc31 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc31: = specific_function %Convert.bound.loc31, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %Convert.specific_fn.loc31(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc31_25.2: init %i32 = converted %int_3, %int.convert_checked.loc31 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc31_25.1: %struct_type.c.5b8 = struct_literal (%int_3) +// CHECK:STDOUT: %impl.elem0.loc31: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc31: = bound_method %int_3, %impl.elem0.loc31 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc31: = specific_function %Convert.bound.loc31, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %Convert.specific_fn.loc31(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc31_25.2: init %i32 = converted %int_3, %int.convert_checked.loc31 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc31_25.3: ref %i32 = class_element_access %c.var, element0 -// CHECK:STDOUT: %.loc31_25.4: init %i32 = initialize_from %.loc31_25.2 to %.loc31_25.3 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc31_25.4: init %i32 = initialize_from %.loc31_25.2 to %.loc31_25.3 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc31_25.5: init %C = class_init (%.loc31_25.4), %c.var [template = constants.%C.val] // CHECK:STDOUT: %.loc31_26: init %C = converted %.loc31_25.1, %.loc31_25.5 [template = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc31_26 // CHECK:STDOUT: %d.var: ref %D = var d // CHECK:STDOUT: %d: ref %D = bind_name d, %d.var -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc32_25.1: %struct_type.d.2 = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0.loc32: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc32: = bound_method %int_4, %impl.elem0.loc32 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc32: = specific_function %Convert.bound.loc32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %Convert.specific_fn.loc32(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc32_25.2: init %i32 = converted %int_4, %int.convert_checked.loc32 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc32_25.1: %struct_type.d.3ea = struct_literal (%int_4) +// CHECK:STDOUT: %impl.elem0.loc32: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc32: = bound_method %int_4, %impl.elem0.loc32 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc32: = specific_function %Convert.bound.loc32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %Convert.specific_fn.loc32(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc32_25.2: init %i32 = converted %int_4, %int.convert_checked.loc32 [template = constants.%int_4.2ec] // CHECK:STDOUT: %.loc32_25.3: ref %i32 = class_element_access %d.var, element0 -// CHECK:STDOUT: %.loc32_25.4: init %i32 = initialize_from %.loc32_25.2 to %.loc32_25.3 [template = constants.%int_4.2] +// CHECK:STDOUT: %.loc32_25.4: init %i32 = initialize_from %.loc32_25.2 to %.loc32_25.3 [template = constants.%int_4.2ec] // CHECK:STDOUT: %.loc32_25.5: init %D = class_init (%.loc32_25.4), %d.var [template = constants.%D.val] // CHECK:STDOUT: %.loc32_26: init %D = converted %.loc32_25.1, %.loc32_25.5 [template = constants.%D.val] // CHECK:STDOUT: assign %d.var, %.loc32_26 diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index 9e31b03998de..cd688780771a 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -33,34 +33,34 @@ fn Run() { // CHECK:STDOUT: %Class: type = class_type @Class [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.945: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.ffd: %F.type.945 = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -75,7 +75,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -88,7 +88,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.945 = fn_decl @F.1 [template = constants.%F.ffd] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -106,7 +106,7 @@ fn Run() { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -117,19 +117,19 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc13_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type.1 = name_ref F, @Class.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref: %F.type.945 = name_ref F, @Class.%F.decl [template = constants.%F.ffd] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() // CHECK:STDOUT: %.loc17_15.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc17_15.2: %i32 = converted %F.call, %.loc17_15.1 @@ -138,13 +138,13 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_11.2: %i32 = converted %int_2, %.loc22_11.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc22_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc22_11.2: %i32 = converted %int_2, %.loc22_11.1 [template = constants.%int_2.166] // CHECK:STDOUT: return %.loc22_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -152,13 +152,13 @@ fn Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %i32 = var a // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var -// CHECK:STDOUT: %F.ref.loc26: %F.type.2 = name_ref F, file.%F.decl [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc26: %F.type.b25 = name_ref F, file.%F.decl [template = constants.%F.c41] // CHECK:STDOUT: %F.call.loc26: init %i32 = call %F.ref.loc26() // CHECK:STDOUT: assign %a.var, %F.call.loc26 // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [template = constants.%Class] -// CHECK:STDOUT: %F.ref.loc27: %F.type.1 = name_ref F, @Class.%F.decl [template = constants.%F.1] +// CHECK:STDOUT: %F.ref.loc27: %F.type.945 = name_ref F, @Class.%F.decl [template = constants.%F.ffd] // CHECK:STDOUT: %F.call.loc27: init %i32 = call %F.ref.loc27() // CHECK:STDOUT: assign %b.var, %F.call.loc27 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 25d45957f141..95e77e623c26 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -49,17 +49,17 @@ class Class { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -87,20 +87,20 @@ class Class { // CHECK:STDOUT: %return.loc11: ref %i32 = return_slot %return.param.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e71 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc15_12: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %self.param.loc15: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15_27: type = splice_block %ptr.loc15 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc15: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15_27: type = splice_block %ptr.loc15 [template = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %ptr.loc15: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc15: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc15: %ptr.1 = bind_name self, %self.param.loc15 +// CHECK:STDOUT: %self.loc15: %ptr.e71 = bind_name self, %self.param.loc15 // CHECK:STDOUT: %return.param.loc15: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return.loc15: ref %i32 = return_slot %return.param.loc15 // CHECK:STDOUT: } @@ -122,25 +122,25 @@ class Class { // CHECK:STDOUT: %return.loc5: ref %i32 = return_slot %return.param.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %self.patt: %ptr.1 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.1 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.e71 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.e71 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc15_12: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %self.param.loc6: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [template = constants.%ptr.1] { +// CHECK:STDOUT: %self.param.loc6: %ptr.e71 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [template = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref.loc6: type = name_ref Self, constants.%Class [template = constants.%Class] -// CHECK:STDOUT: %ptr.loc6: type = ptr_type %Class [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc6: type = ptr_type %Class [template = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc6: %ptr.1 = bind_name self, %self.param.loc6 +// CHECK:STDOUT: %self.loc6: %ptr.e71 = bind_name self, %self.param.loc6 // CHECK:STDOUT: %return.param.loc6: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return.loc6: ref %i32 = return_slot %return.param.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %.loc8: %Class.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -159,9 +159,9 @@ class Class { // CHECK:STDOUT: return %.loc12_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G[addr %self.param_patt: %ptr.1]() -> %i32 { +// CHECK:STDOUT: fn @G[addr %self.param_patt: %ptr.e71]() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.1 = name_ref self, %self.loc15 +// CHECK:STDOUT: %self.ref: %ptr.e71 = name_ref self, %self.loc15 // CHECK:STDOUT: %.loc16_11: ref %Class = deref %self.ref // CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc8 [template = @Class.%.loc8] // CHECK:STDOUT: %.loc16_17.1: ref %i32 = class_element_access %.loc16_11, element0 @@ -181,7 +181,7 @@ class Class { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index 324f2b2ad577..20ced6ef37bb 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -41,33 +41,33 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a [template] +// CHECK:STDOUT: %complete_type.297: = complete_type_witness %struct_type.a [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] // CHECK:STDOUT: %SelfBase.type: type = fn_type @SelfBase [template] // CHECK:STDOUT: %SelfBase: %SelfBase.type = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Base [template] +// CHECK:STDOUT: %ptr.11f: type = ptr_type %Base [template] // CHECK:STDOUT: %AddrSelfBase.type: type = fn_type @AddrSelfBase [template] // CHECK:STDOUT: %AddrSelfBase: %AddrSelfBase.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.base.1 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %Derived [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [template] // CHECK:STDOUT: %Call.type: type = fn_type @Call [template] // CHECK:STDOUT: %Call: %Call.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -98,31 +98,31 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.loc22: ref %i32 = return_slot %return.param.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [template = constants.%AddrSelfBase] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc26_25: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc26: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc26_40: type = splice_block %ptr.loc26 [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param.loc26: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc26_40: type = splice_block %ptr.loc26 [template = constants.%ptr.11f] { // CHECK:STDOUT: %Base.ref.loc26: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %ptr.loc26: type = ptr_type %Base [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc26: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc26: %ptr.2 = bind_name self, %self.param.loc26 +// CHECK:STDOUT: %self.loc26: %ptr.11f = bind_name self, %self.param.loc26 // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] { -// CHECK:STDOUT: %p.patt: %ptr.3 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.3 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.404 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.404 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %p.param: %ptr.404 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [template = constants.%Derived] -// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %Derived [template = constants.%ptr.404] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.3 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -130,7 +130,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %.loc12: %Base.elem = field_decl a, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.297] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -156,18 +156,18 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.loc18: ref %i32 = return_slot %return.param.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [template = constants.%AddrSelfBase] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %ptr.11f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.11f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc26_25: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc19: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %ptr.loc19 [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param.loc19: %ptr.11f = value_param runtime_param0 +// CHECK:STDOUT: %.loc19: type = splice_block %ptr.loc19 [template = constants.%ptr.11f] { // CHECK:STDOUT: %Base.ref.loc19: type = name_ref Base, file.%Base.decl [template = constants.%Base] -// CHECK:STDOUT: %ptr.loc19: type = ptr_type %Base [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc19: type = ptr_type %Base [template = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc19: %ptr.2 = bind_name self, %self.param.loc19 +// CHECK:STDOUT: %self.loc19: %ptr.11f = bind_name self, %self.param.loc19 // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -187,35 +187,35 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: return %.loc23_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AddrSelfBase[addr %self.param_patt: %ptr.2]() { +// CHECK:STDOUT: fn @AddrSelfBase[addr %self.param_patt: %ptr.11f]() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.2 = name_ref self, %self.loc26 +// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc26 // CHECK:STDOUT: %.loc27_4: ref %Base = deref %self.ref // CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc12 [template = @Base.%.loc12] // CHECK:STDOUT: %.loc27_10: ref %i32 = class_element_access %.loc27_4, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc27_13: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc27_13: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: assign %.loc27_10, %.loc27_13 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Call(%p.param_patt: %ptr.3) -> %i32 { +// CHECK:STDOUT: fn @Call(%p.param_patt: %ptr.404) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref.loc31: %ptr.3 = name_ref p, %p +// CHECK:STDOUT: %p.ref.loc31: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc31_4.1: ref %Derived = deref %p.ref.loc31 // CHECK:STDOUT: %AddrSelfBase.ref: %AddrSelfBase.type = name_ref AddrSelfBase, @Derived.%AddrSelfBase.decl [template = constants.%AddrSelfBase] // CHECK:STDOUT: %AddrSelfBase.bound: = bound_method %.loc31_4.1, %AddrSelfBase.ref -// CHECK:STDOUT: %addr.loc31_4.1: %ptr.3 = addr_of %.loc31_4.1 +// CHECK:STDOUT: %addr.loc31_4.1: %ptr.404 = addr_of %.loc31_4.1 // CHECK:STDOUT: %.loc31_4.2: ref %Derived = deref %addr.loc31_4.1 // CHECK:STDOUT: %.loc31_4.3: ref %Base = class_element_access %.loc31_4.2, element0 -// CHECK:STDOUT: %addr.loc31_4.2: %ptr.2 = addr_of %.loc31_4.3 -// CHECK:STDOUT: %.loc31_4.4: %ptr.2 = converted %addr.loc31_4.1, %addr.loc31_4.2 +// CHECK:STDOUT: %addr.loc31_4.2: %ptr.11f = addr_of %.loc31_4.3 +// CHECK:STDOUT: %.loc31_4.4: %ptr.11f = converted %addr.loc31_4.1, %addr.loc31_4.2 // CHECK:STDOUT: %AddrSelfBase.call: init %empty_tuple.type = call %AddrSelfBase.bound(%.loc31_4.4) -// CHECK:STDOUT: %p.ref.loc32: %ptr.3 = name_ref p, %p +// CHECK:STDOUT: %p.ref.loc32: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %.loc32_11.1: ref %Derived = deref %p.ref.loc32 // CHECK:STDOUT: %SelfBase.ref: %SelfBase.type = name_ref SelfBase, @Derived.%SelfBase.decl [template = constants.%SelfBase] // CHECK:STDOUT: %SelfBase.bound: = bound_method %.loc32_11.1, %SelfBase.ref diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index fc7227e9b72e..c07dc3f39634 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -32,15 +32,15 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Class [template] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %ptr.1 [template] -// CHECK:STDOUT: %struct_type.p: type = struct_type {.p: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.p [template] +// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [template] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %ptr.e71 [template] +// CHECK:STDOUT: %struct_type.p: type = struct_type {.p: %ptr.e71} [template] +// CHECK:STDOUT: %complete_type.56d: = complete_type_witness %struct_type.p [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -93,7 +93,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %.loc18: %Class.elem = field_decl p, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.p [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.p [template = constants.%complete_type.56d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -107,8 +107,8 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc21 // CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc18 [template = @Class.%.loc18] -// CHECK:STDOUT: %.loc22_16.1: ref %ptr.1 = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc22_16.2: %ptr.1 = bind_value %.loc22_16.1 +// CHECK:STDOUT: %.loc22_16.1: ref %ptr.e71 = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc22_16.2: %ptr.e71 = bind_value %.loc22_16.1 // CHECK:STDOUT: %.loc22_11.1: ref %Class = deref %.loc22_16.2 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [template = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %.loc22_11.1, %F.ref @@ -124,10 +124,10 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %s: ref %Class = bind_name s, %return // CHECK:STDOUT: %s.ref.loc15_5: ref %Class = name_ref s, %s // CHECK:STDOUT: %s.ref.loc15_16: ref %Class = name_ref s, %s -// CHECK:STDOUT: %addr: %ptr.1 = addr_of %s.ref.loc15_16 +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %s.ref.loc15_16 // CHECK:STDOUT: %.loc15_17.1: %struct_type.p = struct_literal (%addr) -// CHECK:STDOUT: %.loc15_17.2: ref %ptr.1 = class_element_access %s.ref.loc15_5, element0 -// CHECK:STDOUT: %.loc15_17.3: init %ptr.1 = initialize_from %addr to %.loc15_17.2 +// CHECK:STDOUT: %.loc15_17.2: ref %ptr.e71 = class_element_access %s.ref.loc15_5, element0 +// CHECK:STDOUT: %.loc15_17.3: init %ptr.e71 = initialize_from %addr to %.loc15_17.2 // CHECK:STDOUT: %.loc15_17.4: init %Class = class_init (%.loc15_17.3), %s.ref.loc15_5 // CHECK:STDOUT: %.loc15_7: init %Class = converted %.loc15_17.1, %.loc15_17.4 // CHECK:STDOUT: assign %s.ref.loc15_5, %.loc15_7 diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index d74b9726f36f..e542259e3177 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -26,14 +26,14 @@ fn Run() -> i32 { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -70,7 +70,7 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class diff --git a/toolchain/check/testdata/class/syntactic_merge_literal.carbon b/toolchain/check/testdata/class/syntactic_merge_literal.carbon index 6587fb1b6694..b2901aa3191f 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -39,20 +39,20 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt: %i32 = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%a) [symbolic] +// CHECK:STDOUT: %C.dff: type = class_type @C, @C(%a) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1000.1: Core.IntLiteral = int_value 1000 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1000.ff9: Core.IntLiteral = int_value 1000 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.ff9, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1000.2: %i32 = int_value 1000 [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%int_1000.2) [template] -// CHECK:STDOUT: %b: %C.2 = bind_symbolic_name b, 0 [symbolic] -// CHECK:STDOUT: %b.patt: %C.2 = symbolic_binding_pattern b, 0 [symbolic] +// CHECK:STDOUT: %int_1000.0a4: %i32 = int_value 1000 [template] +// CHECK:STDOUT: %C.387: type = class_type @C, @C(%int_1000.0a4) [template] +// CHECK:STDOUT: %b: %C.387 = bind_symbolic_name b, 0 [symbolic] +// CHECK:STDOUT: %b.patt: %C.387 = symbolic_binding_pattern b, 0 [symbolic] // CHECK:STDOUT: %D.type: type = generic_class_type @D [template] // CHECK:STDOUT: %D.generic: %D.type = struct_value () [template] // CHECK:STDOUT: %D: type = class_type @D, @D(%b) [symbolic] @@ -60,8 +60,8 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,40 +86,40 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.loc4_9.1: %i32 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc4_9.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl.loc5: %D.type = class_decl @D [template = constants.%D.generic] { -// CHECK:STDOUT: %b.patt.loc6: %C.2 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt] -// CHECK:STDOUT: %b.param_patt: %C.2 = value_param_pattern %b.patt.loc6, runtime_param [symbolic = constants.%b.patt] +// CHECK:STDOUT: %b.patt.loc6: %C.387 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt] +// CHECK:STDOUT: %b.param_patt: %C.387 = value_param_pattern %b.patt.loc6, runtime_param [symbolic = constants.%b.patt] // CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param.loc5: %C.2 = value_param runtime_param -// CHECK:STDOUT: %.loc5_20.1: type = splice_block %C.loc5 [template = constants.%C.2] { +// CHECK:STDOUT: %b.param.loc5: %C.387 = value_param runtime_param +// CHECK:STDOUT: %.loc5_20.1: type = splice_block %C.loc5 [template = constants.%C.387] { // CHECK:STDOUT: %C.ref.loc5: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1000.loc5: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.1] -// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1000.loc5: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.ff9] +// CHECK:STDOUT: %impl.elem0.loc5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc5: = bound_method %int_1000.loc5, %impl.elem0.loc5 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc5: = specific_function %Convert.bound.loc5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_1000.loc5) [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc5_20.2: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc5_20.3: %i32 = converted %int_1000.loc5, %.loc5_20.2 [template = constants.%int_1000.2] -// CHECK:STDOUT: %C.loc5: type = class_type @C, @C(constants.%int_1000.2) [template = constants.%C.2] +// CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %Convert.specific_fn.loc5(%int_1000.loc5) [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc5_20.2: %i32 = value_of_initializer %int.convert_checked.loc5 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc5_20.3: %i32 = converted %int_1000.loc5, %.loc5_20.2 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %C.loc5: type = class_type @C, @C(constants.%int_1000.0a4) [template = constants.%C.387] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc5_9.1: %C.2 = bind_symbolic_name b, 0, %b.param.loc5 [symbolic = %b.loc5_9.2 (constants.%b)] +// CHECK:STDOUT: %b.loc5_9.1: %C.387 = bind_symbolic_name b, 0, %b.param.loc5 [symbolic = %b.loc5_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl.loc6: %D.type = class_decl @D [template = constants.%D.generic] { -// CHECK:STDOUT: %b.patt.loc6: %C.2 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt] -// CHECK:STDOUT: %b.param_patt: %C.2 = value_param_pattern %b.patt.loc6, runtime_param [symbolic = constants.%b.patt] +// CHECK:STDOUT: %b.patt.loc6: %C.387 = symbolic_binding_pattern b, 0 [symbolic = constants.%b.patt] +// CHECK:STDOUT: %b.param_patt: %C.387 = value_param_pattern %b.patt.loc6, runtime_param [symbolic = constants.%b.patt] // CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param.loc6: %C.2 = value_param runtime_param -// CHECK:STDOUT: %.loc6_20.1: type = splice_block %C.loc6 [template = constants.%C.2] { +// CHECK:STDOUT: %b.param.loc6: %C.387 = value_param runtime_param +// CHECK:STDOUT: %.loc6_20.1: type = splice_block %C.loc6 [template = constants.%C.387] { // CHECK:STDOUT: %C.ref.loc6: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1000.loc6: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.1] -// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1000.loc6: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.ff9] +// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc6: = bound_method %int_1000.loc6, %impl.elem0.loc6 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc6: = specific_function %Convert.bound.loc6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_1000.loc6) [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc6_20.2: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc6_20.3: %i32 = converted %int_1000.loc6, %.loc6_20.2 [template = constants.%int_1000.2] -// CHECK:STDOUT: %C.loc6: type = class_type @C, @C(constants.%int_1000.2) [template = constants.%C.2] +// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_1000.loc6) [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc6_20.2: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc6_20.3: %i32 = converted %int_1000.loc6, %.loc6_20.2 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %C.loc6: type = class_type @C, @C(constants.%int_1000.0a4) [template = constants.%C.387] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc6: %C.2 = bind_symbolic_name b, 0, %b.param.loc6 [symbolic = constants.%b] +// CHECK:STDOUT: %b.loc6: %C.387 = bind_symbolic_name b, 0, %b.param.loc6 [symbolic = constants.%b] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -130,22 +130,22 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.dff // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @D(%b.loc5_9.1: %C.2) { -// CHECK:STDOUT: %b.loc5_9.2: %C.2 = bind_symbolic_name b, 0 [symbolic = %b.loc5_9.2 (constants.%b)] -// CHECK:STDOUT: %b.patt.loc5: %C.2 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5 (constants.%b.patt)] +// CHECK:STDOUT: generic class @D(%b.loc5_9.1: %C.387) { +// CHECK:STDOUT: %b.loc5_9.2: %C.387 = bind_symbolic_name b, 0 [symbolic = %b.loc5_9.2 (constants.%b)] +// CHECK:STDOUT: %b.patt.loc5: %C.387 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5 (constants.%b.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -158,9 +158,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_1000.2) { -// CHECK:STDOUT: %a.loc4_9.2 => constants.%int_1000.2 -// CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%int_1000.2 +// CHECK:STDOUT: specific @C(constants.%int_1000.0a4) { +// CHECK:STDOUT: %a.loc4_9.2 => constants.%int_1000.0a4 +// CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%int_1000.0a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%b) { @@ -177,31 +177,31 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt: %i32 = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%a) [symbolic] +// CHECK:STDOUT: %C.dff: type = class_type @C, @C(%a) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1000.1: Core.IntLiteral = int_value 1000 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1000.ff9: Core.IntLiteral = int_value 1000 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1000.ff9, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1000.2: %i32 = int_value 1000 [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%int_1000.2) [template] -// CHECK:STDOUT: %b: %C.2 = bind_symbolic_name b, 0 [symbolic] -// CHECK:STDOUT: %b.patt: %C.2 = symbolic_binding_pattern b, 0 [symbolic] +// CHECK:STDOUT: %int_1000.0a4: %i32 = int_value 1000 [template] +// CHECK:STDOUT: %C.387: type = class_type @C, @C(%int_1000.0a4) [template] +// CHECK:STDOUT: %b: %C.387 = bind_symbolic_name b, 0 [symbolic] +// CHECK:STDOUT: %b.patt: %C.387 = symbolic_binding_pattern b, 0 [symbolic] // CHECK:STDOUT: %D.type: type = generic_class_type @D [template] // CHECK:STDOUT: %D.generic: %D.type = struct_value () [template] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1, @.1(%b) [symbolic] +// CHECK:STDOUT: %.eb9: type = class_type @.1, @.1(%b) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -226,40 +226,40 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.loc4_9.1: %i32 = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc4_9.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: %D.type = class_decl @D [template = constants.%D.generic] { -// CHECK:STDOUT: %b.patt.loc5_9.1: %C.2 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] -// CHECK:STDOUT: %b.param_patt: %C.2 = value_param_pattern %b.patt.loc5_9.1, runtime_param [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] +// CHECK:STDOUT: %b.patt.loc5_9.1: %C.387 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] +// CHECK:STDOUT: %b.param_patt: %C.387 = value_param_pattern %b.patt.loc5_9.1, runtime_param [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param: %C.2 = value_param runtime_param -// CHECK:STDOUT: %.loc5_19.1: type = splice_block %C [template = constants.%C.2] { +// CHECK:STDOUT: %b.param: %C.387 = value_param runtime_param +// CHECK:STDOUT: %.loc5_19.1: type = splice_block %C [template = constants.%C.387] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.ff9] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1000, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1000) [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc5_19.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc5_19.3: %i32 = converted %int_1000, %.loc5_19.2 [template = constants.%int_1000.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.2) [template = constants.%C.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1000) [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc5_19.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc5_19.3: %i32 = converted %int_1000, %.loc5_19.2 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.0a4) [template = constants.%C.387] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc5_9.1: %C.2 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc5_9.2 (constants.%b)] +// CHECK:STDOUT: %b.loc5_9.1: %C.387 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc5_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %.decl: %.type = class_decl @.1 [template = constants.%.generic] { -// CHECK:STDOUT: %b.patt.loc12_9.1: %C.2 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] -// CHECK:STDOUT: %b.param_patt: %C.2 = value_param_pattern %b.patt.loc12_9.1, runtime_param [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] +// CHECK:STDOUT: %b.patt.loc12_9.1: %C.387 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] +// CHECK:STDOUT: %b.param_patt: %C.387 = value_param_pattern %b.patt.loc12_9.1, runtime_param [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param: %C.2 = value_param runtime_param -// CHECK:STDOUT: %.loc12_20.1: type = splice_block %C [template = constants.%C.2] { +// CHECK:STDOUT: %b.param: %C.387 = value_param runtime_param +// CHECK:STDOUT: %.loc12_20.1: type = splice_block %C [template = constants.%C.387] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1000: Core.IntLiteral = int_value 1000 [template = constants.%int_1000.ff9] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1000, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1000) [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc12_20.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1000.2] -// CHECK:STDOUT: %.loc12_20.3: %i32 = converted %int_1000, %.loc12_20.2 [template = constants.%int_1000.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.2) [template = constants.%C.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1000) [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc12_20.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %.loc12_20.3: %i32 = converted %int_1000, %.loc12_20.2 [template = constants.%int_1000.0a4] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1000.0a4) [template = constants.%C.387] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc12_9.1: %C.2 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc12_9.2 (constants.%b)] +// CHECK:STDOUT: %b.loc12_9.1: %C.387 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc12_9.2 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -270,32 +270,32 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.dff // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @D(%b.loc5_9.1: %C.2) { -// CHECK:STDOUT: %b.loc5_9.2: %C.2 = bind_symbolic_name b, 0 [symbolic = %b.loc5_9.2 (constants.%b)] -// CHECK:STDOUT: %b.patt.loc5_9.2: %C.2 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] +// CHECK:STDOUT: generic class @D(%b.loc5_9.1: %C.387) { +// CHECK:STDOUT: %b.loc5_9.2: %C.387 = bind_symbolic_name b, 0 [symbolic = %b.loc5_9.2 (constants.%b)] +// CHECK:STDOUT: %b.patt.loc5_9.2: %C.387 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc5_9.2 (constants.%b.patt)] // CHECK:STDOUT: // CHECK:STDOUT: class; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @.1(%b.loc12_9.1: %C.2) { -// CHECK:STDOUT: %b.loc12_9.2: %C.2 = bind_symbolic_name b, 0 [symbolic = %b.loc12_9.2 (constants.%b)] -// CHECK:STDOUT: %b.patt.loc12_9.2: %C.2 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] +// CHECK:STDOUT: generic class @.1(%b.loc12_9.1: %C.387) { +// CHECK:STDOUT: %b.loc12_9.2: %C.387 = bind_symbolic_name b, 0 [symbolic = %b.loc12_9.2 (constants.%b)] +// CHECK:STDOUT: %b.patt.loc12_9.2: %C.387 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc12_9.2 (constants.%b.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.eb9 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -305,9 +305,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_1000.2) { -// CHECK:STDOUT: %a.loc4_9.2 => constants.%int_1000.2 -// CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%int_1000.2 +// CHECK:STDOUT: specific @C(constants.%int_1000.0a4) { +// CHECK:STDOUT: %a.loc4_9.2 => constants.%int_1000.0a4 +// CHECK:STDOUT: %a.patt.loc4_9.2 => constants.%int_1000.0a4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @D(constants.%b) { diff --git a/toolchain/check/testdata/class/todo_access_modifiers.carbon b/toolchain/check/testdata/class/todo_access_modifiers.carbon index ff55c85f8c30..a3e55acc7921 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -31,12 +31,12 @@ class Access { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Access.elem: type = unbound_element_type %Access, %i32 [template] // CHECK:STDOUT: %struct_type.k.l: type = struct_type {.k: %i32, .l: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.k.l [template] +// CHECK:STDOUT: %complete_type.4b3: = complete_type_witness %struct_type.k.l [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -56,7 +56,7 @@ class Access { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %.loc17: %Access.elem = field_decl k, element0 [template] // CHECK:STDOUT: %.loc19: %Access.elem = field_decl l, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.l [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.l [template = constants.%complete_type.4b3] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Access diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index d302c06ff964..a623ba027b7f 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -187,12 +187,12 @@ class Derived { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Base: type = class_type @Base [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.vptr [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [template] +// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.0e2: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -201,13 +201,13 @@ class Derived { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Modifiers: = namespace file.%Modifiers.import, [template] { -// CHECK:STDOUT: .Base = %import_ref.1 +// CHECK:STDOUT: .Base = %import_ref.99d // CHECK:STDOUT: import Modifiers//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Modifiers//default, Base, loaded [template = constants.%Base] -// CHECK:STDOUT: %import_ref.2: = import_ref Modifiers//default, loc6_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.3 = import_ref Modifiers//default, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Modifiers//default, loc5_17, unloaded +// CHECK:STDOUT: %import_ref.99d: type = import_ref Modifiers//default, Base, loaded [template = constants.%Base] +// CHECK:STDOUT: %import_ref.05e: = import_ref Modifiers//default, loc6_1, loaded [template = constants.%complete_type.513] +// CHECK:STDOUT: %import_ref.1f3 = import_ref Modifiers//default, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.65c = import_ref Modifiers//default, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -224,9 +224,9 @@ class Derived { // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %Modifiers.ref: = name_ref Modifiers, imports.%Modifiers [template = imports.%Modifiers] -// CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%import_ref.1 [template = constants.%Base] +// CHECK:STDOUT: %Base.ref: type = name_ref Base, imports.%import_ref.99d [template = constants.%Base] // CHECK:STDOUT: %.loc8: %Derived.elem = base_decl %Base.ref, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.0e2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived @@ -238,9 +238,9 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "modifiers.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .H = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .H = imports.%import_ref.65c +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.05e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F(); @@ -251,8 +251,8 @@ class Derived { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Base: type = class_type @Base [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.1} [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: } @@ -263,12 +263,12 @@ class Derived { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Modifiers: = namespace file.%Modifiers.import, [template] { -// CHECK:STDOUT: .Base = %import_ref.1 +// CHECK:STDOUT: .Base = %import_ref.99d // CHECK:STDOUT: import Modifiers//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Modifiers//default, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Modifiers//default, inst16 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Modifiers//default, loc5_17, unloaded +// CHECK:STDOUT: %import_ref.05e: = import_ref Modifiers//default, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.1f3 = import_ref Modifiers//default, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.65c = import_ref Modifiers//default, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -284,9 +284,9 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "modifiers.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .H = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .H = imports.%import_ref.65c +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.05e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -294,9 +294,9 @@ class Derived { // CHECK:STDOUT: %v.var: ref %Base = var v // CHECK:STDOUT: %v: ref %Base = bind_name v, %v.var // CHECK:STDOUT: %.loc7_28.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc7_28.2: ref %ptr.1 = class_element_access %v.var, element0 -// CHECK:STDOUT: %.loc7_28.3: ref %ptr.1 = vtable_ptr -// CHECK:STDOUT: %.loc7_28.4: init %ptr.1 = initialize_from %.loc7_28.3 to %.loc7_28.2 +// CHECK:STDOUT: %.loc7_28.2: ref %ptr.454 = class_element_access %v.var, element0 +// CHECK:STDOUT: %.loc7_28.3: ref %ptr.454 = vtable_ptr +// CHECK:STDOUT: %.loc7_28.4: init %ptr.454 = initialize_from %.loc7_28.3 to %.loc7_28.2 // CHECK:STDOUT: %.loc7_28.5: init %Base = class_init (%.loc7_28.4), %v.var // CHECK:STDOUT: %.loc7_29: init %Base = converted %.loc7_28.1, %.loc7_28.5 // CHECK:STDOUT: assign %v.var, %.loc7_29 @@ -307,17 +307,17 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A1: type = class_type @A1 [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.vptr [template] +// CHECK:STDOUT: %F.type.5cf: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.838: %F.type.5cf = struct_value () [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [template] +// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [template] // CHECK:STDOUT: %A2: type = class_type @A2 [template] // CHECK:STDOUT: %A2.elem: type = unbound_element_type %A2, %A1 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.c6a: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.b9e: %F.type.c6a = struct_value () [template] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A1} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base [template] +// CHECK:STDOUT: %complete_type.a6f: = complete_type_witness %struct_type.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -339,8 +339,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A1 { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.1] +// CHECK:STDOUT: %F.decl: %F.type.5cf = fn_decl @F.1 [template = constants.%F.838] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A1 @@ -351,8 +351,8 @@ class Derived { // CHECK:STDOUT: class @A2 { // CHECK:STDOUT: %A1.ref: type = name_ref A1, file.%A1.decl [template = constants.%A1] // CHECK:STDOUT: %.loc9: %A2.elem = base_decl %A1.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %F.decl: %F.type.c6a = fn_decl @F.2 [template = constants.%F.b9e] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.a6f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A2 @@ -370,23 +370,23 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B1: type = class_type @B1 [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.1} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.vptr [template] +// CHECK:STDOUT: %F.type.4d4: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.41d: %F.type.4d4 = struct_value () [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [template] +// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [template] // CHECK:STDOUT: %B2: type = class_type @B2 [template] // CHECK:STDOUT: %B2.elem: type = unbound_element_type %B2, %B1 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %B1} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %F.type.25f: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.6a2: %F.type.25f = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.508: type = struct_type {.base: %B1} [template] +// CHECK:STDOUT: %complete_type.5ac: = complete_type_witness %struct_type.base.508 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B2 [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.3: type = struct_type {.base: %B2} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.base.3 [template] +// CHECK:STDOUT: %F.type.675: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.2c9: %F.type.675 = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.421: type = struct_type {.base: %B2} [template] +// CHECK:STDOUT: %complete_type.066: = complete_type_witness %struct_type.base.421 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -410,8 +410,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B1 { -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.1] +// CHECK:STDOUT: %F.decl: %F.type.4d4 = fn_decl @F.1 [template = constants.%F.41d] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B1 @@ -422,8 +422,8 @@ class Derived { // CHECK:STDOUT: class @B2 { // CHECK:STDOUT: %B1.ref: type = name_ref B1, file.%B1.decl [template = constants.%B1] // CHECK:STDOUT: %.loc9: %B2.elem = base_decl %B1.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %F.decl: %F.type.25f = fn_decl @F.2 [template = constants.%F.6a2] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.508 [template = constants.%complete_type.5ac] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B2 @@ -436,8 +436,8 @@ class Derived { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [template = constants.%B2] // CHECK:STDOUT: %.loc14: %C.elem = base_decl %B2.ref, element0 [template] -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.3 [template = constants.%complete_type.3] +// CHECK:STDOUT: %F.decl: %F.type.675 = fn_decl @F.3 [template = constants.%F.2c9] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.421 [template = constants.%complete_type.066] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -499,37 +499,37 @@ class Derived { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %i32 [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr.m1.m2: type = struct_type {.: %ptr.1, .m1: %i32, .m2: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.vptr.m1.m2 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %struct_type.m2.m1.1: type = struct_type {.m2: %i32, .m1: %i32} [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %struct_type.m2.m1.2: type = struct_type {.m2: Core.IntLiteral, .m1: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] +// CHECK:STDOUT: %F.type.3ec: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.f90: %F.type.3ec = struct_value () [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr.m1.m2: type = struct_type {.: %ptr.454, .m1: %i32, .m2: %i32} [template] +// CHECK:STDOUT: %complete_type.669: = complete_type_witness %struct_type.vptr.m1.m2 [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %struct_type.m2.m1.28f: type = struct_type {.m2: %i32, .m1: %i32} [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %struct_type.m2.m1.5f2: type = struct_type {.m2: Core.IntLiteral, .m1: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -543,14 +543,14 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %.loc5: %Base.elem = field_decl m1, element1 [template] // CHECK:STDOUT: %.loc6: %Base.elem = field_decl m2, element2 [template] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.m1.m2 [template = constants.%complete_type.3] +// CHECK:STDOUT: %F.decl: %F.type.3ec = fn_decl @F.1 [template = constants.%F.f90] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.m1.m2 [template = constants.%complete_type.669] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -566,21 +566,21 @@ class Derived { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %i.var: ref %i32 = var i // CHECK:STDOUT: %i: ref %i32 = bind_name i, %i.var -// CHECK:STDOUT: %int_3.loc12: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_3.loc12, %impl.elem0.loc12 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_3.loc12) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3.loc12: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_3.loc12, %impl.elem0.loc12 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_3.loc12) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [template = constants.%int_3.25b] // CHECK:STDOUT: assign %i.var, %.loc12 // CHECK:STDOUT: %b1.var: ref %Base = var b1 // CHECK:STDOUT: %b1: ref %Base = bind_name b1, %b1.var // CHECK:STDOUT: %i.ref.loc14_25: ref %i32 = name_ref i, %i // CHECK:STDOUT: %i.ref.loc14_34: ref %i32 = name_ref i, %i -// CHECK:STDOUT: %.loc14_35.1: %struct_type.m2.m1.1 = struct_literal (%i.ref.loc14_25, %i.ref.loc14_34) -// CHECK:STDOUT: %.loc14_35.2: ref %ptr.1 = class_element_access %b1.var, element0 -// CHECK:STDOUT: %.loc14_35.3: ref %ptr.1 = vtable_ptr -// CHECK:STDOUT: %.loc14_35.4: init %ptr.1 = initialize_from %.loc14_35.3 to %.loc14_35.2 +// CHECK:STDOUT: %.loc14_35.1: %struct_type.m2.m1.28f = struct_literal (%i.ref.loc14_25, %i.ref.loc14_34) +// CHECK:STDOUT: %.loc14_35.2: ref %ptr.454 = class_element_access %b1.var, element0 +// CHECK:STDOUT: %.loc14_35.3: ref %ptr.454 = vtable_ptr +// CHECK:STDOUT: %.loc14_35.4: init %ptr.454 = initialize_from %.loc14_35.3 to %.loc14_35.2 // CHECK:STDOUT: %.loc14_34: %i32 = bind_value %i.ref.loc14_34 // CHECK:STDOUT: %.loc14_35.5: ref %i32 = class_element_access %b1.var, element2 // CHECK:STDOUT: %.loc14_35.6: init %i32 = initialize_from %.loc14_34 to %.loc14_35.5 @@ -592,38 +592,38 @@ class Derived { // CHECK:STDOUT: assign %b1.var, %.loc14_36 // CHECK:STDOUT: %b2.var: ref %Base = var b2 // CHECK:STDOUT: %b2: ref %Base = bind_name b2, %b2.var -// CHECK:STDOUT: %int_3.loc15: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %.loc15_35.1: %struct_type.m2.m1.2 = struct_literal (%int_3.loc15, %int_5) -// CHECK:STDOUT: %.loc15_35.2: ref %ptr.1 = class_element_access %b2.var, element0 -// CHECK:STDOUT: %.loc15_35.3: ref %ptr.1 = vtable_ptr -// CHECK:STDOUT: %.loc15_35.4: init %ptr.1 = initialize_from %.loc15_35.3 to %.loc15_35.2 -// CHECK:STDOUT: %impl.elem0.loc15_35.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_35.1: = bound_method %int_5, %impl.elem0.loc15_35.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc15_35.1: = specific_function %Convert.bound.loc15_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc15_35.1: init %i32 = call %Convert.specific_fn.loc15_35.1(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc15_35.5: init %i32 = converted %int_5, %int.convert_checked.loc15_35.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int_3.loc15: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %.loc15_35.1: %struct_type.m2.m1.5f2 = struct_literal (%int_3.loc15, %int_5) +// CHECK:STDOUT: %.loc15_35.2: ref %ptr.454 = class_element_access %b2.var, element0 +// CHECK:STDOUT: %.loc15_35.3: ref %ptr.454 = vtable_ptr +// CHECK:STDOUT: %.loc15_35.4: init %ptr.454 = initialize_from %.loc15_35.3 to %.loc15_35.2 +// CHECK:STDOUT: %impl.elem0.loc15_35.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_35.1: = bound_method %int_5, %impl.elem0.loc15_35.1 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn.loc15_35.1: = specific_function %Convert.bound.loc15_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked.loc15_35.1: init %i32 = call %Convert.specific_fn.loc15_35.1(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc15_35.5: init %i32 = converted %int_5, %int.convert_checked.loc15_35.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %.loc15_35.6: ref %i32 = class_element_access %b2.var, element2 -// CHECK:STDOUT: %.loc15_35.7: init %i32 = initialize_from %.loc15_35.5 to %.loc15_35.6 [template = constants.%int_5.2] -// CHECK:STDOUT: %impl.elem0.loc15_35.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_35.2: = bound_method %int_3.loc15, %impl.elem0.loc15_35.2 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc15_35.2: = specific_function %Convert.bound.loc15_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc15_35.2: init %i32 = call %Convert.specific_fn.loc15_35.2(%int_3.loc15) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc15_35.8: init %i32 = converted %int_3.loc15, %int.convert_checked.loc15_35.2 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc15_35.7: init %i32 = initialize_from %.loc15_35.5 to %.loc15_35.6 [template = constants.%int_5.70b] +// CHECK:STDOUT: %impl.elem0.loc15_35.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_35.2: = bound_method %int_3.loc15, %impl.elem0.loc15_35.2 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc15_35.2: = specific_function %Convert.bound.loc15_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc15_35.2: init %i32 = call %Convert.specific_fn.loc15_35.2(%int_3.loc15) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc15_35.8: init %i32 = converted %int_3.loc15, %int.convert_checked.loc15_35.2 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc15_35.9: ref %i32 = class_element_access %b2.var, element1 -// CHECK:STDOUT: %.loc15_35.10: init %i32 = initialize_from %.loc15_35.8 to %.loc15_35.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc15_35.10: init %i32 = initialize_from %.loc15_35.8 to %.loc15_35.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc15_35.11: init %Base = class_init (%.loc15_35.4, %.loc15_35.7, %.loc15_35.10), %b2.var // CHECK:STDOUT: %.loc15_36: init %Base = converted %.loc15_35.1, %.loc15_35.11 // CHECK:STDOUT: assign %b2.var, %.loc15_36 // CHECK:STDOUT: %b1.ref: ref %Base = name_ref b1, %b1 // CHECK:STDOUT: %m2.ref: %Base.elem = name_ref m2, @Base.%.loc6 [template = @Base.%.loc6] // CHECK:STDOUT: %.loc18_5: ref %i32 = class_element_access %b1.ref, element2 -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_4, %impl.elem0.loc18 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc18_9: init %i32 = converted %int_4, %int.convert_checked.loc18 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_4, %impl.elem0.loc18 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc18_9: init %i32 = converted %int_4, %int.convert_checked.loc18 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %.loc18_5, %.loc18_9 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -633,14 +633,14 @@ class Derived { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Derived: type = class_type @Derived [template] // CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived, %Base [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type [template] -// CHECK:STDOUT: %struct_type.vptr.base: type = struct_type {.: %ptr.2, .base: %Base} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.vptr.base [template] +// CHECK:STDOUT: %ptr.454: type = ptr_type [template] +// CHECK:STDOUT: %struct_type.vptr.base: type = struct_type {.: %ptr.454, .base: %Base} [template] +// CHECK:STDOUT: %complete_type.336: = complete_type_witness %struct_type.vptr.base [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -662,7 +662,7 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -673,7 +673,7 @@ class Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc8: %Derived.elem = base_decl %Base.ref, element1 [template] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.base [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.base [template = constants.%complete_type.336] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived diff --git a/toolchain/check/testdata/const/basic.carbon b/toolchain/check/testdata/const/basic.carbon index 61b7489f559e..b1138ab29bf5 100644 --- a/toolchain/check/testdata/const/basic.carbon +++ b/toolchain/check/testdata/const/basic.carbon @@ -21,20 +21,20 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %const.1: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %ptr.1 [template] +// CHECK:STDOUT: %const.105: type = const_type %i32 [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const.105 [template] +// CHECK:STDOUT: %ptr.733: type = ptr_type %ptr.719 [template] // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %i32 [template] -// CHECK:STDOUT: %const.2: type = const_type %ptr.3 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %const.3f8: type = const_type %ptr.dc3 [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,60 +48,60 @@ fn B(p: const (i32*)) -> const (i32*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.733 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.733 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.733 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.733 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_31: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %const.loc11_25: type = const_type %i32 [template = constants.%const.1] -// CHECK:STDOUT: %ptr.loc11_34: type = ptr_type %const.1 [template = constants.%ptr.1] -// CHECK:STDOUT: %ptr.loc11_35: type = ptr_type %ptr.1 [template = constants.%ptr.2] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_19 [template = constants.%ptr.2] { +// CHECK:STDOUT: %const.loc11_25: type = const_type %i32 [template = constants.%const.105] +// CHECK:STDOUT: %ptr.loc11_34: type = ptr_type %const.105 [template = constants.%ptr.719] +// CHECK:STDOUT: %ptr.loc11_35: type = ptr_type %ptr.719 [template = constants.%ptr.733] +// CHECK:STDOUT: %p.param: %ptr.733 = value_param runtime_param0 +// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_19 [template = constants.%ptr.733] { // CHECK:STDOUT: %int_32.loc11_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %const.loc11_9: type = const_type %i32 [template = constants.%const.1] -// CHECK:STDOUT: %ptr.loc11_18: type = ptr_type %const.1 [template = constants.%ptr.1] -// CHECK:STDOUT: %ptr.loc11_19: type = ptr_type %ptr.1 [template = constants.%ptr.2] +// CHECK:STDOUT: %const.loc11_9: type = const_type %i32 [template = constants.%const.105] +// CHECK:STDOUT: %ptr.loc11_18: type = ptr_type %const.105 [template = constants.%ptr.719] +// CHECK:STDOUT: %ptr.loc11_19: type = ptr_type %ptr.719 [template = constants.%ptr.733] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.733 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.733 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.733 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] { -// CHECK:STDOUT: %p.patt: %const.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %const.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %const.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %const.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %const.3f8 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %const.3f8 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %const.3f8 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %const.3f8 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_33: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_33: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc15_36: type = ptr_type %i32 [template = constants.%ptr.3] -// CHECK:STDOUT: %const.loc15_26: type = const_type %ptr.3 [template = constants.%const.2] -// CHECK:STDOUT: %p.param: %const.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %const.loc15_9 [template = constants.%const.2] { +// CHECK:STDOUT: %ptr.loc15_36: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %const.loc15_26: type = const_type %ptr.dc3 [template = constants.%const.3f8] +// CHECK:STDOUT: %p.param: %const.3f8 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %const.loc15_9 [template = constants.%const.3f8] { // CHECK:STDOUT: %int_32.loc15_16: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_16: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc15_19: type = ptr_type %i32 [template = constants.%ptr.3] -// CHECK:STDOUT: %const.loc15_9: type = const_type %ptr.3 [template = constants.%const.2] +// CHECK:STDOUT: %ptr.loc15_19: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %const.loc15_9: type = const_type %ptr.dc3 [template = constants.%const.3f8] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %const.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %const.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %const.2 = return_slot %return.param +// CHECK:STDOUT: %p: %const.3f8 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %const.3f8 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %const.3f8 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @A(%p.param_patt: %ptr.2) -> %ptr.2 { +// CHECK:STDOUT: fn @A(%p.param_patt: %ptr.733) -> %ptr.733 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.733 = name_ref p, %p // CHECK:STDOUT: return %p.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @B(%p.param_patt: %const.2) -> %const.2 { +// CHECK:STDOUT: fn @B(%p.param_patt: %const.3f8) -> %const.3f8 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %const.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %const.3f8 = name_ref p, %p // CHECK:STDOUT: return %p.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/collapse.carbon b/toolchain/check/testdata/const/collapse.carbon index 8dc710744198..43c58ae3fdd7 100644 --- a/toolchain/check/testdata/const/collapse.carbon +++ b/toolchain/check/testdata/const/collapse.carbon @@ -22,15 +22,15 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %const: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %ptr.1 [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const [template] +// CHECK:STDOUT: %ptr.733: type = ptr_type %ptr.719 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -43,34 +43,34 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.733 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.733 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.733 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.733 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_38: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_38: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const.loc15_32: type = const_type %i32 [template = constants.%const] // CHECK:STDOUT: %const.loc15_25: type = const_type %const [template = constants.%const] -// CHECK:STDOUT: %ptr.loc15_42: type = ptr_type %const [template = constants.%ptr.1] -// CHECK:STDOUT: %ptr.loc15_43: type = ptr_type %ptr.1 [template = constants.%ptr.2] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_19 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc15_42: type = ptr_type %const [template = constants.%ptr.719] +// CHECK:STDOUT: %ptr.loc15_43: type = ptr_type %ptr.719 [template = constants.%ptr.733] +// CHECK:STDOUT: %p.param: %ptr.733 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_19 [template = constants.%ptr.733] { // CHECK:STDOUT: %int_32.loc15_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const.loc15_9: type = const_type %i32 [template = constants.%const] -// CHECK:STDOUT: %ptr.loc15_18: type = ptr_type %const [template = constants.%ptr.1] -// CHECK:STDOUT: %ptr.loc15_19: type = ptr_type %ptr.1 [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc15_18: type = ptr_type %const [template = constants.%ptr.719] +// CHECK:STDOUT: %ptr.loc15_19: type = ptr_type %ptr.719 [template = constants.%ptr.733] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.733 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.733 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.733 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%p.param_patt: %ptr.2) -> %ptr.2 { +// CHECK:STDOUT: fn @F(%p.param_patt: %ptr.733) -> %ptr.733 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.733 = name_ref p, %p // CHECK:STDOUT: return %p.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/fail_collapse.carbon b/toolchain/check/testdata/const/fail_collapse.carbon index 45eaddef75c1..ac37099af6f2 100644 --- a/toolchain/check/testdata/const/fail_collapse.carbon +++ b/toolchain/check/testdata/const/fail_collapse.carbon @@ -28,18 +28,18 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %const: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %ptr.1 [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %i32 [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type %ptr.3 [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const [template] +// CHECK:STDOUT: %ptr.733: type = ptr_type %ptr.719 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.ae0: type = ptr_type %ptr.dc3 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -52,34 +52,34 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.4 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.4 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.733 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.733 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.ae0 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.ae0 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_33: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_33: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc15_36: type = ptr_type %i32 [template = constants.%ptr.3] -// CHECK:STDOUT: %ptr.loc15_37: type = ptr_type %ptr.3 [template = constants.%ptr.4] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_27 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc15_36: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %ptr.loc15_37: type = ptr_type %ptr.dc3 [template = constants.%ptr.ae0] +// CHECK:STDOUT: %p.param: %ptr.733 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_27 [template = constants.%ptr.733] { // CHECK:STDOUT: %int_32.loc15_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const.loc15_16: type = const_type %i32 [template = constants.%const] // CHECK:STDOUT: %const.loc15_9: type = const_type %const [template = constants.%const] -// CHECK:STDOUT: %ptr.loc15_26: type = ptr_type %const [template = constants.%ptr.1] -// CHECK:STDOUT: %ptr.loc15_27: type = ptr_type %ptr.1 [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc15_26: type = ptr_type %const [template = constants.%ptr.719] +// CHECK:STDOUT: %ptr.loc15_27: type = ptr_type %ptr.719 [template = constants.%ptr.733] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.4 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.4 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.733 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.ae0 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.ae0 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.2) -> %ptr.4 { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.733) -> %ptr.ae0 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %.loc22: %ptr.4 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.733 = name_ref p, %p +// CHECK:STDOUT: %.loc22: %ptr.ae0 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/import.carbon b/toolchain/check/testdata/const/import.carbon index d6081fd8ab91..e690ad17dcc3 100644 --- a/toolchain/check/testdata/const/import.carbon +++ b/toolchain/check/testdata/const/import.carbon @@ -39,7 +39,7 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,11 +92,11 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, F, unloaded -// CHECK:STDOUT: %import_ref.2: ref %const = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %import_ref.3: ref %ptr = import_ref Implicit//default, a_ptr_ref, loaded +// CHECK:STDOUT: %import_ref.cd8 = import_ref Implicit//default, F, unloaded +// CHECK:STDOUT: %import_ref.0e1: ref %const = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %import_ref.5a2: ref %ptr = import_ref Implicit//default, a_ptr_ref, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.4 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -104,9 +104,9 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .F = imports.%import_ref.1 -// CHECK:STDOUT: .a_ref = imports.%import_ref.2 -// CHECK:STDOUT: .a_ptr_ref = imports.%import_ref.3 +// CHECK:STDOUT: .F = imports.%import_ref.cd8 +// CHECK:STDOUT: .a_ref = imports.%import_ref.0e1 +// CHECK:STDOUT: .a_ptr_ref = imports.%import_ref.5a2 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .a_ptr = %a_ptr @@ -122,10 +122,10 @@ var a_ptr: const i32* = a_ptr_ref; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %const = name_ref a_ref, imports.%import_ref.2 +// CHECK:STDOUT: %a_ref.ref: ref %const = name_ref a_ref, imports.%import_ref.0e1 // CHECK:STDOUT: %addr: %ptr = addr_of %a_ref.ref // CHECK:STDOUT: assign file.%a.var, %addr -// CHECK:STDOUT: %a_ptr_ref.ref: ref %ptr = name_ref a_ptr_ref, imports.%import_ref.3 +// CHECK:STDOUT: %a_ptr_ref.ref: ref %ptr = name_ref a_ptr_ref, imports.%import_ref.5a2 // CHECK:STDOUT: %.loc7: %ptr = bind_value %a_ptr_ref.ref // CHECK:STDOUT: assign file.%a_ptr.var, %.loc7 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 5b8e79fb4e88..aa2a44c1abe6 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -102,41 +102,41 @@ fn G() -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_3, %T [symbolic] +// CHECK:STDOUT: %array_type.fa4: type = array_type %int_3, %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %array_type.1 [symbolic] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.029: = require_complete_type %array_type.fa4 [symbolic] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_3, %C [template] +// CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %array: %array_type.2 = tuple_value (%C.val, %C.val, %C.val) [template] +// CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [template] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%C) [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %array_type.2 [template] +// CHECK:STDOUT: %complete_type.dd1: = complete_type_witness %array_type.002 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -154,21 +154,21 @@ fn G() -> C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %a.patt: @F.%array_type.loc6_24.2 (%array_type.1) = binding_pattern a -// CHECK:STDOUT: %a.param_patt: @F.%array_type.loc6_24.2 (%array_type.1) = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: @F.%array_type.loc6_24.2 (%array_type.fa4) = binding_pattern a +// CHECK:STDOUT: %a.param_patt: @F.%array_type.loc6_24.2 (%array_type.fa4) = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_30: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %a.param: @F.%array_type.loc6_24.2 (%array_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_24: type = splice_block %array_type.loc6_24.1 [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] { +// CHECK:STDOUT: %a.param: @F.%array_type.loc6_24.2 (%array_type.fa4) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_24: type = splice_block %array_type.loc6_24.1 [symbolic = %array_type.loc6_24.2 (constants.%array_type.fa4)] { // CHECK:STDOUT: %T.ref.loc6_20: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3] -// CHECK:STDOUT: %array_type.loc6_24.1: type = array_type %int_3, %T [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] +// CHECK:STDOUT: %array_type.loc6_24.1: type = array_type %int_3, %T [symbolic = %array_type.loc6_24.2 (constants.%array_type.fa4)] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: @F.%array_type.loc6_24.2 (%array_type.1) = bind_name a, %a.param +// CHECK:STDOUT: %a: @F.%array_type.loc6_24.2 (%array_type.fa4) = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } @@ -183,7 +183,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -193,25 +193,25 @@ fn G() -> C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %array_type.loc6_24.2: type = array_type constants.%int_3, @F.%T.loc6_6.2 (%T) [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] +// CHECK:STDOUT: %array_type.loc6_24.2: type = array_type constants.%int_3, @F.%T.loc6_6.2 (%T) [symbolic = %array_type.loc6_24.2 (constants.%array_type.fa4)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_27: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_27 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%array_type.loc6_24.2 (%array_type.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc6_27: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_27 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%array_type.loc6_24.2 (%array_type.fa4) [symbolic = %require_complete.loc6_17 (constants.%require_complete.029)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%a.param_patt: @F.%array_type.loc6_24.2 (%array_type.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%a.param_patt: @F.%array_type.loc6_24.2 (%array_type.fa4)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: @F.%array_type.loc6_24.2 (%array_type.1) = name_ref a, %a -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %a.ref: @F.%array_type.loc6_24.2 (%array_type.fa4) = name_ref a, %a +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_43.2: %i32 = converted %int_0, %.loc6_43.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_44.1: ref @F.%array_type.loc6_24.2 (%array_type.1) = value_as_ref %a.ref +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_43.2: %i32 = converted %int_0, %.loc6_43.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_44.1: ref @F.%array_type.loc6_24.2 (%array_type.fa4) = value_as_ref %a.ref // CHECK:STDOUT: %.loc6_44.2: ref @F.%T.loc6_6.2 (%T) = array_index %.loc6_44.1, %.loc6_43.2 // CHECK:STDOUT: %.loc6_44.3: @F.%T.loc6_6.2 (%T) = bind_value %.loc6_44.2 // CHECK:STDOUT: return %.loc6_44.3 @@ -220,13 +220,13 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %return.param_patt: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.var: ref %array_type.2 = var a -// CHECK:STDOUT: %a: ref %array_type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %array_type.002 = var a +// CHECK:STDOUT: %a: ref %array_type.002 = bind_name a, %a.var // CHECK:STDOUT: %.loc9_21.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_29.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc9_30.1: %tuple.type = tuple_literal (%.loc9_21.1, %.loc9_25.1, %.loc9_29.1) -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc9_30.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc9_21.2: init %C = class_init (), %.loc9_30.2 [template = constants.%C.val] // CHECK:STDOUT: %.loc9_30.3: init %C = converted %.loc9_21.1, %.loc9_21.2 [template = constants.%C.val] @@ -238,14 +238,14 @@ fn G() -> C { // CHECK:STDOUT: %.loc9_30.6: ref %C = array_index %a.var, %int_2 // CHECK:STDOUT: %.loc9_29.2: init %C = class_init (), %.loc9_30.6 [template = constants.%C.val] // CHECK:STDOUT: %.loc9_30.7: init %C = converted %.loc9_29.1, %.loc9_29.2 [template = constants.%C.val] -// CHECK:STDOUT: %.loc9_30.8: init %array_type.2 = array_init (%.loc9_30.3, %.loc9_30.5, %.loc9_30.7) to %a.var [template = constants.%array] -// CHECK:STDOUT: %.loc9_31: init %array_type.2 = converted %.loc9_30.1, %.loc9_30.8 [template = constants.%array] +// CHECK:STDOUT: %.loc9_30.8: init %array_type.002 = array_init (%.loc9_30.3, %.loc9_30.5, %.loc9_30.7) to %a.var [template = constants.%array] +// CHECK:STDOUT: %.loc9_31: init %array_type.002 = converted %.loc9_30.1, %.loc9_30.8 [template = constants.%array] // CHECK:STDOUT: assign %a.var, %.loc9_31 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %a.ref: ref %array_type.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref: ref %array_type.002 = name_ref a, %a // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn] // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} -// CHECK:STDOUT: %.loc10: %array_type.2 = bind_value %a.ref +// CHECK:STDOUT: %.loc10: %array_type.002 = bind_value %a.ref // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%.loc10) to %.loc8 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } @@ -253,17 +253,17 @@ fn G() -> C { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.1 +// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.fa4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%C) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%C // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%C -// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.2 +// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.002 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_27 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete.loc6_27 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.dd1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_bound_only.carbon @@ -271,18 +271,18 @@ fn G() -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.2, %Convert.9 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %impl_witness.dd3: = impl_witness (imports.%import_ref.a80), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.3e4, %Convert.079 [symbolic] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.2) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.3e4) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -299,8 +299,8 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -316,8 +316,8 @@ fn G() -> C { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %N.patt.loc10_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc10_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -330,12 +330,12 @@ fn G() -> C { // CHECK:STDOUT: %int_32.loc10_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc10_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc10_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc10_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N.3e4)] // CHECK:STDOUT: %a.param: = value_param runtime_param0 // CHECK:STDOUT: %.loc10_23: type = splice_block %array_type [template = ] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %N.ref.loc10_22: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.2)] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.9] +// CHECK:STDOUT: %N.ref.loc10_22: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %impl.elem0: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] // CHECK:STDOUT: %Convert.bound.loc10_22.1: = bound_method %N.ref.loc10_22, %impl.elem0 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_22.1: = specific_function %Convert.bound.loc10_22.1, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_22.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_22.1: init Core.IntLiteral = call %Convert.specific_fn.loc10_22.1(%N.ref.loc10_22) [symbolic = %int.convert_checked.loc10_22.2 (constants.%int.convert_checked)] @@ -358,7 +358,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -366,9 +366,9 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc10_6.1: %i32) { -// CHECK:STDOUT: %N.loc10_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc10_6.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc10_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %Convert.bound.loc10_22.2: = bound_method %N.loc10_6.2, constants.%Convert.9 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] +// CHECK:STDOUT: %N.loc10_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc10_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %Convert.bound.loc10_22.2: = bound_method %N.loc10_6.2, constants.%Convert.079 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_22.2: = specific_function %Convert.bound.loc10_22.2, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_22.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_22.2: init Core.IntLiteral = call %Convert.specific_fn.loc10_22.2(%N.loc10_6.2) [symbolic = %int.convert_checked.loc10_22.2 (constants.%int.convert_checked)] // CHECK:STDOUT: @@ -376,7 +376,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: fn[%N.param_patt: %i32](%a.param_patt: ) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %N.ref.loc10_42: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.ref.loc10_42: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] // CHECK:STDOUT: return %N.ref.loc10_42 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -409,9 +409,9 @@ fn G() -> C { // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%N.2) { -// CHECK:STDOUT: %N.loc10_6.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc10_6.2 => constants.%N.2 +// CHECK:STDOUT: specific @F(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc10_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc10_6.2 => constants.%N.3e4 // CHECK:STDOUT: %Convert.bound.loc10_22.2 => constants.%Convert.bound // CHECK:STDOUT: %Convert.specific_fn.loc10_22.2 => constants.%Convert.specific_fn // CHECK:STDOUT: %int.convert_checked.loc10_22.2 => constants.%int.convert_checked @@ -422,20 +422,20 @@ fn G() -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 1 [symbolic] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.2, %Convert.9 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %impl_witness.dd3: = impl_witness (imports.%import_ref.a80), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.3e4, %Convert.079 [symbolic] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.2) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.3e4) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -452,8 +452,8 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -471,8 +471,8 @@ fn G() -> C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc10_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc10_6.1, runtime_param [symbolic = %T.patt.loc10_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.patt.loc10_16.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_16.1, runtime_param [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc10_16.1: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_16.1, runtime_param [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.52a)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc10_6.2 (%T) = return_slot_pattern @@ -486,12 +486,12 @@ fn G() -> C { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc10_16.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc10_16.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc10_16.1: %i32 = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc10_16.2 (constants.%N.3e4)] // CHECK:STDOUT: %a.param: = value_param runtime_param0 // CHECK:STDOUT: %.loc10_33: type = splice_block %array_type [template = ] { // CHECK:STDOUT: %T.ref.loc10_29: type = name_ref T, %T.loc10_6.1 [symbolic = %T.loc10_6.2 (constants.%T)] -// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc10_16.1 [symbolic = %N.loc10_16.2 (constants.%N.2)] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.9] +// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc10_16.1 [symbolic = %N.loc10_16.2 (constants.%N.3e4)] +// CHECK:STDOUT: %impl.elem0: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] // CHECK:STDOUT: %Convert.bound.loc10_32.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound.loc10_32.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_32.1: = specific_function %Convert.bound.loc10_32.1, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_32.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_32.1: init Core.IntLiteral = call %Convert.specific_fn.loc10_32.1(%N.ref) [symbolic = %int.convert_checked.loc10_32.2 (constants.%int.convert_checked)] @@ -514,7 +514,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -524,9 +524,9 @@ fn G() -> C { // CHECK:STDOUT: generic fn @F(%T.loc10_6.1: type, %N.loc10_16.1: %i32) { // CHECK:STDOUT: %T.loc10_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc10_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %N.loc10_16.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc10_16.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc10_16.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %Convert.bound.loc10_32.2: = bound_method %N.loc10_16.2, constants.%Convert.9 [symbolic = %Convert.bound.loc10_32.2 (constants.%Convert.bound)] +// CHECK:STDOUT: %N.loc10_16.2: %i32 = bind_symbolic_name N, 1 [symbolic = %N.loc10_16.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc10_16.2: %i32 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc10_16.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %Convert.bound.loc10_32.2: = bound_method %N.loc10_16.2, constants.%Convert.079 [symbolic = %Convert.bound.loc10_32.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_32.2: = specific_function %Convert.bound.loc10_32.2, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_32.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_32.2: init Core.IntLiteral = call %Convert.specific_fn.loc10_32.2(%N.loc10_16.2) [symbolic = %int.convert_checked.loc10_32.2 (constants.%int.convert_checked)] // CHECK:STDOUT: @@ -561,11 +561,11 @@ fn G() -> C { // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%N.2) { +// CHECK:STDOUT: specific @F(constants.%T, constants.%N.3e4) { // CHECK:STDOUT: %T.loc10_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc10_6.2 => constants.%T -// CHECK:STDOUT: %N.loc10_16.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc10_16.2 => constants.%N.2 +// CHECK:STDOUT: %N.loc10_16.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc10_16.2 => constants.%N.3e4 // CHECK:STDOUT: %Convert.bound.loc10_32.2 => constants.%Convert.bound // CHECK:STDOUT: %Convert.specific_fn.loc10_32.2 => constants.%Convert.specific_fn // CHECK:STDOUT: %int.convert_checked.loc10_32.2 => constants.%int.convert_checked @@ -576,42 +576,42 @@ fn G() -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_2, %T [symbolic] +// CHECK:STDOUT: %array_type.2e9: type = array_type %int_2, %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %array_type.1 [symbolic] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.a03: = require_complete_type %array_type.2e9 [symbolic] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_3, %C [template] +// CHECK:STDOUT: %array_type.002: type = array_type %int_3, %C [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_struct_type, %empty_struct_type, %empty_struct_type) [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array: %array_type.2 = tuple_value (%C.val, %C.val, %C.val) [template] -// CHECK:STDOUT: %array_type.3: type = array_type %int_2, %C [template] +// CHECK:STDOUT: %array: %array_type.002 = tuple_value (%C.val, %C.val, %C.val) [template] +// CHECK:STDOUT: %array_type.15a: type = array_type %int_2, %C [template] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%C) [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %array_type.3 [template] +// CHECK:STDOUT: %complete_type.8eb: = complete_type_witness %array_type.15a [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -629,21 +629,21 @@ fn G() -> C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %a.patt: @F.%array_type.loc6_24.2 (%array_type.1) = binding_pattern a -// CHECK:STDOUT: %a.param_patt: @F.%array_type.loc6_24.2 (%array_type.1) = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: @F.%array_type.loc6_24.2 (%array_type.2e9) = binding_pattern a +// CHECK:STDOUT: %a.param_patt: @F.%array_type.loc6_24.2 (%array_type.2e9) = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_30: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %a.param: @F.%array_type.loc6_24.2 (%array_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_24: type = splice_block %array_type.loc6_24.1 [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] { +// CHECK:STDOUT: %a.param: @F.%array_type.loc6_24.2 (%array_type.2e9) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_24: type = splice_block %array_type.loc6_24.1 [symbolic = %array_type.loc6_24.2 (constants.%array_type.2e9)] { // CHECK:STDOUT: %T.ref.loc6_20: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] -// CHECK:STDOUT: %array_type.loc6_24.1: type = array_type %int_2, %T [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] +// CHECK:STDOUT: %array_type.loc6_24.1: type = array_type %int_2, %T [symbolic = %array_type.loc6_24.2 (constants.%array_type.2e9)] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: @F.%array_type.loc6_24.2 (%array_type.1) = bind_name a, %a.param +// CHECK:STDOUT: %a: @F.%array_type.loc6_24.2 (%array_type.2e9) = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } @@ -658,7 +658,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -668,25 +668,25 @@ fn G() -> C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %array_type.loc6_24.2: type = array_type constants.%int_2, @F.%T.loc6_6.2 (%T) [symbolic = %array_type.loc6_24.2 (constants.%array_type.1)] +// CHECK:STDOUT: %array_type.loc6_24.2: type = array_type constants.%int_2, @F.%T.loc6_6.2 (%T) [symbolic = %array_type.loc6_24.2 (constants.%array_type.2e9)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_27: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_27 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%array_type.loc6_24.2 (%array_type.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc6_27: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_27 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%array_type.loc6_24.2 (%array_type.2e9) [symbolic = %require_complete.loc6_17 (constants.%require_complete.a03)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%a.param_patt: @F.%array_type.loc6_24.2 (%array_type.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%a.param_patt: @F.%array_type.loc6_24.2 (%array_type.2e9)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: @F.%array_type.loc6_24.2 (%array_type.1) = name_ref a, %a -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %a.ref: @F.%array_type.loc6_24.2 (%array_type.2e9) = name_ref a, %a +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_43.2: %i32 = converted %int_0, %.loc6_43.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_44.1: ref @F.%array_type.loc6_24.2 (%array_type.1) = value_as_ref %a.ref +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_43.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_43.2: %i32 = converted %int_0, %.loc6_43.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_44.1: ref @F.%array_type.loc6_24.2 (%array_type.2e9) = value_as_ref %a.ref // CHECK:STDOUT: %.loc6_44.2: ref @F.%T.loc6_6.2 (%T) = array_index %.loc6_44.1, %.loc6_43.2 // CHECK:STDOUT: %.loc6_44.3: @F.%T.loc6_6.2 (%T) = bind_value %.loc6_44.2 // CHECK:STDOUT: return %.loc6_44.3 @@ -695,13 +695,13 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %return.param_patt: %C { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.var: ref %array_type.2 = var a -// CHECK:STDOUT: %a: ref %array_type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %array_type.002 = var a +// CHECK:STDOUT: %a: ref %array_type.002 = bind_name a, %a.var // CHECK:STDOUT: %.loc10_21.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_29.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc10_30.1: %tuple.type = tuple_literal (%.loc10_21.1, %.loc10_25.1, %.loc10_29.1) -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc10_30.2: ref %C = array_index %a.var, %int_0 // CHECK:STDOUT: %.loc10_21.2: init %C = class_init (), %.loc10_30.2 [template = constants.%C.val] // CHECK:STDOUT: %.loc10_30.3: init %C = converted %.loc10_21.1, %.loc10_21.2 [template = constants.%C.val] @@ -713,14 +713,14 @@ fn G() -> C { // CHECK:STDOUT: %.loc10_30.6: ref %C = array_index %a.var, %int_2 // CHECK:STDOUT: %.loc10_29.2: init %C = class_init (), %.loc10_30.6 [template = constants.%C.val] // CHECK:STDOUT: %.loc10_30.7: init %C = converted %.loc10_29.1, %.loc10_29.2 [template = constants.%C.val] -// CHECK:STDOUT: %.loc10_30.8: init %array_type.2 = array_init (%.loc10_30.3, %.loc10_30.5, %.loc10_30.7) to %a.var [template = constants.%array] -// CHECK:STDOUT: %.loc10_31: init %array_type.2 = converted %.loc10_30.1, %.loc10_30.8 [template = constants.%array] +// CHECK:STDOUT: %.loc10_30.8: init %array_type.002 = array_init (%.loc10_30.3, %.loc10_30.5, %.loc10_30.7) to %a.var [template = constants.%array] +// CHECK:STDOUT: %.loc10_31: init %array_type.002 = converted %.loc10_30.1, %.loc10_30.8 [template = constants.%array] // CHECK:STDOUT: assign %a.var, %.loc10_31 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %a.ref: ref %array_type.2 = name_ref a, %a +// CHECK:STDOUT: %a.ref: ref %array_type.002 = name_ref a, %a // CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn] // CHECK:STDOUT: %.loc8: ref %C = splice_block %return {} -// CHECK:STDOUT: %.loc21: %array_type.3 = converted %a.ref, [template = ] +// CHECK:STDOUT: %.loc21: %array_type.15a = converted %a.ref, [template = ] // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn() to %.loc8 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } @@ -728,17 +728,17 @@ fn G() -> C { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.1 +// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.2e9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%C) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%C // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%C -// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.3 +// CHECK:STDOUT: %array_type.loc6_24.2 => constants.%array_type.15a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_27 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete.loc6_27 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.8eb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_type_mismatch.carbon @@ -746,19 +746,19 @@ fn G() -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.2, %Convert.9 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %impl_witness.dd3: = impl_witness (imports.%import_ref.a80), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.3e4, %Convert.079 [symbolic] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.2) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.3e4) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -775,8 +775,8 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -794,8 +794,8 @@ fn G() -> C { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %N.patt.loc10_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc10_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc10_6.1, runtime_param [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -808,12 +808,12 @@ fn G() -> C { // CHECK:STDOUT: %int_32.loc10_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc10_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc10_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc10_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc10_6.2 (constants.%N.3e4)] // CHECK:STDOUT: %a.param: = value_param runtime_param0 // CHECK:STDOUT: %.loc10_23: type = splice_block %array_type [template = ] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %N.ref.loc10_22: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.2)] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.9] +// CHECK:STDOUT: %N.ref.loc10_22: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %impl.elem0: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] // CHECK:STDOUT: %Convert.bound.loc10_22.1: = bound_method %N.ref.loc10_22, %impl.elem0 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_22.1: = specific_function %Convert.bound.loc10_22.1, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_22.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_22.1: init Core.IntLiteral = call %Convert.specific_fn.loc10_22.1(%N.ref.loc10_22) [symbolic = %int.convert_checked.loc10_22.2 (constants.%int.convert_checked)] @@ -836,7 +836,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -844,7 +844,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -852,9 +852,9 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc10_6.1: %i32) { -// CHECK:STDOUT: %N.loc10_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc10_6.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc10_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %Convert.bound.loc10_22.2: = bound_method %N.loc10_6.2, constants.%Convert.9 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] +// CHECK:STDOUT: %N.loc10_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc10_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc10_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %Convert.bound.loc10_22.2: = bound_method %N.loc10_6.2, constants.%Convert.079 [symbolic = %Convert.bound.loc10_22.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc10_22.2: = specific_function %Convert.bound.loc10_22.2, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc10_22.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc10_22.2: init Core.IntLiteral = call %Convert.specific_fn.loc10_22.2(%N.loc10_6.2) [symbolic = %int.convert_checked.loc10_22.2 (constants.%int.convert_checked)] // CHECK:STDOUT: @@ -862,7 +862,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: fn[%N.param_patt: %i32](%a.param_patt: ) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %N.ref.loc10_42: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.ref.loc10_42: %i32 = name_ref N, %N.loc10_6.1 [symbolic = %N.loc10_6.2 (constants.%N.3e4)] // CHECK:STDOUT: return %N.ref.loc10_42 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -895,9 +895,9 @@ fn G() -> C { // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%N.2) { -// CHECK:STDOUT: %N.loc10_6.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc10_6.2 => constants.%N.2 +// CHECK:STDOUT: specific @F(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc10_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc10_6.2 => constants.%N.3e4 // CHECK:STDOUT: %Convert.bound.loc10_22.2 => constants.%Convert.bound // CHECK:STDOUT: %Convert.specific_fn.loc10_22.2 => constants.%Convert.specific_fn // CHECK:STDOUT: %int.convert_checked.loc10_22.2 => constants.%int.convert_checked diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 47e114287d78..cb5a819a9ea5 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -72,19 +72,19 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %C.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T) [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%D) [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.8a3: = require_complete_type %C.37e [symbolic] +// CHECK:STDOUT: %F.specific_fn.b60: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %C.2a4: type = class_type @C, @C(%D) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%D) [template] +// CHECK:STDOUT: %F.specific_fn.066: = specific_function %F, @F(%D) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -114,38 +114,38 @@ fn G() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc7_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%C.loc7_22.2 (%C.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%C.loc7_22.2 (%C.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%C.loc7_22.2 (%C.37e) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%C.loc7_22.2 (%C.37e) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc7_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc7_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7_28: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%C.loc7_22.2 (%C.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_22: type = splice_block %C.loc7_22.1 [symbolic = %C.loc7_22.2 (constants.%C.1)] { +// CHECK:STDOUT: %p.param: @F.%C.loc7_22.2 (%C.37e) = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_22: type = splice_block %C.loc7_22.1 [symbolic = %C.loc7_22.2 (constants.%C.37e)] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %T.ref.loc7_21: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %C.loc7_22.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc7_22.2 (constants.%C.1)] +// CHECK:STDOUT: %C.loc7_22.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc7_22.2 (constants.%C.37e)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%C.loc7_22.2 (%C.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%C.loc7_22.2 (%C.37e) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref @F.%T.loc7_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %C.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %C.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %C.2a4 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %C.2a4 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_18: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %p.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc9_12: type = splice_block %C [template = constants.%C.2] { +// CHECK:STDOUT: %p.param: %C.2a4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc9_12: type = splice_block %C [template = constants.%C.2a4] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %D.ref.loc9_11: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%D) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%D) [template = constants.%C.2a4] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %C.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %C.2a4 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -161,7 +161,7 @@ fn G() -> i32 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -177,18 +177,18 @@ fn G() -> i32 { // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { // CHECK:STDOUT: %T.loc7_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc7_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %C.loc7_22.2: type = class_type @C, @C(%T.loc7_6.2) [symbolic = %C.loc7_22.2 (constants.%C.1)] +// CHECK:STDOUT: %C.loc7_22.2: type = class_type @C, @C(%T.loc7_6.2) [symbolic = %C.loc7_22.2 (constants.%C.37e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_25: = require_complete_type @F.%T.loc7_6.2 (%T) [symbolic = %require_complete.loc7_25 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc7_17: = require_complete_type @F.%C.loc7_22.2 (%C.1) [symbolic = %require_complete.loc7_17 (constants.%require_complete.2)] -// CHECK:STDOUT: %F.specific_fn.loc7_39.2: = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc7_25: = require_complete_type @F.%T.loc7_6.2 (%T) [symbolic = %require_complete.loc7_25 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc7_17: = require_complete_type @F.%C.loc7_22.2 (%C.37e) [symbolic = %require_complete.loc7_17 (constants.%require_complete.8a3)] +// CHECK:STDOUT: %F.specific_fn.loc7_39.2: = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.b60)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%C.loc7_22.2 (%C.1)) -> @F.%T.loc7_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%C.loc7_22.2 (%C.37e)) -> @F.%T.loc7_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%C.loc7_22.2 (%C.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %p.ref: @F.%C.loc7_22.2 (%C.37e) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.b60)] // CHECK:STDOUT: %F.call: init @F.%T.loc7_6.2 (%T) = call %F.specific_fn.loc7_39.1(%p.ref) // CHECK:STDOUT: %.loc7_43.1: @F.%T.loc7_6.2 (%T) = value_of_initializer %F.call // CHECK:STDOUT: %.loc7_43.2: @F.%T.loc7_6.2 (%T) = converted %F.call, %.loc7_43.1 @@ -196,11 +196,11 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %C.2) -> %return.param_patt: %D { +// CHECK:STDOUT: fn @G(%p.param_patt: %C.2a4) -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %C.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%D) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %p.ref: %C.2a4 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%D) [template = constants.%F.specific_fn.066] // CHECK:STDOUT: %.loc9_15: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%p.ref) to %.loc9_15 // CHECK:STDOUT: return %F.call to %return @@ -216,12 +216,12 @@ fn G() -> i32 { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc7_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%T -// CHECK:STDOUT: %C.loc7_22.2 => constants.%C.1 +// CHECK:STDOUT: %C.loc7_22.2 => constants.%C.37e // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_25 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc7_17 => constants.%require_complete.2 -// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc7_25 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc7_17 => constants.%require_complete.8a3 +// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.b60 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@F.%T.loc7_6.2) {} @@ -238,12 +238,12 @@ fn G() -> i32 { // CHECK:STDOUT: specific @F(constants.%D) { // CHECK:STDOUT: %T.loc7_6.2 => constants.%D // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%D -// CHECK:STDOUT: %C.loc7_22.2 => constants.%C.2 +// CHECK:STDOUT: %C.loc7_22.2 => constants.%C.2a4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc7_25 => constants.%complete_type // CHECK:STDOUT: %require_complete.loc7_17 => constants.%complete_type -// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.066 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- interface.carbon @@ -253,18 +253,18 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %I.type: type = generic_class_type @I [template] // CHECK:STDOUT: %I.generic: %I.type = struct_value () [template] -// CHECK:STDOUT: %I.1: type = class_type @I, @I(%T) [symbolic] +// CHECK:STDOUT: %I.fad: type = class_type @I, @I(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete: = require_complete_type %I.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T) [symbolic] -// CHECK:STDOUT: %I.2: type = class_type @I, @I(%C) [template] +// CHECK:STDOUT: %require_complete: = require_complete_type %I.fad [symbolic] +// CHECK:STDOUT: %F.specific_fn.12b: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %I.f68: type = class_type @I, @I(%C) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%C) [template] +// CHECK:STDOUT: %F.specific_fn.e46: = specific_function %F, @F(%C) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -294,38 +294,38 @@ fn G() -> i32 { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc7_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%I.loc7_22.2 (%I.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%I.loc7_22.2 (%I.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%I.loc7_22.2 (%I.fad) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%I.loc7_22.2 (%I.fad) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%I.loc7_22.2 (%I.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_22: type = splice_block %I.loc7_22.1 [symbolic = %I.loc7_22.2 (constants.%I.1)] { +// CHECK:STDOUT: %p.param: @F.%I.loc7_22.2 (%I.fad) = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_22: type = splice_block %I.loc7_22.1 [symbolic = %I.loc7_22.2 (constants.%I.fad)] { // CHECK:STDOUT: %I.ref: %I.type = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %I.loc7_22.1: type = class_type @I, @I(constants.%T) [symbolic = %I.loc7_22.2 (constants.%I.1)] +// CHECK:STDOUT: %I.loc7_22.1: type = class_type @I, @I(constants.%T) [symbolic = %I.loc7_22.2 (constants.%I.fad)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%I.loc7_22.2 (%I.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%I.loc7_22.2 (%I.fad) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %I.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %I.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %I.f68 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %I.f68 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %p.param: %I.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc9_12: type = splice_block %I [template = constants.%I.2] { +// CHECK:STDOUT: %p.param: %I.f68 = value_param runtime_param0 +// CHECK:STDOUT: %.loc9_12: type = splice_block %I [template = constants.%I.f68] { // CHECK:STDOUT: %I.ref: %I.type = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %C.ref.loc9_11: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %I: type = class_type @I, @I(constants.%C) [template = constants.%I.2] +// CHECK:STDOUT: %I: type = class_type @I, @I(constants.%C) [template = constants.%I.f68] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %I.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %I.f68 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -341,7 +341,7 @@ fn G() -> i32 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%I.1 +// CHECK:STDOUT: .Self = constants.%I.fad // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -357,28 +357,28 @@ fn G() -> i32 { // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { // CHECK:STDOUT: %T.loc7_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc7_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.loc7_22.2: type = class_type @I, @I(%T.loc7_6.2) [symbolic = %I.loc7_22.2 (constants.%I.1)] +// CHECK:STDOUT: %I.loc7_22.2: type = class_type @I, @I(%T.loc7_6.2) [symbolic = %I.loc7_22.2 (constants.%I.fad)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%I.loc7_22.2 (%I.1) [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %F.specific_fn.loc7_39.2: = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%I.loc7_22.2 (%I.fad) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %F.specific_fn.loc7_39.2: = specific_function constants.%F, @F(%T.loc7_6.2) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.12b)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%I.loc7_22.2 (%I.1)) -> %return.param_patt: %C { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%I.loc7_22.2 (%I.fad)) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%I.loc7_22.2 (%I.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %p.ref: @F.%I.loc7_22.2 (%I.fad) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc7_39.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.12b)] // CHECK:STDOUT: %.loc7_25: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn.loc7_39.1(%p.ref) to %.loc7_25 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %I.2) -> %return.param_patt: %C { +// CHECK:STDOUT: fn @G(%p.param_patt: %I.f68) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %I.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %p.ref: %I.f68 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.e46] // CHECK:STDOUT: %.loc9_15: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc9_15 // CHECK:STDOUT: return %F.call to %return @@ -394,11 +394,11 @@ fn G() -> i32 { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc7_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%T -// CHECK:STDOUT: %I.loc7_22.2 => constants.%I.1 +// CHECK:STDOUT: %I.loc7_22.2 => constants.%I.fad // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.12b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@F.%T.loc7_6.2) {} @@ -415,11 +415,11 @@ fn G() -> i32 { // CHECK:STDOUT: specific @F(constants.%C) { // CHECK:STDOUT: %T.loc7_6.2 => constants.%C // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%C -// CHECK:STDOUT: %I.loc7_22.2 => constants.%I.2 +// CHECK:STDOUT: %I.loc7_22.2 => constants.%I.f68 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type -// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.e46 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- nested.carbon @@ -429,35 +429,35 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [template] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [template] -// CHECK:STDOUT: %Outer.1: type = class_type @Outer, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Outer.cc3: type = class_type @Outer, @Outer(%T) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %Inner.type.1: type = generic_class_type @Inner, @Outer(%T) [symbolic] -// CHECK:STDOUT: %Inner.generic.1: %Inner.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.1: type = class_type @Inner, @Inner(%T, %U) [symbolic] +// CHECK:STDOUT: %Inner.type.099: type = generic_class_type @Inner, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Inner.generic.c26: %Inner.type.099 = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.188: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %D: type = class_type @D [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %Outer.1 [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%T, %U) [symbolic] +// CHECK:STDOUT: %require_complete.889: = require_complete_type %Outer.cc3 [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.cab: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %tuple.type.2 [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %Inner.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T, %U) [symbolic] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %Outer.2: type = class_type @Outer, @Outer(%C) [template] -// CHECK:STDOUT: %Inner.type.2: type = generic_class_type @Inner, @Outer(%C) [template] -// CHECK:STDOUT: %Inner.generic.2: %Inner.type.2 = struct_value () [template] -// CHECK:STDOUT: %Inner.2: type = class_type @Inner, @Inner(%C, %D) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%C, %D) [template] +// CHECK:STDOUT: %require_complete.73f: = require_complete_type %tuple.type.cab [symbolic] +// CHECK:STDOUT: %require_complete.ae5: = require_complete_type %Inner.188 [symbolic] +// CHECK:STDOUT: %F.specific_fn.b50: = specific_function %F, @F(%T, %U) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %Outer.909: type = class_type @Outer, @Outer(%C) [template] +// CHECK:STDOUT: %Inner.type.f38: type = generic_class_type @Inner, @Outer(%C) [template] +// CHECK:STDOUT: %Inner.generic.8e3: %Inner.type.f38 = struct_value () [template] +// CHECK:STDOUT: %Inner.379: type = class_type @Inner, @Inner(%C, %D) [template] +// CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%C, %D) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %tuple.type.3 [template] +// CHECK:STDOUT: %F.specific_fn.b5c: = specific_function %F, @F(%C, %D) [template] +// CHECK:STDOUT: %complete_type.53b: = complete_type_witness %tuple.type.e8a [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -491,56 +491,56 @@ fn G() -> i32 { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_6.1, runtime_param [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc13_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_16.1, runtime_param [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %p.patt: @F.%Inner.loc13_45.2 (%Inner.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%Inner.loc13_45.2 (%Inner.1) = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @F.%tuple.type (%tuple.type.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.%tuple.type (%tuple.type.2) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: @F.%Inner.loc13_45.2 (%Inner.188) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%Inner.loc13_45.2 (%Inner.188) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%tuple.type (%tuple.type.cab) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%tuple.type (%tuple.type.cab) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc13_52: type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)] // CHECK:STDOUT: %U.ref.loc13_55: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %.loc13_56.1: %tuple.type.1 = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) -// CHECK:STDOUT: %.loc13_56.2: type = converted %.loc13_56.1, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc13_56.1: %tuple.type.24b = tuple_literal (%T.ref.loc13_52, %U.ref.loc13_55) +// CHECK:STDOUT: %.loc13_56.2: type = converted %.loc13_56.1, constants.%tuple.type.cab [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %p.param: @F.%Inner.loc13_45.2 (%Inner.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc13_45: type = splice_block %Inner.loc13_45.1 [symbolic = %Inner.loc13_45.2 (constants.%Inner.1)] { +// CHECK:STDOUT: %p.param: @F.%Inner.loc13_45.2 (%Inner.188) = value_param runtime_param0 +// CHECK:STDOUT: %.loc13_45: type = splice_block %Inner.loc13_45.1 [symbolic = %Inner.loc13_45.2 (constants.%Inner.188)] { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.generic] // CHECK:STDOUT: %T.ref.loc13_35: type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)] -// CHECK:STDOUT: %Outer.loc13_36.1: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc13_36.2 (constants.%Outer.1)] -// CHECK:STDOUT: %.loc13_37: @F.%Inner.type (%Inner.type.1) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.1)] -// CHECK:STDOUT: %Inner.ref: @F.%Inner.type (%Inner.type.1) = name_ref Inner, %.loc13_37 [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %Outer.loc13_36.1: type = class_type @Outer, @Outer(constants.%T) [symbolic = %Outer.loc13_36.2 (constants.%Outer.cc3)] +// CHECK:STDOUT: %.loc13_37: @F.%Inner.type (%Inner.type.099) = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.generic (constants.%Inner.generic.c26)] +// CHECK:STDOUT: %Inner.ref: @F.%Inner.type (%Inner.type.099) = name_ref Inner, %.loc13_37 [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: %U.ref.loc13_44: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %Inner.loc13_45.1: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_45.2 (constants.%Inner.1)] +// CHECK:STDOUT: %Inner.loc13_45.1: type = class_type @Inner, @Inner(constants.%T, constants.%U) [symbolic = %Inner.loc13_45.2 (constants.%Inner.188)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%Inner.loc13_45.2 (%Inner.1) = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref @F.%tuple.type (%tuple.type.2) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @F.%tuple.type (%tuple.type.2) = return_slot %return.param +// CHECK:STDOUT: %p: @F.%Inner.loc13_45.2 (%Inner.188) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref @F.%tuple.type (%tuple.type.cab) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%tuple.type (%tuple.type.cab) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %Inner.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %Inner.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %tuple.type.3 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.3 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %Inner.379 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %Inner.379 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.e8a = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.e8a = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc15_32: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref.loc15_35: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %.loc15_36.1: %tuple.type.1 = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) -// CHECK:STDOUT: %.loc15_36.2: type = converted %.loc15_36.1, constants.%tuple.type.3 [template = constants.%tuple.type.3] -// CHECK:STDOUT: %p.param: %Inner.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15_25: type = splice_block %Inner [template = constants.%Inner.2] { +// CHECK:STDOUT: %.loc15_36.1: %tuple.type.24b = tuple_literal (%C.ref.loc15_32, %D.ref.loc15_35) +// CHECK:STDOUT: %.loc15_36.2: type = converted %.loc15_36.1, constants.%tuple.type.e8a [template = constants.%tuple.type.e8a] +// CHECK:STDOUT: %p.param: %Inner.379 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15_25: type = splice_block %Inner [template = constants.%Inner.379] { // CHECK:STDOUT: %Outer.ref: %Outer.type = name_ref Outer, file.%Outer.decl [template = constants.%Outer.generic] // CHECK:STDOUT: %C.ref.loc15_15: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%C) [template = constants.%Outer.2] -// CHECK:STDOUT: %.loc15_17: %Inner.type.2 = specific_constant @Outer.%Inner.decl, @Outer(constants.%C) [template = constants.%Inner.generic.2] -// CHECK:STDOUT: %Inner.ref: %Inner.type.2 = name_ref Inner, %.loc15_17 [template = constants.%Inner.generic.2] +// CHECK:STDOUT: %Outer: type = class_type @Outer, @Outer(constants.%C) [template = constants.%Outer.909] +// CHECK:STDOUT: %.loc15_17: %Inner.type.f38 = specific_constant @Outer.%Inner.decl, @Outer(constants.%C) [template = constants.%Inner.generic.8e3] +// CHECK:STDOUT: %Inner.ref: %Inner.type.f38 = name_ref Inner, %.loc15_17 [template = constants.%Inner.generic.8e3] // CHECK:STDOUT: %D.ref.loc15_24: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(constants.%C, constants.%D) [template = constants.%Inner.2] +// CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(constants.%C, constants.%D) [template = constants.%Inner.379] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %Inner.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %tuple.type.3 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %tuple.type.3 = return_slot %return.param +// CHECK:STDOUT: %p: %Inner.379 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %tuple.type.e8a = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %tuple.type.e8a = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -549,21 +549,21 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc4_13.2) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc4_13.2) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @Outer.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.1) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.1)] { +// CHECK:STDOUT: %Inner.decl: @Outer.%Inner.type (%Inner.type.099) = class_decl @Inner [symbolic = @Outer.%Inner.generic (constants.%Inner.generic.c26)] { // CHECK:STDOUT: %U.patt.loc5_15.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc5_15.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc5_15.1, runtime_param [symbolic = %U.patt.loc5_15.2 (constants.%U.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc5_15.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc5_15.2 (constants.%U)] // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Outer.1 +// CHECK:STDOUT: .Self = constants.%Outer.cc3 // CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -576,16 +576,16 @@ fn G() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Inner.1 +// CHECK:STDOUT: .Self = constants.%Inner.188 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -593,7 +593,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -605,28 +605,28 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc13_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.loc13_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc13_16.2 (constants.%U)] // CHECK:STDOUT: %U.patt.loc13_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %Outer.loc13_36.2: type = class_type @Outer, @Outer(%T.loc13_6.2) [symbolic = %Outer.loc13_36.2 (constants.%Outer.1)] -// CHECK:STDOUT: %require_complete.loc13_37: = require_complete_type @F.%Outer.loc13_36.2 (%Outer.1) [symbolic = %require_complete.loc13_37 (constants.%require_complete.1)] -// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc13_6.2) [symbolic = %Inner.type (constants.%Inner.type.1)] -// CHECK:STDOUT: %Inner.generic: @F.%Inner.type (%Inner.type.1) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.1)] -// CHECK:STDOUT: %Inner.loc13_45.2: type = class_type @Inner, @Inner(%T.loc13_6.2, %U.loc13_16.2) [symbolic = %Inner.loc13_45.2 (constants.%Inner.1)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc13_6.2 (%T), @F.%U.loc13_16.2 (%U)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %Outer.loc13_36.2: type = class_type @Outer, @Outer(%T.loc13_6.2) [symbolic = %Outer.loc13_36.2 (constants.%Outer.cc3)] +// CHECK:STDOUT: %require_complete.loc13_37: = require_complete_type @F.%Outer.loc13_36.2 (%Outer.cc3) [symbolic = %require_complete.loc13_37 (constants.%require_complete.889)] +// CHECK:STDOUT: %Inner.type: type = generic_class_type @Inner, @Outer(%T.loc13_6.2) [symbolic = %Inner.type (constants.%Inner.type.099)] +// CHECK:STDOUT: %Inner.generic: @F.%Inner.type (%Inner.type.099) = struct_value () [symbolic = %Inner.generic (constants.%Inner.generic.c26)] +// CHECK:STDOUT: %Inner.loc13_45.2: type = class_type @Inner, @Inner(%T.loc13_6.2, %U.loc13_16.2) [symbolic = %Inner.loc13_45.2 (constants.%Inner.188)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc13_6.2 (%T), @F.%U.loc13_16.2 (%U)) [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48: = require_complete_type @F.%tuple.type (%tuple.type.2) [symbolic = %require_complete.loc13_48 (constants.%require_complete.2)] -// CHECK:STDOUT: %require_complete.loc13_27: = require_complete_type @F.%Inner.loc13_45.2 (%Inner.1) [symbolic = %require_complete.loc13_27 (constants.%require_complete.3)] -// CHECK:STDOUT: %F.specific_fn.loc13_67.2: = specific_function constants.%F, @F(%T.loc13_6.2, %U.loc13_16.2) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.1)] -// CHECK:STDOUT: %require_complete.loc13_70.1: = require_complete_type @F.%T.loc13_6.2 (%T) [symbolic = %require_complete.loc13_70.1 (constants.%require_complete.4)] -// CHECK:STDOUT: %require_complete.loc13_70.2: = require_complete_type @F.%U.loc13_16.2 (%U) [symbolic = %require_complete.loc13_70.2 (constants.%require_complete.5)] +// CHECK:STDOUT: %require_complete.loc13_48: = require_complete_type @F.%tuple.type (%tuple.type.cab) [symbolic = %require_complete.loc13_48 (constants.%require_complete.73f)] +// CHECK:STDOUT: %require_complete.loc13_27: = require_complete_type @F.%Inner.loc13_45.2 (%Inner.188) [symbolic = %require_complete.loc13_27 (constants.%require_complete.ae5)] +// CHECK:STDOUT: %F.specific_fn.loc13_67.2: = specific_function constants.%F, @F(%T.loc13_6.2, %U.loc13_16.2) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.b50)] +// CHECK:STDOUT: %require_complete.loc13_70.1: = require_complete_type @F.%T.loc13_6.2 (%T) [symbolic = %require_complete.loc13_70.1 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc13_70.2: = require_complete_type @F.%U.loc13_16.2 (%U) [symbolic = %require_complete.loc13_70.2 (constants.%require_complete.427)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type, %U.param_patt: type](%p.param_patt: @F.%Inner.loc13_45.2 (%Inner.1)) -> %return.param_patt: @F.%tuple.type (%tuple.type.2) { +// CHECK:STDOUT: fn[%T.param_patt: type, %U.param_patt: type](%p.param_patt: @F.%Inner.loc13_45.2 (%Inner.188)) -> %return.param_patt: @F.%tuple.type (%tuple.type.cab) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%Inner.loc13_45.2 (%Inner.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc13_67.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.1)] -// CHECK:STDOUT: %.loc13_70.1: ref @F.%tuple.type (%tuple.type.2) = temporary_storage -// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.2) = call %F.specific_fn.loc13_67.1(%p.ref) to %.loc13_70.1 -// CHECK:STDOUT: %.loc13_70.2: ref @F.%tuple.type (%tuple.type.2) = temporary %.loc13_70.1, %F.call +// CHECK:STDOUT: %p.ref: @F.%Inner.loc13_45.2 (%Inner.188) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc13_67.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.b50)] +// CHECK:STDOUT: %.loc13_70.1: ref @F.%tuple.type (%tuple.type.cab) = temporary_storage +// CHECK:STDOUT: %F.call: init @F.%tuple.type (%tuple.type.cab) = call %F.specific_fn.loc13_67.1(%p.ref) to %.loc13_70.1 +// CHECK:STDOUT: %.loc13_70.2: ref @F.%tuple.type (%tuple.type.cab) = temporary %.loc13_70.1, %F.call // CHECK:STDOUT: %tuple.elem0.loc13_70.1: ref @F.%T.loc13_6.2 (%T) = tuple_access %.loc13_70.2, element0 // CHECK:STDOUT: %.loc13_70.3: @F.%T.loc13_6.2 (%T) = bind_value %tuple.elem0.loc13_70.1 // CHECK:STDOUT: %tuple.elem0.loc13_70.2: ref @F.%T.loc13_6.2 (%T) = tuple_access %return, element0 @@ -635,19 +635,19 @@ fn G() -> i32 { // CHECK:STDOUT: %.loc13_70.5: @F.%U.loc13_16.2 (%U) = bind_value %tuple.elem1.loc13_70.1 // CHECK:STDOUT: %tuple.elem1.loc13_70.2: ref @F.%U.loc13_16.2 (%U) = tuple_access %return, element1 // CHECK:STDOUT: %.loc13_70.6: init @F.%U.loc13_16.2 (%U) = initialize_from %.loc13_70.5 to %tuple.elem1.loc13_70.2 -// CHECK:STDOUT: %.loc13_70.7: init @F.%tuple.type (%tuple.type.2) = tuple_init (%.loc13_70.4, %.loc13_70.6) to %return -// CHECK:STDOUT: %.loc13_71: init @F.%tuple.type (%tuple.type.2) = converted %F.call, %.loc13_70.7 +// CHECK:STDOUT: %.loc13_70.7: init @F.%tuple.type (%tuple.type.cab) = tuple_init (%.loc13_70.4, %.loc13_70.6) to %return +// CHECK:STDOUT: %.loc13_71: init @F.%tuple.type (%tuple.type.cab) = converted %F.call, %.loc13_70.7 // CHECK:STDOUT: return %.loc13_71 to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %Inner.2) -> %return.param_patt: %tuple.type.3 { +// CHECK:STDOUT: fn @G(%p.param_patt: %Inner.379) -> %return.param_patt: %tuple.type.e8a { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %Inner.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%F.specific_fn.2] -// CHECK:STDOUT: %.loc15_28: ref %tuple.type.3 = splice_block %return {} -// CHECK:STDOUT: %F.call: init %tuple.type.3 = call %F.specific_fn(%p.ref) to %.loc15_28 +// CHECK:STDOUT: %p.ref: %Inner.379 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%F.specific_fn.b5c] +// CHECK:STDOUT: %.loc15_28: ref %tuple.type.e8a = splice_block %return {} +// CHECK:STDOUT: %F.call: init %tuple.type.e8a = call %F.specific_fn(%p.ref) to %.loc15_28 // CHECK:STDOUT: return %F.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -656,8 +656,8 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.1 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.1 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.099 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.c26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%T, constants.%U) { @@ -674,19 +674,19 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc13_6.2 => constants.%T // CHECK:STDOUT: %U.loc13_16.2 => constants.%U // CHECK:STDOUT: %U.patt.loc13_16.2 => constants.%U -// CHECK:STDOUT: %Outer.loc13_36.2 => constants.%Outer.1 -// CHECK:STDOUT: %require_complete.loc13_37 => constants.%require_complete.1 -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.1 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.1 -// CHECK:STDOUT: %Inner.loc13_45.2 => constants.%Inner.1 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %Outer.loc13_36.2 => constants.%Outer.cc3 +// CHECK:STDOUT: %require_complete.loc13_37 => constants.%require_complete.889 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.099 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.c26 +// CHECK:STDOUT: %Inner.loc13_45.2 => constants.%Inner.188 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cab // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48 => constants.%require_complete.2 -// CHECK:STDOUT: %require_complete.loc13_27 => constants.%require_complete.3 -// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.1 -// CHECK:STDOUT: %require_complete.loc13_70.1 => constants.%require_complete.4 -// CHECK:STDOUT: %require_complete.loc13_70.2 => constants.%require_complete.5 +// CHECK:STDOUT: %require_complete.loc13_48 => constants.%require_complete.73f +// CHECK:STDOUT: %require_complete.loc13_27 => constants.%require_complete.ae5 +// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.b50 +// CHECK:STDOUT: %require_complete.loc13_70.1 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc13_70.2 => constants.%require_complete.427 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Outer(@F.%T.loc13_6.2) {} @@ -700,8 +700,8 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.2 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.f38 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.8e3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(constants.%C, constants.%D) { @@ -716,19 +716,19 @@ fn G() -> i32 { // CHECK:STDOUT: %T.patt.loc13_6.2 => constants.%C // CHECK:STDOUT: %U.loc13_16.2 => constants.%D // CHECK:STDOUT: %U.patt.loc13_16.2 => constants.%D -// CHECK:STDOUT: %Outer.loc13_36.2 => constants.%Outer.2 -// CHECK:STDOUT: %require_complete.loc13_37 => constants.%complete_type.1 -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2 -// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.2 -// CHECK:STDOUT: %Inner.loc13_45.2 => constants.%Inner.2 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.3 +// CHECK:STDOUT: %Outer.loc13_36.2 => constants.%Outer.909 +// CHECK:STDOUT: %require_complete.loc13_37 => constants.%complete_type.357 +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.f38 +// CHECK:STDOUT: %Inner.generic => constants.%Inner.generic.8e3 +// CHECK:STDOUT: %Inner.loc13_45.2 => constants.%Inner.379 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.e8a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc13_48 => constants.%complete_type.2 -// CHECK:STDOUT: %require_complete.loc13_27 => constants.%complete_type.1 -// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.2 -// CHECK:STDOUT: %require_complete.loc13_70.1 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc13_70.2 => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete.loc13_48 => constants.%complete_type.53b +// CHECK:STDOUT: %require_complete.loc13_27 => constants.%complete_type.357 +// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.b5c +// CHECK:STDOUT: %require_complete.loc13_70.1 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc13_70.2 => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- nontype.carbon @@ -736,35 +736,35 @@ fn G() -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %WithNontype.type: type = generic_class_type @WithNontype [template] // CHECK:STDOUT: %WithNontype.generic: %WithNontype.type = struct_value () [template] -// CHECK:STDOUT: %WithNontype.1: type = class_type @WithNontype, @WithNontype(%N.2) [symbolic] +// CHECK:STDOUT: %WithNontype.d38: type = class_type @WithNontype, @WithNontype(%N.3e4) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %WithNontype.1 [symbolic] +// CHECK:STDOUT: %require_complete.55f: = require_complete_type %WithNontype.d38 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %WithNontype.2: type = class_type @WithNontype, @WithNontype(%int_0.2) [template] -// CHECK:STDOUT: %WithNontype.val: %WithNontype.2 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_0.2) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %WithNontype.969: type = class_type @WithNontype, @WithNontype(%int_0.f61) [template] +// CHECK:STDOUT: %WithNontype.val: %WithNontype.969 = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_0.f61) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -779,21 +779,21 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %WithNontype.decl: %WithNontype.type = class_decl @WithNontype [template = constants.%WithNontype.generic] { -// CHECK:STDOUT: %N.patt.loc4_19.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_19.1, runtime_param [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc4_19.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc4_19.1, runtime_param [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %N.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc4: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc4_19.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc4_19.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_19.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %N.patt.loc6_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc6_6.1, runtime_param [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %x.patt: @F.%WithNontype.loc6_31.2 (%WithNontype.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @F.%WithNontype.loc6_31.2 (%WithNontype.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %N.patt.loc6_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc6_6.1, runtime_param [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %x.patt: @F.%WithNontype.loc6_31.2 (%WithNontype.d38) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @F.%WithNontype.loc6_31.2 (%WithNontype.d38) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { @@ -804,14 +804,14 @@ fn G() -> i32 { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc6_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc6_6.2 (constants.%N.2)] -// CHECK:STDOUT: %x.param: @F.%WithNontype.loc6_31.2 (%WithNontype.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_31: type = splice_block %WithNontype.loc6_31.1 [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.1)] { +// CHECK:STDOUT: %N.loc6_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc6_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %x.param: @F.%WithNontype.loc6_31.2 (%WithNontype.d38) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_31: type = splice_block %WithNontype.loc6_31.1 [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.d38)] { // CHECK:STDOUT: %WithNontype.ref: %WithNontype.type = name_ref WithNontype, file.%WithNontype.decl [template = constants.%WithNontype.generic] -// CHECK:STDOUT: %N.ref.loc6_30: %i32 = name_ref N, %N.loc6_6.1 [symbolic = %N.loc6_6.2 (constants.%N.2)] -// CHECK:STDOUT: %WithNontype.loc6_31.1: type = class_type @WithNontype, @WithNontype(constants.%N.2) [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.1)] +// CHECK:STDOUT: %N.ref.loc6_30: %i32 = name_ref N, %N.loc6_6.1 [symbolic = %N.loc6_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %WithNontype.loc6_31.1: type = class_type @WithNontype, @WithNontype(constants.%N.3e4) [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.d38)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.%WithNontype.loc6_31.2 (%WithNontype.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @F.%WithNontype.loc6_31.2 (%WithNontype.d38) = bind_name x, %x.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -827,31 +827,31 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @WithNontype(%N.loc4_19.1: %i32) { -// CHECK:STDOUT: %N.loc4_19.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_19.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc4_19.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc4_19.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc4_19.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc4_19.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_19.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%WithNontype.1 +// CHECK:STDOUT: .Self = constants.%WithNontype.d38 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc6_6.1: %i32) { -// CHECK:STDOUT: %N.loc6_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc6_6.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc6_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %WithNontype.loc6_31.2: type = class_type @WithNontype, @WithNontype(%N.loc6_6.2) [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.1)] +// CHECK:STDOUT: %N.loc6_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc6_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc6_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc6_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %WithNontype.loc6_31.2: type = class_type @WithNontype, @WithNontype(%N.loc6_6.2) [symbolic = %WithNontype.loc6_31.2 (constants.%WithNontype.d38)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%WithNontype.loc6_31.2 (%WithNontype.1) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%WithNontype.loc6_31.2 (%WithNontype.d38) [symbolic = %require_complete (constants.%require_complete.55f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%N.param_patt: %i32](%x.param_patt: @F.%WithNontype.loc6_31.2 (%WithNontype.1)) -> %i32 { +// CHECK:STDOUT: fn[%N.param_patt: %i32](%x.param_patt: @F.%WithNontype.loc6_31.2 (%WithNontype.d38)) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %N.ref.loc6_50: %i32 = name_ref N, %N.loc6_6.1 [symbolic = %N.loc6_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.ref.loc6_50: %i32 = name_ref N, %N.loc6_6.1 [symbolic = %N.loc6_6.2 (constants.%N.3e4)] // CHECK:STDOUT: return %N.ref.loc6_50 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -861,54 +861,54 @@ fn G() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %.loc9_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %WithNontype.ref: %WithNontype.type = name_ref WithNontype, file.%WithNontype.decl [template = constants.%WithNontype.generic] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_31.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_31.2: %i32 = converted %int_0, %.loc9_31.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %WithNontype: type = class_type @WithNontype, @WithNontype(constants.%int_0.2) [template = constants.%WithNontype.2] -// CHECK:STDOUT: %.loc9_13.2: ref %WithNontype.2 = temporary_storage -// CHECK:STDOUT: %.loc9_13.3: init %WithNontype.2 = class_init (), %.loc9_13.2 [template = constants.%WithNontype.val] -// CHECK:STDOUT: %.loc9_13.4: ref %WithNontype.2 = temporary %.loc9_13.2, %.loc9_13.3 -// CHECK:STDOUT: %.loc9_15.1: ref %WithNontype.2 = converted %.loc9_13.1, %.loc9_13.4 -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%int_0.2) [template = constants.%F.specific_fn] -// CHECK:STDOUT: %.loc9_15.2: %WithNontype.2 = bind_value %.loc9_15.1 +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_31.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_31.2: %i32 = converted %int_0, %.loc9_31.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %WithNontype: type = class_type @WithNontype, @WithNontype(constants.%int_0.f61) [template = constants.%WithNontype.969] +// CHECK:STDOUT: %.loc9_13.2: ref %WithNontype.969 = temporary_storage +// CHECK:STDOUT: %.loc9_13.3: init %WithNontype.969 = class_init (), %.loc9_13.2 [template = constants.%WithNontype.val] +// CHECK:STDOUT: %.loc9_13.4: ref %WithNontype.969 = temporary %.loc9_13.2, %.loc9_13.3 +// CHECK:STDOUT: %.loc9_15.1: ref %WithNontype.969 = converted %.loc9_13.1, %.loc9_13.4 +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%int_0.f61) [template = constants.%F.specific_fn] +// CHECK:STDOUT: %.loc9_15.2: %WithNontype.969 = bind_value %.loc9_15.1 // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn(%.loc9_15.2) // CHECK:STDOUT: %.loc9_33.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc9_33.2: %i32 = converted %F.call, %.loc9_33.1 // CHECK:STDOUT: return %.loc9_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @WithNontype(constants.%N.2) { -// CHECK:STDOUT: %N.loc4_19.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc4_19.2 => constants.%N.2 +// CHECK:STDOUT: specific @WithNontype(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc4_19.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc4_19.2 => constants.%N.3e4 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%N.2) { -// CHECK:STDOUT: %N.loc6_6.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc6_6.2 => constants.%N.2 -// CHECK:STDOUT: %WithNontype.loc6_31.2 => constants.%WithNontype.1 +// CHECK:STDOUT: specific @F(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc6_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc6_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %WithNontype.loc6_31.2 => constants.%WithNontype.d38 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @WithNontype(@F.%N.loc6_6.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @WithNontype(constants.%int_0.2) { -// CHECK:STDOUT: %N.loc4_19.2 => constants.%int_0.2 -// CHECK:STDOUT: %N.patt.loc4_19.2 => constants.%int_0.2 +// CHECK:STDOUT: specific @WithNontype(constants.%int_0.f61) { +// CHECK:STDOUT: %N.loc4_19.2 => constants.%int_0.f61 +// CHECK:STDOUT: %N.patt.loc4_19.2 => constants.%int_0.f61 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%int_0.2) { -// CHECK:STDOUT: %N.loc6_6.2 => constants.%int_0.2 -// CHECK:STDOUT: %N.patt.loc6_6.2 => constants.%int_0.2 -// CHECK:STDOUT: %WithNontype.loc6_31.2 => constants.%WithNontype.2 +// CHECK:STDOUT: specific @F(constants.%int_0.f61) { +// CHECK:STDOUT: %N.loc6_6.2 => constants.%int_0.f61 +// CHECK:STDOUT: %N.patt.loc6_6.2 => constants.%int_0.f61 +// CHECK:STDOUT: %WithNontype.loc6_31.2 => constants.%WithNontype.969 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/int_float.carbon b/toolchain/check/testdata/deduce/int_float.carbon index 50bf26c37696..ed5565763f58 100644 --- a/toolchain/check/testdata/deduce/int_float.carbon +++ b/toolchain/check/testdata/deduce/int_float.carbon @@ -48,25 +48,25 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Int [symbolic] +// CHECK:STDOUT: %require_complete.5cb: = require_complete_type %Int [symbolic] // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template] // CHECK:STDOUT: %i64: type = class_type @Int, @Int(%int_64) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i64.builtin [template] +// CHECK:STDOUT: %complete_type.4a1: = complete_type_witness %i64.builtin [template] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_64) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IntLiteral = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .IntLiteral = %import_ref.8ee +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] -// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Core//prelude/types/int, Int, loaded [template = constants.%Int.generic] +// CHECK:STDOUT: %import_ref.8ee: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] +// CHECK:STDOUT: %import_ref.187: %Int.type = import_ref Core//prelude/types/int, Int, loaded [template = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -85,14 +85,14 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref.loc4_48: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref.loc4_52: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref.loc4_52: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type.loc4_64: init type = call %IntLiteral.ref.loc4_52() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_64.1: type = value_of_initializer %int_literal.make_type.loc4_64 [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_64.2: type = converted %int_literal.make_type.loc4_64, %.loc4_64.1 [template = Core.IntLiteral] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param // CHECK:STDOUT: %.loc4_26.1: type = splice_block %.loc4_26.3 [template = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc4_10: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref.loc4_14: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref.loc4_14: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type.loc4_26: init type = call %IntLiteral.ref.loc4_14() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_26.2: type = value_of_initializer %int_literal.make_type.loc4_26 [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_26.3: type = converted %int_literal.make_type.loc4_26, %.loc4_26.2 [template = Core.IntLiteral] @@ -101,7 +101,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %n.param: @F.%Int.loc4_42.2 (%Int) = value_param runtime_param0 // CHECK:STDOUT: %.loc4_42: type = splice_block %Int.loc4_42.1 [symbolic = %Int.loc4_42.2 (constants.%Int)] { // CHECK:STDOUT: %Core.ref.loc4_32: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%import_ref.2 [template = constants.%Int.generic] +// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, imports.%import_ref.187 [template = constants.%Int.generic] // CHECK:STDOUT: %N.ref.loc4: Core.IntLiteral = name_ref N, %N.loc4_6.1 [symbolic = %N.loc4_6.2 (constants.%N)] // CHECK:STDOUT: %Int.loc4_42.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc4_42.2 (constants.%Int)] // CHECK:STDOUT: } @@ -116,7 +116,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_33.2: type = converted %int_literal.make_type, %.loc8_33.1 [template = Core.IntLiteral] @@ -137,7 +137,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Int.loc4_42.2: type = class_type @Int, @Int(%N.loc4_6.2) [symbolic = %Int.loc4_42.2 (constants.%Int)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%Int.loc4_42.2 (%Int) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%Int.loc4_42.2 (%Int) [symbolic = %require_complete (constants.%require_complete.5cb)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%N.param_patt: Core.IntLiteral](%n.param_patt: @F.%Int.loc4_42.2 (%Int)) -> Core.IntLiteral { // CHECK:STDOUT: !entry: @@ -169,7 +169,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %Int.loc4_42.2 => constants.%i64 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_todo_float.carbon @@ -190,13 +190,13 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IntLiteral = %import_ref.1 -// CHECK:STDOUT: .Float = %import_ref.2 +// CHECK:STDOUT: .IntLiteral = %import_ref.8ee +// CHECK:STDOUT: .Float = %import_ref.20b // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] -// CHECK:STDOUT: %import_ref.2: %Float.type = import_ref Core//prelude/types, Float, loaded [template = constants.%Float] +// CHECK:STDOUT: %import_ref.8ee: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] +// CHECK:STDOUT: %import_ref.20b: %Float.type = import_ref Core//prelude/types, Float, loaded [template = constants.%Float] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -215,14 +215,14 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref.loc8_50: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref.loc8_54: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref.loc8_54: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type.loc8_66: init type = call %IntLiteral.ref.loc8_54() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_66.1: type = value_of_initializer %int_literal.make_type.loc8_66 [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_66.2: type = converted %int_literal.make_type.loc8_66, %.loc8_66.1 [template = Core.IntLiteral] // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param // CHECK:STDOUT: %.loc8_26.1: type = splice_block %.loc8_26.3 [template = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref.loc8_10: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref.loc8_14: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref.loc8_14: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type.loc8_26: init type = call %IntLiteral.ref.loc8_14() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_26.2: type = value_of_initializer %int_literal.make_type.loc8_26 [template = Core.IntLiteral] // CHECK:STDOUT: %.loc8_26.3: type = converted %int_literal.make_type.loc8_26, %.loc8_26.2 [template = Core.IntLiteral] @@ -231,7 +231,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %n.param: = value_param runtime_param0 // CHECK:STDOUT: %.1: = splice_block [template = ] { // CHECK:STDOUT: %Core.ref.loc8_32: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%import_ref.2 [template = constants.%Float] +// CHECK:STDOUT: %Float.ref: %Float.type = name_ref Float, imports.%import_ref.20b [template = constants.%Float] // CHECK:STDOUT: %N.ref.loc8: Core.IntLiteral = name_ref N, %N.loc8_6.1 [symbolic = %N.loc8_6.2 (constants.%N)] // CHECK:STDOUT: %float.make_type: init type = call %Float.ref(%N.ref.loc8) // CHECK:STDOUT: %.loc8_44.1: type = value_of_initializer %float.make_type @@ -248,7 +248,7 @@ fn G(a: f64) -> Core.IntLiteral() { // CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc12_33.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc12_33.2: type = converted %int_literal.make_type, %.loc12_33.1 [template = Core.IntLiteral] diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 53b8668efccc..fdbba1fe7703 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -57,24 +57,24 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%T, %U) [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.cab: type = tuple_type (%T, %U) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %tuple.type.2 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T, %U) [symbolic] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%C, %D) [template] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %require_complete.73f: = require_complete_type %tuple.type.cab [symbolic] +// CHECK:STDOUT: %F.specific_fn.1a1: = specific_function %F, @F(%T, %U) [symbolic] +// CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%C, %D) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %tuple.type.3 [template] +// CHECK:STDOUT: %F.specific_fn.53d: = specific_function %F, @F(%C, %D) [template] +// CHECK:STDOUT: %complete_type.53b: = complete_type_witness %tuple.type.e8a [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -100,8 +100,8 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc7_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc7_16.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc7_16.1, runtime_param [symbolic = %U.patt.loc7_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %pair.patt: @F.%tuple.type (%tuple.type.2) = binding_pattern pair -// CHECK:STDOUT: %pair.param_patt: @F.%tuple.type (%tuple.type.2) = value_param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %pair.patt: @F.%tuple.type (%tuple.type.cab) = binding_pattern pair +// CHECK:STDOUT: %pair.param_patt: @F.%tuple.type (%tuple.type.cab) = value_param_pattern %pair.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%U.loc7_16.2 (%U) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%U.loc7_16.2 (%U) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { @@ -110,39 +110,39 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc7_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc7_16.2 (constants.%U)] -// CHECK:STDOUT: %pair.param: @F.%tuple.type (%tuple.type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_37.1: type = splice_block %.loc7_37.3 [symbolic = %tuple.type (constants.%tuple.type.2)] { +// CHECK:STDOUT: %pair.param: @F.%tuple.type (%tuple.type.cab) = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_37.1: type = splice_block %.loc7_37.3 [symbolic = %tuple.type (constants.%tuple.type.cab)] { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %U.ref.loc7_36: type = name_ref U, %U.loc7_16.1 [symbolic = %U.loc7_16.2 (constants.%U)] -// CHECK:STDOUT: %.loc7_37.2: %tuple.type.1 = tuple_literal (%T.ref, %U.ref.loc7_36) -// CHECK:STDOUT: %.loc7_37.3: type = converted %.loc7_37.2, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc7_37.2: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc7_36) +// CHECK:STDOUT: %.loc7_37.3: type = converted %.loc7_37.2, constants.%tuple.type.cab [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: } -// CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.2) = bind_name pair, %pair.param +// CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.cab) = bind_name pair, %pair.param // CHECK:STDOUT: %return.param: ref @F.%U.loc7_16.2 (%U) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%U.loc7_16.2 (%U) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %pair.patt: %tuple.type.3 = binding_pattern pair -// CHECK:STDOUT: %pair.param_patt: %tuple.type.3 = value_param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %pair.patt: %tuple.type.e8a = binding_pattern pair +// CHECK:STDOUT: %pair.param_patt: %tuple.type.e8a = value_param_pattern %pair.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %pair.param: %tuple.type.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [template = constants.%tuple.type.3] { +// CHECK:STDOUT: %pair.param: %tuple.type.e8a = value_param runtime_param0 +// CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [template = constants.%tuple.type.e8a] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %.loc9_17.2: %tuple.type.1 = tuple_literal (%C.ref, %D.ref.loc9_16) -// CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.3 [template = constants.%tuple.type.3] +// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) +// CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.e8a [template = constants.%tuple.type.e8a] // CHECK:STDOUT: } -// CHECK:STDOUT: %pair: %tuple.type.3 = bind_name pair, %pair.param +// CHECK:STDOUT: %pair: %tuple.type.e8a = bind_name pair, %pair.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -150,7 +150,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -162,18 +162,18 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.patt.loc7_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.loc7_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc7_16.2 (constants.%U)] // CHECK:STDOUT: %U.patt.loc7_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc7_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc7_6.2 (%T), @F.%U.loc7_16.2 (%U)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc7_6.2 (%T), @F.%U.loc7_16.2 (%U)) [symbolic = %tuple.type (constants.%tuple.type.cab)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_40: = require_complete_type @F.%U.loc7_16.2 (%U) [symbolic = %require_complete.loc7_40 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc7_30: = require_complete_type @F.%tuple.type (%tuple.type.2) [symbolic = %require_complete.loc7_30 (constants.%require_complete.2)] -// CHECK:STDOUT: %F.specific_fn.loc7_54.2: = specific_function constants.%F, @F(%T.loc7_6.2, %U.loc7_16.2) [symbolic = %F.specific_fn.loc7_54.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc7_40: = require_complete_type @F.%U.loc7_16.2 (%U) [symbolic = %require_complete.loc7_40 (constants.%require_complete.427)] +// CHECK:STDOUT: %require_complete.loc7_30: = require_complete_type @F.%tuple.type (%tuple.type.cab) [symbolic = %require_complete.loc7_30 (constants.%require_complete.73f)] +// CHECK:STDOUT: %F.specific_fn.loc7_54.2: = specific_function constants.%F, @F(%T.loc7_6.2, %U.loc7_16.2) [symbolic = %F.specific_fn.loc7_54.2 (constants.%F.specific_fn.1a1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type, %U.param_patt: type](%pair.param_patt: @F.%tuple.type (%tuple.type.2)) -> @F.%U.loc7_16.2 (%U) { +// CHECK:STDOUT: fn[%T.param_patt: type, %U.param_patt: type](%pair.param_patt: @F.%tuple.type (%tuple.type.cab)) -> @F.%U.loc7_16.2 (%U) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %pair.ref: @F.%tuple.type (%tuple.type.2) = name_ref pair, %pair -// CHECK:STDOUT: %F.specific_fn.loc7_54.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [symbolic = %F.specific_fn.loc7_54.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %pair.ref: @F.%tuple.type (%tuple.type.cab) = name_ref pair, %pair +// CHECK:STDOUT: %F.specific_fn.loc7_54.1: = specific_function %F.ref, @F(constants.%T, constants.%U) [symbolic = %F.specific_fn.loc7_54.2 (constants.%F.specific_fn.1a1)] // CHECK:STDOUT: %F.call: init @F.%U.loc7_16.2 (%U) = call %F.specific_fn.loc7_54.1(%pair.ref) // CHECK:STDOUT: %.loc7_61.1: @F.%U.loc7_16.2 (%U) = value_of_initializer %F.call // CHECK:STDOUT: %.loc7_61.2: @F.%U.loc7_16.2 (%U) = converted %F.call, %.loc7_61.1 @@ -181,11 +181,11 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%pair.param_patt: %tuple.type.3) -> %return.param_patt: %D { +// CHECK:STDOUT: fn @G(%pair.param_patt: %tuple.type.e8a) -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %pair.ref: %tuple.type.3 = name_ref pair, %pair -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %pair.ref: %tuple.type.e8a = name_ref pair, %pair +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C, constants.%D) [template = constants.%F.specific_fn.53d] // CHECK:STDOUT: %.loc9_20: ref %D = splice_block %return {} // CHECK:STDOUT: %F.call: init %D = call %F.specific_fn(%pair.ref) to %.loc9_20 // CHECK:STDOUT: return %F.call to %return @@ -196,12 +196,12 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%T // CHECK:STDOUT: %U.loc7_16.2 => constants.%U // CHECK:STDOUT: %U.patt.loc7_16.2 => constants.%U -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.cab // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_40 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc7_30 => constants.%require_complete.2 -// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc7_40 => constants.%require_complete.427 +// CHECK:STDOUT: %require_complete.loc7_30 => constants.%require_complete.73f +// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.1a1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(%T.loc7_6.2, %U.loc7_16.2) {} @@ -211,12 +211,12 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%C // CHECK:STDOUT: %U.loc7_16.2 => constants.%D // CHECK:STDOUT: %U.patt.loc7_16.2 => constants.%D -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.3 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.e8a // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc7_40 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc7_30 => constants.%complete_type.2 -// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc7_40 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc7_30 => constants.%complete_type.53b +// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.53d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- tuple_value.carbon @@ -224,48 +224,48 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %Pair: %tuple.type.2 = bind_symbolic_name Pair, 0 [symbolic] -// CHECK:STDOUT: %Pair.patt: %tuple.type.2 = symbolic_binding_pattern Pair, 0 [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %Pair: %tuple.type.471 = bind_symbolic_name Pair, 0 [symbolic] +// CHECK:STDOUT: %Pair.patt: %tuple.type.471 = symbolic_binding_pattern Pair, 0 [symbolic] // CHECK:STDOUT: %HasPair.type: type = generic_class_type @HasPair [template] // CHECK:STDOUT: %HasPair.generic: %HasPair.type = struct_value () [template] -// CHECK:STDOUT: %HasPair.1: type = class_type @HasPair, @HasPair(%Pair) [symbolic] +// CHECK:STDOUT: %HasPair.3cb: type = class_type @HasPair, @HasPair(%Pair) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %A: %i32 = bind_symbolic_name A, 0 [symbolic] // CHECK:STDOUT: %A.patt: %i32 = symbolic_binding_pattern A, 0 [symbolic] // CHECK:STDOUT: %B: %i32 = bind_symbolic_name B, 1 [symbolic] // CHECK:STDOUT: %B.patt: %i32 = symbolic_binding_pattern B, 1 [symbolic] -// CHECK:STDOUT: %tuple.1: %tuple.type.2 = tuple_value (%A, %B) [symbolic] -// CHECK:STDOUT: %HasPair.2: type = class_type @HasPair, @HasPair(%tuple.1) [symbolic] +// CHECK:STDOUT: %tuple.781: %tuple.type.471 = tuple_value (%A, %B) [symbolic] +// CHECK:STDOUT: %HasPair.624: type = class_type @HasPair, @HasPair(%tuple.781) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %HasPair.2 [symbolic] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %HasPair.3: type = class_type @HasPair, @HasPair(%tuple.2) [template] +// CHECK:STDOUT: %require_complete.16b: = require_complete_type %HasPair.624 [symbolic] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple.58e: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %HasPair.a8d: type = class_type @HasPair, @HasPair(%tuple.58e) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -280,27 +280,27 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasPair.decl: %HasPair.type = class_decl @HasPair [template = constants.%HasPair.generic] { -// CHECK:STDOUT: %Pair.patt.loc4_15.1: %tuple.type.2 = symbolic_binding_pattern Pair, 0 [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] -// CHECK:STDOUT: %Pair.param_patt: %tuple.type.2 = value_param_pattern %Pair.patt.loc4_15.1, runtime_param [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] +// CHECK:STDOUT: %Pair.patt.loc4_15.1: %tuple.type.471 = symbolic_binding_pattern Pair, 0 [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] +// CHECK:STDOUT: %Pair.param_patt: %tuple.type.471 = value_param_pattern %Pair.patt.loc4_15.1, runtime_param [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Pair.param: %tuple.type.2 = value_param runtime_param -// CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %Pair.param: %tuple.type.471 = value_param runtime_param +// CHECK:STDOUT: %.loc4_31.1: type = splice_block %.loc4_31.3 [template = constants.%tuple.type.471] { // CHECK:STDOUT: %int_32.loc4_23: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc4_23: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc4_28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc4_28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc4_31.2: %tuple.type.1 = tuple_literal (%i32.loc4_23, %i32.loc4_28) -// CHECK:STDOUT: %.loc4_31.3: type = converted %.loc4_31.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc4_31.2: %tuple.type.24b = tuple_literal (%i32.loc4_23, %i32.loc4_28) +// CHECK:STDOUT: %.loc4_31.3: type = converted %.loc4_31.2, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: } -// CHECK:STDOUT: %Pair.loc4_15.1: %tuple.type.2 = bind_symbolic_name Pair, 0, %Pair.param [symbolic = %Pair.loc4_15.2 (constants.%Pair)] +// CHECK:STDOUT: %Pair.loc4_15.1: %tuple.type.471 = bind_symbolic_name Pair, 0, %Pair.param [symbolic = %Pair.loc4_15.2 (constants.%Pair)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %A.patt.loc6_6.1: %i32 = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc6_6.2 (constants.%A.patt)] // CHECK:STDOUT: %A.param_patt: %i32 = value_param_pattern %A.patt.loc6_6.1, runtime_param [symbolic = %A.patt.loc6_6.2 (constants.%A.patt)] // CHECK:STDOUT: %B.patt.loc6_15.1: %i32 = symbolic_binding_pattern B, 1 [symbolic = %B.patt.loc6_15.2 (constants.%B.patt)] // CHECK:STDOUT: %B.param_patt: %i32 = value_param_pattern %B.patt.loc6_15.1, runtime_param [symbolic = %B.patt.loc6_15.2 (constants.%B.patt)] -// CHECK:STDOUT: %h.patt: @F.%HasPair.loc6_41.2 (%HasPair.2) = binding_pattern h -// CHECK:STDOUT: %h.param_patt: @F.%HasPair.loc6_41.2 (%HasPair.2) = value_param_pattern %h.patt, runtime_param0 +// CHECK:STDOUT: %h.patt: @F.%HasPair.loc6_41.2 (%HasPair.624) = binding_pattern h +// CHECK:STDOUT: %h.param_patt: @F.%HasPair.loc6_41.2 (%HasPair.624) = value_param_pattern %h.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { @@ -318,67 +318,67 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %i32.loc6_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %B.loc6_15.1: %i32 = bind_symbolic_name B, 1, %B.param [symbolic = %B.loc6_15.2 (constants.%B)] -// CHECK:STDOUT: %h.param: @F.%HasPair.loc6_41.2 (%HasPair.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_41.1: type = splice_block %HasPair.loc6_41.1 [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.2)] { +// CHECK:STDOUT: %h.param: @F.%HasPair.loc6_41.2 (%HasPair.624) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_41.1: type = splice_block %HasPair.loc6_41.1 [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.624)] { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [template = constants.%HasPair.generic] // CHECK:STDOUT: %A.ref: %i32 = name_ref A, %A.loc6_6.1 [symbolic = %A.loc6_6.2 (constants.%A)] // CHECK:STDOUT: %B.ref.loc6_39: %i32 = name_ref B, %B.loc6_15.1 [symbolic = %B.loc6_15.2 (constants.%B)] -// CHECK:STDOUT: %.loc6_40: %tuple.type.2 = tuple_literal (%A.ref, %B.ref.loc6_39) -// CHECK:STDOUT: %tuple.loc6_40.1: %tuple.type.2 = tuple_value (%A.ref, %B.ref.loc6_39) [symbolic = %tuple.loc6_40.2 (constants.%tuple.1)] -// CHECK:STDOUT: %.loc6_41.2: %tuple.type.2 = converted %.loc6_40, %tuple.loc6_40.1 [symbolic = %tuple.loc6_40.2 (constants.%tuple.1)] -// CHECK:STDOUT: %HasPair.loc6_41.1: type = class_type @HasPair, @HasPair(constants.%tuple.1) [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.2)] +// CHECK:STDOUT: %.loc6_40: %tuple.type.471 = tuple_literal (%A.ref, %B.ref.loc6_39) +// CHECK:STDOUT: %tuple.loc6_40.1: %tuple.type.471 = tuple_value (%A.ref, %B.ref.loc6_39) [symbolic = %tuple.loc6_40.2 (constants.%tuple.781)] +// CHECK:STDOUT: %.loc6_41.2: %tuple.type.471 = converted %.loc6_40, %tuple.loc6_40.1 [symbolic = %tuple.loc6_40.2 (constants.%tuple.781)] +// CHECK:STDOUT: %HasPair.loc6_41.1: type = class_type @HasPair, @HasPair(constants.%tuple.781) [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.624)] // CHECK:STDOUT: } -// CHECK:STDOUT: %h: @F.%HasPair.loc6_41.2 (%HasPair.2) = bind_name h, %h.param +// CHECK:STDOUT: %h: @F.%HasPair.loc6_41.2 (%HasPair.624) = bind_name h, %h.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %h.patt: %HasPair.3 = binding_pattern h -// CHECK:STDOUT: %h.param_patt: %HasPair.3 = value_param_pattern %h.patt, runtime_param0 +// CHECK:STDOUT: %h.patt: %HasPair.a8d = binding_pattern h +// CHECK:STDOUT: %h.param_patt: %HasPair.a8d = value_param_pattern %h.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %h.param: %HasPair.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_23.1: type = splice_block %HasPair [template = constants.%HasPair.3] { +// CHECK:STDOUT: %h.param: %HasPair.a8d = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_23.1: type = splice_block %HasPair [template = constants.%HasPair.a8d] { // CHECK:STDOUT: %HasPair.ref: %HasPair.type = name_ref HasPair, file.%HasPair.decl [template = constants.%HasPair.generic] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc8_22.1: %tuple.type.3 = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc8_22.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc8_22.1: = bound_method %int_1, %impl.elem0.loc8_22.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc8_22.1: = specific_function %Convert.bound.loc8_22.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc8_22.1: init %i32 = call %Convert.specific_fn.loc8_22.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_22.2: %i32 = value_of_initializer %int.convert_checked.loc8_22.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_22.3: %i32 = converted %int_1, %.loc8_22.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc8_22.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc8_22.2: = bound_method %int_2, %impl.elem0.loc8_22.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc8_22.2: = specific_function %Convert.bound.loc8_22.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc8_22.2: init %i32 = call %Convert.specific_fn.loc8_22.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc8_22.4: %i32 = value_of_initializer %int.convert_checked.loc8_22.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc8_22.5: %i32 = converted %int_2, %.loc8_22.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc8_22.3, %.loc8_22.5) [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc8_23.2: %tuple.type.2 = converted %.loc8_22.1, %tuple [template = constants.%tuple.2] -// CHECK:STDOUT: %HasPair: type = class_type @HasPair, @HasPair(constants.%tuple.2) [template = constants.%HasPair.3] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc8_22.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc8_22.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc8_22.1: = bound_method %int_1, %impl.elem0.loc8_22.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc8_22.1: = specific_function %Convert.bound.loc8_22.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc8_22.1: init %i32 = call %Convert.specific_fn.loc8_22.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_22.2: %i32 = value_of_initializer %int.convert_checked.loc8_22.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_22.3: %i32 = converted %int_1, %.loc8_22.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc8_22.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc8_22.2: = bound_method %int_2, %impl.elem0.loc8_22.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc8_22.2: = specific_function %Convert.bound.loc8_22.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc8_22.2: init %i32 = call %Convert.specific_fn.loc8_22.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc8_22.4: %i32 = value_of_initializer %int.convert_checked.loc8_22.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc8_22.5: %i32 = converted %int_2, %.loc8_22.4 [template = constants.%int_2.166] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%.loc8_22.3, %.loc8_22.5) [template = constants.%tuple.58e] +// CHECK:STDOUT: %.loc8_23.2: %tuple.type.471 = converted %.loc8_22.1, %tuple [template = constants.%tuple.58e] +// CHECK:STDOUT: %HasPair: type = class_type @HasPair, @HasPair(constants.%tuple.58e) [template = constants.%HasPair.a8d] // CHECK:STDOUT: } -// CHECK:STDOUT: %h: %HasPair.3 = bind_name h, %h.param +// CHECK:STDOUT: %h: %HasPair.a8d = bind_name h, %h.param // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @HasPair(%Pair.loc4_15.1: %tuple.type.2) { -// CHECK:STDOUT: %Pair.loc4_15.2: %tuple.type.2 = bind_symbolic_name Pair, 0 [symbolic = %Pair.loc4_15.2 (constants.%Pair)] -// CHECK:STDOUT: %Pair.patt.loc4_15.2: %tuple.type.2 = symbolic_binding_pattern Pair, 0 [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] +// CHECK:STDOUT: generic class @HasPair(%Pair.loc4_15.1: %tuple.type.471) { +// CHECK:STDOUT: %Pair.loc4_15.2: %tuple.type.471 = bind_symbolic_name Pair, 0 [symbolic = %Pair.loc4_15.2 (constants.%Pair)] +// CHECK:STDOUT: %Pair.patt.loc4_15.2: %tuple.type.471 = symbolic_binding_pattern Pair, 0 [symbolic = %Pair.patt.loc4_15.2 (constants.%Pair.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%HasPair.1 +// CHECK:STDOUT: .Self = constants.%HasPair.3cb // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -388,24 +388,24 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %A.patt.loc6_6.2: %i32 = symbolic_binding_pattern A, 0 [symbolic = %A.patt.loc6_6.2 (constants.%A.patt)] // CHECK:STDOUT: %B.loc6_15.2: %i32 = bind_symbolic_name B, 1 [symbolic = %B.loc6_15.2 (constants.%B)] // CHECK:STDOUT: %B.patt.loc6_15.2: %i32 = symbolic_binding_pattern B, 1 [symbolic = %B.patt.loc6_15.2 (constants.%B.patt)] -// CHECK:STDOUT: %tuple.loc6_40.2: %tuple.type.2 = tuple_value (%A.loc6_6.2, %B.loc6_15.2) [symbolic = %tuple.loc6_40.2 (constants.%tuple.1)] -// CHECK:STDOUT: %HasPair.loc6_41.2: type = class_type @HasPair, @HasPair(%tuple.loc6_40.2) [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.2)] +// CHECK:STDOUT: %tuple.loc6_40.2: %tuple.type.471 = tuple_value (%A.loc6_6.2, %B.loc6_15.2) [symbolic = %tuple.loc6_40.2 (constants.%tuple.781)] +// CHECK:STDOUT: %HasPair.loc6_41.2: type = class_type @HasPair, @HasPair(%tuple.loc6_40.2) [symbolic = %HasPair.loc6_41.2 (constants.%HasPair.624)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.%HasPair.loc6_41.2 (%HasPair.2) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.%HasPair.loc6_41.2 (%HasPair.624) [symbolic = %require_complete (constants.%require_complete.16b)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%A.param_patt: %i32, %B.param_patt: %i32](%h.param_patt: @F.%HasPair.loc6_41.2 (%HasPair.2)) -> %i32 { +// CHECK:STDOUT: fn[%A.param_patt: %i32, %B.param_patt: %i32](%h.param_patt: @F.%HasPair.loc6_41.2 (%HasPair.624)) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %B.ref.loc6_60: %i32 = name_ref B, %B.loc6_15.1 [symbolic = %B.loc6_15.2 (constants.%B)] // CHECK:STDOUT: return %B.ref.loc6_60 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%h.param_patt: %HasPair.3) -> %i32 { +// CHECK:STDOUT: fn @G(%h.param_patt: %HasPair.a8d) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %h.ref: %HasPair.3 = name_ref h, %h -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%int_1.2, constants.%int_2.2) [template = constants.%F.specific_fn] +// CHECK:STDOUT: %h.ref: %HasPair.a8d = name_ref h, %h +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%int_1.c60, constants.%int_2.166) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn(%h.ref) // CHECK:STDOUT: %.loc9_14.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc9_14.2: %i32 = converted %F.call, %.loc9_14.1 @@ -417,9 +417,9 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %Pair.patt.loc4_15.2 => constants.%Pair // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasPair(constants.%tuple.1) { -// CHECK:STDOUT: %Pair.loc4_15.2 => constants.%tuple.1 -// CHECK:STDOUT: %Pair.patt.loc4_15.2 => constants.%tuple.1 +// CHECK:STDOUT: specific @HasPair(constants.%tuple.781) { +// CHECK:STDOUT: %Pair.loc4_15.2 => constants.%tuple.781 +// CHECK:STDOUT: %Pair.patt.loc4_15.2 => constants.%tuple.781 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -429,29 +429,29 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %A.patt.loc6_6.2 => constants.%A // CHECK:STDOUT: %B.loc6_15.2 => constants.%B // CHECK:STDOUT: %B.patt.loc6_15.2 => constants.%B -// CHECK:STDOUT: %tuple.loc6_40.2 => constants.%tuple.1 -// CHECK:STDOUT: %HasPair.loc6_41.2 => constants.%HasPair.2 +// CHECK:STDOUT: %tuple.loc6_40.2 => constants.%tuple.781 +// CHECK:STDOUT: %HasPair.loc6_41.2 => constants.%HasPair.624 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @HasPair(@F.%tuple.loc6_40.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @HasPair(constants.%tuple.2) { -// CHECK:STDOUT: %Pair.loc4_15.2 => constants.%tuple.2 -// CHECK:STDOUT: %Pair.patt.loc4_15.2 => constants.%tuple.2 +// CHECK:STDOUT: specific @HasPair(constants.%tuple.58e) { +// CHECK:STDOUT: %Pair.loc4_15.2 => constants.%tuple.58e +// CHECK:STDOUT: %Pair.patt.loc4_15.2 => constants.%tuple.58e // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%int_1.2, constants.%int_2.2) { -// CHECK:STDOUT: %A.loc6_6.2 => constants.%int_1.2 -// CHECK:STDOUT: %A.patt.loc6_6.2 => constants.%int_1.2 -// CHECK:STDOUT: %B.loc6_15.2 => constants.%int_2.2 -// CHECK:STDOUT: %B.patt.loc6_15.2 => constants.%int_2.2 -// CHECK:STDOUT: %tuple.loc6_40.2 => constants.%tuple.2 -// CHECK:STDOUT: %HasPair.loc6_41.2 => constants.%HasPair.3 +// CHECK:STDOUT: specific @F(constants.%int_1.c60, constants.%int_2.166) { +// CHECK:STDOUT: %A.loc6_6.2 => constants.%int_1.c60 +// CHECK:STDOUT: %A.patt.loc6_6.2 => constants.%int_1.c60 +// CHECK:STDOUT: %B.loc6_15.2 => constants.%int_2.166 +// CHECK:STDOUT: %B.patt.loc6_15.2 => constants.%int_2.166 +// CHECK:STDOUT: %tuple.loc6_40.2 => constants.%tuple.58e +// CHECK:STDOUT: %HasPair.loc6_41.2 => constants.%HasPair.a8d // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_inconsistent.carbon @@ -463,11 +463,11 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%T, %T) [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.223: type = tuple_type (%T, %T) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%C, %D) [template] +// CHECK:STDOUT: %tuple.type.e8a: type = tuple_type (%C, %D) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } @@ -493,40 +493,40 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc7_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc7_6.1, runtime_param [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %pair.patt: @F.%tuple.type (%tuple.type.2) = binding_pattern pair -// CHECK:STDOUT: %pair.param_patt: @F.%tuple.type (%tuple.type.2) = value_param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %pair.patt: @F.%tuple.type (%tuple.type.223) = binding_pattern pair +// CHECK:STDOUT: %pair.param_patt: @F.%tuple.type (%tuple.type.223) = value_param_pattern %pair.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc7_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc7_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc7_33: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc7_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %pair.param: @F.%tuple.type (%tuple.type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc7_27.1: type = splice_block %.loc7_27.3 [symbolic = %tuple.type (constants.%tuple.type.2)] { +// CHECK:STDOUT: %pair.param: @F.%tuple.type (%tuple.type.223) = value_param runtime_param0 +// CHECK:STDOUT: %.loc7_27.1: type = splice_block %.loc7_27.3 [symbolic = %tuple.type (constants.%tuple.type.223)] { // CHECK:STDOUT: %T.ref.loc7_23: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.ref.loc7_26: type = name_ref T, %T.loc7_6.1 [symbolic = %T.loc7_6.2 (constants.%T)] -// CHECK:STDOUT: %.loc7_27.2: %tuple.type.1 = tuple_literal (%T.ref.loc7_23, %T.ref.loc7_26) -// CHECK:STDOUT: %.loc7_27.3: type = converted %.loc7_27.2, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc7_27.2: %tuple.type.24b = tuple_literal (%T.ref.loc7_23, %T.ref.loc7_26) +// CHECK:STDOUT: %.loc7_27.3: type = converted %.loc7_27.2, constants.%tuple.type.223 [symbolic = %tuple.type (constants.%tuple.type.223)] // CHECK:STDOUT: } -// CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.2) = bind_name pair, %pair.param +// CHECK:STDOUT: %pair: @F.%tuple.type (%tuple.type.223) = bind_name pair, %pair.param // CHECK:STDOUT: %return.param: ref @F.%T.loc7_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc7_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %pair.patt: %tuple.type.3 = binding_pattern pair -// CHECK:STDOUT: %pair.param_patt: %tuple.type.3 = value_param_pattern %pair.patt, runtime_param0 +// CHECK:STDOUT: %pair.patt: %tuple.type.e8a = binding_pattern pair +// CHECK:STDOUT: %pair.param_patt: %tuple.type.e8a = value_param_pattern %pair.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref.loc9_23: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %pair.param: %tuple.type.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [template = constants.%tuple.type.3] { +// CHECK:STDOUT: %pair.param: %tuple.type.e8a = value_param runtime_param0 +// CHECK:STDOUT: %.loc9_17.1: type = splice_block %.loc9_17.3 [template = constants.%tuple.type.e8a] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %D.ref.loc9_16: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %.loc9_17.2: %tuple.type.1 = tuple_literal (%C.ref, %D.ref.loc9_16) -// CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.3 [template = constants.%tuple.type.3] +// CHECK:STDOUT: %.loc9_17.2: %tuple.type.24b = tuple_literal (%C.ref, %D.ref.loc9_16) +// CHECK:STDOUT: %.loc9_17.3: type = converted %.loc9_17.2, constants.%tuple.type.e8a [template = constants.%tuple.type.e8a] // CHECK:STDOUT: } -// CHECK:STDOUT: %pair: %tuple.type.3 = bind_name pair, %pair.param +// CHECK:STDOUT: %pair: %tuple.type.e8a = bind_name pair, %pair.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -551,21 +551,21 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { // CHECK:STDOUT: %T.loc7_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc7_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc7_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc7_6.2 (%T), @F.%T.loc7_6.2 (%T)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%T.loc7_6.2 (%T), @F.%T.loc7_6.2 (%T)) [symbolic = %tuple.type (constants.%tuple.type.223)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%pair.param_patt: @F.%tuple.type (%tuple.type.2)) -> @F.%T.loc7_6.2 (%T); +// CHECK:STDOUT: fn[%T.param_patt: type](%pair.param_patt: @F.%tuple.type (%tuple.type.223)) -> @F.%T.loc7_6.2 (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%pair.param_patt: %tuple.type.3) -> %return.param_patt: %D { +// CHECK:STDOUT: fn @G(%pair.param_patt: %tuple.type.e8a) -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %pair.ref: %tuple.type.3 = name_ref pair, %pair +// CHECK:STDOUT: %pair.ref: %tuple.type.e8a = name_ref pair, %pair // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc7_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc7_6.2 => constants.%T -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.223 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index 8a2d8bad3cbb..b3505a85a0eb 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -67,20 +67,20 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T) [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %F.specific_fn.b56: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%C) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %F.specific_fn.253: = specific_function %F, @F(%C) [template] +// CHECK:STDOUT: %complete_type.d05: = complete_type_witness %ptr.019 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -102,43 +102,43 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_20.2 (%ptr.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_20.2 (%ptr.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_20.2 (%ptr.251) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_20.2 (%ptr.251) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_20: type = splice_block %ptr.loc6_20.1 [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.2 (%ptr.251) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_20: type = splice_block %ptr.loc6_20.1 [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] { // CHECK:STDOUT: %T.ref.loc6_19: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc6_20.2 (%ptr.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%ptr.loc6_20.2 (%ptr.251) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.019 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.019 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_16: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_10: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_10: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -148,18 +148,18 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc6_20.2: type = ptr_type @F.%T.loc6_6.2 (%T) [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_20.2: type = ptr_type @F.%T.loc6_6.2 (%T) [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_23 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_20.2 (%ptr.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] -// CHECK:STDOUT: %F.specific_fn.loc6_37.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc6_23: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_23 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_20.2 (%ptr.251) [symbolic = %require_complete.loc6_17 (constants.%require_complete.968)] +// CHECK:STDOUT: %F.specific_fn.loc6_37.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.b56)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_20.2 (%ptr.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_20.2 (%ptr.251)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_20.2 (%ptr.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc6_37.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_20.2 (%ptr.251) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc6_37.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.b56)] // CHECK:STDOUT: %F.call: init @F.%T.loc6_6.2 (%T) = call %F.specific_fn.loc6_37.1(%p.ref) // CHECK:STDOUT: %.loc6_41.1: @F.%T.loc6_6.2 (%T) = value_of_initializer %F.call // CHECK:STDOUT: %.loc6_41.2: @F.%T.loc6_6.2 (%T) = converted %F.call, %.loc6_41.1 @@ -167,11 +167,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.2) -> %return.param_patt: %C { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.019) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.253] // CHECK:STDOUT: %.loc8_13: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_13 // CHECK:STDOUT: return %F.call to %return @@ -180,12 +180,12 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.2 -// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc6_23 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.968 +// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.b56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(%T.loc6_6.2) {} @@ -193,12 +193,12 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%C) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%C // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%C -// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.019 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.2 -// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc6_23 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.d05 +// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.253 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- const.carbon @@ -206,22 +206,22 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %const.1: type = const_type %T [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const.1 [symbolic] +// CHECK:STDOUT: %const.0b7: type = const_type %T [symbolic] +// CHECK:STDOUT: %ptr.d83: type = ptr_type %const.0b7 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T) [symbolic] -// CHECK:STDOUT: %const.2: type = const_type %C [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %const.2 [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.ecd: = require_complete_type %ptr.d83 [symbolic] +// CHECK:STDOUT: %F.specific_fn.38a: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %const.668: type = const_type %C [template] +// CHECK:STDOUT: %ptr.801: type = ptr_type %const.668 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%C) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %F.specific_fn.aae: = specific_function %F, @F(%C) [template] +// CHECK:STDOUT: %complete_type.247: = complete_type_witness %ptr.801 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -243,45 +243,45 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_26.2 (%ptr.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_26.2 (%ptr.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_26.2 (%ptr.d83) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_26.2 (%ptr.d83) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_26: type = splice_block %ptr.loc6_26.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.2 (%ptr.d83) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_26: type = splice_block %ptr.loc6_26.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] { // CHECK:STDOUT: %T.ref.loc6_25: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %const.loc6_19.1: type = const_type %T [symbolic = %const.loc6_19.2 (constants.%const.1)] -// CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] +// CHECK:STDOUT: %const.loc6_19.1: type = const_type %T [symbolic = %const.loc6_19.2 (constants.%const.0b7)] +// CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.0b7 [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc6_26.2 (%ptr.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%ptr.loc6_26.2 (%ptr.d83) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.801 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.801 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.801 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [template = constants.%ptr.801] { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %const: type = const_type %C [template = constants.%const.2] -// CHECK:STDOUT: %ptr: type = ptr_type %const.2 [template = constants.%ptr.2] +// CHECK:STDOUT: %const: type = const_type %C [template = constants.%const.668] +// CHECK:STDOUT: %ptr: type = ptr_type %const.668 [template = constants.%ptr.801] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.801 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -291,19 +291,19 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %const.loc6_19.2: type = const_type @F.%T.loc6_6.2 (%T) [symbolic = %const.loc6_19.2 (constants.%const.1)] -// CHECK:STDOUT: %ptr.loc6_26.2: type = ptr_type @F.%const.loc6_19.2 (%const.1) [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] +// CHECK:STDOUT: %const.loc6_19.2: type = const_type @F.%T.loc6_6.2 (%T) [symbolic = %const.loc6_19.2 (constants.%const.0b7)] +// CHECK:STDOUT: %ptr.loc6_26.2: type = ptr_type @F.%const.loc6_19.2 (%const.0b7) [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_29: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_29 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_26.2 (%ptr.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] -// CHECK:STDOUT: %F.specific_fn.loc6_43.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc6_29: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_29 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_26.2 (%ptr.d83) [symbolic = %require_complete.loc6_17 (constants.%require_complete.ecd)] +// CHECK:STDOUT: %F.specific_fn.loc6_43.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn.38a)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_26.2 (%ptr.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_26.2 (%ptr.d83)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_26.2 (%ptr.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc6_43.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_26.2 (%ptr.d83) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc6_43.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn.38a)] // CHECK:STDOUT: %F.call: init @F.%T.loc6_6.2 (%T) = call %F.specific_fn.loc6_43.1(%p.ref) // CHECK:STDOUT: %.loc6_47.1: @F.%T.loc6_6.2 (%T) = value_of_initializer %F.call // CHECK:STDOUT: %.loc6_47.2: @F.%T.loc6_6.2 (%T) = converted %F.call, %.loc6_47.1 @@ -311,11 +311,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.2) -> %return.param_patt: %C { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.801) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %p.ref: %ptr.801 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.aae] // CHECK:STDOUT: %.loc8_19: ref %C = splice_block %return {} // CHECK:STDOUT: %F.call: init %C = call %F.specific_fn(%p.ref) to %.loc8_19 // CHECK:STDOUT: return %F.call to %return @@ -324,13 +324,13 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.1 -// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.1 +// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.0b7 +// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.d83 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_29 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.2 -// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc6_29 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.ecd +// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.38a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(%T.loc6_6.2) {} @@ -338,13 +338,13 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%C) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%C // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%C -// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.2 -// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.2 +// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.668 +// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.801 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_29 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.2 -// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc6_29 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.247 +// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.aae // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- nonconst_from_const.carbon @@ -352,21 +352,21 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %F.specific_fn.b56: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %const: type = const_type %C [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %const [template] +// CHECK:STDOUT: %ptr.801: type = ptr_type %const [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%const) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %F.specific_fn.0bd: = specific_function %F, @F(%const) [template] +// CHECK:STDOUT: %complete_type.247: = complete_type_witness %ptr.801 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -388,45 +388,45 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_20.2 (%ptr.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_20.2 (%ptr.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_20.2 (%ptr.251) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_20.2 (%ptr.251) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_26: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_20: type = splice_block %ptr.loc6_20.1 [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %p.param: @F.%ptr.loc6_20.2 (%ptr.251) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_20: type = splice_block %ptr.loc6_20.1 [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] { // CHECK:STDOUT: %T.ref.loc6_19: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_20.1: type = ptr_type %T [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc6_20.2 (%ptr.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%ptr.loc6_20.2 (%ptr.251) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: %ptr.801 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.801 = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %const = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %const = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_28: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %const.loc8_22: type = const_type %C [template = constants.%const] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %p.param: %ptr.801 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_16: type = splice_block %ptr [template = constants.%ptr.801] { // CHECK:STDOUT: %C.ref.loc8_15: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %const.loc8_9: type = const_type %C [template = constants.%const] -// CHECK:STDOUT: %ptr: type = ptr_type %const [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %const [template = constants.%ptr.801] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param +// CHECK:STDOUT: %p: %ptr.801 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %const = out_param runtime_param1 // CHECK:STDOUT: %return: ref %const = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -436,18 +436,18 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc6_20.2: type = ptr_type @F.%T.loc6_6.2 (%T) [symbolic = %ptr.loc6_20.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_20.2: type = ptr_type @F.%T.loc6_6.2 (%T) [symbolic = %ptr.loc6_20.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_23 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_20.2 (%ptr.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] -// CHECK:STDOUT: %F.specific_fn.loc6_37.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc6_23: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_23 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_20.2 (%ptr.251) [symbolic = %require_complete.loc6_17 (constants.%require_complete.968)] +// CHECK:STDOUT: %F.specific_fn.loc6_37.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.b56)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_20.2 (%ptr.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_20.2 (%ptr.251)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_20.2 (%ptr.1) = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn.loc6_37.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.1)] +// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_20.2 (%ptr.251) = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn.loc6_37.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.b56)] // CHECK:STDOUT: %F.call: init @F.%T.loc6_6.2 (%T) = call %F.specific_fn.loc6_37.1(%p.ref) // CHECK:STDOUT: %.loc6_41.1: @F.%T.loc6_6.2 (%T) = value_of_initializer %F.call // CHECK:STDOUT: %.loc6_41.2: @F.%T.loc6_6.2 (%T) = converted %F.call, %.loc6_41.1 @@ -455,11 +455,11 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.2) -> %return.param_patt: %const { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.801) -> %return.param_patt: %const { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%const) [template = constants.%F.specific_fn.2] +// CHECK:STDOUT: %p.ref: %ptr.801 = name_ref p, %p +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%const) [template = constants.%F.specific_fn.0bd] // CHECK:STDOUT: %.loc8_19: ref %const = splice_block %return {} // CHECK:STDOUT: %F.call: init %const = call %F.specific_fn(%p.ref) to %.loc8_19 // CHECK:STDOUT: return %F.call to %return @@ -468,12 +468,12 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.2 -// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc6_23 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.968 +// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.b56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(%T.loc6_6.2) {} @@ -481,12 +481,12 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: specific @F(constants.%const) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%const // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%const -// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc6_20.2 => constants.%ptr.801 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_23 => constants.%complete_type.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.2 -// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc6_23 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.247 +// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.0bd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_const_from_nonconst.carbon @@ -497,15 +497,15 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %const.1: type = const_type %T [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const.1 [symbolic] +// CHECK:STDOUT: %const.0b7: type = const_type %T [symbolic] +// CHECK:STDOUT: %ptr.d83: type = ptr_type %const.0b7 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.ecd: = require_complete_type %ptr.d83 [symbolic] // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%T) [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] -// CHECK:STDOUT: %const.2: type = const_type %C [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %const.668: type = const_type %C [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } @@ -529,40 +529,40 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc6_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_6.1, runtime_param [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_26.2 (%ptr.1) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_26.2 (%ptr.1) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %p.patt: @F.%ptr.loc6_26.2 (%ptr.d83) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc6_26.2 (%ptr.d83) = value_param_pattern %p.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%T.loc6_6.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%T.loc6_6.2 (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_32: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_26: type = splice_block %ptr.loc6_26.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %p.param: @F.%ptr.loc6_26.2 (%ptr.d83) = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_26: type = splice_block %ptr.loc6_26.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] { // CHECK:STDOUT: %T.ref.loc6_25: type = name_ref T, %T.loc6_6.1 [symbolic = %T.loc6_6.2 (constants.%T)] -// CHECK:STDOUT: %const.loc6_19.1: type = const_type %T [symbolic = %const.loc6_19.2 (constants.%const.1)] -// CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.1 [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] +// CHECK:STDOUT: %const.loc6_19.1: type = const_type %T [symbolic = %const.loc6_19.2 (constants.%const.0b7)] +// CHECK:STDOUT: %ptr.loc6_26.1: type = ptr_type %const.0b7 [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc6_26.2 (%ptr.1) = bind_name p, %p.param +// CHECK:STDOUT: %p: @F.%ptr.loc6_26.2 (%ptr.d83) = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref @F.%T.loc6_6.2 (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.%T.loc6_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %const.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %const.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.019 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.019 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %const.668 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %const.668 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8_22: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %const: type = const_type %C [template = constants.%const.2] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %const: type = const_type %C [template = constants.%const.668] +// CHECK:STDOUT: %p.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc8_9: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %const.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %const.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %const.668 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %const.668 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -577,18 +577,18 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { // CHECK:STDOUT: %T.loc6_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %const.loc6_19.2: type = const_type @F.%T.loc6_6.2 (%T) [symbolic = %const.loc6_19.2 (constants.%const.1)] -// CHECK:STDOUT: %ptr.loc6_26.2: type = ptr_type @F.%const.loc6_19.2 (%const.1) [symbolic = %ptr.loc6_26.2 (constants.%ptr.1)] +// CHECK:STDOUT: %const.loc6_19.2: type = const_type @F.%T.loc6_6.2 (%T) [symbolic = %const.loc6_19.2 (constants.%const.0b7)] +// CHECK:STDOUT: %ptr.loc6_26.2: type = ptr_type @F.%const.loc6_19.2 (%const.0b7) [symbolic = %ptr.loc6_26.2 (constants.%ptr.d83)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_29: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_29 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_26.2 (%ptr.1) [symbolic = %require_complete.loc6_17 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc6_29: = require_complete_type @F.%T.loc6_6.2 (%T) [symbolic = %require_complete.loc6_29 (constants.%require_complete.db1)] +// CHECK:STDOUT: %require_complete.loc6_17: = require_complete_type @F.%ptr.loc6_26.2 (%ptr.d83) [symbolic = %require_complete.loc6_17 (constants.%require_complete.ecd)] // CHECK:STDOUT: %F.specific_fn.loc6_43.2: = specific_function constants.%F, @F(%T.loc6_6.2) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_26.2 (%ptr.1)) -> @F.%T.loc6_6.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%p.param_patt: @F.%ptr.loc6_26.2 (%ptr.d83)) -> @F.%T.loc6_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_26.2 (%ptr.1) = name_ref p, %p +// CHECK:STDOUT: %p.ref: @F.%ptr.loc6_26.2 (%ptr.d83) = name_ref p, %p // CHECK:STDOUT: %F.specific_fn.loc6_43.1: = specific_function %F.ref, @F(constants.%T) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn)] // CHECK:STDOUT: %F.call: init @F.%T.loc6_6.2 (%T) = call %F.specific_fn.loc6_43.1(%p.ref) // CHECK:STDOUT: %.loc6_47.1: @F.%T.loc6_6.2 (%T) = value_of_initializer %F.call @@ -597,22 +597,22 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.2) -> %return.param_patt: %const.2 { +// CHECK:STDOUT: fn @G(%p.param_patt: %ptr.019) -> %return.param_patt: %const.668 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc6_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_6.2 => constants.%T -// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.1 -// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.1 +// CHECK:STDOUT: %const.loc6_19.2 => constants.%const.0b7 +// CHECK:STDOUT: %ptr.loc6_26.2 => constants.%ptr.d83 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_29 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.2 +// CHECK:STDOUT: %require_complete.loc6_29 => constants.%require_complete.db1 +// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.ecd // CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/aggregate.carbon b/toolchain/check/testdata/eval/aggregate.carbon index 3aa2699675e8..41cf4310acff 100644 --- a/toolchain/check/testdata/eval/aggregate.carbon +++ b/toolchain/check/testdata/eval/aggregate.carbon @@ -21,51 +21,51 @@ var struct_access: [i32; 1] = (0,) as [i32; {.a = 3, .b = 1}.b]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple.58e: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %struct_type.c.b.a: type = struct_type {.c: Core.IntLiteral, .b: Core.IntLiteral, .a: Core.IntLiteral} [template] // CHECK:STDOUT: %struct_type.b.a.c: type = struct_type {.b: %i32, .a: %i32, .c: %i32} [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %struct.1: %struct_type.b.a.c = struct_value (%int_2.2, %int_1.2, %int_3.2) [template] -// CHECK:STDOUT: %struct.2: %struct_type.a.b.c = struct_value (%int_1.2, %int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %array_type: type = array_type %int_1.1, %i32 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %struct.de7: %struct_type.b.a.c = struct_value (%int_2.166, %int_1.c60, %int_3.25b) [template] +// CHECK:STDOUT: %struct.cca: %struct_type.a.b.c = struct_value (%int_1.c60, %int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %i32 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template] -// CHECK:STDOUT: %tuple.type.5: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.5 = tuple_value (%int_5, %int_7, %int_1.1, %int_9) [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.2) [template] +// CHECK:STDOUT: %tuple.type.d46: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.869: %tuple.type.d46 = tuple_value (%int_5, %int_7, %int_1.5b8, %int_9) [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.f61) [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct.3: %struct_type.a.b = struct_value (%int_3.1, %int_1.1) [template] +// CHECK:STDOUT: %struct.a81: %struct_type.a.b = struct_value (%int_3.1ba, %int_1.5b8) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -80,8 +80,8 @@ var struct_access: [i32; 1] = (0,) as [i32; {.a = 3, .b = 1}.b]; // CHECK:STDOUT: .struct_access = %struct_access // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %tuple_copy.var: ref %tuple.type.2 = var tuple_copy -// CHECK:STDOUT: %tuple_copy: ref %tuple.type.2 = bind_name tuple_copy, %tuple_copy.var +// CHECK:STDOUT: %tuple_copy.var: ref %tuple.type.471 = var tuple_copy +// CHECK:STDOUT: %tuple_copy: ref %tuple.type.471 = bind_name tuple_copy, %tuple_copy.var // CHECK:STDOUT: %struct_copy.var: ref %struct_type.a.b.c = var struct_copy // CHECK:STDOUT: %struct_copy: ref %struct_type.a.b.c = bind_name struct_copy, %struct_copy.var // CHECK:STDOUT: %tuple_index.var: ref %array_type = var tuple_index @@ -92,41 +92,41 @@ var struct_access: [i32; 1] = (0,) as [i32; {.a = 3, .b = 1}.b]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc11_35.1: %tuple.type.3 = tuple_literal (%int_1.loc11, %int_2.loc11) +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc11_35.1: %tuple.type.f94 = tuple_literal (%int_1.loc11, %int_2.loc11) // CHECK:STDOUT: %int_32.loc11_41: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_41: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_46: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_46: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_49.1: %tuple.type.1 = tuple_literal (%i32.loc11_41, %i32.loc11_46) -// CHECK:STDOUT: %.loc11_49.2: type = converted %.loc11_49.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %impl.elem0.loc11_35.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_35.1: = bound_method %int_1.loc11, %impl.elem0.loc11_35.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_35.1: = specific_function %Convert.bound.loc11_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_35.1: init %i32 = call %Convert.specific_fn.loc11_35.1(%int_1.loc11) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_35.2: %i32 = value_of_initializer %int.convert_checked.loc11_35.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_35.3: %i32 = converted %int_1.loc11, %.loc11_35.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_35.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_35.2: = bound_method %int_2.loc11, %impl.elem0.loc11_35.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_35.2: = specific_function %Convert.bound.loc11_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_35.2: init %i32 = call %Convert.specific_fn.loc11_35.2(%int_2.loc11) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_35.4: %i32 = value_of_initializer %int.convert_checked.loc11_35.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_35.5: %i32 = converted %int_2.loc11, %.loc11_35.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %tuple.loc11: %tuple.type.2 = tuple_value (%.loc11_35.3, %.loc11_35.5) [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc11_37.1: %tuple.type.2 = converted %.loc11_35.1, %tuple.loc11 [template = constants.%tuple.1] -// CHECK:STDOUT: %tuple.elem0.loc11_37.1: %i32 = tuple_access %.loc11_37.1, element0 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc11_49.1: %tuple.type.24b = tuple_literal (%i32.loc11_41, %i32.loc11_46) +// CHECK:STDOUT: %.loc11_49.2: type = converted %.loc11_49.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %impl.elem0.loc11_35.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_35.1: = bound_method %int_1.loc11, %impl.elem0.loc11_35.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_35.1: = specific_function %Convert.bound.loc11_35.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_35.1: init %i32 = call %Convert.specific_fn.loc11_35.1(%int_1.loc11) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_35.2: %i32 = value_of_initializer %int.convert_checked.loc11_35.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_35.3: %i32 = converted %int_1.loc11, %.loc11_35.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_35.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_35.2: = bound_method %int_2.loc11, %impl.elem0.loc11_35.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_35.2: = specific_function %Convert.bound.loc11_35.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_35.2: init %i32 = call %Convert.specific_fn.loc11_35.2(%int_2.loc11) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_35.4: %i32 = value_of_initializer %int.convert_checked.loc11_35.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_35.5: %i32 = converted %int_2.loc11, %.loc11_35.4 [template = constants.%int_2.166] +// CHECK:STDOUT: %tuple.loc11: %tuple.type.471 = tuple_value (%.loc11_35.3, %.loc11_35.5) [template = constants.%tuple.58e] +// CHECK:STDOUT: %.loc11_37.1: %tuple.type.471 = converted %.loc11_35.1, %tuple.loc11 [template = constants.%tuple.58e] +// CHECK:STDOUT: %tuple.elem0.loc11_37.1: %i32 = tuple_access %.loc11_37.1, element0 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc11_37.2: ref %i32 = tuple_access file.%tuple_copy.var, element0 -// CHECK:STDOUT: %.loc11_37.2: init %i32 = initialize_from %tuple.elem0.loc11_37.1 to %tuple.elem0.loc11_37.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple.elem1.loc11_37.1: %i32 = tuple_access %.loc11_37.1, element1 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc11_37.2: init %i32 = initialize_from %tuple.elem0.loc11_37.1 to %tuple.elem0.loc11_37.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple.elem1.loc11_37.1: %i32 = tuple_access %.loc11_37.1, element1 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc11_37.2: ref %i32 = tuple_access file.%tuple_copy.var, element1 -// CHECK:STDOUT: %.loc11_37.3: init %i32 = initialize_from %tuple.elem1.loc11_37.1 to %tuple.elem1.loc11_37.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_37.4: init %tuple.type.2 = tuple_init (%.loc11_37.2, %.loc11_37.3) to file.%tuple_copy.var [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc11_50: init %tuple.type.2 = converted %.loc11_37.1, %.loc11_37.4 [template = constants.%tuple.1] +// CHECK:STDOUT: %.loc11_37.3: init %i32 = initialize_from %tuple.elem1.loc11_37.1 to %tuple.elem1.loc11_37.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_37.4: init %tuple.type.471 = tuple_init (%.loc11_37.2, %.loc11_37.3) to file.%tuple_copy.var [template = constants.%tuple.58e] +// CHECK:STDOUT: %.loc11_50: init %tuple.type.471 = converted %.loc11_37.1, %.loc11_37.4 [template = constants.%tuple.58e] // CHECK:STDOUT: assign file.%tuple_copy.var, %.loc11_50 -// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_2.loc13: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_2.loc13: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc13_71.1: %struct_type.c.b.a = struct_literal (%int_3.loc13, %int_2.loc13, %int_1.loc13) // CHECK:STDOUT: %int_32.loc13_81: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_81: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] @@ -135,84 +135,84 @@ var struct_access: [i32; 1] = (0,) as [i32; {.a = 3, .b = 1}.b]; // CHECK:STDOUT: %int_32.loc13_99: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_99: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.b.a.c: type = struct_type {.b: %i32, .a: %i32, .c: %i32} [template = constants.%struct_type.b.a.c] -// CHECK:STDOUT: %impl.elem0.loc13_71.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_71.1: = bound_method %int_2.loc13, %impl.elem0.loc13_71.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_71.1: = specific_function %Convert.bound.loc13_71.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_71.1: init %i32 = call %Convert.specific_fn.loc13_71.1(%int_2.loc13) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_71.2: %i32 = value_of_initializer %int.convert_checked.loc13_71.1 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_71.3: %i32 = converted %int_2.loc13, %.loc13_71.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc13_71.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_71.2: = bound_method %int_1.loc13, %impl.elem0.loc13_71.2 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_71.2: = specific_function %Convert.bound.loc13_71.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_71.2: init %i32 = call %Convert.specific_fn.loc13_71.2(%int_1.loc13) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_71.4: %i32 = value_of_initializer %int.convert_checked.loc13_71.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_71.5: %i32 = converted %int_1.loc13, %.loc13_71.4 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc13_71.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_71.3: = bound_method %int_3.loc13, %impl.elem0.loc13_71.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc13_71.3: = specific_function %Convert.bound.loc13_71.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc13_71.3: init %i32 = call %Convert.specific_fn.loc13_71.3(%int_3.loc13) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_71.6: %i32 = value_of_initializer %int.convert_checked.loc13_71.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_71.7: %i32 = converted %int_3.loc13, %.loc13_71.6 [template = constants.%int_3.2] -// CHECK:STDOUT: %struct.loc13: %struct_type.b.a.c = struct_value (%.loc13_71.3, %.loc13_71.5, %.loc13_71.7) [template = constants.%struct.1] -// CHECK:STDOUT: %.loc13_73.1: %struct_type.b.a.c = converted %.loc13_71.1, %struct.loc13 [template = constants.%struct.1] -// CHECK:STDOUT: %.loc13_73.2: %i32 = struct_access %.loc13_73.1, element1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc13_71.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_71.1: = bound_method %int_2.loc13, %impl.elem0.loc13_71.1 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_71.1: = specific_function %Convert.bound.loc13_71.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc13_71.1: init %i32 = call %Convert.specific_fn.loc13_71.1(%int_2.loc13) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_71.2: %i32 = value_of_initializer %int.convert_checked.loc13_71.1 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_71.3: %i32 = converted %int_2.loc13, %.loc13_71.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc13_71.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_71.2: = bound_method %int_1.loc13, %impl.elem0.loc13_71.2 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13_71.2: = specific_function %Convert.bound.loc13_71.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13_71.2: init %i32 = call %Convert.specific_fn.loc13_71.2(%int_1.loc13) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_71.4: %i32 = value_of_initializer %int.convert_checked.loc13_71.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_71.5: %i32 = converted %int_1.loc13, %.loc13_71.4 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc13_71.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_71.3: = bound_method %int_3.loc13, %impl.elem0.loc13_71.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc13_71.3: = specific_function %Convert.bound.loc13_71.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc13_71.3: init %i32 = call %Convert.specific_fn.loc13_71.3(%int_3.loc13) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc13_71.6: %i32 = value_of_initializer %int.convert_checked.loc13_71.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc13_71.7: %i32 = converted %int_3.loc13, %.loc13_71.6 [template = constants.%int_3.25b] +// CHECK:STDOUT: %struct.loc13: %struct_type.b.a.c = struct_value (%.loc13_71.3, %.loc13_71.5, %.loc13_71.7) [template = constants.%struct.de7] +// CHECK:STDOUT: %.loc13_73.1: %struct_type.b.a.c = converted %.loc13_71.1, %struct.loc13 [template = constants.%struct.de7] +// CHECK:STDOUT: %.loc13_73.2: %i32 = struct_access %.loc13_73.1, element1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc13_73.3: ref %i32 = struct_access file.%struct_copy.var, element1 -// CHECK:STDOUT: %.loc13_73.4: init %i32 = initialize_from %.loc13_73.2 to %.loc13_73.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_73.5: %i32 = struct_access %.loc13_73.1, element0 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc13_73.4: init %i32 = initialize_from %.loc13_73.2 to %.loc13_73.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_73.5: %i32 = struct_access %.loc13_73.1, element0 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc13_73.6: ref %i32 = struct_access file.%struct_copy.var, element0 -// CHECK:STDOUT: %.loc13_73.7: init %i32 = initialize_from %.loc13_73.5 to %.loc13_73.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13_73.8: %i32 = struct_access %.loc13_73.1, element2 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc13_73.7: init %i32 = initialize_from %.loc13_73.5 to %.loc13_73.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13_73.8: %i32 = struct_access %.loc13_73.1, element2 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc13_73.9: ref %i32 = struct_access file.%struct_copy.var, element2 -// CHECK:STDOUT: %.loc13_73.10: init %i32 = initialize_from %.loc13_73.8 to %.loc13_73.9 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_73.11: init %struct_type.a.b.c = struct_init (%.loc13_73.4, %.loc13_73.7, %.loc13_73.10) to file.%struct_copy.var [template = constants.%struct.2] -// CHECK:STDOUT: %.loc13_103: init %struct_type.a.b.c = converted %.loc13_73.1, %.loc13_73.11 [template = constants.%struct.2] +// CHECK:STDOUT: %.loc13_73.10: init %i32 = initialize_from %.loc13_73.8 to %.loc13_73.9 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc13_73.11: init %struct_type.a.b.c = struct_init (%.loc13_73.4, %.loc13_73.7, %.loc13_73.10) to file.%struct_copy.var [template = constants.%struct.cca] +// CHECK:STDOUT: %.loc13_103: init %struct_type.a.b.c = converted %.loc13_73.1, %.loc13_73.11 [template = constants.%struct.cca] // CHECK:STDOUT: assign file.%struct_copy.var, %.loc13_103 -// CHECK:STDOUT: %int_0.loc15_30: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc15_32.1: %tuple.type.4 = tuple_literal (%int_0.loc15_30) +// CHECK:STDOUT: %int_0.loc15_30: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc15_32.1: %tuple.type.985 = tuple_literal (%int_0.loc15_30) // CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5] // CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7] -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9] -// CHECK:STDOUT: %.loc15_54.1: %tuple.type.5 = tuple_literal (%int_5, %int_7, %int_1.loc15, %int_9) -// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %tuple.loc15: %tuple.type.5 = tuple_value (%int_5, %int_7, %int_1.loc15, %int_9) [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc15_54.2: %tuple.type.5 = converted %.loc15_54.1, %tuple.loc15 [template = constants.%tuple.2] -// CHECK:STDOUT: %tuple.elem2: Core.IntLiteral = tuple_access %.loc15_54.2, element2 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc15_54.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc15, %int_9) +// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %tuple.loc15: %tuple.type.d46 = tuple_value (%int_5, %int_7, %int_1.loc15, %int_9) [template = constants.%tuple.869] +// CHECK:STDOUT: %.loc15_54.2: %tuple.type.d46 = converted %.loc15_54.1, %tuple.loc15 [template = constants.%tuple.869] +// CHECK:STDOUT: %tuple.elem2: Core.IntLiteral = tuple_access %.loc15_54.2, element2 [template = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc15: type = array_type %tuple.elem2, %i32 [template = constants.%array_type] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_0.loc15_30, %impl.elem0.loc15 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_0.loc15_30) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc15_32.2: init %i32 = converted %int_0.loc15_30, %int.convert_checked.loc15 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_0.loc15_30, %impl.elem0.loc15 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_0.loc15_30) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc15_32.2: init %i32 = converted %int_0.loc15_30, %int.convert_checked.loc15 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc15_5: ref %array_type = splice_block file.%tuple_index.var {} -// CHECK:STDOUT: %int_0.loc15_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc15_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc15_32.3: ref %i32 = array_index %.loc15_5, %int_0.loc15_32 -// CHECK:STDOUT: %.loc15_32.4: init %i32 = initialize_from %.loc15_32.2 to %.loc15_32.3 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc15_32.4: init %i32 = initialize_from %.loc15_32.2 to %.loc15_32.3 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc15_32.5: init %array_type = array_init (%.loc15_32.4) to %.loc15_5 [template = constants.%array] // CHECK:STDOUT: %.loc15_34: init %array_type = converted %.loc15_32.1, %.loc15_32.5 [template = constants.%array] // CHECK:STDOUT: assign file.%tuple_index.var, %.loc15_34 -// CHECK:STDOUT: %int_0.loc17_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc17_34.1: %tuple.type.4 = tuple_literal (%int_0.loc17_32) +// CHECK:STDOUT: %int_0.loc17_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc17_34.1: %tuple.type.985 = tuple_literal (%int_0.loc17_32) // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_3.loc17: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_3.loc17: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc17_60.1: %struct_type.a.b = struct_literal (%int_3.loc17, %int_1.loc17) -// CHECK:STDOUT: %struct.loc17: %struct_type.a.b = struct_value (%int_3.loc17, %int_1.loc17) [template = constants.%struct.3] -// CHECK:STDOUT: %.loc17_60.2: %struct_type.a.b = converted %.loc17_60.1, %struct.loc17 [template = constants.%struct.3] -// CHECK:STDOUT: %.loc17_61: Core.IntLiteral = struct_access %.loc17_60.2, element1 [template = constants.%int_1.1] +// CHECK:STDOUT: %struct.loc17: %struct_type.a.b = struct_value (%int_3.loc17, %int_1.loc17) [template = constants.%struct.a81] +// CHECK:STDOUT: %.loc17_60.2: %struct_type.a.b = converted %.loc17_60.1, %struct.loc17 [template = constants.%struct.a81] +// CHECK:STDOUT: %.loc17_61: Core.IntLiteral = struct_access %.loc17_60.2, element1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %array_type.loc17: type = array_type %.loc17_61, %i32 [template = constants.%array_type] -// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_0.loc17_32, %impl.elem0.loc17 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_0.loc17_32) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc17_34.2: init %i32 = converted %int_0.loc17_32, %int.convert_checked.loc17 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_0.loc17_32, %impl.elem0.loc17 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_0.loc17_32) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc17_34.2: init %i32 = converted %int_0.loc17_32, %int.convert_checked.loc17 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc17_5: ref %array_type = splice_block file.%struct_access.var {} -// CHECK:STDOUT: %int_0.loc17_34: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc17_34: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc17_34.3: ref %i32 = array_index %.loc17_5, %int_0.loc17_34 -// CHECK:STDOUT: %.loc17_34.4: init %i32 = initialize_from %.loc17_34.2 to %.loc17_34.3 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc17_34.4: init %i32 = initialize_from %.loc17_34.2 to %.loc17_34.3 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc17_34.5: init %array_type = array_init (%.loc17_34.4) to %.loc17_5 [template = constants.%array] // CHECK:STDOUT: %.loc17_36: init %array_type = converted %.loc17_34.1, %.loc17_34.5 [template = constants.%array] // CHECK:STDOUT: assign file.%struct_access.var, %.loc17_36 diff --git a/toolchain/check/testdata/eval/fail_aggregate.carbon b/toolchain/check/testdata/eval/fail_aggregate.carbon index 06c14996a320..2d60d8ae075c 100644 --- a/toolchain/check/testdata/eval/fail_aggregate.carbon +++ b/toolchain/check/testdata/eval/fail_aggregate.carbon @@ -20,44 +20,44 @@ var array_index: [i32; 1] = (0,) as [i32; ((5, 7, 1, 9) as [i32; 4])[2]]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_1.1, %i32 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %array_type.b8e: type = array_type %int_1.5b8, %i32 [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %int_7.1: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %int_9.1: Core.IntLiteral = int_value 9 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [template] +// CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [template] +// CHECK:STDOUT: %tuple.type.d46: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_4, %i32 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_7.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_7.2: %i32 = int_value 7 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %array_type.8d1: type = array_type %int_4, %i32 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %Convert.bound.eba: = bound_method %int_7.29f, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.785: = specific_function %Convert.bound.eba, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_7.2da: %i32 = int_value 7 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_9.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_9.2: %i32 = int_value 9 [template] -// CHECK:STDOUT: %array: %array_type.2 = tuple_value (%int_5.2, %int_7.2, %int_1.2, %int_9.2) [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.cc8: = bound_method %int_9.988, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b8b: = specific_function %Convert.bound.cc8, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_9.82c: %i32 = int_value 9 [template] +// CHECK:STDOUT: %array: %array_type.8d1 = tuple_value (%int_5.70b, %int_7.2da, %int_1.c60, %int_9.82c) [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -69,70 +69,70 @@ var array_index: [i32; 1] = (0,) as [i32; ((5, 7, 1, 9) as [i32; 4])[2]]; // CHECK:STDOUT: .array_index = %array_index // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %array_index.var: ref %array_type.1 = var array_index -// CHECK:STDOUT: %array_index: ref %array_type.1 = bind_name array_index, %array_index.var +// CHECK:STDOUT: %array_index.var: ref %array_type.b8e = var array_index +// CHECK:STDOUT: %array_index: ref %array_type.b8e = bind_name array_index, %array_index.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0.loc16_30: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %.loc16_32: %tuple.type.1 = tuple_literal (%int_0.loc16_30) +// CHECK:STDOUT: %.loc16_32: %tuple.type.985 = tuple_literal (%int_0.loc16_30) // CHECK:STDOUT: %int_32.loc16_38: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_38: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.1] -// CHECK:STDOUT: %int_1.loc16_51: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.1] -// CHECK:STDOUT: %.loc16_55.1: %tuple.type.2 = tuple_literal (%int_5, %int_7, %int_1.loc16_51, %int_9) +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] +// CHECK:STDOUT: %int_1.loc16_51: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.988] +// CHECK:STDOUT: %.loc16_55.1: %tuple.type.d46 = tuple_literal (%int_5, %int_7, %int_1.loc16_51, %int_9) // CHECK:STDOUT: %int_32.loc16_61: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_61: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4] -// CHECK:STDOUT: %array_type: type = array_type %int_4, %i32 [template = constants.%array_type.2] -// CHECK:STDOUT: %impl.elem0.loc16_55.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_55.1: = bound_method %int_5, %impl.elem0.loc16_55.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc16_55.1: = specific_function %Convert.bound.loc16_55.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc16_55.1: init %i32 = call %Convert.specific_fn.loc16_55.1(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc16_55.2: init %i32 = converted %int_5, %int.convert_checked.loc16_55.1 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc16_55.3: ref %array_type.2 = temporary_storage +// CHECK:STDOUT: %array_type: type = array_type %int_4, %i32 [template = constants.%array_type.8d1] +// CHECK:STDOUT: %impl.elem0.loc16_55.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_55.1: = bound_method %int_5, %impl.elem0.loc16_55.1 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn.loc16_55.1: = specific_function %Convert.bound.loc16_55.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked.loc16_55.1: init %i32 = call %Convert.specific_fn.loc16_55.1(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc16_55.2: init %i32 = converted %int_5, %int.convert_checked.loc16_55.1 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc16_55.3: ref %array_type.8d1 = temporary_storage // CHECK:STDOUT: %int_0.loc16_55: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc16_55.4: ref %i32 = array_index %.loc16_55.3, %int_0.loc16_55 -// CHECK:STDOUT: %.loc16_55.5: init %i32 = initialize_from %.loc16_55.2 to %.loc16_55.4 [template = constants.%int_5.2] -// CHECK:STDOUT: %impl.elem0.loc16_55.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_55.2: = bound_method %int_7, %impl.elem0.loc16_55.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc16_55.2: = specific_function %Convert.bound.loc16_55.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc16_55.2: init %i32 = call %Convert.specific_fn.loc16_55.2(%int_7) [template = constants.%int_7.2] -// CHECK:STDOUT: %.loc16_55.6: init %i32 = converted %int_7, %int.convert_checked.loc16_55.2 [template = constants.%int_7.2] -// CHECK:STDOUT: %int_1.loc16_55: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc16_55.5: init %i32 = initialize_from %.loc16_55.2 to %.loc16_55.4 [template = constants.%int_5.70b] +// CHECK:STDOUT: %impl.elem0.loc16_55.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_55.2: = bound_method %int_7, %impl.elem0.loc16_55.2 [template = constants.%Convert.bound.eba] +// CHECK:STDOUT: %Convert.specific_fn.loc16_55.2: = specific_function %Convert.bound.loc16_55.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.785] +// CHECK:STDOUT: %int.convert_checked.loc16_55.2: init %i32 = call %Convert.specific_fn.loc16_55.2(%int_7) [template = constants.%int_7.2da] +// CHECK:STDOUT: %.loc16_55.6: init %i32 = converted %int_7, %int.convert_checked.loc16_55.2 [template = constants.%int_7.2da] +// CHECK:STDOUT: %int_1.loc16_55: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc16_55.7: ref %i32 = array_index %.loc16_55.3, %int_1.loc16_55 -// CHECK:STDOUT: %.loc16_55.8: init %i32 = initialize_from %.loc16_55.6 to %.loc16_55.7 [template = constants.%int_7.2] -// CHECK:STDOUT: %impl.elem0.loc16_55.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_55.3: = bound_method %int_1.loc16_51, %impl.elem0.loc16_55.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc16_55.3: = specific_function %Convert.bound.loc16_55.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc16_55.3: init %i32 = call %Convert.specific_fn.loc16_55.3(%int_1.loc16_51) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_55.9: init %i32 = converted %int_1.loc16_51, %int.convert_checked.loc16_55.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %int_2.loc16_55: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc16_55.8: init %i32 = initialize_from %.loc16_55.6 to %.loc16_55.7 [template = constants.%int_7.2da] +// CHECK:STDOUT: %impl.elem0.loc16_55.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_55.3: = bound_method %int_1.loc16_51, %impl.elem0.loc16_55.3 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16_55.3: = specific_function %Convert.bound.loc16_55.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16_55.3: init %i32 = call %Convert.specific_fn.loc16_55.3(%int_1.loc16_51) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_55.9: init %i32 = converted %int_1.loc16_51, %int.convert_checked.loc16_55.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %int_2.loc16_55: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc16_55.10: ref %i32 = array_index %.loc16_55.3, %int_2.loc16_55 -// CHECK:STDOUT: %.loc16_55.11: init %i32 = initialize_from %.loc16_55.9 to %.loc16_55.10 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc16_55.4: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_55.4: = bound_method %int_9, %impl.elem0.loc16_55.4 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc16_55.4: = specific_function %Convert.bound.loc16_55.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc16_55.4: init %i32 = call %Convert.specific_fn.loc16_55.4(%int_9) [template = constants.%int_9.2] -// CHECK:STDOUT: %.loc16_55.12: init %i32 = converted %int_9, %int.convert_checked.loc16_55.4 [template = constants.%int_9.2] +// CHECK:STDOUT: %.loc16_55.11: init %i32 = initialize_from %.loc16_55.9 to %.loc16_55.10 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc16_55.4: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_55.4: = bound_method %int_9, %impl.elem0.loc16_55.4 [template = constants.%Convert.bound.cc8] +// CHECK:STDOUT: %Convert.specific_fn.loc16_55.4: = specific_function %Convert.bound.loc16_55.4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b8b] +// CHECK:STDOUT: %int.convert_checked.loc16_55.4: init %i32 = call %Convert.specific_fn.loc16_55.4(%int_9) [template = constants.%int_9.82c] +// CHECK:STDOUT: %.loc16_55.12: init %i32 = converted %int_9, %int.convert_checked.loc16_55.4 [template = constants.%int_9.82c] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3] // CHECK:STDOUT: %.loc16_55.13: ref %i32 = array_index %.loc16_55.3, %int_3 -// CHECK:STDOUT: %.loc16_55.14: init %i32 = initialize_from %.loc16_55.12 to %.loc16_55.13 [template = constants.%int_9.2] -// CHECK:STDOUT: %.loc16_55.15: init %array_type.2 = array_init (%.loc16_55.5, %.loc16_55.8, %.loc16_55.11, %.loc16_55.14) to %.loc16_55.3 [template = constants.%array] -// CHECK:STDOUT: %.loc16_57.1: init %array_type.2 = converted %.loc16_55.1, %.loc16_55.15 [template = constants.%array] -// CHECK:STDOUT: %int_2.loc16_70: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc16_57.2: ref %array_type.2 = temporary %.loc16_55.3, %.loc16_57.1 +// CHECK:STDOUT: %.loc16_55.14: init %i32 = initialize_from %.loc16_55.12 to %.loc16_55.13 [template = constants.%int_9.82c] +// CHECK:STDOUT: %.loc16_55.15: init %array_type.8d1 = array_init (%.loc16_55.5, %.loc16_55.8, %.loc16_55.11, %.loc16_55.14) to %.loc16_55.3 [template = constants.%array] +// CHECK:STDOUT: %.loc16_57.1: init %array_type.8d1 = converted %.loc16_55.1, %.loc16_55.15 [template = constants.%array] +// CHECK:STDOUT: %int_2.loc16_70: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc16_57.2: ref %array_type.8d1 = temporary %.loc16_55.3, %.loc16_57.1 // CHECK:STDOUT: %int_32.loc16_71: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_71: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc16_70: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16_70: = bound_method %int_2.loc16_70, %impl.elem0.loc16_70 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc16_70: = specific_function %Convert.bound.loc16_70, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc16_70: init %i32 = call %Convert.specific_fn.loc16_70(%int_2.loc16_70) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc16_70.1: %i32 = value_of_initializer %int.convert_checked.loc16_70 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc16_70.2: %i32 = converted %int_2.loc16_70, %.loc16_70.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %impl.elem0.loc16_70: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16_70: = bound_method %int_2.loc16_70, %impl.elem0.loc16_70 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc16_70: = specific_function %Convert.bound.loc16_70, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc16_70: init %i32 = call %Convert.specific_fn.loc16_70(%int_2.loc16_70) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc16_70.1: %i32 = value_of_initializer %int.convert_checked.loc16_70 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc16_70.2: %i32 = converted %int_2.loc16_70, %.loc16_70.1 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc16_71.1: ref %i32 = array_index %.loc16_57.2, %.loc16_70.2 // CHECK:STDOUT: %.loc16_71.2: %i32 = bind_value %.loc16_71.1 // CHECK:STDOUT: assign file.%array_index.var, diff --git a/toolchain/check/testdata/eval/fail_symbolic.carbon b/toolchain/check/testdata/eval/fail_symbolic.carbon index 651a420ab0b0..138e0e0f109d 100644 --- a/toolchain/check/testdata/eval/fail_symbolic.carbon +++ b/toolchain/check/testdata/eval/fail_symbolic.carbon @@ -21,21 +21,21 @@ fn G(N:! i32) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.2, %Convert.9 [symbolic] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.3e4, %Convert.079 [symbolic] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.2) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.3e4) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,24 +48,24 @@ fn G(N:! i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %N.patt.loc12_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc12_6.1, runtime_param [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc12_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc12_6.1, runtime_param [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.52a)] // CHECK:STDOUT: } { // CHECK:STDOUT: %N.param: %i32 = value_param runtime_param // CHECK:STDOUT: %.loc12: type = splice_block %i32 [template = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc12_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc12_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc12_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc12_6.2 (constants.%N.3e4)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G(%N.loc12_6.1: %i32) { -// CHECK:STDOUT: %N.loc12_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc12_6.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc12_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.loc12_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc12_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc12_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc12_6.2 (constants.%N.patt.52a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc12_6.2, constants.%Convert.9 [symbolic = %Convert.bound (constants.%Convert.bound)] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc12_6.2, constants.%Convert.079 [symbolic = %Convert.bound (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.loc12_6.2) [symbolic = %int.convert_checked (constants.%int.convert_checked)] // CHECK:STDOUT: @@ -77,8 +77,8 @@ fn G(N:! i32) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%N.2) { -// CHECK:STDOUT: %N.loc12_6.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc12_6.2 => constants.%N.2 +// CHECK:STDOUT: specific @G(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc12_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc12_6.2 => constants.%N.3e4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/eval/symbolic.carbon b/toolchain/check/testdata/eval/symbolic.carbon index 1e08d7c5e6f7..32426a3ea166 100644 --- a/toolchain/check/testdata/eval/symbolic.carbon +++ b/toolchain/check/testdata/eval/symbolic.carbon @@ -22,15 +22,15 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %const: type = const_type %T [symbolic] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%ptr.1, %const) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %tuple.type.2 [symbolic] +// CHECK:STDOUT: %tuple.type.e07: type = tuple_type (%ptr.251, %const) [symbolic] +// CHECK:STDOUT: %require_complete.21d: = require_complete_type %tuple.type.e07 [symbolic] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.a [symbolic] +// CHECK:STDOUT: %require_complete.96f: = require_complete_type %struct_type.a [symbolic] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] // CHECK:STDOUT: %array_type: type = array_type %int_5, %T [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %array_type [symbolic] +// CHECK:STDOUT: %require_complete.43b: = require_complete_type %array_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -60,19 +60,19 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt.loc12_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_6.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ptr: type = ptr_type @F.%T.loc12_6.2 (%T) [symbolic = %ptr (constants.%ptr.1)] +// CHECK:STDOUT: %ptr: type = ptr_type @F.%T.loc12_6.2 (%T) [symbolic = %ptr (constants.%ptr.251)] // CHECK:STDOUT: %const: type = const_type @F.%T.loc12_6.2 (%T) [symbolic = %const (constants.%const)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%ptr (%ptr.1), @F.%const (%const)) [symbolic = %tuple.type (constants.%tuple.type.2)] -// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @F.%tuple.type (%tuple.type.2) [symbolic = %require_complete.loc13 (constants.%require_complete.1)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.%ptr (%ptr.251), @F.%const (%const)) [symbolic = %tuple.type (constants.%tuple.type.e07)] +// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @F.%tuple.type (%tuple.type.e07) [symbolic = %require_complete.loc13 (constants.%require_complete.21d)] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @F.%T.loc12_6.2 (%T)} [symbolic = %struct_type.a (constants.%struct_type.a)] -// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @F.%struct_type.a (%struct_type.a) [symbolic = %require_complete.loc14 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc14: = require_complete_type @F.%struct_type.a (%struct_type.a) [symbolic = %require_complete.loc14 (constants.%require_complete.96f)] // CHECK:STDOUT: %array_type: type = array_type constants.%int_5, @F.%T.loc12_6.2 (%T) [symbolic = %array_type (constants.%array_type)] -// CHECK:STDOUT: %require_complete.loc15: = require_complete_type @F.%array_type (%array_type) [symbolic = %require_complete.loc15 (constants.%require_complete.3)] +// CHECK:STDOUT: %require_complete.loc15: = require_complete_type @F.%array_type (%array_type) [symbolic = %require_complete.loc15 (constants.%require_complete.43b)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %u.var: ref @F.%tuple.type (%tuple.type.2) = var u -// CHECK:STDOUT: %u: ref @F.%tuple.type (%tuple.type.2) = bind_name u, %u.var +// CHECK:STDOUT: %u.var: ref @F.%tuple.type (%tuple.type.e07) = var u +// CHECK:STDOUT: %u: ref @F.%tuple.type (%tuple.type.e07) = bind_name u, %u.var // CHECK:STDOUT: %v.var: ref @F.%struct_type.a (%struct_type.a) = var v // CHECK:STDOUT: %v: ref @F.%struct_type.a (%struct_type.a) = bind_name v, %v.var // CHECK:STDOUT: %w.var: ref @F.%array_type (%array_type) = var w diff --git a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon index a2a2fb7ac5a8..f6a87bda93a1 100644 --- a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon @@ -25,8 +25,8 @@ fn H() -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -38,7 +38,7 @@ fn H() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -53,30 +53,30 @@ fn H() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_20.1: %tuple.type.1 = tuple_literal (%i32.loc11_12, %i32.loc11_17) -// CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_20.1: %tuple.type.24b = tuple_literal (%i32.loc11_12, %i32.loc11_17) +// CHECK:STDOUT: %.loc11_20.2: type = converted %.loc11_20.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %return.param: ref %tuple.type.471 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.471 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc13_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc13_17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc13_20.1: %tuple.type.1 = tuple_literal (%i32.loc13_12, %i32.loc13_17) -// CHECK:STDOUT: %.loc13_20.2: type = converted %.loc13_20.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc13_20.1: %tuple.type.24b = tuple_literal (%i32.loc13_12, %i32.loc13_17) +// CHECK:STDOUT: %.loc13_20.2: type = converted %.loc13_20.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %return.param: ref %tuple.type.471 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.471 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -89,34 +89,34 @@ fn H() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2; +// CHECK:STDOUT: fn @F() -> %tuple.type.471; // CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @G() -> %return.param_patt: %tuple.type.471 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %tuple.type.2 = var v -// CHECK:STDOUT: %v: ref %tuple.type.2 = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref %tuple.type.471 = var v +// CHECK:STDOUT: %v: ref %tuple.type.471 = bind_name v, %v.var // CHECK:STDOUT: %F.ref.loc14: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc14: ref %tuple.type.2 = splice_block %v.var {} -// CHECK:STDOUT: %F.call.loc14: init %tuple.type.2 = call %F.ref.loc14() to %.loc14 +// CHECK:STDOUT: %.loc14: ref %tuple.type.471 = splice_block %v.var {} +// CHECK:STDOUT: %F.call.loc14: init %tuple.type.471 = call %F.ref.loc14() to %.loc14 // CHECK:STDOUT: assign %v.var, %F.call.loc14 -// CHECK:STDOUT: %v.ref: ref %tuple.type.2 = name_ref v, %v +// CHECK:STDOUT: %v.ref: ref %tuple.type.471 = name_ref v, %v // CHECK:STDOUT: %F.ref.loc15: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc15: ref %tuple.type.2 = splice_block %v.ref {} -// CHECK:STDOUT: %F.call.loc15: init %tuple.type.2 = call %F.ref.loc15() to %.loc15 +// CHECK:STDOUT: %.loc15: ref %tuple.type.471 = splice_block %v.ref {} +// CHECK:STDOUT: %F.call.loc15: init %tuple.type.471 = call %F.ref.loc15() to %.loc15 // CHECK:STDOUT: assign %v.ref, %F.call.loc15 // CHECK:STDOUT: %F.ref.loc16: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc13_8: ref %tuple.type.2 = splice_block %return {} -// CHECK:STDOUT: %F.call.loc16: init %tuple.type.2 = call %F.ref.loc16() to %.loc13_8 +// CHECK:STDOUT: %.loc13_8: ref %tuple.type.471 = splice_block %return {} +// CHECK:STDOUT: %F.call.loc16: init %tuple.type.471 = call %F.ref.loc16() to %.loc13_8 // CHECK:STDOUT: return %F.call.loc16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G] -// CHECK:STDOUT: %.loc20_12.1: ref %tuple.type.2 = temporary_storage -// CHECK:STDOUT: %G.call: init %tuple.type.2 = call %G.ref() to %.loc20_12.1 +// CHECK:STDOUT: %.loc20_12.1: ref %tuple.type.471 = temporary_storage +// CHECK:STDOUT: %G.call: init %tuple.type.471 = call %G.ref() to %.loc20_12.1 // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %.loc20_12.2: ref %tuple.type.2 = temporary %.loc20_12.1, %G.call +// CHECK:STDOUT: %.loc20_12.2: ref %tuple.type.471 = temporary %.loc20_12.1, %G.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc20_12.2, element0 // CHECK:STDOUT: %.loc20_13: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: return %.loc20_13 diff --git a/toolchain/check/testdata/function/builtin/call.carbon b/toolchain/check/testdata/function/builtin/call.carbon index 970039f374e0..6e21f62bad03 100644 --- a/toolchain/check/testdata/function/builtin/call.carbon +++ b/toolchain/check/testdata/function/builtin/call.carbon @@ -21,18 +21,18 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Add.type.1: type = fn_type @Add.1 [template] -// CHECK:STDOUT: %Add: %Add.type.1 = struct_value () [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.2, %i32 [template] +// CHECK:STDOUT: %Add.type.b1f: type = fn_type @Add.1 [template] +// CHECK:STDOUT: %Add: %Add.type.b1f = struct_value () [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: %RuntimeCall.type: type = fn_type @RuntimeCall [template] // CHECK:STDOUT: %RuntimeCall: %RuntimeCall.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -46,7 +46,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: .RuntimeCall = %RuntimeCall.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Add.decl: %Add.type.1 = fn_decl @Add.1 [template = constants.%Add] { +// CHECK:STDOUT: %Add.decl: %Add.type.b1f = fn_decl @Add.1 [template = constants.%Add] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %i32 = binding_pattern b @@ -104,7 +104,7 @@ fn RuntimeCall(a: i32, b: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @RuntimeCall(%a.param_patt: %i32, %b.param_patt: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Add.ref: %Add.type.1 = name_ref Add, file.%Add.decl [template = constants.%Add] +// CHECK:STDOUT: %Add.ref: %Add.type.b1f = name_ref Add, file.%Add.decl [template = constants.%Add] // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a // CHECK:STDOUT: %b.ref: %i32 = name_ref b, %b // CHECK:STDOUT: %int.sadd: init %i32 = call %Add.ref(%a.ref, %b.ref) diff --git a/toolchain/check/testdata/function/builtin/definition.carbon b/toolchain/check/testdata/function/builtin/definition.carbon index a84a47f03e56..9cc9f84f3557 100644 --- a/toolchain/check/testdata/function/builtin/definition.carbon +++ b/toolchain/check/testdata/function/builtin/definition.carbon @@ -21,7 +21,7 @@ fn Add(a: i32, b: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/builtin/fail_redefined.carbon b/toolchain/check/testdata/function/builtin/fail_redefined.carbon index 5494614ef356..06364b1515c6 100644 --- a/toolchain/check/testdata/function/builtin/fail_redefined.carbon +++ b/toolchain/check/testdata/function/builtin/fail_redefined.carbon @@ -52,7 +52,7 @@ fn C(n: i32, m: i32) -> i32 = "int.sadd"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/builtin/method.carbon b/toolchain/check/testdata/function/builtin/method.carbon index af968e3b967a..bbd4c28f8601 100644 --- a/toolchain/check/testdata/function/builtin/method.carbon +++ b/toolchain/check/testdata/function/builtin/method.carbon @@ -22,27 +22,27 @@ var arr: [i32; (1 as i32).(I.F)(2)]; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type.e86: type = facet_access_type %Self.fb7 [symbolic] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] +// CHECK:STDOUT: %assoc0.d14: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, %impl_witness.1 [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.2, %i32 [template] +// CHECK:STDOUT: %impl_witness.6ae: = impl_witness (@impl.1.%F.decl) [template] +// CHECK:STDOUT: %F.type.0e2: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c9c: %F.type.0e2 = struct_value () [template] +// CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, %impl_witness.6ae [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -61,42 +61,42 @@ var arr: [i32; (1 as i32).(I.F)(2)]; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.6ae] // CHECK:STDOUT: %arr.var: ref %array_type = var arr // CHECK:STDOUT: %arr: ref %array_type = bind_name arr, %arr.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %other.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = binding_pattern other -// CHECK:STDOUT: %other.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param_pattern %other.patt, runtime_param1 -// CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] { +// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %other.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = binding_pattern other +// CHECK:STDOUT: %other.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = value_param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc12_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_36: type = facet_access_type %Self.ref.loc12_36 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_36: type = converted %Self.ref.loc12_36, %Self.as_type.loc12_36 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc12_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref.loc12_14 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref.loc12_14, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self.ref.loc12_36: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.fb7)] +// CHECK:STDOUT: %Self.as_type.loc12_36: type = facet_access_type %Self.ref.loc12_36 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] +// CHECK:STDOUT: %.loc12_36: type = converted %Self.ref.loc12_36, %Self.as_type.loc12_36 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] +// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] { +// CHECK:STDOUT: %Self.ref.loc12_14: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.fb7)] +// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref.loc12_14 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] +// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref.loc12_14, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param runtime_param1 -// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc12_27: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_27: type = facet_access_type %Self.ref.loc12_27 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_27.2: type = converted %Self.ref.loc12_27, %Self.as_type.loc12_27 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = value_param runtime_param1 +// CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] { +// CHECK:STDOUT: %Self.ref.loc12_27: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.fb7)] +// CHECK:STDOUT: %Self.as_type.loc12_27: type = facet_access_type %Self.ref.loc12_27 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] +// CHECK:STDOUT: %.loc12_27.2: type = converted %Self.ref.loc12_27, %Self.as_type.loc12_27 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = out_param runtime_param2 -// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = return_slot %return.param +// CHECK:STDOUT: %other: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = out_param runtime_param2 +// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.d14] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -105,7 +105,7 @@ var arr: [i32; (1 as i32).(I.F)(2)]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.0e2 = fn_decl @F.2 [template = constants.%F.c9c] { // CHECK:STDOUT: %self.patt: %i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %i32 = binding_pattern other @@ -137,17 +137,17 @@ var arr: [i32; (1 as i32).(I.F)(2)]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.fb7)] +// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.e86)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1)](%other.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1)) -> @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1); +// CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86)](%other.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86)) -> @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.e86); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2[%self.param_patt: %i32](%other.param_patt: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) { -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.1 +// CHECK:STDOUT: specific @F.1(constants.%Self.fb7) { +// CHECK:STDOUT: %Self => constants.%Self.fb7 +// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.e86 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%I.facet) { diff --git a/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon b/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon index e8c2f8ea9520..435ee0166040 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon @@ -51,7 +51,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template] // CHECK:STDOUT: %MyIntLiteral: type = class_type @MyIntLiteral [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness Core.IntLiteral [template] +// CHECK:STDOUT: %complete_type.972: = complete_type_witness Core.IntLiteral [template] // CHECK:STDOUT: %Int.type: type = fn_type @Int [template] // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %MyInt32: type = class_type @MyInt32 [template] @@ -59,13 +59,13 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %MyAdd.type: type = fn_type @MyAdd [template] // CHECK:STDOUT: %MyAdd: %MyAdd.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_1.2: %MyInt32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_2.2: %MyInt32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_1.d74: %MyInt32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_2.eda: %MyInt32 = int_value 2 [template] // CHECK:STDOUT: %int_3: %MyInt32 = int_value 3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -140,7 +140,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %.loc7_21.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc7_21.2: type = converted %int_literal.make_type, %.loc7_21.1 [template = Core.IntLiteral] // CHECK:STDOUT: adapt_decl %.loc7_21.2 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness Core.IntLiteral [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness Core.IntLiteral [template = constants.%complete_type.972] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%MyIntLiteral @@ -170,7 +170,7 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %return.param.loc15: ref %MyInt32 = out_param runtime_param1 // CHECK:STDOUT: %return.loc15: ref %MyInt32 = return_slot %return.param.loc15 // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%MyInt32 @@ -191,22 +191,22 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: %MyAdd.ref: %MyAdd.type = name_ref MyAdd, file.%MyAdd.decl [template = constants.%MyAdd] // CHECK:STDOUT: %MyInt32.ref.loc22_24: type = name_ref MyInt32, file.%MyInt32.decl [template = constants.%MyInt32] // CHECK:STDOUT: %Make.ref.loc22_31: %Make.type = name_ref Make, @MyInt32.%Make.decl [template = constants.%Make] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %MyIntLiteral.ref.loc22_42: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [template = constants.%MyIntLiteral] -// CHECK:STDOUT: %.loc22_39.1: %MyIntLiteral = as_compatible %int_1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc22_39.2: %MyIntLiteral = converted %int_1, %.loc22_39.1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int.convert_checked.loc22_54: init %MyInt32 = call %Make.ref.loc22_31(%.loc22_39.2) [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc22_39.1: %MyIntLiteral = as_compatible %int_1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc22_39.2: %MyIntLiteral = converted %int_1, %.loc22_39.1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int.convert_checked.loc22_54: init %MyInt32 = call %Make.ref.loc22_31(%.loc22_39.2) [template = constants.%int_1.d74] // CHECK:STDOUT: %MyInt32.ref.loc22_57: type = name_ref MyInt32, file.%MyInt32.decl [template = constants.%MyInt32] // CHECK:STDOUT: %Make.ref.loc22_64: %Make.type = name_ref Make, @MyInt32.%Make.decl [template = constants.%Make] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %MyIntLiteral.ref.loc22_75: type = name_ref MyIntLiteral, file.%MyIntLiteral.decl [template = constants.%MyIntLiteral] -// CHECK:STDOUT: %.loc22_72.1: %MyIntLiteral = as_compatible %int_2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc22_72.2: %MyIntLiteral = converted %int_2, %.loc22_72.1 [template = constants.%int_2.1] -// CHECK:STDOUT: %int.convert_checked.loc22_87: init %MyInt32 = call %Make.ref.loc22_64(%.loc22_72.2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_54.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_54 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc22_54.2: %MyInt32 = converted %int.convert_checked.loc22_54, %.loc22_54.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc22_87.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_87 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_87.2: %MyInt32 = converted %int.convert_checked.loc22_87, %.loc22_87.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc22_72.1: %MyIntLiteral = as_compatible %int_2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc22_72.2: %MyIntLiteral = converted %int_2, %.loc22_72.1 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int.convert_checked.loc22_87: init %MyInt32 = call %Make.ref.loc22_64(%.loc22_72.2) [template = constants.%int_2.eda] +// CHECK:STDOUT: %.loc22_54.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_54 [template = constants.%int_1.d74] +// CHECK:STDOUT: %.loc22_54.2: %MyInt32 = converted %int.convert_checked.loc22_54, %.loc22_54.1 [template = constants.%int_1.d74] +// CHECK:STDOUT: %.loc22_87.1: %MyInt32 = value_of_initializer %int.convert_checked.loc22_87 [template = constants.%int_2.eda] +// CHECK:STDOUT: %.loc22_87.2: %MyInt32 = converted %int.convert_checked.loc22_87, %.loc22_87.1 [template = constants.%int_2.eda] // CHECK:STDOUT: %int.sadd: init %MyInt32 = call %MyAdd.ref(%.loc22_54.2, %.loc22_87.2) [template = constants.%int_3] // CHECK:STDOUT: assign file.%v.var, %int.sadd // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon index a59dd514e325..d79d5f37dd25 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/call_from_operator.carbon @@ -57,65 +57,65 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Int.type: type = fn_type @Int [template] // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] -// CHECK:STDOUT: %Self.1: %Add.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %Op.assoc_type = assoc_entity element0, @Add.%Op.decl [template] +// CHECK:STDOUT: %Self.d51: %Add.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type.c8e: type = facet_access_type %Self.d51 [symbolic] +// CHECK:STDOUT: %Op.type.16a: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.93e: %Op.type.16a = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.16a [template] +// CHECK:STDOUT: %assoc0.dcf: %Op.assoc_type = assoc_entity element0, @Add.%Op.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %As.type.1: type = generic_interface_type @As [template] -// CHECK:STDOUT: %As.generic: %As.type.1 = struct_value () [template] -// CHECK:STDOUT: %As.type.2: type = facet_type <@As, @As(%T)> [symbolic] -// CHECK:STDOUT: %Self.2: %As.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Self.as_type.2: type = facet_access_type %Self.2 [symbolic] -// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @As(%T) [symbolic] -// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.1: type = assoc_entity_type %As.type.2, %Convert.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.2: %Convert.assoc_type.1 = assoc_entity element0, @As.%Convert.decl [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.1 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] -// CHECK:STDOUT: %Self.3: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Self.as_type.3: type = facet_access_type %Self.3 [symbolic] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.2: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.2 [symbolic] -// CHECK:STDOUT: %assoc0.3: %Convert.assoc_type.2 = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %As.type.b51: type = generic_interface_type @As [template] +// CHECK:STDOUT: %As.generic: %As.type.b51 = struct_value () [template] +// CHECK:STDOUT: %As.type.8b0: type = facet_type <@As, @As(%T)> [symbolic] +// CHECK:STDOUT: %Self.a39: %As.type.8b0 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Self.as_type.5fa: type = facet_access_type %Self.a39 [symbolic] +// CHECK:STDOUT: %Convert.type.412: type = fn_type @Convert.1, @As(%T) [symbolic] +// CHECK:STDOUT: %Convert.adc: %Convert.type.412 = struct_value () [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.d24: type = assoc_entity_type %As.type.8b0, %Convert.type.412 [symbolic] +// CHECK:STDOUT: %assoc0.e2f: %Convert.assoc_type.d24 = assoc_entity element0, @As.%Convert.decl [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.96f: type = generic_interface_type @ImplicitAs [template] +// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.96f = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.type.a1f: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] +// CHECK:STDOUT: %Self.819: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Self.as_type.dc3: type = facet_access_type %Self.819 [symbolic] +// CHECK:STDOUT: %Convert.type.b11: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %Convert.639: %Convert.type.b11 = struct_value () [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.4d8: type = assoc_entity_type %ImplicitAs.type.a1f, %Convert.type.b11 [symbolic] +// CHECK:STDOUT: %assoc0.39c: %Convert.assoc_type.4d8 = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] -// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %i32.builtin, %impl_witness.1 [template] -// CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.1, @As(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.3: type = assoc_entity_type %As.type.3, %Convert.type.3 [template] -// CHECK:STDOUT: %assoc0.4: %Convert.assoc_type.3 = assoc_entity element0, @As.%Convert.decl [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [template] -// CHECK:STDOUT: %As.facet: %As.type.2 = facet_value Core.IntLiteral, %impl_witness.2 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.2, @ImplicitAs(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.4: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.5 [template] -// CHECK:STDOUT: %assoc0.5: %Convert.assoc_type.4 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (@impl.3.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.4 [template] -// CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.1: %ImplicitAs.type.2 = facet_value Core.IntLiteral, %impl_witness.3 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template] -// CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.5: type = assoc_entity_type %ImplicitAs.type.4, %Convert.type.7 [template] -// CHECK:STDOUT: %assoc0.6: %Convert.assoc_type.5 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (@impl.4.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.5 [template] -// CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.2: %ImplicitAs.type.2 = facet_value %i32.builtin, %impl_witness.4 [symbolic] +// CHECK:STDOUT: %impl_witness.8dc: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.9ef: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.11a: %Op.type.9ef = struct_value () [template] +// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %i32.builtin, %impl_witness.8dc [template] +// CHECK:STDOUT: %As.type.8e7: type = facet_type <@As, @As(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.d05: type = fn_type @Convert.1, @As(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.5e5: %Convert.type.d05 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.596: type = assoc_entity_type %As.type.8e7, %Convert.type.d05 [template] +// CHECK:STDOUT: %assoc0.c6b: %Convert.assoc_type.596 = assoc_entity element0, @As.%Convert.decl [template] +// CHECK:STDOUT: %impl_witness.fce: = impl_witness (@impl.2.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.6e5: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.b6a: %Convert.type.6e5 = struct_value () [template] +// CHECK:STDOUT: %As.facet: %As.type.8b0 = facet_value Core.IntLiteral, %impl_witness.fce [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.982: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.c1f: type = fn_type @Convert.2, @ImplicitAs(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.338: %Convert.type.c1f = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.918: type = assoc_entity_type %ImplicitAs.type.982, %Convert.type.c1f [template] +// CHECK:STDOUT: %assoc0.e51: %Convert.assoc_type.918 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] +// CHECK:STDOUT: %impl_witness.c5e: = impl_witness (@impl.3.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.928: type = fn_type @Convert.4 [template] +// CHECK:STDOUT: %Convert.4e2: %Convert.type.928 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.f01: %ImplicitAs.type.a1f = facet_value Core.IntLiteral, %impl_witness.c5e [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.5f7: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template] +// CHECK:STDOUT: %Convert.type.dde: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.254: %Convert.type.dde = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.6c1: type = assoc_entity_type %ImplicitAs.type.5f7, %Convert.type.dde [template] +// CHECK:STDOUT: %assoc0.143: %Convert.assoc_type.6c1 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] +// CHECK:STDOUT: %impl_witness.2ba: = impl_witness (@impl.4.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.578: type = fn_type @Convert.5 [template] +// CHECK:STDOUT: %Convert.5d6: %Convert.type.578 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.f95: %ImplicitAs.type.a1f = facet_value %i32.builtin, %impl_witness.2ba [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -151,14 +151,14 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%Add.type] {} {} -// CHECK:STDOUT: %As.decl: %As.type.1 = interface_decl @As [template = constants.%As.generic] { +// CHECK:STDOUT: %As.decl: %As.type.b51 = interface_decl @As [template = constants.%As.generic] { // CHECK:STDOUT: %T.patt.loc11_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc11_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.decl: %ImplicitAs.type.1 = interface_decl @ImplicitAs [template = constants.%ImplicitAs.generic] { +// CHECK:STDOUT: %ImplicitAs.decl: %ImplicitAs.type.96f = interface_decl @ImplicitAs [template = constants.%ImplicitAs.generic] { // CHECK:STDOUT: %T.patt.loc15_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_22.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc15_22.1, runtime_param [symbolic = %T.patt.loc15_22.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -172,79 +172,79 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %.loc19_6.2: type = converted %int.make_type_signed, %.loc19_6.1 [template = constants.%i32.builtin] // CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [template = constants.%Add.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.8dc] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc23_17.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc23_17.2: type = converted %int_literal.make_type, %.loc23_17.1 [template = Core.IntLiteral] -// CHECK:STDOUT: %As.ref: %As.type.1 = name_ref As, file.%As.decl [template = constants.%As.generic] +// CHECK:STDOUT: %As.ref: %As.type.b51 = name_ref As, file.%As.decl [template = constants.%As.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc23_28.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc23_28.2: type = converted %int.make_type_signed, %.loc23_28.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32.builtin)> [template = constants.%As.type.3] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(constants.%i32.builtin)> [template = constants.%As.type.8e7] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.fce] // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc27_17.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc27_17.2: type = converted %int_literal.make_type, %.loc27_17.1 [template = Core.IntLiteral] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.96f = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc27_36.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc27_36.2: type = converted %int.make_type_signed, %.loc27_36.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [template = constants.%ImplicitAs.type.3] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [template = constants.%ImplicitAs.type.982] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc27: = impl_witness (@impl.3.%Convert.decl) [template = constants.%impl_witness.3] +// CHECK:STDOUT: %impl_witness.loc27: = impl_witness (@impl.3.%Convert.decl) [template = constants.%impl_witness.c5e] // CHECK:STDOUT: impl_decl @impl.4 [template] {} { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc31_6.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc31_6.2: type = converted %int.make_type_signed, %.loc31_6.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.96f = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc31_36.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc31_36.2: type = converted %int_literal.make_type, %.loc31_36.1 [template = Core.IntLiteral] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template = constants.%ImplicitAs.type.5f7] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc31: = impl_witness (@impl.4.%Convert.decl) [template = constants.%impl_witness.4] +// CHECK:STDOUT: %impl_witness.loc31: = impl_witness (@impl.4.%Convert.decl) [template = constants.%impl_witness.2ba] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Add { -// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %Op.decl: %Op.type.1 = fn_decl @Op.1 [template = constants.%Op.1] { -// CHECK:STDOUT: %self.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %other.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = binding_pattern other -// CHECK:STDOUT: %other.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = value_param_pattern %other.patt, runtime_param1 -// CHECK:STDOUT: %return.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d51] +// CHECK:STDOUT: %Op.decl: %Op.type.16a = fn_decl @Op.1 [template = constants.%Op.93e] { +// CHECK:STDOUT: %self.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %other.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = binding_pattern other +// CHECK:STDOUT: %other.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = value_param_pattern %other.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc8_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc8_37: type = facet_access_type %Self.ref.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc8_37: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %self.param: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc8_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc8_15.2: type = facet_access_type %Self.ref.loc8_15 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc8_15.2: type = converted %Self.ref.loc8_15, %Self.as_type.loc8_15.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self.ref.loc8_37: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.d51)] +// CHECK:STDOUT: %Self.as_type.loc8_37: type = facet_access_type %Self.ref.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] +// CHECK:STDOUT: %.loc8_37: type = converted %Self.ref.loc8_37, %Self.as_type.loc8_37 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] +// CHECK:STDOUT: %self.param: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_15.1: type = splice_block %.loc8_15.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] { +// CHECK:STDOUT: %Self.ref.loc8_15: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.d51)] +// CHECK:STDOUT: %Self.as_type.loc8_15.2: type = facet_access_type %Self.ref.loc8_15 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] +// CHECK:STDOUT: %.loc8_15.2: type = converted %Self.ref.loc8_15, %Self.as_type.loc8_15.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = bind_name self, %self.param -// CHECK:STDOUT: %other.param: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = value_param runtime_param1 -// CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc8_28: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc8_28: type = facet_access_type %Self.ref.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc8_28.2: type = converted %Self.ref.loc8_28, %Self.as_type.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %self: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = bind_name self, %self.param +// CHECK:STDOUT: %other.param: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = value_param runtime_param1 +// CHECK:STDOUT: %.loc8_28.1: type = splice_block %.loc8_28.2 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] { +// CHECK:STDOUT: %Self.ref.loc8_28: %Add.type = name_ref Self, @Add.%Self [symbolic = %Self (constants.%Self.d51)] +// CHECK:STDOUT: %Self.as_type.loc8_28: type = facet_access_type %Self.ref.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] +// CHECK:STDOUT: %.loc8_28.2: type = converted %Self.ref.loc8_28, %Self.as_type.loc8_28 [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] // CHECK:STDOUT: } -// CHECK:STDOUT: %other: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = bind_name other, %other.param -// CHECK:STDOUT: %return.param: ref @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = out_param runtime_param2 -// CHECK:STDOUT: %return: ref @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1) = return_slot %return.param +// CHECK:STDOUT: %other: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = bind_name other, %other.param +// CHECK:STDOUT: %return.param: ref @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = out_param runtime_param2 +// CHECK:STDOUT: %return: ref @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, %Op.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, %Op.decl [template = constants.%assoc0.dcf] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -257,34 +257,34 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc11_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T.loc11_14.2)> [symbolic = %As.type (constants.%As.type.2)] -// CHECK:STDOUT: %Self.2: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @As(%T.loc11_14.2) [symbolic = %Convert.type (constants.%Convert.type.1)] -// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @As.%As.type (%As.type.2), @As.%Convert.type (%Convert.type.1) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc12_32.2: @As.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.2)] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T.loc11_14.2)> [symbolic = %As.type (constants.%As.type.8b0)] +// CHECK:STDOUT: %Self.2: %As.type.8b0 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.a39)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @As(%T.loc11_14.2) [symbolic = %Convert.type (constants.%Convert.type.412)] +// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.412) = struct_value () [symbolic = %Convert (constants.%Convert.adc)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @As.%As.type (%As.type.8b0), @As.%Convert.type (%Convert.type.412) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.d24)] +// CHECK:STDOUT: %assoc0.loc12_32.2: @As.%Convert.assoc_type (%Convert.assoc_type.d24) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.e2f)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @As.%As.type (%As.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %Convert.decl: @As.%Convert.type (%Convert.type.1) = fn_decl @Convert.1 [symbolic = @As.%Convert (constants.%Convert.1)] { -// CHECK:STDOUT: %self.patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.2) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.2) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Self.1: @As.%As.type (%As.type.8b0) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.a39)] +// CHECK:STDOUT: %Convert.decl: @As.%Convert.type (%Convert.type.412) = fn_decl @Convert.1 [symbolic = @As.%Convert (constants.%Convert.adc)] { +// CHECK:STDOUT: %self.patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.5fa) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.5fa) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @Convert.1.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Convert.1.%T (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @As.%T.loc11_14.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.2)] { -// CHECK:STDOUT: %.loc12_20.2: @Convert.1.%As.type (%As.type.2) = specific_constant @As.%Self.1, @As(constants.%T) [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.ref: @Convert.1.%As.type (%As.type.2) = name_ref Self, %.loc12_20.2 [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type.loc12_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.2)] -// CHECK:STDOUT: %.loc12_20.3: type = converted %Self.ref, %Self.as_type.loc12_20.2 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.2)] +// CHECK:STDOUT: %self.param: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.5fa) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_20.1: type = splice_block %.loc12_20.3 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.5fa)] { +// CHECK:STDOUT: %.loc12_20.2: @Convert.1.%As.type (%As.type.8b0) = specific_constant @As.%Self.1, @As(constants.%T) [symbolic = %Self (constants.%Self.a39)] +// CHECK:STDOUT: %Self.ref: @Convert.1.%As.type (%As.type.8b0) = name_ref Self, %.loc12_20.2 [symbolic = %Self (constants.%Self.a39)] +// CHECK:STDOUT: %Self.as_type.loc12_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.5fa)] +// CHECK:STDOUT: %.loc12_20.3: type = converted %Self.ref, %Self.as_type.loc12_20.2 [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.5fa)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.2) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.5fa) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref @Convert.1.%T (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @Convert.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc12_32.1: @As.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.2)] +// CHECK:STDOUT: %assoc0.loc12_32.1: @As.%Convert.assoc_type (%Convert.assoc_type.d24) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc12_32.2 (constants.%assoc0.e2f)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -298,34 +298,34 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc15_22.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_22.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc15_22.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @ImplicitAs(%T.loc15_22.2) [symbolic = %Convert.type (constants.%Convert.type.2)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.2) = struct_value () [symbolic = %Convert (constants.%Convert.2)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.2) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.2)] -// CHECK:STDOUT: %assoc0.loc16_32.2: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.2) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.3)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc15_22.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.a1f)] +// CHECK:STDOUT: %Self.2: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.819)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @ImplicitAs(%T.loc15_22.2) [symbolic = %Convert.type (constants.%Convert.type.b11)] +// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.b11) = struct_value () [symbolic = %Convert (constants.%Convert.639)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f), @ImplicitAs.%Convert.type (%Convert.type.b11) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.4d8)] +// CHECK:STDOUT: %assoc0.loc16_32.2: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.4d8) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.39c)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type.2) = fn_decl @Convert.2 [symbolic = @ImplicitAs.%Convert (constants.%Convert.2)] { -// CHECK:STDOUT: %self.patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.3) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.3) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.819)] +// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type.b11) = fn_decl @Convert.2 [symbolic = @ImplicitAs.%Convert (constants.%Convert.639)] { +// CHECK:STDOUT: %self.patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.dc3) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.dc3) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @Convert.2.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Convert.2.%T (%T) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, @ImplicitAs.%T.loc15_22.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %self.param: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.3) = value_param runtime_param0 -// CHECK:STDOUT: %.loc16_20.1: type = splice_block %.loc16_20.3 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.3)] { -// CHECK:STDOUT: %.loc16_20.2: @Convert.2.%ImplicitAs.type (%ImplicitAs.type.2) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self.3)] -// CHECK:STDOUT: %Self.ref: @Convert.2.%ImplicitAs.type (%ImplicitAs.type.2) = name_ref Self, %.loc16_20.2 [symbolic = %Self (constants.%Self.3)] -// CHECK:STDOUT: %Self.as_type.loc16_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.3)] -// CHECK:STDOUT: %.loc16_20.3: type = converted %Self.ref, %Self.as_type.loc16_20.2 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.3)] +// CHECK:STDOUT: %self.param: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.dc3) = value_param runtime_param0 +// CHECK:STDOUT: %.loc16_20.1: type = splice_block %.loc16_20.3 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.dc3)] { +// CHECK:STDOUT: %.loc16_20.2: @Convert.2.%ImplicitAs.type (%ImplicitAs.type.a1f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self.819)] +// CHECK:STDOUT: %Self.ref: @Convert.2.%ImplicitAs.type (%ImplicitAs.type.a1f) = name_ref Self, %.loc16_20.2 [symbolic = %Self (constants.%Self.819)] +// CHECK:STDOUT: %Self.as_type.loc16_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.dc3)] +// CHECK:STDOUT: %.loc16_20.3: type = converted %Self.ref, %Self.as_type.loc16_20.2 [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.dc3)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.3) = bind_name self, %self.param +// CHECK:STDOUT: %self: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.dc3) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref @Convert.2.%T (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @Convert.2.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc16_32.1: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.2) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.3)] +// CHECK:STDOUT: %assoc0.loc16_32.1: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.4d8) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc16_32.2 (constants.%assoc0.39c)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -335,7 +335,7 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %.loc19_6.2 as %Add.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.9ef = fn_decl @Op.2 [template = constants.%Op.11a] { // CHECK:STDOUT: %self.patt: %i32.builtin = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32.builtin = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %i32.builtin = binding_pattern other @@ -360,7 +360,7 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %.loc23_17.2 as %As.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.4 = fn_decl @Convert.3 [template = constants.%Convert.4] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.6e5 = fn_decl @Convert.3 [template = constants.%Convert.b6a] { // CHECK:STDOUT: %self.patt: Core.IntLiteral = binding_pattern self // CHECK:STDOUT: %self.param_patt: Core.IntLiteral = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32.builtin = return_slot_pattern @@ -383,7 +383,7 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.3: %.loc27_17.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.6 = fn_decl @Convert.4 [template = constants.%Convert.6] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.928 = fn_decl @Convert.4 [template = constants.%Convert.4e2] { // CHECK:STDOUT: %self.patt: Core.IntLiteral = binding_pattern self // CHECK:STDOUT: %self.param_patt: Core.IntLiteral = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32.builtin = return_slot_pattern @@ -406,7 +406,7 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.4: %.loc31_6.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.8 = fn_decl @Convert.5 [template = constants.%Convert.8] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.578 = fn_decl @Convert.5 [template = constants.%Convert.5d6] { // CHECK:STDOUT: %self.patt: %i32.builtin = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32.builtin = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern @@ -433,28 +433,28 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: fn @Int(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.1(@Add.%Self: %Add.type) { -// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc8_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.d51)] +// CHECK:STDOUT: %Self.as_type.loc8_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc8_15.1 (constants.%Self.as_type.c8e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1)](%other.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1)) -> @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.1); +// CHECK:STDOUT: fn[%self.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e)](%other.param_patt: @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e)) -> @Op.1.%Self.as_type.loc8_15.1 (%Self.as_type.c8e); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(@As.%T.loc11_14.1: type, @As.%Self.1: @As.%As.type (%As.type.2)) { +// CHECK:STDOUT: generic fn @Convert.1(@As.%T.loc11_14.1: type, @As.%Self.1: @As.%As.type (%As.type.8b0)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.2)] -// CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type.loc12_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.2)] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.8b0)] +// CHECK:STDOUT: %Self: %As.type.8b0 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.a39)] +// CHECK:STDOUT: %Self.as_type.loc12_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_20.1 (constants.%Self.as_type.5fa)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.2)]() -> @Convert.1.%T (%T); +// CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type.loc12_20.1 (%Self.as_type.5fa)]() -> @Convert.1.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.2(@ImplicitAs.%T.loc15_22.1: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) { +// CHECK:STDOUT: generic fn @Convert.2(@ImplicitAs.%T.loc15_22.1: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.3)] -// CHECK:STDOUT: %Self.as_type.loc16_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.3)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.a1f)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.819)] +// CHECK:STDOUT: %Self.as_type.loc16_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc16_20.1 (constants.%Self.as_type.dc3)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.3)]() -> @Convert.2.%T (%T); +// CHECK:STDOUT: fn[%self.param_patt: @Convert.2.%Self.as_type.loc16_20.1 (%Self.as_type.dc3)]() -> @Convert.2.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %i32.builtin](%other.param_patt: %i32.builtin) -> %i32.builtin = "int.sadd"; @@ -465,9 +465,9 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.5[%self.param_patt: %i32.builtin]() -> Core.IntLiteral = "int.convert_checked"; // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%Self.1) { -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type.loc8_15.1 => constants.%Self.as_type.1 +// CHECK:STDOUT: specific @Op.1(constants.%Self.d51) { +// CHECK:STDOUT: %Self => constants.%Self.d51 +// CHECK:STDOUT: %Self.as_type.loc8_15.1 => constants.%Self.as_type.c8e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @As(constants.%T) { @@ -475,11 +475,11 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc11_14.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self.2) { +// CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self.a39) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %As.type => constants.%As.type.2 -// CHECK:STDOUT: %Self => constants.%Self.2 -// CHECK:STDOUT: %Self.as_type.loc12_20.1 => constants.%Self.as_type.2 +// CHECK:STDOUT: %As.type => constants.%As.type.8b0 +// CHECK:STDOUT: %Self => constants.%Self.a39 +// CHECK:STDOUT: %Self.as_type.loc12_20.1 => constants.%Self.as_type.5fa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @As(@Convert.1.%T) {} @@ -491,11 +491,11 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc15_22.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.2(constants.%T, constants.%Self.3) { +// CHECK:STDOUT: specific @Convert.2(constants.%T, constants.%Self.819) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2 -// CHECK:STDOUT: %Self => constants.%Self.3 -// CHECK:STDOUT: %Self.as_type.loc16_20.1 => constants.%Self.as_type.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a1f +// CHECK:STDOUT: %Self => constants.%Self.819 +// CHECK:STDOUT: %Self.as_type.loc16_20.1 => constants.%Self.as_type.dc3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(@Convert.2.%T) {} @@ -512,17 +512,17 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc11_14.2 => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %As.type => constants.%As.type.3 -// CHECK:STDOUT: %Self.2 => constants.%Self.2 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.3 -// CHECK:STDOUT: %Convert => constants.%Convert.3 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.3 -// CHECK:STDOUT: %assoc0.loc12_32.2 => constants.%assoc0.4 +// CHECK:STDOUT: %As.type => constants.%As.type.8e7 +// CHECK:STDOUT: %Self.2 => constants.%Self.a39 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.d05 +// CHECK:STDOUT: %Convert => constants.%Convert.5e5 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.596 +// CHECK:STDOUT: %assoc0.loc12_32.2 => constants.%assoc0.c6b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Convert.1(constants.%i32.builtin, constants.%As.facet) { // CHECK:STDOUT: %T => constants.%i32.builtin -// CHECK:STDOUT: %As.type => constants.%As.type.3 +// CHECK:STDOUT: %As.type => constants.%As.type.8e7 // CHECK:STDOUT: %Self => constants.%As.facet // CHECK:STDOUT: %Self.as_type.loc12_20.1 => Core.IntLiteral // CHECK:STDOUT: } @@ -532,18 +532,18 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc15_22.2 => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 -// CHECK:STDOUT: %Self.2 => constants.%Self.3 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.5 -// CHECK:STDOUT: %Convert => constants.%Convert.5 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.4 -// CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.5 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.982 +// CHECK:STDOUT: %Self.2 => constants.%Self.819 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.c1f +// CHECK:STDOUT: %Convert => constants.%Convert.338 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.918 +// CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.e51 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.2(constants.%i32.builtin, constants.%ImplicitAs.facet.1) { +// CHECK:STDOUT: specific @Convert.2(constants.%i32.builtin, constants.%ImplicitAs.facet.f01) { // CHECK:STDOUT: %T => constants.%i32.builtin -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.1 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.982 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.f01 // CHECK:STDOUT: %Self.as_type.loc16_20.1 => Core.IntLiteral // CHECK:STDOUT: } // CHECK:STDOUT: @@ -552,18 +552,18 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt.loc15_22.2 => Core.IntLiteral // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self.2 => constants.%Self.3 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.7 -// CHECK:STDOUT: %Convert => constants.%Convert.7 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.5 -// CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.6 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.5f7 +// CHECK:STDOUT: %Self.2 => constants.%Self.819 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.dde +// CHECK:STDOUT: %Convert => constants.%Convert.254 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.6c1 +// CHECK:STDOUT: %assoc0.loc16_32.2 => constants.%assoc0.143 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.2(Core.IntLiteral, constants.%ImplicitAs.facet.2) { +// CHECK:STDOUT: specific @Convert.2(Core.IntLiteral, constants.%ImplicitAs.facet.f95) { // CHECK:STDOUT: %T => Core.IntLiteral -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.5f7 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.f95 // CHECK:STDOUT: %Self.as_type.loc16_20.1 => constants.%i32.builtin // CHECK:STDOUT: } // CHECK:STDOUT: @@ -574,104 +574,104 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %Int.type: type = fn_type @Int [template] // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %As.type.2: type = facet_type <@As, @As(%T)> [symbolic] -// CHECK:STDOUT: %Self.1: %As.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %As.type.3d3: type = facet_type <@As, @As(%T)> [symbolic] +// CHECK:STDOUT: %Self.24c: %As.type.3d3 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @As(%T) [symbolic] -// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.1: type = assoc_entity_type %As.type.2, %Convert.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.6 [symbolic] -// CHECK:STDOUT: %As.type.3: type = facet_type <@As, @As(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.2: type = assoc_entity_type %As.type.3, %Convert.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Convert.assoc_type.2 = assoc_entity element0, imports.%import_ref.6 [template] -// CHECK:STDOUT: %assoc0.3: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.7 [symbolic] +// CHECK:STDOUT: %Convert.type.1e6: type = fn_type @Convert.1, @As(%T) [symbolic] +// CHECK:STDOUT: %Convert.4bc: %Convert.type.1e6 = struct_value () [symbolic] +// CHECK:STDOUT: %Self.as_type.414: type = facet_access_type %Self.24c [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.e0d: type = assoc_entity_type %As.type.3d3, %Convert.type.1e6 [symbolic] +// CHECK:STDOUT: %assoc0.cb697b.1: %Convert.assoc_type.e0d = assoc_entity element0, imports.%import_ref.9c35ee.1 [symbolic] +// CHECK:STDOUT: %As.type.878: type = facet_type <@As, @As(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.1d5: type = fn_type @Convert.1, @As(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.3b8: %Convert.type.1d5 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.bb4: type = assoc_entity_type %As.type.878, %Convert.type.1d5 [template] +// CHECK:STDOUT: %assoc0.c56: %Convert.assoc_type.bb4 = assoc_entity element0, imports.%import_ref.9c35ee.1 [template] +// CHECK:STDOUT: %assoc0.cb697b.2: %Convert.assoc_type.e0d = assoc_entity element0, imports.%import_ref.9c35ee.2 [symbolic] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] -// CHECK:STDOUT: %Self.2: %Add.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] -// CHECK:STDOUT: %Self.3: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [symbolic] -// CHECK:STDOUT: %Self.as_type.2: type = facet_access_type %Self.3 [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.3: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.3 [symbolic] -// CHECK:STDOUT: %assoc0.4: %Convert.assoc_type.3 = assoc_entity element0, imports.%import_ref.23 [symbolic] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.2, @ImplicitAs(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.4: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.4 [template] -// CHECK:STDOUT: %assoc0.5: %Convert.assoc_type.4 = assoc_entity element0, imports.%import_ref.24 [template] -// CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.5: type = assoc_entity_type %ImplicitAs.type.4, %Convert.type.5 [template] -// CHECK:STDOUT: %assoc0.6: %Convert.assoc_type.5 = assoc_entity element0, imports.%import_ref.28 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (imports.%import_ref.29) [template] -// CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %Self.as_type.3: type = facet_access_type %Self.2 [symbolic] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.1 [template] -// CHECK:STDOUT: %assoc0.7: %Op.assoc_type = assoc_entity element0, imports.%import_ref.31 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (imports.%import_ref.32) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] -// CHECK:STDOUT: %int_3.1: %i32.builtin = int_value 3 [template] -// CHECK:STDOUT: %assoc0.8: %Convert.assoc_type.3 = assoc_entity element0, imports.%import_ref.34 [symbolic] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (imports.%import_ref.35) [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.2, %i32.builtin [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.2, %Convert.6 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_4.1, %Convert.6 [template] -// CHECK:STDOUT: %int_4.2: %i32.builtin = int_value 4 [template] -// CHECK:STDOUT: %Op.bound.2: = bound_method %int_3.1, %Op.2 [template] +// CHECK:STDOUT: %Self.eea: %Add.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.d33: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] +// CHECK:STDOUT: %Self.400: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.51b: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.608: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %Convert.de6: %Convert.type.608 = struct_value () [symbolic] +// CHECK:STDOUT: %Self.as_type.951: type = facet_access_type %Self.400 [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.407: type = assoc_entity_type %ImplicitAs.type.d33, %Convert.type.608 [symbolic] +// CHECK:STDOUT: %assoc0.317cac.1: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic] +// CHECK:STDOUT: %Convert.type.2a0: type = fn_type @Convert.2, @ImplicitAs(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.756: %Convert.type.2a0 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.f84: type = assoc_entity_type %ImplicitAs.type.51b, %Convert.type.2a0 [template] +// CHECK:STDOUT: %assoc0.695: %Convert.assoc_type.f84 = assoc_entity element0, imports.%import_ref.dbaf9d.2 [template] +// CHECK:STDOUT: %ImplicitAs.type.38a: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [template] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.2, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.6c0: %Convert.type.a9b = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.bc8: type = assoc_entity_type %ImplicitAs.type.38a, %Convert.type.a9b [template] +// CHECK:STDOUT: %assoc0.122: %Convert.assoc_type.bc8 = assoc_entity element0, imports.%import_ref.dbaf9d.3 [template] +// CHECK:STDOUT: %impl_witness.ffd: = impl_witness (imports.%import_ref.b92) [template] +// CHECK:STDOUT: %Convert.type.c68: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.fef: %Convert.type.c68 = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Op.type.88c: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Self.as_type.6ff: type = facet_access_type %Self.eea [symbolic] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.88c [template] +// CHECK:STDOUT: %assoc0.cee: %Op.assoc_type = assoc_entity element0, imports.%import_ref.3bf [template] +// CHECK:STDOUT: %impl_witness.724: = impl_witness (imports.%import_ref.140) [template] +// CHECK:STDOUT: %Op.type.545: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.0aa: %Op.type.545 = struct_value () [template] +// CHECK:STDOUT: %int_3.a0f: %i32.builtin = int_value 3 [template] +// CHECK:STDOUT: %assoc0.317cac.2: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.4 [symbolic] +// CHECK:STDOUT: %impl_witness.588: = impl_witness (imports.%import_ref.055) [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.d53: = bound_method %int_3.1ba, %Convert.fef [template] +// CHECK:STDOUT: %Convert.bound.026: = bound_method %int_4.0c1, %Convert.fef [template] +// CHECK:STDOUT: %int_4.4f1: %i32.builtin = int_value 4 [template] +// CHECK:STDOUT: %Op.bound.970: = bound_method %int_3.a0f, %Op.0aa [template] // CHECK:STDOUT: %int_7: %i32.builtin = int_value 7 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, %i32.builtin) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (imports.%import_ref.36) [template] -// CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.5 [template] -// CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.6: = bound_method %int_3.2, %Convert.8 [template] -// CHECK:STDOUT: %Convert.bound.7: = bound_method %int_4.1, %Convert.8 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_3.1, %int_4.2, %int_7) [template] +// CHECK:STDOUT: %impl_witness.25b: = impl_witness (imports.%import_ref.02a) [template] +// CHECK:STDOUT: %Convert.type.c8d: type = fn_type @Convert.5 [template] +// CHECK:STDOUT: %Convert.718: %Convert.type.c8d = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.227: = bound_method %int_3.1ba, %Convert.718 [template] +// CHECK:STDOUT: %Convert.bound.503: = bound_method %int_4.0c1, %Convert.718 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_3.a0f, %int_4.4f1, %int_7) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.2 -// CHECK:STDOUT: .Add = %import_ref.30 -// CHECK:STDOUT: .ImplicitAs = %import_ref.33 +// CHECK:STDOUT: .Int = %import_ref.71a +// CHECK:STDOUT: .As = %import_ref.2f7 +// CHECK:STDOUT: .Add = %import_ref.4b5 +// CHECK:STDOUT: .ImplicitAs = %import_ref.7f1 // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst85 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: @As.%Convert.assoc_type (%Convert.assoc_type.1) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.5 = import_ref Core//default, Convert, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, loc12_32, unloaded -// CHECK:STDOUT: %import_ref.8: = import_ref Core//default, loc19_17, loaded [template = constants.%impl_witness.2] -// CHECK:STDOUT: %import_ref.9 = import_ref Core//default, inst39 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: %Op.assoc_type = import_ref Core//default, loc8_41, loaded [template = constants.%assoc0.7] -// CHECK:STDOUT: %import_ref.11 = import_ref Core//default, Op, unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref Core//default, loc19_6, loaded [template = constants.%i32.builtin] -// CHECK:STDOUT: %import_ref.13: type = import_ref Core//default, loc19_13, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.14: = import_ref Core//default, loc23_30, loaded [template = constants.%impl_witness.1] -// CHECK:STDOUT: %import_ref.15: type = import_ref Core//default, loc23_17, loaded [template = Core.IntLiteral] -// CHECK:STDOUT: %import_ref.16: type = import_ref Core//default, loc23_28, loaded [template = constants.%As.type.3] -// CHECK:STDOUT: %import_ref.17: = import_ref Core//default, loc27_38, loaded [template = constants.%impl_witness.4] -// CHECK:STDOUT: %import_ref.18 = import_ref Core//default, inst128 [no loc], unloaded -// CHECK:STDOUT: %import_ref.19: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.3) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.8)] -// CHECK:STDOUT: %import_ref.20 = import_ref Core//default, Convert, unloaded -// CHECK:STDOUT: %import_ref.21: type = import_ref Core//default, loc27_17, loaded [template = Core.IntLiteral] -// CHECK:STDOUT: %import_ref.22: type = import_ref Core//default, loc27_36, loaded [template = constants.%ImplicitAs.type.3] -// CHECK:STDOUT: %import_ref.23 = import_ref Core//default, loc16_32, unloaded -// CHECK:STDOUT: %import_ref.25: = import_ref Core//default, loc31_38, loaded [template = constants.%impl_witness.3] -// CHECK:STDOUT: %import_ref.26: type = import_ref Core//default, loc31_6, loaded [template = constants.%i32.builtin] -// CHECK:STDOUT: %import_ref.27: type = import_ref Core//default, loc31_36, loaded [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %import_ref.7a0 = import_ref Core//default, inst85 [no loc], unloaded +// CHECK:STDOUT: %import_ref.001: @As.%Convert.assoc_type (%Convert.assoc_type.e0d) = import_ref Core//default, loc12_32, loaded [symbolic = @As.%assoc0 (constants.%assoc0.cb697b.2)] +// CHECK:STDOUT: %import_ref.846 = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %import_ref.9c35ee.1 = import_ref Core//default, loc12_32, unloaded +// CHECK:STDOUT: %import_ref.e3f: = import_ref Core//default, loc19_17, loaded [template = constants.%impl_witness.724] +// CHECK:STDOUT: %import_ref.72a = import_ref Core//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %import_ref.4d2: %Op.assoc_type = import_ref Core//default, loc8_41, loaded [template = constants.%assoc0.cee] +// CHECK:STDOUT: %import_ref.b75 = import_ref Core//default, Op, unloaded +// CHECK:STDOUT: %import_ref.c8c7cd.1: type = import_ref Core//default, loc19_6, loaded [template = constants.%i32.builtin] +// CHECK:STDOUT: %import_ref.d37: type = import_ref Core//default, loc19_13, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.b30: = import_ref Core//default, loc23_30, loaded [template = constants.%impl_witness.ffd] +// CHECK:STDOUT: %import_ref.afb013.1: type = import_ref Core//default, loc23_17, loaded [template = Core.IntLiteral] +// CHECK:STDOUT: %import_ref.d09: type = import_ref Core//default, loc23_28, loaded [template = constants.%As.type.878] +// CHECK:STDOUT: %import_ref.4ae: = import_ref Core//default, loc27_38, loaded [template = constants.%impl_witness.25b] +// CHECK:STDOUT: %import_ref.01e = import_ref Core//default, inst128 [no loc], unloaded +// CHECK:STDOUT: %import_ref.86d: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = import_ref Core//default, loc16_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.317cac.2)] +// CHECK:STDOUT: %import_ref.038 = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %import_ref.afb013.2: type = import_ref Core//default, loc27_17, loaded [template = Core.IntLiteral] +// CHECK:STDOUT: %import_ref.d93: type = import_ref Core//default, loc27_36, loaded [template = constants.%ImplicitAs.type.51b] +// CHECK:STDOUT: %import_ref.dbaf9d.1 = import_ref Core//default, loc16_32, unloaded +// CHECK:STDOUT: %import_ref.a1e: = import_ref Core//default, loc31_38, loaded [template = constants.%impl_witness.588] +// CHECK:STDOUT: %import_ref.c8c7cd.2: type = import_ref Core//default, loc31_6, loaded [template = constants.%i32.builtin] +// CHECK:STDOUT: %import_ref.4e3: type = import_ref Core//default, loc31_36, loaded [template = constants.%ImplicitAs.type.38a] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -689,26 +689,26 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.2)] -// CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @As(%T) [symbolic = %Convert.type (constants.%Convert.type.1)] -// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @As.%As.type (%As.type.2), @As.%Convert.type (%Convert.type.1) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @As.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, imports.%import_ref.6 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.3d3)] +// CHECK:STDOUT: %Self: %As.type.3d3 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.24c)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @As(%T) [symbolic = %Convert.type (constants.%Convert.type.1e6)] +// CHECK:STDOUT: %Convert: @As.%Convert.type (%Convert.type.1e6) = struct_value () [symbolic = %Convert (constants.%Convert.4bc)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @As.%As.type (%As.type.3d3), @As.%Convert.type (%Convert.type.1e6) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.e0d)] +// CHECK:STDOUT: %assoc0: @As.%Convert.assoc_type (%Convert.assoc_type.e0d) = assoc_entity element0, imports.%import_ref.9c35ee.1 [symbolic = %assoc0 (constants.%assoc0.cb697b.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .Convert = imports.%import_ref.4 -// CHECK:STDOUT: witness = (imports.%import_ref.5) +// CHECK:STDOUT: .Self = imports.%import_ref.7a0 +// CHECK:STDOUT: .Convert = imports.%import_ref.001 +// CHECK:STDOUT: witness = (imports.%import_ref.846) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Add [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .Op = imports.%import_ref.10 -// CHECK:STDOUT: witness = (imports.%import_ref.11) +// CHECK:STDOUT: .Self = imports.%import_ref.72a +// CHECK:STDOUT: .Op = imports.%import_ref.4d2 +// CHECK:STDOUT: witness = (imports.%import_ref.b75) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @ImplicitAs(constants.%T: type) [from "core.carbon"] { @@ -716,68 +716,68 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.3)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.3)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.3) = struct_value () [symbolic = %Convert (constants.%Convert.3)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.3) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.3)] -// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.3) = assoc_entity element0, imports.%import_ref.23 [symbolic = %assoc0 (constants.%assoc0.4)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.400)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.2, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.608)] +// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.608) = struct_value () [symbolic = %Convert (constants.%Convert.de6)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d33), @ImplicitAs.%Convert.type (%Convert.type.608) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.407)] +// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic = %assoc0 (constants.%assoc0.317cac.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.18 -// CHECK:STDOUT: .Convert = imports.%import_ref.19 -// CHECK:STDOUT: witness = (imports.%import_ref.20) +// CHECK:STDOUT: .Self = imports.%import_ref.01e +// CHECK:STDOUT: .Convert = imports.%import_ref.86d +// CHECK:STDOUT: witness = (imports.%import_ref.038) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.12 as imports.%import_ref.13 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.c8c7cd.1 as imports.%import_ref.d37 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.8 +// CHECK:STDOUT: witness = imports.%import_ref.e3f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.2: imports.%import_ref.15 as imports.%import_ref.16 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.2: imports.%import_ref.afb013.1 as imports.%import_ref.d09 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.14 +// CHECK:STDOUT: witness = imports.%import_ref.b30 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.3: imports.%import_ref.21 as imports.%import_ref.22 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.3: imports.%import_ref.afb013.2 as imports.%import_ref.d93 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.17 +// CHECK:STDOUT: witness = imports.%import_ref.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.4: imports.%import_ref.26 as imports.%import_ref.27 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.4: imports.%import_ref.c8c7cd.2 as imports.%import_ref.4e3 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.25 +// CHECK:STDOUT: witness = imports.%import_ref.a1e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self.1: %As.type.2) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self.24c: %As.type.3d3) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.2)] -// CHECK:STDOUT: %Self: %As.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.1)] +// CHECK:STDOUT: %As.type: type = facet_type <@As, @As(%T)> [symbolic = %As.type (constants.%As.type.3d3)] +// CHECK:STDOUT: %Self: %As.type.3d3 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.24c)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.414)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type (%Self.as_type.1)]() -> @Convert.1.%T (%T); +// CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type (%Self.as_type.414)]() -> @Convert.1.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.2(constants.%T: type, constants.%Self.3: %ImplicitAs.type.2) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @Convert.2(constants.%T: type, constants.%Self.400: %ImplicitAs.type.d33) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.3)] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.2)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.400)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.951)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Convert.2.%Self.as_type (%Self.as_type.2)]() -> @Convert.2.%T (%T); +// CHECK:STDOUT: fn[%self.param_patt: @Convert.2.%Self.as_type (%Self.as_type.951)]() -> @Convert.2.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.3[%self.param_patt: Core.IntLiteral]() -> %i32.builtin = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(constants.%Self.2: %Add.type) [from "core.carbon"] { -// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.3)] +// CHECK:STDOUT: generic fn @Op.1(constants.%Self.eea: %Add.type) [from "core.carbon"] { +// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.eea)] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type.6ff)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Op.1.%Self.as_type (%Self.as_type.3)](%other.param_patt: @Op.1.%Self.as_type (%Self.as_type.3)) -> @Op.1.%Self.as_type (%Self.as_type.3); +// CHECK:STDOUT: fn[%self.param_patt: @Op.1.%Self.as_type (%Self.as_type.6ff)](%other.param_patt: @Op.1.%Self.as_type (%Self.as_type.6ff)) -> @Op.1.%Self.as_type (%Self.as_type.6ff); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %i32.builtin](%other.param_patt: %i32.builtin) -> %i32.builtin = "int.sadd" [from "core.carbon"]; @@ -788,47 +788,47 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_3.loc4_44: Core.IntLiteral = int_value 3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_4.loc4_47: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %int_3.loc4_51: Core.IntLiteral = int_value 3 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3.loc4_44: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int_4.loc4_47: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %int_3.loc4_51: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %int_32.loc4_56: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed.loc4_56: init type = call constants.%Int(%int_32.loc4_56) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc4_56.1: type = value_of_initializer %int.make_type_signed.loc4_56 [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc4_56.2: type = converted %int.make_type_signed.loc4_56, %.loc4_56.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_53: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.6] -// CHECK:STDOUT: %Convert.bound.loc4_53: = bound_method %int_3.loc4_51, %impl.elem0.loc4_53 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %int.convert_checked.loc4_53: init %i32.builtin = call %Convert.bound.loc4_53(%int_3.loc4_51) [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc4_53.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_53 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc4_53.2: %i32.builtin = converted %int_3.loc4_51, %.loc4_53.1 [template = constants.%int_3.1] -// CHECK:STDOUT: %int_4.loc4_64: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] +// CHECK:STDOUT: %impl.elem0.loc4_53: %Convert.type.1d5 = impl_witness_access constants.%impl_witness.ffd, element0 [template = constants.%Convert.fef] +// CHECK:STDOUT: %Convert.bound.loc4_53: = bound_method %int_3.loc4_51, %impl.elem0.loc4_53 [template = constants.%Convert.bound.d53] +// CHECK:STDOUT: %int.convert_checked.loc4_53: init %i32.builtin = call %Convert.bound.loc4_53(%int_3.loc4_51) [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_53.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_53 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_53.2: %i32.builtin = converted %int_3.loc4_51, %.loc4_53.1 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %int_4.loc4_64: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] // CHECK:STDOUT: %int_32.loc4_69: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed.loc4_69: init type = call constants.%Int(%int_32.loc4_69) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc4_69.1: type = value_of_initializer %int.make_type_signed.loc4_69 [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc4_69.2: type = converted %int.make_type_signed.loc4_69, %.loc4_69.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %impl.elem0.loc4_66: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.6] -// CHECK:STDOUT: %Convert.bound.loc4_66: = bound_method %int_4.loc4_64, %impl.elem0.loc4_66 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %int.convert_checked.loc4_66: init %i32.builtin = call %Convert.bound.loc4_66(%int_4.loc4_64) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc4_66.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_66 [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc4_66.2: %i32.builtin = converted %int_4.loc4_64, %.loc4_66.1 [template = constants.%int_4.2] -// CHECK:STDOUT: %impl.elem0.loc4_61: %Op.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.2] -// CHECK:STDOUT: %Op.bound: = bound_method %.loc4_53.2, %impl.elem0.loc4_61 [template = constants.%Op.bound.2] +// CHECK:STDOUT: %impl.elem0.loc4_66: %Convert.type.1d5 = impl_witness_access constants.%impl_witness.ffd, element0 [template = constants.%Convert.fef] +// CHECK:STDOUT: %Convert.bound.loc4_66: = bound_method %int_4.loc4_64, %impl.elem0.loc4_66 [template = constants.%Convert.bound.026] +// CHECK:STDOUT: %int.convert_checked.loc4_66: init %i32.builtin = call %Convert.bound.loc4_66(%int_4.loc4_64) [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc4_66.1: %i32.builtin = value_of_initializer %int.convert_checked.loc4_66 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc4_66.2: %i32.builtin = converted %int_4.loc4_64, %.loc4_66.1 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %impl.elem0.loc4_61: %Op.type.88c = impl_witness_access constants.%impl_witness.724, element0 [template = constants.%Op.0aa] +// CHECK:STDOUT: %Op.bound: = bound_method %.loc4_53.2, %impl.elem0.loc4_61 [template = constants.%Op.bound.970] // CHECK:STDOUT: %int.sadd: init %i32.builtin = call %Op.bound(%.loc4_53.2, %.loc4_66.2) [template = constants.%int_7] // CHECK:STDOUT: %.loc4_73.1: %tuple.type = tuple_literal (%int_3.loc4_44, %int_4.loc4_47, %int.sadd) -// CHECK:STDOUT: %impl.elem0.loc4_73.1: %Convert.type.4 = impl_witness_access constants.%impl_witness.4, element0 [template = constants.%Convert.8] -// CHECK:STDOUT: %Convert.bound.loc4_73.1: = bound_method %int_3.loc4_44, %impl.elem0.loc4_73.1 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %int.convert_checked.loc4_73.1: init %i32.builtin = call %Convert.bound.loc4_73.1(%int_3.loc4_44) [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc4_73.2: init %i32.builtin = converted %int_3.loc4_44, %int.convert_checked.loc4_73.1 [template = constants.%int_3.1] +// CHECK:STDOUT: %impl.elem0.loc4_73.1: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc4_73.1: = bound_method %int_3.loc4_44, %impl.elem0.loc4_73.1 [template = constants.%Convert.bound.227] +// CHECK:STDOUT: %int.convert_checked.loc4_73.1: init %i32.builtin = call %Convert.bound.loc4_73.1(%int_3.loc4_44) [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc4_73.2: init %i32.builtin = converted %int_3.loc4_44, %int.convert_checked.loc4_73.1 [template = constants.%int_3.a0f] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc4_73.3: ref %i32.builtin = array_index file.%arr.var, %int_0 -// CHECK:STDOUT: %.loc4_73.4: init %i32.builtin = initialize_from %.loc4_73.2 to %.loc4_73.3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0.loc4_73.2: %Convert.type.4 = impl_witness_access constants.%impl_witness.4, element0 [template = constants.%Convert.8] -// CHECK:STDOUT: %Convert.bound.loc4_73.2: = bound_method %int_4.loc4_47, %impl.elem0.loc4_73.2 [template = constants.%Convert.bound.7] -// CHECK:STDOUT: %int.convert_checked.loc4_73.2: init %i32.builtin = call %Convert.bound.loc4_73.2(%int_4.loc4_47) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc4_73.5: init %i32.builtin = converted %int_4.loc4_47, %int.convert_checked.loc4_73.2 [template = constants.%int_4.2] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc4_73.4: init %i32.builtin = initialize_from %.loc4_73.2 to %.loc4_73.3 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %impl.elem0.loc4_73.2: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc4_73.2: = bound_method %int_4.loc4_47, %impl.elem0.loc4_73.2 [template = constants.%Convert.bound.503] +// CHECK:STDOUT: %int.convert_checked.loc4_73.2: init %i32.builtin = call %Convert.bound.loc4_73.2(%int_4.loc4_47) [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc4_73.5: init %i32.builtin = converted %int_4.loc4_47, %int.convert_checked.loc4_73.2 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc4_73.6: ref %i32.builtin = array_index file.%arr.var, %int_1 -// CHECK:STDOUT: %.loc4_73.7: init %i32.builtin = initialize_from %.loc4_73.5 to %.loc4_73.6 [template = constants.%int_4.2] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc4_73.7: init %i32.builtin = initialize_from %.loc4_73.5 to %.loc4_73.6 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc4_73.8: ref %i32.builtin = array_index file.%arr.var, %int_2 // CHECK:STDOUT: %.loc4_73.9: init %i32.builtin = initialize_from %int.sadd to %.loc4_73.8 [template = constants.%int_7] // CHECK:STDOUT: %.loc4_73.10: init %array_type = array_init (%.loc4_73.4, %.loc4_73.7, %.loc4_73.9) to file.%arr.var [template = constants.%array] @@ -846,11 +846,11 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: // CHECK:STDOUT: specific @As(@Convert.1.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self.1) { +// CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self.24c) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %As.type => constants.%As.type.2 -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.1 +// CHECK:STDOUT: %As.type => constants.%As.type.3d3 +// CHECK:STDOUT: %Self => constants.%Self.24c +// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.414 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @As(constants.%i32.builtin) { @@ -858,12 +858,12 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %As.type => constants.%As.type.3 -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2 -// CHECK:STDOUT: %Convert => constants.%Convert.2 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %As.type => constants.%As.type.878 +// CHECK:STDOUT: %Self => constants.%Self.24c +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.1d5 +// CHECK:STDOUT: %Convert => constants.%Convert.3b8 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.bb4 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.c56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(constants.%T) { @@ -876,23 +876,23 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 -// CHECK:STDOUT: %Self => constants.%Self.3 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.4 -// CHECK:STDOUT: %Convert => constants.%Convert.4 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.4 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.5 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.51b +// CHECK:STDOUT: %Self => constants.%Self.400 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2a0 +// CHECK:STDOUT: %Convert => constants.%Convert.756 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.f84 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.695 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(%T) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(@Convert.2.%T) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.2(constants.%T, constants.%Self.3) { +// CHECK:STDOUT: specific @Convert.2(constants.%T, constants.%Self.400) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2 -// CHECK:STDOUT: %Self => constants.%Self.3 -// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d33 +// CHECK:STDOUT: %Self => constants.%Self.400 +// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.951 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitAs(Core.IntLiteral) { @@ -900,16 +900,16 @@ var arr: [i32; (1 as i32) + (2 as i32)] = (3, 4, (3 as i32) + (4 as i32)); // CHECK:STDOUT: %T.patt => Core.IntLiteral // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%Self.3 -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.5 -// CHECK:STDOUT: %Convert => constants.%Convert.5 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.5 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.6 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.38a +// CHECK:STDOUT: %Self => constants.%Self.400 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.a9b +// CHECK:STDOUT: %Convert => constants.%Convert.6c0 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.bc8 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.122 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Op.1(constants.%Self.2) { -// CHECK:STDOUT: %Self => constants.%Self.2 -// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.3 +// CHECK:STDOUT: specific @Op.1(constants.%Self.eea) { +// CHECK:STDOUT: %Self => constants.%Self.eea +// CHECK:STDOUT: %Self.as_type => constants.%Self.as_type.6ff // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon index f978e2414a09..7669eecc36d2 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/import.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/import.carbon @@ -168,27 +168,27 @@ var arr: [i32; Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)))] = // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] // CHECK:STDOUT: %AsI32.type: type = fn_type @AsI32 [template] // CHECK:STDOUT: %AsI32: %AsI32.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_1.2: %i32.builtin = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_2.2: %i32.builtin = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: %i32.builtin = int_value 3 [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.2, %i32.builtin [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_1.f38: %i32.builtin = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_2.5a1: %i32.builtin = int_value 2 [template] +// CHECK:STDOUT: %int_3.a0f: %i32.builtin = int_value 3 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32.builtin [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (%i32.builtin, %i32.builtin, %i32.builtin) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.1) [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.f38, %int_2.5a1, %int_3.a0f) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .AsIntLiteral = %import_ref.2 -// CHECK:STDOUT: .TestAdd = %import_ref.3 -// CHECK:STDOUT: .AsI32 = %import_ref.4 +// CHECK:STDOUT: .Int = %import_ref.71a +// CHECK:STDOUT: .AsIntLiteral = %import_ref.630 +// CHECK:STDOUT: .TestAdd = %import_ref.9a8 +// CHECK:STDOUT: .AsI32 = %import_ref.208 // CHECK:STDOUT: import Core//core // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: %AsI32.type = import_ref Core//core, AsI32, loaded [template = constants.%AsI32] +// CHECK:STDOUT: %import_ref.208: %AsI32.type = import_ref Core//core, AsI32, loaded [template = constants.%AsI32] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -212,27 +212,27 @@ var arr: [i32; Core.AsIntLiteral(Core.TestAdd(Core.AsI32(1), Core.AsI32(2)))] = // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Core.ref.loc4_82: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AsI32.ref.loc4_86: %AsI32.type = name_ref AsI32, imports.%import_ref.4 [template = constants.%AsI32] -// CHECK:STDOUT: %int_1.loc4_93: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int.convert_checked.loc4_94: init %i32.builtin = call %AsI32.ref.loc4_86(%int_1.loc4_93) [template = constants.%int_1.2] +// CHECK:STDOUT: %AsI32.ref.loc4_86: %AsI32.type = name_ref AsI32, imports.%import_ref.208 [template = constants.%AsI32] +// CHECK:STDOUT: %int_1.loc4_93: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int.convert_checked.loc4_94: init %i32.builtin = call %AsI32.ref.loc4_86(%int_1.loc4_93) [template = constants.%int_1.f38] // CHECK:STDOUT: %Core.ref.loc4_97: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AsI32.ref.loc4_101: %AsI32.type = name_ref AsI32, imports.%import_ref.4 [template = constants.%AsI32] -// CHECK:STDOUT: %int_2.loc4_108: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int.convert_checked.loc4_109: init %i32.builtin = call %AsI32.ref.loc4_101(%int_2.loc4_108) [template = constants.%int_2.2] +// CHECK:STDOUT: %AsI32.ref.loc4_101: %AsI32.type = name_ref AsI32, imports.%import_ref.208 [template = constants.%AsI32] +// CHECK:STDOUT: %int_2.loc4_108: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int.convert_checked.loc4_109: init %i32.builtin = call %AsI32.ref.loc4_101(%int_2.loc4_108) [template = constants.%int_2.5a1] // CHECK:STDOUT: %Core.ref.loc4_112: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AsI32.ref.loc4_116: %AsI32.type = name_ref AsI32, imports.%import_ref.4 [template = constants.%AsI32] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int.convert_checked.loc4_124: init %i32.builtin = call %AsI32.ref.loc4_116(%int_3) [template = constants.%int_3.1] +// CHECK:STDOUT: %AsI32.ref.loc4_116: %AsI32.type = name_ref AsI32, imports.%import_ref.208 [template = constants.%AsI32] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %int.convert_checked.loc4_124: init %i32.builtin = call %AsI32.ref.loc4_116(%int_3) [template = constants.%int_3.a0f] // CHECK:STDOUT: %.loc4_125.1: %tuple.type = tuple_literal (%int.convert_checked.loc4_94, %int.convert_checked.loc4_109, %int.convert_checked.loc4_124) // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc4_125.2: ref %i32.builtin = array_index file.%arr.var, %int_0 -// CHECK:STDOUT: %.loc4_125.3: init %i32.builtin = initialize_from %int.convert_checked.loc4_94 to %.loc4_125.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %int_1.loc4_125: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc4_125.3: init %i32.builtin = initialize_from %int.convert_checked.loc4_94 to %.loc4_125.2 [template = constants.%int_1.f38] +// CHECK:STDOUT: %int_1.loc4_125: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc4_125.4: ref %i32.builtin = array_index file.%arr.var, %int_1.loc4_125 -// CHECK:STDOUT: %.loc4_125.5: init %i32.builtin = initialize_from %int.convert_checked.loc4_109 to %.loc4_125.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_2.loc4_125: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc4_125.5: init %i32.builtin = initialize_from %int.convert_checked.loc4_109 to %.loc4_125.4 [template = constants.%int_2.5a1] +// CHECK:STDOUT: %int_2.loc4_125: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc4_125.6: ref %i32.builtin = array_index file.%arr.var, %int_2.loc4_125 -// CHECK:STDOUT: %.loc4_125.7: init %i32.builtin = initialize_from %int.convert_checked.loc4_124 to %.loc4_125.6 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc4_125.7: init %i32.builtin = initialize_from %int.convert_checked.loc4_124 to %.loc4_125.6 [template = constants.%int_3.a0f] // CHECK:STDOUT: %.loc4_125.8: init %array_type = array_init (%.loc4_125.3, %.loc4_125.5, %.loc4_125.7) to file.%arr.var [template = constants.%array] // CHECK:STDOUT: %.loc4_126: init %array_type = converted %.loc4_125.1, %.loc4_125.8 [template = constants.%array] // CHECK:STDOUT: assign file.%arr.var, %.loc4_126 diff --git a/toolchain/check/testdata/function/call/fail_not_callable.carbon b/toolchain/check/testdata/function/call/fail_not_callable.carbon index 90ce1887a29d..faf738fe9207 100644 --- a/toolchain/check/testdata/function/call/fail_not_callable.carbon +++ b/toolchain/check/testdata/function/call/fail_not_callable.carbon @@ -27,7 +27,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_param_count.carbon b/toolchain/check/testdata/function/call/fail_param_count.carbon index 1267560ca9fa..771414cc33ff 100644 --- a/toolchain/check/testdata/function/call/fail_param_count.carbon +++ b/toolchain/check/testdata/function/call/fail_param_count.carbon @@ -83,7 +83,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_param_type.carbon b/toolchain/check/testdata/function/call/fail_param_type.carbon index 0946fef0b062..a45633e5c056 100644 --- a/toolchain/check/testdata/function/call/fail_param_type.carbon +++ b/toolchain/check/testdata/function/call/fail_param_type.carbon @@ -38,8 +38,8 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index 262bd26f50d5..0b9f212d3e2f 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -37,9 +37,9 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Float = %import_ref.20bd +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index 3b2d98d41a66..7c6c38877245 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -25,20 +25,20 @@ fn Main() { // CHECK:STDOUT: %Echo: %Echo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -82,13 +82,13 @@ fn Main() { // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: %Echo.ref: %Echo.type = name_ref Echo, file.%Echo.decl [template = constants.%Echo] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16_21.2: %i32 = converted %int_1, %.loc16_21.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16_21.2: %i32 = converted %int_1, %.loc16_21.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %Echo.call: init %i32 = call %Echo.ref(%.loc16_21.2) // CHECK:STDOUT: assign %b.var, %Echo.call // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index 25b3dacbed20..2b539c347ee6 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -26,28 +26,28 @@ fn Main() { // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -89,30 +89,30 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc14_22.1: %tuple.type.3 = tuple_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14: = bound_method %int_1, %impl.elem0.loc14 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14: = specific_function %Convert.bound.loc14, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_22.2: init %i32 = converted %int_1, %int.convert_checked.loc14 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_22.3: init %tuple.type.2 = tuple_init (%.loc14_22.2) to %x.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc14_23: init %tuple.type.2 = converted %.loc14_22.1, %.loc14_22.3 [template = constants.%tuple] +// CHECK:STDOUT: %x.var: ref %tuple.type.0e4 = var x +// CHECK:STDOUT: %x: ref %tuple.type.0e4 = bind_name x, %x.var +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc14_22.1: %tuple.type.985 = tuple_literal (%int_1) +// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14: = bound_method %int_1, %impl.elem0.loc14 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14: = specific_function %Convert.bound.loc14, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_22.2: init %i32 = converted %int_1, %int.convert_checked.loc14 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_22.3: init %tuple.type.0e4 = tuple_init (%.loc14_22.2) to %x.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_23: init %tuple.type.0e4 = converted %.loc14_22.1, %.loc14_22.3 [template = constants.%tuple] // CHECK:STDOUT: assign %x.var, %.loc14_23 // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %x.ref: ref %tuple.type.2 = name_ref x, %x +// CHECK:STDOUT: %x.ref: ref %tuple.type.0e4 = name_ref x, %x // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] // CHECK:STDOUT: %.loc16_8: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_6, %impl.elem0.loc16 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc16_12.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc16_12.2: %i32 = converted %int_6, %.loc16_12.1 [template = constants.%int_6.2] +// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_6, %impl.elem0.loc16 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc16_12.1: %i32 = value_of_initializer %int.convert_checked.loc16 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc16_12.2: %i32 = converted %int_6, %.loc16_12.1 [template = constants.%int_6.b03] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc16_8, %.loc16_12.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one.carbon b/toolchain/check/testdata/function/call/params_one.carbon index 90db41610f77..f82e31a531e4 100644 --- a/toolchain/check/testdata/function/call/params_one.carbon +++ b/toolchain/check/testdata/function/call/params_one.carbon @@ -24,20 +24,20 @@ fn Main() { // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -72,13 +72,13 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1, %.loc14_7.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1, %.loc14_7.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc14_7.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one_comma.carbon b/toolchain/check/testdata/function/call/params_one_comma.carbon index 60b7ce1b0fff..10866ef0354a 100644 --- a/toolchain/check/testdata/function/call/params_one_comma.carbon +++ b/toolchain/check/testdata/function/call/params_one_comma.carbon @@ -25,20 +25,20 @@ fn Main() { // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -73,22 +73,22 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref.loc14: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc14: = bound_method %int_1.loc14, %impl.elem0.loc14 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc14: = specific_function %Convert.bound.loc14, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1.loc14, %.loc14_7.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1.loc14, %.loc14_7.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %Foo.call.loc14: init %empty_tuple.type = call %Foo.ref.loc14(%.loc14_7.2) // CHECK:STDOUT: %Foo.ref.loc15: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_1.loc15, %impl.elem0.loc15 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1.loc15) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_7.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_7.2: %i32 = converted %int_1.loc15, %.loc15_7.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1.loc15) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_7.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_7.2: %i32 = converted %int_1.loc15, %.loc15_7.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %Foo.call.loc15: init %empty_tuple.type = call %Foo.ref.loc15(%.loc15_7.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two.carbon b/toolchain/check/testdata/function/call/params_two.carbon index f3b6b69ef948..73fcbb5abaae 100644 --- a/toolchain/check/testdata/function/call/params_two.carbon +++ b/toolchain/check/testdata/function/call/params_two.carbon @@ -24,24 +24,24 @@ fn Main() { // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -84,20 +84,20 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc14_7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_7: = bound_method %int_1, %impl.elem0.loc14_7 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_7: = specific_function %Convert.bound.loc14_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_7: init %i32 = call %Convert.specific_fn.loc14_7(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14_7 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1, %.loc14_7.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_10: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_10: = bound_method %int_2, %impl.elem0.loc14_10 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_10: = specific_function %Convert.bound.loc14_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_10: init %i32 = call %Convert.specific_fn.loc14_10(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_10.1: %i32 = value_of_initializer %int.convert_checked.loc14_10 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_10.2: %i32 = converted %int_2, %.loc14_10.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc14_7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_7: = bound_method %int_1, %impl.elem0.loc14_7 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_7: = specific_function %Convert.bound.loc14_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_7: init %i32 = call %Convert.specific_fn.loc14_7(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14_7 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1, %.loc14_7.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_10: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_10: = bound_method %int_2, %impl.elem0.loc14_10 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_10: = specific_function %Convert.bound.loc14_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_10: init %i32 = call %Convert.specific_fn.loc14_10(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_10.1: %i32 = value_of_initializer %int.convert_checked.loc14_10 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_10.2: %i32 = converted %int_2, %.loc14_10.1 [template = constants.%int_2.166] // CHECK:STDOUT: %Foo.call: init %empty_tuple.type = call %Foo.ref(%.loc14_7.2, %.loc14_10.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two_comma.carbon b/toolchain/check/testdata/function/call/params_two_comma.carbon index e16668823daa..889b522baa2b 100644 --- a/toolchain/check/testdata/function/call/params_two_comma.carbon +++ b/toolchain/check/testdata/function/call/params_two_comma.carbon @@ -25,24 +25,24 @@ fn Main() { // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -85,36 +85,36 @@ fn Main() { // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref.loc14: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc14_7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_7: = bound_method %int_1.loc14, %impl.elem0.loc14_7 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_7: = specific_function %Convert.bound.loc14_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_7: init %i32 = call %Convert.specific_fn.loc14_7(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14_7 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1.loc14, %.loc14_7.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_10: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_10: = bound_method %int_2.loc14, %impl.elem0.loc14_10 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_10: = specific_function %Convert.bound.loc14_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_10: init %i32 = call %Convert.specific_fn.loc14_10(%int_2.loc14) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_10.1: %i32 = value_of_initializer %int.convert_checked.loc14_10 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_10.2: %i32 = converted %int_2.loc14, %.loc14_10.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc14_7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_7: = bound_method %int_1.loc14, %impl.elem0.loc14_7 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_7: = specific_function %Convert.bound.loc14_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_7: init %i32 = call %Convert.specific_fn.loc14_7(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.1: %i32 = value_of_initializer %int.convert_checked.loc14_7 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_7.2: %i32 = converted %int_1.loc14, %.loc14_7.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_10: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_10: = bound_method %int_2.loc14, %impl.elem0.loc14_10 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_10: = specific_function %Convert.bound.loc14_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_10: init %i32 = call %Convert.specific_fn.loc14_10(%int_2.loc14) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_10.1: %i32 = value_of_initializer %int.convert_checked.loc14_10 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_10.2: %i32 = converted %int_2.loc14, %.loc14_10.1 [template = constants.%int_2.166] // CHECK:STDOUT: %Foo.call.loc14: init %empty_tuple.type = call %Foo.ref.loc14(%.loc14_7.2, %.loc14_10.2) // CHECK:STDOUT: %Foo.ref.loc15: %Foo.type = name_ref Foo, file.%Foo.decl [template = constants.%Foo] -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc15_7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_7: = bound_method %int_1.loc15, %impl.elem0.loc15_7 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc15_7: = specific_function %Convert.bound.loc15_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc15_7: init %i32 = call %Convert.specific_fn.loc15_7(%int_1.loc15) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_7.1: %i32 = value_of_initializer %int.convert_checked.loc15_7 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_7.2: %i32 = converted %int_1.loc15, %.loc15_7.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc15_10: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_10: = bound_method %int_2.loc15, %impl.elem0.loc15_10 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc15_10: = specific_function %Convert.bound.loc15_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc15_10: init %i32 = call %Convert.specific_fn.loc15_10(%int_2.loc15) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_10.1: %i32 = value_of_initializer %int.convert_checked.loc15_10 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_10.2: %i32 = converted %int_2.loc15, %.loc15_10.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc15_7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_7: = bound_method %int_1.loc15, %impl.elem0.loc15_7 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc15_7: = specific_function %Convert.bound.loc15_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc15_7: init %i32 = call %Convert.specific_fn.loc15_7(%int_1.loc15) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_7.1: %i32 = value_of_initializer %int.convert_checked.loc15_7 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_7.2: %i32 = converted %int_1.loc15, %.loc15_7.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc15_10: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_10: = bound_method %int_2.loc15, %impl.elem0.loc15_10 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc15_10: = specific_function %Convert.bound.loc15_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc15_10: init %i32 = call %Convert.specific_fn.loc15_10(%int_2.loc15) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_10.1: %i32 = value_of_initializer %int.convert_checked.loc15_10 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_10.2: %i32 = converted %int_2.loc15, %.loc15_10.1 [template = constants.%int_2.166] // CHECK:STDOUT: %Foo.call.loc15: init %empty_tuple.type = call %Foo.ref.loc15(%.loc15_7.2, %.loc15_10.2) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index beda23a9f9e0..f1e753ae10cb 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -26,36 +26,36 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: --- prefer_unqualified_lookup.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.1: type = bind_symbolic_name F, 0 [symbolic] +// CHECK:STDOUT: %F.2ba: type = bind_symbolic_name F, 0 [symbolic] // CHECK:STDOUT: %F.patt: type = symbolic_binding_pattern F, 0 [symbolic] // CHECK:STDOUT: %Class.type: type = generic_class_type @Class [template] // CHECK:STDOUT: %Class.generic: %Class.type = struct_value () [template] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%F.1) [symbolic] -// CHECK:STDOUT: %Inner.1: type = class_type @Inner [template] -// CHECK:STDOUT: %Inner.2: type = class_type @Inner, @Inner(%F.1) [symbolic] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%F.2ba) [symbolic] +// CHECK:STDOUT: %Inner.ed2: type = class_type @Inner [template] +// CHECK:STDOUT: %Inner.2fe: type = class_type @Inner, @Inner(%F.2ba) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.1) [symbolic] -// CHECK:STDOUT: %F.2: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %G.type: type = fn_type @G, @Inner(%F.1) [symbolic] +// CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.2ba) [symbolic] +// CHECK:STDOUT: %F.ee3: %F.type = struct_value () [symbolic] +// CHECK:STDOUT: %G.type: type = fn_type @G, @Inner(%F.2ba) [symbolic] // CHECK:STDOUT: %G: %G.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.2, @F(%F.1) [symbolic] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ee3, @F(%F.2ba) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -72,14 +72,14 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %F.param_patt: type = value_param_pattern %F.patt.loc5_13.1, runtime_param [symbolic = %F.patt.loc5_13.2 (constants.%F.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %F.param: type = value_param runtime_param -// CHECK:STDOUT: %F.loc5_13.1: type = bind_symbolic_name F, 0, %F.param [symbolic = %F.loc5_13.2 (constants.%F.1)] +// CHECK:STDOUT: %F.loc5_13.1: type = bind_symbolic_name F, 0, %F.param [symbolic = %F.loc5_13.2 (constants.%F.2ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [symbolic = constants.%G] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %F.param: type = value_param runtime_param -// CHECK:STDOUT: %F.loc13_10: type = bind_symbolic_name F, 0, %F.param [symbolic = constants.%F.1] +// CHECK:STDOUT: %F.loc13_10: type = bind_symbolic_name F, 0, %F.param [symbolic = constants.%F.2ba] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %return.param.loc13: ref %i32 = out_param runtime_param0 @@ -88,14 +88,14 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%F.loc5_13.1: type) { -// CHECK:STDOUT: %F.loc5_13.2: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.2 (constants.%F.1)] +// CHECK:STDOUT: %F.loc5_13.2: type = bind_symbolic_name F, 0 [symbolic = %F.loc5_13.2 (constants.%F.2ba)] // CHECK:STDOUT: %F.patt.loc5_13.2: type = symbolic_binding_pattern F, 0 [symbolic = %F.patt.loc5_13.2 (constants.%F.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner.ed2] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class @@ -106,14 +106,14 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Inner(@Class.%F.loc5_13.1: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc8_19.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc8_19.1 (constants.%F.1)] +// CHECK:STDOUT: %F.loc8_19.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc8_19.1 (constants.%F.2ba)] // CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.loc8_19.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F.loc8_19.2: @Inner.%F.type (%F.type) = struct_value () [symbolic = %F.loc8_19.2 (constants.%F.2)] +// CHECK:STDOUT: %F.loc8_19.2: @Inner.%F.type (%F.type) = struct_value () [symbolic = %F.loc8_19.2 (constants.%F.ee3)] // CHECK:STDOUT: %G.type: type = fn_type @G, @Inner(%F.loc8_19.1) [symbolic = %G.type (constants.%G.type)] // CHECK:STDOUT: %G: @Inner.%G.type (%G.type) = struct_value () [symbolic = %G (constants.%G)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %F.decl: @Inner.%F.type (%F.type) = fn_decl @F [symbolic = @Inner.%F.loc8_19.2 (constants.%F.2)] { +// CHECK:STDOUT: %F.decl: @Inner.%F.type (%F.type) = fn_decl @F [symbolic = @Inner.%F.loc8_19.2 (constants.%F.ee3)] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -131,10 +131,10 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %return.param.loc9: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return.loc9: ref %i32 = return_slot %return.param.loc9 // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Inner.2 +// CHECK:STDOUT: .Self = constants.%Inner.2fe // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: complete_type_witness = %complete_type @@ -146,29 +146,29 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_29.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_29.2: %i32 = converted %int_0, %.loc8_29.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc8_29.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc8_29.2: %i32 = converted %int_0, %.loc8_29.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc8_29.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G(@Class.%F.loc5_13.1: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc13_46.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc13_46.1 (constants.%F.1)] +// CHECK:STDOUT: %F.loc13_46.1: type = bind_symbolic_name F, 0 [symbolic = %F.loc13_46.1 (constants.%F.2ba)] // CHECK:STDOUT: %F.type: type = fn_type @F, @Inner(%F.loc13_46.1) [symbolic = %F.type (constants.%F.type)] -// CHECK:STDOUT: %F.loc13_46.2: @G.%F.type (%F.type) = struct_value () [symbolic = %F.loc13_46.2 (constants.%F.2)] +// CHECK:STDOUT: %F.loc13_46.2: @G.%F.type (%F.type) = struct_value () [symbolic = %F.loc13_46.2 (constants.%F.ee3)] // CHECK:STDOUT: %F.specific_fn.loc13_46.2: = specific_function %F.loc13_46.2, @F(%F.loc13_46.1) [symbolic = %F.specific_fn.loc13_46.2 (constants.%F.specific_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc13_46: @G.%F.type (%F.type) = specific_constant @Inner.%F.decl, @Inner(constants.%F.1) [symbolic = %F.loc13_46.2 (constants.%F.2)] -// CHECK:STDOUT: %F.ref: @G.%F.type (%F.type) = name_ref F, %.loc13_46 [symbolic = %F.loc13_46.2 (constants.%F.2)] -// CHECK:STDOUT: %F.specific_fn.loc13_46.1: = specific_function %F.ref, @F(constants.%F.1) [symbolic = %F.specific_fn.loc13_46.2 (constants.%F.specific_fn)] +// CHECK:STDOUT: %.loc13_46: @G.%F.type (%F.type) = specific_constant @Inner.%F.decl, @Inner(constants.%F.2ba) [symbolic = %F.loc13_46.2 (constants.%F.ee3)] +// CHECK:STDOUT: %F.ref: @G.%F.type (%F.type) = name_ref F, %.loc13_46 [symbolic = %F.loc13_46.2 (constants.%F.ee3)] +// CHECK:STDOUT: %F.specific_fn.loc13_46.1: = specific_function %F.ref, @F(constants.%F.2ba) [symbolic = %F.specific_fn.loc13_46.2 (constants.%F.specific_fn)] // CHECK:STDOUT: %F.call: init %i32 = call %F.specific_fn.loc13_46.1() // CHECK:STDOUT: %.loc13_49.1: %i32 = value_of_initializer %F.call // CHECK:STDOUT: %.loc13_49.2: %i32 = converted %F.call, %.loc13_49.1 @@ -176,27 +176,27 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Class(constants.%F.1) { -// CHECK:STDOUT: %F.loc5_13.2 => constants.%F.1 -// CHECK:STDOUT: %F.patt.loc5_13.2 => constants.%F.1 +// CHECK:STDOUT: specific @Class(constants.%F.2ba) { +// CHECK:STDOUT: %F.loc5_13.2 => constants.%F.2ba +// CHECK:STDOUT: %F.patt.loc5_13.2 => constants.%F.2ba // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%F.1) { +// CHECK:STDOUT: specific @Inner(constants.%F.2ba) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.loc8_19.1 => constants.%F.1 +// CHECK:STDOUT: %F.loc8_19.1 => constants.%F.2ba // CHECK:STDOUT: %F.type => constants.%F.type -// CHECK:STDOUT: %F.loc8_19.2 => constants.%F.2 +// CHECK:STDOUT: %F.loc8_19.2 => constants.%F.ee3 // CHECK:STDOUT: %G.type => constants.%G.type // CHECK:STDOUT: %G => constants.%G // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%F.1) { +// CHECK:STDOUT: specific @F(constants.%F.2ba) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%F.1) {} +// CHECK:STDOUT: specific @G(constants.%F.2ba) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(%F.loc8_19.1) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon index bfeff816da50..abce7e39b3c1 100644 --- a/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon +++ b/toolchain/check/testdata/function/declaration/fail_param_in_type.carbon @@ -24,7 +24,7 @@ fn F(n: i32, a: [i32; n]*); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon b/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon index f0a59ce442a2..dcdf73608bc3 100644 --- a/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon +++ b/toolchain/check/testdata/function/declaration/fail_param_redecl.carbon @@ -27,7 +27,7 @@ fn F(n: i32, n: i32); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/import.carbon b/toolchain/check/testdata/function/declaration/import.carbon index de17d799b2b8..d0c6bcfff8e7 100644 --- a/toolchain/check/testdata/function/declaration/import.carbon +++ b/toolchain/check/testdata/function/declaration/import.carbon @@ -264,8 +264,8 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] @@ -277,7 +277,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -312,22 +312,22 @@ import library "extern_api"; // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { -// CHECK:STDOUT: %c.patt: %tuple.type.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %tuple.type.0e4 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.0e4 = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %struct_type.c = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %struct_type.c = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_25: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_25: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %c.param: %tuple.type.0e4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [template = constants.%tuple.type.0e4] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc6_14.2: %tuple.type.1 = tuple_literal (%i32.loc6_10) -// CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) +// CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %tuple.type.0e4 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %struct_type.c = out_param runtime_param1 // CHECK:STDOUT: %return: ref %struct_type.c = return_slot %return.param // CHECK:STDOUT: } @@ -342,7 +342,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @B(%b.param_patt: %i32) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.2) -> %struct_type.c; +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D(); // CHECK:STDOUT: @@ -357,8 +357,8 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] @@ -370,7 +370,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -405,22 +405,22 @@ import library "extern_api"; // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { -// CHECK:STDOUT: %c.patt: %tuple.type.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %tuple.type.0e4 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.0e4 = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %struct_type.c = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %struct_type.c = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_60: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_60: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_49.1: type = splice_block %.loc6_49.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %c.param: %tuple.type.0e4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_49.1: type = splice_block %.loc6_49.3 [template = constants.%tuple.type.0e4] { // CHECK:STDOUT: %int_32.loc6_45: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_45: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc6_49.2: %tuple.type.1 = tuple_literal (%i32.loc6_45) -// CHECK:STDOUT: %.loc6_49.3: type = converted %.loc6_49.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc6_49.2: %tuple.type.85c = tuple_literal (%i32.loc6_45) +// CHECK:STDOUT: %.loc6_49.3: type = converted %.loc6_49.2, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %tuple.type.0e4 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %struct_type.c = out_param runtime_param1 // CHECK:STDOUT: %return: ref %struct_type.c = return_slot %return.param // CHECK:STDOUT: } @@ -435,7 +435,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @B(%b.param_patt: %i32) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.2) -> %struct_type.c; +// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D(); // CHECK:STDOUT: @@ -451,20 +451,20 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.20), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: %D.type: type = fn_type @D [template] // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] @@ -472,18 +472,18 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { -// CHECK:STDOUT: .E = %import_ref.6 +// CHECK:STDOUT: %import_ref.290: %A.type = import_ref Main//api, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.9e3: %B.type = import_ref Main//api, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.fb4: %C.type = import_ref Main//api, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.b22: %D.type = import_ref Main//api, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .E = %import_ref.461 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, E, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.461: %E.type = import_ref Main//api, E, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.7 -// CHECK:STDOUT: .ImplicitAs = %import_ref.11 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -491,10 +491,10 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.290 +// CHECK:STDOUT: .B = imports.%import_ref.9e3 +// CHECK:STDOUT: .C = imports.%import_ref.fb4 +// CHECK:STDOUT: .D = imports.%import_ref.b22 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a @@ -521,7 +521,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @B(%b.param_patt: %i32) -> %i32 [from "api.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.1) -> %struct_type.c [from "api.carbon"]; +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c [from "api.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D() [from "api.carbon"]; // CHECK:STDOUT: @@ -529,37 +529,37 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.1 [template = constants.%A] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.290 [template = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call -// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.2 [template = constants.%B] -// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.9e3 [template = constants.%B] +// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc7: = bound_method %int_1.loc7, %impl.elem0.loc7 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc7: = specific_function %Convert.bound.loc7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %Convert.specific_fn.loc7(%int_1.loc7) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %Convert.specific_fn.loc7(%int_1.loc7) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc7_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C] -// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc8_25.1: %tuple.type.2 = tuple_literal (%int_1.loc8) -// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.fb4 [template = constants.%C] +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) +// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc8: = specific_function %Convert.bound.loc8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_1.loc8) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.loc8_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc8_25.4: %tuple.type.1 = converted %.loc8_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_1.loc8) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc8_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc8_25.4: %tuple.type.0e4 = converted %.loc8_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc8_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call -// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.4 [template = constants.%D] +// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.b22 [template = constants.%D] // CHECK:STDOUT: %D.call: init %empty_tuple.type = call %D.ref() // CHECK:STDOUT: assign file.%d.var, %D.call // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.6 [template = constants.%E] +// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.461 [template = constants.%E] // CHECK:STDOUT: %E.call: init %empty_tuple.type = call %E.ref() // CHECK:STDOUT: assign file.%e.var, %E.call // CHECK:STDOUT: return @@ -575,8 +575,8 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] @@ -584,26 +584,26 @@ import library "extern_api"; // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] // CHECK:STDOUT: %E: %E.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.20), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { // CHECK:STDOUT: .E = file.%E.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.7 -// CHECK:STDOUT: .ImplicitAs = %import_ref.11 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -642,14 +642,14 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc32_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc32_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc32_21.1: type = splice_block %.loc32_21.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %c.param: %tuple.type.0e4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc32_21.1: type = splice_block %.loc32_21.3 [template = constants.%tuple.type.0e4] { // CHECK:STDOUT: %int_32.loc32_17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc32_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc32_21.2: %tuple.type.1 = tuple_literal (%i32.loc32_17) -// CHECK:STDOUT: %.loc32_21.3: type = converted %.loc32_21.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc32_21.2: %tuple.type.85c = tuple_literal (%i32.loc32_17) +// CHECK:STDOUT: %.loc32_21.3: type = converted %.loc32_21.2, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %tuple.type.0e4 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %struct_type.c = out_param runtime_param1 // CHECK:STDOUT: %return: ref %struct_type.c = return_slot %return.param // CHECK:STDOUT: } @@ -671,7 +671,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @B(%b.param_patt: %i32) -> %i32 [from "api.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.2) -> %struct_type.c [from "api.carbon"]; +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c [from "api.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D() [from "api.carbon"]; // CHECK:STDOUT: @@ -683,26 +683,26 @@ import library "extern_api"; // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc53: = bound_method %int_1.loc53, %impl.elem0.loc53 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc53: = specific_function %Convert.bound.loc53, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc53_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc54_25.1: %tuple.type.3 = tuple_literal (%int_1.loc54) -// CHECK:STDOUT: %impl.elem0.loc54: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) +// CHECK:STDOUT: %impl.elem0.loc54: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc54: = bound_method %int_1.loc54, %impl.elem0.loc54 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc54: = specific_function %Convert.bound.loc54, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %Convert.specific_fn.loc54(%int_1.loc54) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc54_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc54_25.4: %tuple.type.2 = converted %.loc54_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %Convert.specific_fn.loc54(%int_1.loc54) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc54_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc54_25.4: %tuple.type.0e4 = converted %.loc54_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc54_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, file.%D.decl [template = constants.%D] @@ -725,8 +725,8 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] @@ -734,26 +734,26 @@ import library "extern_api"; // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] // CHECK:STDOUT: %E: %E.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.20), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//extern_api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { // CHECK:STDOUT: .E = file.%E.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.7 -// CHECK:STDOUT: .ImplicitAs = %import_ref.11 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -792,14 +792,14 @@ import library "extern_api"; // CHECK:STDOUT: %int_32.loc8_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %c.param: %tuple.type.0e4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.3 [template = constants.%tuple.type.0e4] { // CHECK:STDOUT: %int_32.loc8_17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc8_21.2: %tuple.type.1 = tuple_literal (%i32.loc8_17) -// CHECK:STDOUT: %.loc8_21.3: type = converted %.loc8_21.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc8_21.2: %tuple.type.85c = tuple_literal (%i32.loc8_17) +// CHECK:STDOUT: %.loc8_21.3: type = converted %.loc8_21.2, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %tuple.type.0e4 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %struct_type.c = out_param runtime_param1 // CHECK:STDOUT: %return: ref %struct_type.c = return_slot %return.param // CHECK:STDOUT: } @@ -821,7 +821,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @B(%b.param_patt: %i32) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.2) -> %struct_type.c; +// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D(); // CHECK:STDOUT: @@ -833,26 +833,26 @@ import library "extern_api"; // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call // CHECK:STDOUT: %B.ref: %B.type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc13: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_1.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_1.loc13) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_16.2: %i32 = converted %int_1.loc13, %.loc13_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_1.loc13) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_16.2: %i32 = converted %int_1.loc13, %.loc13_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc13_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc14_25.1: %tuple.type.3 = tuple_literal (%int_1.loc14) -// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc14_25.1: %tuple.type.985 = tuple_literal (%int_1.loc14) +// CHECK:STDOUT: %impl.elem0.loc14: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc14: = bound_method %int_1.loc14, %impl.elem0.loc14 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc14: = specific_function %Convert.bound.loc14, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_25.2: %i32 = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_25.3: %i32 = converted %int_1.loc14, %.loc14_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc14_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc14_25.4: %tuple.type.2 = converted %.loc14_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc14: init %i32 = call %Convert.specific_fn.loc14(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_25.2: %i32 = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_25.3: %i32 = converted %int_1.loc14, %.loc14_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc14_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_25.4: %tuple.type.0e4 = converted %.loc14_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc14_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: %D.ref: %D.type = name_ref D, file.%D.decl [template = constants.%D] @@ -875,20 +875,20 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.25), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: %D.type: type = fn_type @D [template] // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] @@ -896,18 +896,18 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//api, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//api, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//api, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//api, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { -// CHECK:STDOUT: .E = %import_ref.6 +// CHECK:STDOUT: %import_ref.290: %A.type = import_ref Main//api, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.9e3: %B.type = import_ref Main//api, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.fb4: %C.type = import_ref Main//api, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.b22: %D.type = import_ref Main//api, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .E = %import_ref.461 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//api, E, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.461: %E.type = import_ref Main//api, E, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.12 -// CHECK:STDOUT: .ImplicitAs = %import_ref.16 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -915,10 +915,10 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.290 +// CHECK:STDOUT: .B = imports.%import_ref.9e3 +// CHECK:STDOUT: .C = imports.%import_ref.fb4 +// CHECK:STDOUT: .D = imports.%import_ref.b22 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a @@ -945,7 +945,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @B(%b.param_patt: %i32) -> %i32 [from "api.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.1) -> %struct_type.c [from "api.carbon"]; +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c [from "api.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D() [from "api.carbon"]; // CHECK:STDOUT: @@ -953,37 +953,37 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.1 [template = constants.%A] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.290 [template = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call -// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.2 [template = constants.%B] -// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.9e3 [template = constants.%B] +// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc53: = bound_method %int_1.loc53, %impl.elem0.loc53 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc53: = specific_function %Convert.bound.loc53, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_16.1: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_16.2: %i32 = converted %int_1.loc53, %.loc53_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc53_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C] -// CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc54_25.1: %tuple.type.2 = tuple_literal (%int_1.loc54) -// CHECK:STDOUT: %impl.elem0.loc54: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.fb4 [template = constants.%C] +// CHECK:STDOUT: %int_1.loc54: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc54_25.1: %tuple.type.985 = tuple_literal (%int_1.loc54) +// CHECK:STDOUT: %impl.elem0.loc54: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc54: = bound_method %int_1.loc54, %impl.elem0.loc54 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc54: = specific_function %Convert.bound.loc54, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %Convert.specific_fn.loc54(%int_1.loc54) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.loc54_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc54_25.4: %tuple.type.1 = converted %.loc54_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc54: init %i32 = call %Convert.specific_fn.loc54(%int_1.loc54) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc54_25.2: %i32 = value_of_initializer %int.convert_checked.loc54 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc54_25.3: %i32 = converted %int_1.loc54, %.loc54_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc54_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc54_25.4: %tuple.type.0e4 = converted %.loc54_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc54_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call -// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.4 [template = constants.%D] +// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.b22 [template = constants.%D] // CHECK:STDOUT: %D.call: init %empty_tuple.type = call %D.ref() // CHECK:STDOUT: assign file.%d.var, %D.call // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.6 [template = constants.%E] +// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.461 [template = constants.%E] // CHECK:STDOUT: %E.call: init %empty_tuple.type = call %E.ref() // CHECK:STDOUT: assign file.%e.var, %E.call // CHECK:STDOUT: return @@ -999,20 +999,20 @@ import library "extern_api"; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.25), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: %D.type: type = fn_type @D [template] // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] @@ -1020,18 +1020,18 @@ import library "extern_api"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//extern_api, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//extern_api, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//extern_api, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Main//extern_api, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { -// CHECK:STDOUT: .E = %import_ref.6 +// CHECK:STDOUT: %import_ref.290: %A.type = import_ref Main//extern_api, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.9e3: %B.type = import_ref Main//extern_api, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.fb4: %C.type = import_ref Main//extern_api, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.b22: %D.type = import_ref Main//extern_api, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//extern_api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .E = %import_ref.461 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6: %E.type = import_ref Main//extern_api, E, loaded [template = constants.%E] +// CHECK:STDOUT: %import_ref.461: %E.type = import_ref Main//extern_api, E, loaded [template = constants.%E] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.12 -// CHECK:STDOUT: .ImplicitAs = %import_ref.16 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1039,10 +1039,10 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.290 +// CHECK:STDOUT: .B = imports.%import_ref.9e3 +// CHECK:STDOUT: .C = imports.%import_ref.fb4 +// CHECK:STDOUT: .D = imports.%import_ref.b22 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a @@ -1069,7 +1069,7 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @B(%b.param_patt: %i32) -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.1) -> %struct_type.c; +// CHECK:STDOUT: extern fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c; // CHECK:STDOUT: // CHECK:STDOUT: extern fn @D(); // CHECK:STDOUT: @@ -1077,37 +1077,37 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.1 [template = constants.%A] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.290 [template = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call -// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.2 [template = constants.%B] -// CHECK:STDOUT: %int_1.loc52: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc52: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.9e3 [template = constants.%B] +// CHECK:STDOUT: %int_1.loc52: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc52: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc52: = bound_method %int_1.loc52, %impl.elem0.loc52 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc52: = specific_function %Convert.bound.loc52, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc52: init %i32 = call %Convert.specific_fn.loc52(%int_1.loc52) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc52_16.1: %i32 = value_of_initializer %int.convert_checked.loc52 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc52_16.2: %i32 = converted %int_1.loc52, %.loc52_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc52: init %i32 = call %Convert.specific_fn.loc52(%int_1.loc52) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc52_16.1: %i32 = value_of_initializer %int.convert_checked.loc52 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc52_16.2: %i32 = converted %int_1.loc52, %.loc52_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc52_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C] -// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc53_25.1: %tuple.type.2 = tuple_literal (%int_1.loc53) -// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.fb4 [template = constants.%C] +// CHECK:STDOUT: %int_1.loc53: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc53_25.1: %tuple.type.985 = tuple_literal (%int_1.loc53) +// CHECK:STDOUT: %impl.elem0.loc53: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc53: = bound_method %int_1.loc53, %impl.elem0.loc53 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc53: = specific_function %Convert.bound.loc53, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_25.2: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc53_25.3: %i32 = converted %int_1.loc53, %.loc53_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.loc53_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc53_25.4: %tuple.type.1 = converted %.loc53_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc53: init %i32 = call %Convert.specific_fn.loc53(%int_1.loc53) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_25.2: %i32 = value_of_initializer %int.convert_checked.loc53 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc53_25.3: %i32 = converted %int_1.loc53, %.loc53_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc53_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc53_25.4: %tuple.type.0e4 = converted %.loc53_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc53_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call -// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.4 [template = constants.%D] +// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.b22 [template = constants.%D] // CHECK:STDOUT: %D.call: init %empty_tuple.type = call %D.ref() // CHECK:STDOUT: assign file.%d.var, %D.call // CHECK:STDOUT: %NS.ref: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.6 [template = constants.%E] +// CHECK:STDOUT: %E.ref: %E.type = name_ref E, imports.%import_ref.461 [template = constants.%E] // CHECK:STDOUT: %E.call: init %empty_tuple.type = call %E.ref() // CHECK:STDOUT: assign file.%e.var, %E.call // CHECK:STDOUT: return @@ -1116,13 +1116,13 @@ import library "extern_api"; // CHECK:STDOUT: --- unloaded.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//api, A, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//api, B, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//api, C, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//api, D, unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { -// CHECK:STDOUT: .E = %import_ref.6 +// CHECK:STDOUT: %import_ref.f82 = import_ref Main//api, A, unloaded +// CHECK:STDOUT: %import_ref.90c = import_ref Main//api, B, unloaded +// CHECK:STDOUT: %import_ref.40f = import_ref Main//api, C, unloaded +// CHECK:STDOUT: %import_ref.a91 = import_ref Main//api, D, unloaded +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .E = %import_ref.ba8 // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude @@ -1132,10 +1132,10 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.f82 +// CHECK:STDOUT: .B = imports.%import_ref.90c +// CHECK:STDOUT: .C = imports.%import_ref.40f +// CHECK:STDOUT: .D = imports.%import_ref.a91 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } @@ -1146,13 +1146,13 @@ import library "extern_api"; // CHECK:STDOUT: --- unloaded_extern.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_api, A, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//extern_api, B, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//extern_api, C, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//extern_api, D, unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//extern_api, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.5, [template] { -// CHECK:STDOUT: .E = %import_ref.6 +// CHECK:STDOUT: %import_ref.f82 = import_ref Main//extern_api, A, unloaded +// CHECK:STDOUT: %import_ref.90c = import_ref Main//extern_api, B, unloaded +// CHECK:STDOUT: %import_ref.40f = import_ref Main//extern_api, C, unloaded +// CHECK:STDOUT: %import_ref.a91 = import_ref Main//extern_api, D, unloaded +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//extern_api, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .E = %import_ref.ba8 // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude @@ -1162,10 +1162,10 @@ import library "extern_api"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.f82 +// CHECK:STDOUT: .B = imports.%import_ref.90c +// CHECK:STDOUT: .C = imports.%import_ref.40f +// CHECK:STDOUT: .D = imports.%import_ref.a91 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon b/toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon index b616a7a3b381..793c9359b721 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/extern_library.carbon @@ -270,12 +270,12 @@ extern library "extern_library_owner" fn F() {} // CHECK:STDOUT: --- fail_extern_library_collision.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extern_library, F, unloaded +// CHECK:STDOUT: %import_ref.b07 = import_ref Main//extern_library, F, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .F = imports.%import_ref.1 +// CHECK:STDOUT: .F = imports.%import_ref.b07 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon index 26a536920ffc..5ec48e278d87 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon @@ -197,26 +197,26 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//incomplete_return, C, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//incomplete_return, D, unloaded -// CHECK:STDOUT: %import_ref.3: %ReturnCUnused.type = import_ref Main//incomplete_return, ReturnCUnused, loaded [template = constants.%ReturnCUnused] -// CHECK:STDOUT: %import_ref.4: %ReturnCUsed.type = import_ref Main//incomplete_return, ReturnCUsed, loaded [template = constants.%ReturnCUsed] -// CHECK:STDOUT: %import_ref.5: %ReturnDUnused.type = import_ref Main//incomplete_return, ReturnDUnused, loaded [template = constants.%ReturnDUnused] -// CHECK:STDOUT: %import_ref.6: %ReturnDUsed.type = import_ref Main//incomplete_return, ReturnDUsed, loaded [template = constants.%ReturnDUsed] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//incomplete_return, Call, unloaded -// CHECK:STDOUT: %import_ref.8: = import_ref Main//incomplete_return, loc37_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//incomplete_return, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//incomplete_return, C, unloaded +// CHECK:STDOUT: %import_ref.5de = import_ref Main//incomplete_return, D, unloaded +// CHECK:STDOUT: %import_ref.3ff: %ReturnCUnused.type = import_ref Main//incomplete_return, ReturnCUnused, loaded [template = constants.%ReturnCUnused] +// CHECK:STDOUT: %import_ref.017: %ReturnCUsed.type = import_ref Main//incomplete_return, ReturnCUsed, loaded [template = constants.%ReturnCUsed] +// CHECK:STDOUT: %import_ref.d60: %ReturnDUnused.type = import_ref Main//incomplete_return, ReturnDUnused, loaded [template = constants.%ReturnDUnused] +// CHECK:STDOUT: %import_ref.7fe: %ReturnDUsed.type = import_ref Main//incomplete_return, ReturnDUsed, loaded [template = constants.%ReturnDUsed] +// CHECK:STDOUT: %import_ref.8e9 = import_ref Main//incomplete_return, Call, unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//incomplete_return, loc37_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref Main//incomplete_return, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 -// CHECK:STDOUT: .ReturnCUnused = imports.%import_ref.3 -// CHECK:STDOUT: .ReturnCUsed = imports.%import_ref.4 -// CHECK:STDOUT: .ReturnDUnused = imports.%import_ref.5 -// CHECK:STDOUT: .ReturnDUsed = imports.%import_ref.6 -// CHECK:STDOUT: .Call = imports.%import_ref.7 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .D = imports.%import_ref.5de +// CHECK:STDOUT: .ReturnCUnused = imports.%import_ref.3ff +// CHECK:STDOUT: .ReturnCUsed = imports.%import_ref.017 +// CHECK:STDOUT: .ReturnDUnused = imports.%import_ref.d60 +// CHECK:STDOUT: .ReturnDUsed = imports.%import_ref.7fe +// CHECK:STDOUT: .Call = imports.%import_ref.8e9 // CHECK:STDOUT: .CallFAndGIncomplete = %CallFAndGIncomplete.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -227,21 +227,21 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "fail_incomplete_return.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallFAndGIncomplete() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %ReturnCUnused.ref: %ReturnCUnused.type = name_ref ReturnCUnused, imports.%import_ref.3 [template = constants.%ReturnCUnused] +// CHECK:STDOUT: %ReturnCUnused.ref: %ReturnCUnused.type = name_ref ReturnCUnused, imports.%import_ref.3ff [template = constants.%ReturnCUnused] // CHECK:STDOUT: %ReturnCUnused.call: init = call %ReturnCUnused.ref() -// CHECK:STDOUT: %ReturnCUsed.ref: %ReturnCUsed.type = name_ref ReturnCUsed, imports.%import_ref.4 [template = constants.%ReturnCUsed] +// CHECK:STDOUT: %ReturnCUsed.ref: %ReturnCUsed.type = name_ref ReturnCUsed, imports.%import_ref.017 [template = constants.%ReturnCUsed] // CHECK:STDOUT: %ReturnCUsed.call: init = call %ReturnCUsed.ref() -// CHECK:STDOUT: %ReturnDUnused.ref: %ReturnDUnused.type = name_ref ReturnDUnused, imports.%import_ref.5 [template = constants.%ReturnDUnused] +// CHECK:STDOUT: %ReturnDUnused.ref: %ReturnDUnused.type = name_ref ReturnDUnused, imports.%import_ref.d60 [template = constants.%ReturnDUnused] // CHECK:STDOUT: %.loc32_17.1: ref %D = temporary_storage // CHECK:STDOUT: %ReturnDUnused.call: init %D = call %ReturnDUnused.ref() to %.loc32_17.1 // CHECK:STDOUT: %.loc32_17.2: ref %D = temporary %.loc32_17.1, %ReturnDUnused.call -// CHECK:STDOUT: %ReturnDUsed.ref: %ReturnDUsed.type = name_ref ReturnDUsed, imports.%import_ref.6 [template = constants.%ReturnDUsed] +// CHECK:STDOUT: %ReturnDUsed.ref: %ReturnDUsed.type = name_ref ReturnDUsed, imports.%import_ref.7fe [template = constants.%ReturnDUsed] // CHECK:STDOUT: %.loc33_15.1: ref %D = temporary_storage // CHECK:STDOUT: %ReturnDUsed.call: init %D = call %ReturnDUsed.ref() to %.loc33_15.1 // CHECK:STDOUT: %.loc33_15.2: ref %D = temporary %.loc33_15.1, %ReturnDUsed.call diff --git a/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon b/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon index 90583f172d40..d03a874c53c5 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/fail_redecl.carbon @@ -68,7 +68,7 @@ fn E() {} // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: %D.type: type = fn_type @D [template] // CHECK:STDOUT: %D: %D.type = struct_value () [template] // CHECK:STDOUT: %E.type: type = fn_type @E [template] @@ -108,7 +108,7 @@ fn E() {} // CHECK:STDOUT: %x.loc29: %empty_tuple.type = bind_name x, %x.param.loc29 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon b/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon index aaf0bcd68125..b44c53ad9a7e 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon @@ -295,10 +295,10 @@ class X { // CHECK:STDOUT: --- no_poison.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %C.1: type = class_type @C.1 [template] +// CHECK:STDOUT: %C.f79: type = class_type @C.1 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %C.2: type = class_type @C.2 [template] +// CHECK:STDOUT: %C.9f4: type = class_type @C.2 [template] // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] @@ -311,28 +311,28 @@ class X { // CHECK:STDOUT: .C = %C.decl.loc4 // CHECK:STDOUT: .N = %N // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl.loc4: type = class_decl @C.1 [template = constants.%C.1] {} {} +// CHECK:STDOUT: %C.decl.loc4: type = class_decl @C.1 [template = constants.%C.f79] {} {} // CHECK:STDOUT: %N: = namespace [template] { // CHECK:STDOUT: .C = %C.decl.loc8 // CHECK:STDOUT: .F1 = %F1.decl // CHECK:STDOUT: .F2 = %F2.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %C.decl.loc8: type = class_decl @C.2 [template = constants.%C.2] {} {} +// CHECK:STDOUT: %C.decl.loc8: type = class_decl @C.2 [template = constants.%C.9f4] {} {} // CHECK:STDOUT: %F1.decl: %F1.type = fn_decl @F1 [template = constants.%F1] { -// CHECK:STDOUT: %x.patt: %C.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %C.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %C.9f4 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %C.9f4 = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc8 [template = constants.%C.2] -// CHECK:STDOUT: %x: %C.2 = bind_name x, %x.param +// CHECK:STDOUT: %x.param: %C.9f4 = value_param runtime_param0 +// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc8 [template = constants.%C.9f4] +// CHECK:STDOUT: %x: %C.9f4 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %F2.decl: %F2.type = fn_decl @F2 [template = constants.%F2] { -// CHECK:STDOUT: %x.patt: %C.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %C.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %C.9f4 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %C.9f4 = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc8 [template = constants.%C.2] -// CHECK:STDOUT: %x: %C.2 = bind_name x, %x.param +// CHECK:STDOUT: %x.param: %C.9f4 = value_param runtime_param0 +// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc8 [template = constants.%C.9f4] +// CHECK:STDOUT: %x: %C.9f4 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -340,7 +340,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.f79 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -348,17 +348,17 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: .Self = constants.%C.9f4 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F1(%x.param_patt: %C.2); +// CHECK:STDOUT: fn @F1(%x.param_patt: %C.9f4); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F2(%x.param_patt: %C.2) { +// CHECK:STDOUT: fn @F2(%x.param_patt: %C.9f4) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %N.ref: = name_ref N, file.%N [template = file.%N] // CHECK:STDOUT: %F1.ref: %F1.type = name_ref F1, file.%F1.decl [template = constants.%F1] -// CHECK:STDOUT: %x.ref: %C.2 = name_ref x, %x +// CHECK:STDOUT: %x.ref: %C.9f4 = name_ref x, %x // CHECK:STDOUT: %F1.call: init %empty_tuple.type = call %F1.ref(%x.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -410,7 +410,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.fb7: type = class_type @.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -430,7 +430,7 @@ class X { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x: %C = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.fb7] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -445,7 +445,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.fb7 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -455,11 +455,11 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] // CHECK:STDOUT: %.type: type = facet_type <@.1> [template] -// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.cff: %.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -483,7 +483,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -491,7 +491,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @.1 { -// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.cff] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -545,14 +545,14 @@ class X { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C1: type = class_type @C1 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] // CHECK:STDOUT: %C2: type = class_type @C2 [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %C2 [template] // CHECK:STDOUT: %struct_type.C1: type = struct_type {.C1: %C2} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.C1 [template] +// CHECK:STDOUT: %complete_type.b44: = complete_type_witness %struct_type.C1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -565,7 +565,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C1 @@ -583,7 +583,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: %C2.decl: type = class_decl @C2 [template = constants.%C2] {} {} // CHECK:STDOUT: %.loc18: %D.elem = field_decl C1, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.C1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.C1 [template = constants.%complete_type.b44] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -593,7 +593,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C2 @@ -611,7 +611,7 @@ class X { // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.236: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -631,7 +631,7 @@ class X { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x: %C = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.236] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -708,7 +708,7 @@ class X { // CHECK:STDOUT: %F1.type: type = fn_type @F1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %F1: %F1.type = struct_value () [template] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] +// CHECK:STDOUT: %.fb7: type = class_type @.1 [template] // CHECK:STDOUT: %F2.type: type = fn_type @F2 [template] // CHECK:STDOUT: %F2: %F2.type = struct_value () [template] // CHECK:STDOUT: } @@ -731,7 +731,7 @@ class X { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x: %C = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.fb7] {} {} // CHECK:STDOUT: %F2.decl: %F2.type = fn_decl @F2 [template = constants.%F2] { // CHECK:STDOUT: %x.patt: %C = binding_pattern x // CHECK:STDOUT: %x.param_patt: %C = value_param_pattern %x.patt, runtime_param0 @@ -754,7 +754,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: .Self = constants.%.fb7 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -777,20 +777,20 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D1: type = class_type @D1 [template] // CHECK:STDOUT: %D2.type: type = facet_type <@D2> [template] -// CHECK:STDOUT: %Self.1: %D2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %D3.1: type = class_type @D3 [template] -// CHECK:STDOUT: %D3.2: type = class_type @D3, @D3(%Self.1) [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F, @D3(%Self.1) [symbolic] +// CHECK:STDOUT: %Self.7cc: %D2.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %D3.cb3: type = class_type @D3 [template] +// CHECK:STDOUT: %D3.4cd: type = class_type @D3, @D3(%Self.7cc) [symbolic] +// CHECK:STDOUT: %F.type: type = fn_type @F, @D3(%Self.7cc) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %.1: type = class_type @.1 [template] -// CHECK:STDOUT: %.2: type = class_type @.1, @.1(%Self.1) [symbolic] -// CHECK:STDOUT: %.3: type = class_type @.2 [template] -// CHECK:STDOUT: %.4: type = class_type @.2, @.2(%Self.1) [symbolic] -// CHECK:STDOUT: %.5: type = class_type @.3 [template] -// CHECK:STDOUT: %.6: type = class_type @.4 [template] +// CHECK:STDOUT: %.a85: type = class_type @.1 [template] +// CHECK:STDOUT: %.f6a: type = class_type @.1, @.1(%Self.7cc) [symbolic] +// CHECK:STDOUT: %.eee: type = class_type @.2 [template] +// CHECK:STDOUT: %.175: type = class_type @.2, @.2(%Self.7cc) [symbolic] +// CHECK:STDOUT: %.700: type = class_type @.3 [template] +// CHECK:STDOUT: %.1c0: type = class_type @.4 [template] // CHECK:STDOUT: %.type: type = facet_type <@.6> [template] -// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %.7: type = class_type @.5 [template] +// CHECK:STDOUT: %Self.d82: %.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %.4b5: type = class_type @.5 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -809,15 +809,15 @@ class X { // CHECK:STDOUT: .D1 = %D1.decl // CHECK:STDOUT: } // CHECK:STDOUT: %D1.decl: type = class_decl @D1 [template = constants.%D1] {} {} -// CHECK:STDOUT: %.decl.loc49: type = class_decl @.4 [template = constants.%.6] {} {} +// CHECK:STDOUT: %.decl.loc49: type = class_decl @.4 [template = constants.%.1c0] {} {} // CHECK:STDOUT: %.decl.loc56: type = interface_decl @.6 [template = constants.%.type] {} {} -// CHECK:STDOUT: %.decl.loc62: type = class_decl @.5 [template = constants.%.7] {} {} +// CHECK:STDOUT: %.decl.loc62: type = class_decl @.5 [template = constants.%.4b5] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @D2 { -// CHECK:STDOUT: %Self: %D2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %D3.decl: type = class_decl @D3 [template = constants.%D3.1] {} {} -// CHECK:STDOUT: %.decl: type = class_decl @.2 [template = constants.%.3] {} {} +// CHECK:STDOUT: %Self: %D2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.7cc] +// CHECK:STDOUT: %D3.decl: type = class_decl @D3 [template = constants.%D3.cb3] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.2 [template = constants.%.eee] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -826,7 +826,7 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @.6 { -// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d82] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -843,7 +843,7 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: class @D1 { // CHECK:STDOUT: %D2.decl: type = interface_decl @D2 [template = constants.%D2.type] {} {} -// CHECK:STDOUT: %.decl: type = class_decl @.3 [template = constants.%.5] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.3 [template = constants.%.700] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -854,7 +854,7 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: generic class @D3(@D2.%Self: %D2.type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self: %D2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] +// CHECK:STDOUT: %Self: %D2.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.7cc)] // CHECK:STDOUT: %F.type: type = fn_type @F, @D3(%Self) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @D3.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] // CHECK:STDOUT: @@ -867,11 +867,11 @@ class X { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x: %C = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.a85] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%D3.2 +// CHECK:STDOUT: .Self = constants.%D3.4cd // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -884,7 +884,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.2 +// CHECK:STDOUT: .Self = constants.%.f6a // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -896,7 +896,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.4 +// CHECK:STDOUT: .Self = constants.%.175 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -905,7 +905,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.5 +// CHECK:STDOUT: .Self = constants.%.700 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -913,7 +913,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.6 +// CHECK:STDOUT: .Self = constants.%.1c0 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -921,7 +921,7 @@ class X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%.7 +// CHECK:STDOUT: .Self = constants.%.4b5 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -930,15 +930,15 @@ class X { // CHECK:STDOUT: fn(%x.param_patt: %C); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @D3(constants.%Self.1) {} +// CHECK:STDOUT: specific @D3(constants.%Self.7cc) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.1) {} +// CHECK:STDOUT: specific @F(constants.%Self.7cc) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @.1(constants.%Self.7cc) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @D3(%Self) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @.2(constants.%Self.1) {} +// CHECK:STDOUT: specific @.2(constants.%Self.7cc) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_alias.carbon // CHECK:STDOUT: @@ -976,17 +976,17 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//poison, C, unloaded -// CHECK:STDOUT: %import_ref.2: = import_ref Main//poison, N, loaded -// CHECK:STDOUT: %N: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .F1 = %import_ref.3 +// CHECK:STDOUT: %import_ref.85d = import_ref Main//poison, C, unloaded +// CHECK:STDOUT: %import_ref.a98: = import_ref Main//poison, N, loaded +// CHECK:STDOUT: %N: = namespace %import_ref.a98, [template] { +// CHECK:STDOUT: .F1 = %import_ref.204 // CHECK:STDOUT: .C = file.%C.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: .N = imports.%N // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -1010,17 +1010,17 @@ class X { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//poison, C, unloaded -// CHECK:STDOUT: %import_ref.2: = import_ref Main//poison, N, loaded -// CHECK:STDOUT: %N: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .F1 = %import_ref.3 +// CHECK:STDOUT: %import_ref.85d = import_ref Main//poison, C, unloaded +// CHECK:STDOUT: %import_ref.a98: = import_ref Main//poison, N, loaded +// CHECK:STDOUT: %N: = namespace %import_ref.a98, [template] { +// CHECK:STDOUT: .F1 = %import_ref.204 // CHECK:STDOUT: .C = file.%C.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: .N = imports.%N // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import diff --git a/toolchain/check/testdata/function/declaration/param_same_name.carbon b/toolchain/check/testdata/function/declaration/param_same_name.carbon index 8221b616b8af..8af405e9df1d 100644 --- a/toolchain/check/testdata/function/declaration/param_same_name.carbon +++ b/toolchain/check/testdata/function/declaration/param_same_name.carbon @@ -25,7 +25,7 @@ fn G(a: i32); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/import.carbon b/toolchain/check/testdata/function/definition/import.carbon index cd6df661e822..515d52d68f14 100644 --- a/toolchain/check/testdata/function/definition/import.carbon +++ b/toolchain/check/testdata/function/definition/import.carbon @@ -118,8 +118,8 @@ fn D() {} // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] @@ -130,7 +130,7 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -164,22 +164,22 @@ fn D() {} // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] { -// CHECK:STDOUT: %c.patt: %tuple.type.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %tuple.type.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %tuple.type.0e4 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %tuple.type.0e4 = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %struct_type.c = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %struct_type.c = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_25: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_25: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c] -// CHECK:STDOUT: %c.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [template = constants.%tuple.type.2] { +// CHECK:STDOUT: %c.param: %tuple.type.0e4 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [template = constants.%tuple.type.0e4] { // CHECK:STDOUT: %int_32.loc6_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc6_14.2: %tuple.type.1 = tuple_literal (%i32.loc6_10) -// CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc6_14.2: %tuple.type.85c = tuple_literal (%i32.loc6_10) +// CHECK:STDOUT: %.loc6_14.3: type = converted %.loc6_14.2, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %tuple.type.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %tuple.type.0e4 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %struct_type.c = out_param runtime_param1 // CHECK:STDOUT: %return: ref %struct_type.c = return_slot %return.param // CHECK:STDOUT: } @@ -197,9 +197,9 @@ fn D() {} // CHECK:STDOUT: return %b.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.2) -> %struct_type.c { +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %tuple.type.2 = name_ref c, %c +// CHECK:STDOUT: %c.ref: %tuple.type.0e4 = name_ref c, %c // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %tuple.elem0: %i32 = tuple_access %c.ref, element0 // CHECK:STDOUT: %.loc6_48: %struct_type.c = struct_literal (%tuple.elem0) @@ -245,30 +245,30 @@ fn D() {} // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template] // CHECK:STDOUT: %C.type: type = fn_type @C [template] // CHECK:STDOUT: %C: %C.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%int_1.2) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_1.c60) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %A.type = import_ref Main//fns, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.2: %B.type = import_ref Main//fns, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Main//fns, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, D, unloaded +// CHECK:STDOUT: %import_ref.290: %A.type = import_ref Main//fns, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.9e3: %B.type = import_ref Main//fns, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.fb4: %C.type = import_ref Main//fns, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.a91 = import_ref Main//fns, D, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.9 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -276,10 +276,10 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.290 +// CHECK:STDOUT: .B = imports.%import_ref.9e3 +// CHECK:STDOUT: .C = imports.%import_ref.fb4 +// CHECK:STDOUT: .D = imports.%import_ref.a91 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b @@ -299,34 +299,34 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: fn @B(%b.param_patt: %i32) -> %i32 [from "fns.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.1) -> %struct_type.c [from "fns.carbon"]; +// CHECK:STDOUT: fn @C(%c.param_patt: %tuple.type.0e4) -> %struct_type.c [from "fns.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.1 [template = constants.%A] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.290 [template = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: assign file.%a.var, %A.call -// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.2 [template = constants.%B] -// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %B.ref: %B.type = name_ref B, imports.%import_ref.9e3 [template = constants.%B] +// CHECK:STDOUT: %int_1.loc7: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc7: = bound_method %int_1.loc7, %impl.elem0.loc7 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc7: = specific_function %Convert.bound.loc7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %Convert.specific_fn.loc7(%int_1.loc7) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc7: init %i32 = call %Convert.specific_fn.loc7(%int_1.loc7) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc7_16.1: %i32 = value_of_initializer %int.convert_checked.loc7 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc7_16.2: %i32 = converted %int_1.loc7, %.loc7_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %B.call: init %i32 = call %B.ref(%.loc7_16.2) // CHECK:STDOUT: assign file.%b.var, %B.call -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.3 [template = constants.%C] -// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc8_25.1: %tuple.type.2 = tuple_literal (%int_1.loc8) -// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.fb4 [template = constants.%C] +// CHECK:STDOUT: %int_1.loc8: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc8_25.1: %tuple.type.985 = tuple_literal (%int_1.loc8) +// CHECK:STDOUT: %impl.elem0.loc8: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc8: = bound_method %int_1.loc8, %impl.elem0.loc8 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc8: = specific_function %Convert.bound.loc8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_1.loc8) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%.loc8_25.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc8_25.4: %tuple.type.1 = converted %.loc8_25.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %Convert.specific_fn.loc8(%int_1.loc8) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_25.2: %i32 = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc8_25.3: %i32 = converted %int_1.loc8, %.loc8_25.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc8_25.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc8_25.4: %tuple.type.0e4 = converted %.loc8_25.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %C.call: init %struct_type.c = call %C.ref(%.loc8_25.4) // CHECK:STDOUT: assign file.%c.var, %C.call // CHECK:STDOUT: return @@ -344,10 +344,10 @@ fn D() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, C, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//fns, D, unloaded +// CHECK:STDOUT: %import_ref.40f = import_ref Main//fns, C, unloaded +// CHECK:STDOUT: %import_ref.a91 = import_ref Main//fns, D, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -357,8 +357,8 @@ fn D() {} // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .D = imports.%import_ref.4 +// CHECK:STDOUT: .C = imports.%import_ref.40f +// CHECK:STDOUT: .D = imports.%import_ref.a91 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core @@ -423,9 +423,9 @@ fn D() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//fns, A, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//fns, B, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//fns, C, unloaded +// CHECK:STDOUT: %import_ref.f82 = import_ref Main//fns, A, unloaded +// CHECK:STDOUT: %import_ref.90c = import_ref Main//fns, B, unloaded +// CHECK:STDOUT: %import_ref.40f = import_ref Main//fns, C, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -434,9 +434,9 @@ fn D() {} // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 +// CHECK:STDOUT: .A = imports.%import_ref.f82 +// CHECK:STDOUT: .B = imports.%import_ref.90c +// CHECK:STDOUT: .C = imports.%import_ref.40f // CHECK:STDOUT: .D = %D.decl.loc13 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon index e7bbff63a8bf..18d73f1ef307 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/fail_decl_param_mismatch.carbon @@ -70,30 +70,30 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.1: type = fn_type @.1 [template] +// CHECK:STDOUT: %.d852be.1: %.type.b6a92a.1 = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template] -// CHECK:STDOUT: %.2: %.type.2 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.2: type = fn_type @.2 [template] +// CHECK:STDOUT: %.d852be.2: %.type.b6a92a.2 = struct_value () [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %.type.3: type = fn_type @.3 [template] -// CHECK:STDOUT: %.3: %.type.3 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.3: type = fn_type @.3 [template] +// CHECK:STDOUT: %.d852be.3: %.type.b6a92a.3 = struct_value () [template] // CHECK:STDOUT: %I.type: type = fn_type @I [template] // CHECK:STDOUT: %I: %I.type = struct_value () [template] -// CHECK:STDOUT: %.type.4: type = fn_type @.4 [template] -// CHECK:STDOUT: %.4: %.type.4 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.4: type = fn_type @.4 [template] +// CHECK:STDOUT: %.d852be.4: %.type.b6a92a.4 = struct_value () [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %J.type: type = fn_type @J [template] // CHECK:STDOUT: %J: %J.type = struct_value () [template] -// CHECK:STDOUT: %.type.5: type = fn_type @.5 [template] -// CHECK:STDOUT: %.5: %.type.5 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.5: type = fn_type @.5 [template] +// CHECK:STDOUT: %.d852be.5: %.type.b6a92a.5 = struct_value () [template] // CHECK:STDOUT: %K.type: type = fn_type @K [template] // CHECK:STDOUT: %K: %K.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %.type.6: type = fn_type @.6 [template] -// CHECK:STDOUT: %.6: %.type.6 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.6: type = fn_type @.6 [template] +// CHECK:STDOUT: %.d852be.6: %.type.b6a92a.6 = struct_value () [template] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -107,7 +107,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: .K = %K.decl // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %.decl.loc19: %.type.1 = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl.loc19: %.type.b6a92a.1 = fn_decl @.1 [template = constants.%.d852be.1] { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { @@ -129,7 +129,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc29: %.type.2 = fn_decl @.2 [template = constants.%.2] {} {} +// CHECK:STDOUT: %.decl.loc29: %.type.b6a92a.2 = fn_decl @.2 [template = constants.%.d852be.2] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, runtime_param0 @@ -141,7 +141,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: } // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc36: %.type.3 = fn_decl @.3 [template = constants.%.3] { +// CHECK:STDOUT: %.decl.loc36: %.type.b6a92a.3 = fn_decl @.3 [template = constants.%.d852be.3] { // CHECK:STDOUT: %x.patt: = binding_pattern x // CHECK:STDOUT: %x.param_patt: = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { @@ -149,7 +149,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %x: = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %I.decl: %I.type = fn_decl @I [template = constants.%I] {} {} -// CHECK:STDOUT: %.decl.loc46: %.type.4 = fn_decl @.4 [template = constants.%.4] { +// CHECK:STDOUT: %.decl.loc46: %.type.b6a92a.4 = fn_decl @.4 [template = constants.%.d852be.4] { // CHECK:STDOUT: %return.patt: %empty_tuple.type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -167,7 +167,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc56: %.type.5 = fn_decl @.5 [template = constants.%.5] {} {} +// CHECK:STDOUT: %.decl.loc56: %.type.b6a92a.5 = fn_decl @.5 [template = constants.%.d852be.5] {} {} // CHECK:STDOUT: %K.decl: %K.type = fn_decl @K [template = constants.%K] { // CHECK:STDOUT: %return.patt: %empty_tuple.type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param0 @@ -177,7 +177,7 @@ fn K() -> {} { return {}; } // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc65: %.type.6 = fn_decl @.6 [template = constants.%.6] { +// CHECK:STDOUT: %.decl.loc65: %.type.b6a92a.6 = fn_decl @.6 [template = constants.%.d852be.6] { // CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon b/toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon index 89b9fb3f55b2..a6952f716dbb 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/implicit_import.carbon @@ -348,22 +348,22 @@ fn B() {} // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//def_alias, A, unloaded -// CHECK:STDOUT: %import_ref.2: %A.type = import_ref Main//def_alias, B, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.f82 = import_ref Main//def_alias, A, unloaded +// CHECK:STDOUT: %import_ref.e1b: %A.type = import_ref Main//def_alias, B, loaded [template = constants.%A] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 -// CHECK:STDOUT: .B = imports.%import_ref.2 +// CHECK:STDOUT: .A = imports.%import_ref.f82 +// CHECK:STDOUT: .B = imports.%import_ref.e1b // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @A() [from "def_alias.carbon"]; diff --git a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon index 5c1d9fccf9d4..79af01b9bbf1 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon @@ -298,7 +298,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -315,7 +315,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -452,16 +452,16 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//two_file, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.930: type = import_ref Main//two_file, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .D = imports.%import_ref.930 // CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: .Bar = %Bar.decl // CHECK:STDOUT: } @@ -472,7 +472,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param0 -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] { @@ -480,15 +480,15 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param0 -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.930 [template = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) [from "two_file.carbon"] { @@ -510,7 +510,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -530,7 +530,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { @@ -564,7 +564,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -584,7 +584,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a: %C = bind_name a, %a.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -620,7 +620,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -640,7 +640,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc7_8.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_8.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %a.patt.loc15_8.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_8.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_8.1, runtime_param [symbolic = %a.patt.loc15_8.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -788,21 +788,21 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: .D = %D // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -815,8 +815,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) [from "alias_two_file.carbon"] { @@ -834,7 +834,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -854,7 +854,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: } // CHECK:STDOUT: %a: %const = bind_name a, %a.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %a.patt: %const = binding_pattern a // CHECK:STDOUT: %a.param_patt: %const = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/function/definition/params_one.carbon b/toolchain/check/testdata/function/definition/params_one.carbon index b5c9d2a3bd33..c88c45959433 100644 --- a/toolchain/check/testdata/function/definition/params_one.carbon +++ b/toolchain/check/testdata/function/definition/params_one.carbon @@ -21,7 +21,7 @@ fn Foo(a: i32) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/params_one_comma.carbon b/toolchain/check/testdata/function/definition/params_one_comma.carbon index 40b8b4fe1667..b704cc43f885 100644 --- a/toolchain/check/testdata/function/definition/params_one_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_one_comma.carbon @@ -21,7 +21,7 @@ fn Foo(a: i32,) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/params_two.carbon b/toolchain/check/testdata/function/definition/params_two.carbon index 887e63449abb..04d56a3b68b8 100644 --- a/toolchain/check/testdata/function/definition/params_two.carbon +++ b/toolchain/check/testdata/function/definition/params_two.carbon @@ -21,7 +21,7 @@ fn Foo(a: i32, b: i32) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/params_two_comma.carbon b/toolchain/check/testdata/function/definition/params_two_comma.carbon index c89215cd3866..cddb5904d163 100644 --- a/toolchain/check/testdata/function/definition/params_two_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_two_comma.carbon @@ -21,7 +21,7 @@ fn Foo(a: i32, b: i32,) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index dad3c2dabb10..d17b5b3af308 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -195,29 +195,29 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %ExplicitGenericParam.type: type = fn_type @ExplicitGenericParam [template] // CHECK:STDOUT: %ExplicitGenericParam: %ExplicitGenericParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.1: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%T) [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.645: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%T) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %CallExplicitGenericParam.type: type = fn_type @CallExplicitGenericParam [template] // CHECK:STDOUT: %CallExplicitGenericParam: %CallExplicitGenericParam.type = struct_value () [template] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.2: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%i32) [template] +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.1e2: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%i32) [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T} [symbolic] -// CHECK:STDOUT: %ptr.3: type = ptr_type %struct_type.a [symbolic] +// CHECK:STDOUT: %ptr.eb5: type = ptr_type %struct_type.a [symbolic] // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.type: type = fn_type @CallExplicitGenericParamWithGenericArg [template] // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg: %CallExplicitGenericParamWithGenericArg.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %ptr.3 [symbolic] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.3: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%struct_type.a) [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %require_complete.624: = require_complete_type %ptr.eb5 [symbolic] +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.120: = specific_function %ExplicitGenericParam, @ExplicitGenericParam(%struct_type.a) [symbolic] +// CHECK:STDOUT: %complete_type.566: = complete_type_witness %ptr.dc3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -234,72 +234,72 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %ExplicitGenericParam.decl: %ExplicitGenericParam.type = fn_decl @ExplicitGenericParam [template = constants.%ExplicitGenericParam] { // CHECK:STDOUT: %T.patt.loc4_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_25.1, runtime_param [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc4_39.1: type = ptr_type %T [symbolic = %ptr.loc4_39.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_39.1: type = ptr_type %T [symbolic = %ptr.loc4_39.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %return.param: ref @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitGenericParam.decl: %CallExplicitGenericParam.type = fn_decl @CallExplicitGenericParam [template = constants.%CallExplicitGenericParam] { -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.2] -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitGenericParamWithGenericArg.decl: %CallExplicitGenericParamWithGenericArg.type = fn_decl @CallExplicitGenericParamWithGenericArg [template = constants.%CallExplicitGenericParamWithGenericArg] { // CHECK:STDOUT: %T.patt.loc10_43.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_43.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc10_43.1, runtime_param [symbolic = %T.patt.loc10_43.2 (constants.%T.patt)] -// CHECK:STDOUT: %return.patt: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc10: type = name_ref T, %T.loc10_43.1 [symbolic = %T.loc10_43.2 (constants.%T)] // CHECK:STDOUT: %struct_type.a.loc10_62.1: type = struct_type {.a: %T} [symbolic = %struct_type.a.loc10_62.2 (constants.%struct_type.a)] -// CHECK:STDOUT: %ptr.loc10_63.1: type = ptr_type %struct_type.a [symbolic = %ptr.loc10_63.2 (constants.%ptr.3)] +// CHECK:STDOUT: %ptr.loc10_63.1: type = ptr_type %struct_type.a [symbolic = %ptr.loc10_63.2 (constants.%ptr.eb5)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc10_43.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_43.2 (constants.%T)] -// CHECK:STDOUT: %return.param: ref @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @ExplicitGenericParam(%T.loc4_25.1: type) { // CHECK:STDOUT: %T.loc4_25.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_25.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type @ExplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %ptr.loc4_39.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_39.2: type = ptr_type @ExplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %ptr.loc4_39.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2: = specific_function constants.%ExplicitGenericParam, @ExplicitGenericParam(%T.loc4_25.2) [symbolic = %ExplicitGenericParam.specific_fn.loc4_50.2 (constants.%ExplicitGenericParam.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) [symbolic = %require_complete (constants.%require_complete.968)] +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2: = specific_function constants.%ExplicitGenericParam, @ExplicitGenericParam(%T.loc4_25.2) [symbolic = %ExplicitGenericParam.specific_fn.loc4_50.2 (constants.%ExplicitGenericParam.specific_fn.645)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type) -> @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) { +// CHECK:STDOUT: fn(%T.param_patt: type) -> @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitGenericParam.ref: %ExplicitGenericParam.type = name_ref ExplicitGenericParam, file.%ExplicitGenericParam.decl [template = constants.%ExplicitGenericParam] // CHECK:STDOUT: %T.ref.loc4_71: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.1: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%T) [symbolic = %ExplicitGenericParam.specific_fn.loc4_50.2 (constants.%ExplicitGenericParam.specific_fn.1)] -// CHECK:STDOUT: %ExplicitGenericParam.call: init @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = call %ExplicitGenericParam.specific_fn.loc4_50.1() -// CHECK:STDOUT: %.loc4_73.1: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = value_of_initializer %ExplicitGenericParam.call -// CHECK:STDOUT: %.loc4_73.2: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.1) = converted %ExplicitGenericParam.call, %.loc4_73.1 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.1: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%T) [symbolic = %ExplicitGenericParam.specific_fn.loc4_50.2 (constants.%ExplicitGenericParam.specific_fn.645)] +// CHECK:STDOUT: %ExplicitGenericParam.call: init @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = call %ExplicitGenericParam.specific_fn.loc4_50.1() +// CHECK:STDOUT: %.loc4_73.1: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = value_of_initializer %ExplicitGenericParam.call +// CHECK:STDOUT: %.loc4_73.2: @ExplicitGenericParam.%ptr.loc4_39.2 (%ptr.251) = converted %ExplicitGenericParam.call, %.loc4_73.1 // CHECK:STDOUT: return %.loc4_73.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallExplicitGenericParam() -> %ptr.2 { +// CHECK:STDOUT: fn @CallExplicitGenericParam() -> %ptr.dc3 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitGenericParam.ref: %ExplicitGenericParam.type = name_ref ExplicitGenericParam, file.%ExplicitGenericParam.decl [template = constants.%ExplicitGenericParam] // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%i32) [template = constants.%ExplicitGenericParam.specific_fn.2] -// CHECK:STDOUT: %ExplicitGenericParam.call: init %ptr.2 = call %ExplicitGenericParam.specific_fn() -// CHECK:STDOUT: %.loc7_35.1: %ptr.2 = value_of_initializer %ExplicitGenericParam.call -// CHECK:STDOUT: %.loc7_35.2: %ptr.2 = converted %ExplicitGenericParam.call, %.loc7_35.1 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%i32) [template = constants.%ExplicitGenericParam.specific_fn.1e2] +// CHECK:STDOUT: %ExplicitGenericParam.call: init %ptr.dc3 = call %ExplicitGenericParam.specific_fn() +// CHECK:STDOUT: %.loc7_35.1: %ptr.dc3 = value_of_initializer %ExplicitGenericParam.call +// CHECK:STDOUT: %.loc7_35.2: %ptr.dc3 = converted %ExplicitGenericParam.call, %.loc7_35.1 // CHECK:STDOUT: return %.loc7_35.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -307,21 +307,21 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %T.loc10_43.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_43.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc10_43.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_43.2 (constants.%T.patt)] // CHECK:STDOUT: %struct_type.a.loc10_62.2: type = struct_type {.a: @CallExplicitGenericParamWithGenericArg.%T.loc10_43.2 (%T)} [symbolic = %struct_type.a.loc10_62.2 (constants.%struct_type.a)] -// CHECK:STDOUT: %ptr.loc10_63.2: type = ptr_type @CallExplicitGenericParamWithGenericArg.%struct_type.a.loc10_62.2 (%struct_type.a) [symbolic = %ptr.loc10_63.2 (constants.%ptr.3)] +// CHECK:STDOUT: %ptr.loc10_63.2: type = ptr_type @CallExplicitGenericParamWithGenericArg.%struct_type.a.loc10_62.2 (%struct_type.a) [symbolic = %ptr.loc10_63.2 (constants.%ptr.eb5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) [symbolic = %require_complete (constants.%require_complete.3)] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc11_10.2: = specific_function constants.%ExplicitGenericParam, @ExplicitGenericParam(%struct_type.a.loc10_62.2) [symbolic = %ExplicitGenericParam.specific_fn.loc11_10.2 (constants.%ExplicitGenericParam.specific_fn.3)] +// CHECK:STDOUT: %require_complete: = require_complete_type @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) [symbolic = %require_complete (constants.%require_complete.624)] +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc11_10.2: = specific_function constants.%ExplicitGenericParam, @ExplicitGenericParam(%struct_type.a.loc10_62.2) [symbolic = %ExplicitGenericParam.specific_fn.loc11_10.2 (constants.%ExplicitGenericParam.specific_fn.120)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type) -> @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) { +// CHECK:STDOUT: fn(%T.param_patt: type) -> @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitGenericParam.ref: %ExplicitGenericParam.type = name_ref ExplicitGenericParam, file.%ExplicitGenericParam.decl [template = constants.%ExplicitGenericParam] // CHECK:STDOUT: %T.ref.loc11: type = name_ref T, %T.loc10_43.1 [symbolic = %T.loc10_43.2 (constants.%T)] // CHECK:STDOUT: %struct_type.a.loc11: type = struct_type {.a: %T} [symbolic = %struct_type.a.loc10_62.2 (constants.%struct_type.a)] -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc11_10.1: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%struct_type.a) [symbolic = %ExplicitGenericParam.specific_fn.loc11_10.2 (constants.%ExplicitGenericParam.specific_fn.3)] -// CHECK:STDOUT: %ExplicitGenericParam.call: init @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = call %ExplicitGenericParam.specific_fn.loc11_10.1() -// CHECK:STDOUT: %.loc11_39.1: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = value_of_initializer %ExplicitGenericParam.call -// CHECK:STDOUT: %.loc11_39.2: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.3) = converted %ExplicitGenericParam.call, %.loc11_39.1 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc11_10.1: = specific_function %ExplicitGenericParam.ref, @ExplicitGenericParam(constants.%struct_type.a) [symbolic = %ExplicitGenericParam.specific_fn.loc11_10.2 (constants.%ExplicitGenericParam.specific_fn.120)] +// CHECK:STDOUT: %ExplicitGenericParam.call: init @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = call %ExplicitGenericParam.specific_fn.loc11_10.1() +// CHECK:STDOUT: %.loc11_39.1: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = value_of_initializer %ExplicitGenericParam.call +// CHECK:STDOUT: %.loc11_39.2: @CallExplicitGenericParamWithGenericArg.%ptr.loc10_63.2 (%ptr.eb5) = converted %ExplicitGenericParam.call, %.loc11_39.1 // CHECK:STDOUT: return %.loc11_39.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -329,11 +329,11 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%T) { // CHECK:STDOUT: %T.loc4_25.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_25.2 => constants.%T -// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.968 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.645 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitGenericParam(%T.loc4_25.2) {} @@ -341,28 +341,28 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%i32) { // CHECK:STDOUT: %T.loc4_25.2 => constants.%i32 // CHECK:STDOUT: %T.patt.loc4_25.2 => constants.%i32 -// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.dc3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.566 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.1e2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallExplicitGenericParamWithGenericArg(constants.%T) { // CHECK:STDOUT: %T.loc10_43.2 => constants.%T // CHECK:STDOUT: %T.patt.loc10_43.2 => constants.%T // CHECK:STDOUT: %struct_type.a.loc10_62.2 => constants.%struct_type.a -// CHECK:STDOUT: %ptr.loc10_63.2 => constants.%ptr.3 +// CHECK:STDOUT: %ptr.loc10_63.2 => constants.%ptr.eb5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitGenericParam(constants.%struct_type.a) { // CHECK:STDOUT: %T.loc4_25.2 => constants.%struct_type.a // CHECK:STDOUT: %T.patt.loc4_25.2 => constants.%struct_type.a -// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.3 +// CHECK:STDOUT: %ptr.loc4_39.2 => constants.%ptr.eb5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.3 -// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.3 +// CHECK:STDOUT: %require_complete => constants.%require_complete.624 +// CHECK:STDOUT: %ExplicitGenericParam.specific_fn.loc4_50.2 => constants.%ExplicitGenericParam.specific_fn.120 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitGenericParam(@CallExplicitGenericParamWithGenericArg.%struct_type.a.loc10_62.2) {} @@ -498,21 +498,21 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %ExplicitAndAlsoDeduced.type: type = fn_type @ExplicitAndAlsoDeduced [template] // CHECK:STDOUT: %ExplicitAndAlsoDeduced: %ExplicitAndAlsoDeduced.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.1: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T) [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %A [template] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.5bc: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T) [symbolic] +// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [template] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced.type: type = fn_type @CallExplicitAndAlsoDeduced [template] // CHECK:STDOUT: %CallExplicitAndAlsoDeduced: %CallExplicitAndAlsoDeduced.type = struct_value () [template] -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.2: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [template] +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.7c3: = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%A) [template] // CHECK:STDOUT: %A.val: %A = struct_value () [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %complete_type.7ea: = complete_type_witness %ptr.6db [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -536,32 +536,32 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_27.1, runtime_param [symbolic = %T.patt.loc6_27.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc6_46: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc6_47.1: type = ptr_type %T [symbolic = %ptr.loc6_47.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_47.1: type = ptr_type %T [symbolic = %ptr.loc6_47.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc6_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = value_param runtime_param0 // CHECK:STDOUT: %T.ref.loc6_40: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %x: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallExplicitAndAlsoDeduced.decl: %CallExplicitAndAlsoDeduced.type = fn_decl @CallExplicitAndAlsoDeduced [template = constants.%CallExplicitAndAlsoDeduced] { -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.6db = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.6db = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref.loc10: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.2] -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.6db] +// CHECK:STDOUT: %return.param: ref %ptr.6db = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %ptr.6db = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A @@ -571,52 +571,52 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: generic fn @ExplicitAndAlsoDeduced(%T.loc6_27.1: type) { // CHECK:STDOUT: %T.loc6_27.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc6_27.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_27.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc6_47.2: type = ptr_type @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) [symbolic = %ptr.loc6_47.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc6_47.2: type = ptr_type @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) [symbolic = %ptr.loc6_47.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_43: = require_complete_type @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) [symbolic = %require_complete.loc6_43 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc6_38: = require_complete_type @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) [symbolic = %require_complete.loc6_38 (constants.%require_complete.2)] -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2: = specific_function constants.%ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T.loc6_27.2) [symbolic = %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 (constants.%ExplicitAndAlsoDeduced.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc6_43: = require_complete_type @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) [symbolic = %require_complete.loc6_43 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc6_38: = require_complete_type @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) [symbolic = %require_complete.loc6_38 (constants.%require_complete.db1)] +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2: = specific_function constants.%ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T.loc6_27.2) [symbolic = %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 (constants.%ExplicitAndAlsoDeduced.specific_fn.5bc)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T)) -> @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) { +// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T)) -> @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitAndAlsoDeduced.ref: %ExplicitAndAlsoDeduced.type = name_ref ExplicitAndAlsoDeduced, file.%ExplicitAndAlsoDeduced.decl [template = constants.%ExplicitAndAlsoDeduced] // CHECK:STDOUT: %T.ref.loc7: type = name_ref T, %T.loc6_27.1 [symbolic = %T.loc6_27.2 (constants.%T)] // CHECK:STDOUT: %x.ref: @ExplicitAndAlsoDeduced.%T.loc6_27.2 (%T) = name_ref x, %x -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.1: = specific_function %ExplicitAndAlsoDeduced.ref, @ExplicitAndAlsoDeduced(constants.%T) [symbolic = %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 (constants.%ExplicitAndAlsoDeduced.specific_fn.1)] -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = call %ExplicitAndAlsoDeduced.specific_fn.loc7_10.1(%x.ref) -// CHECK:STDOUT: %.loc7_38.1: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = value_of_initializer %ExplicitAndAlsoDeduced.call -// CHECK:STDOUT: %.loc7_38.2: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.1) = converted %ExplicitAndAlsoDeduced.call, %.loc7_38.1 +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.1: = specific_function %ExplicitAndAlsoDeduced.ref, @ExplicitAndAlsoDeduced(constants.%T) [symbolic = %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 (constants.%ExplicitAndAlsoDeduced.specific_fn.5bc)] +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = call %ExplicitAndAlsoDeduced.specific_fn.loc7_10.1(%x.ref) +// CHECK:STDOUT: %.loc7_38.1: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = value_of_initializer %ExplicitAndAlsoDeduced.call +// CHECK:STDOUT: %.loc7_38.2: @ExplicitAndAlsoDeduced.%ptr.loc6_47.2 (%ptr.251) = converted %ExplicitAndAlsoDeduced.call, %.loc7_38.1 // CHECK:STDOUT: return %.loc7_38.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallExplicitAndAlsoDeduced() -> %ptr.2 { +// CHECK:STDOUT: fn @CallExplicitAndAlsoDeduced() -> %ptr.6db { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ExplicitAndAlsoDeduced.ref: %ExplicitAndAlsoDeduced.type = name_ref ExplicitAndAlsoDeduced, file.%ExplicitAndAlsoDeduced.decl [template = constants.%ExplicitAndAlsoDeduced] // CHECK:STDOUT: %A.ref.loc11: type = name_ref A, file.%A.decl [template = constants.%A] // CHECK:STDOUT: %.loc11_37.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn: = specific_function %ExplicitAndAlsoDeduced.ref, @ExplicitAndAlsoDeduced(constants.%A) [template = constants.%ExplicitAndAlsoDeduced.specific_fn.2] +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn: = specific_function %ExplicitAndAlsoDeduced.ref, @ExplicitAndAlsoDeduced(constants.%A) [template = constants.%ExplicitAndAlsoDeduced.specific_fn.7c3] // CHECK:STDOUT: %.loc11_37.2: ref %A = temporary_storage // CHECK:STDOUT: %.loc11_37.3: init %A = class_init (), %.loc11_37.2 [template = constants.%A.val] // CHECK:STDOUT: %.loc11_37.4: ref %A = temporary %.loc11_37.2, %.loc11_37.3 // CHECK:STDOUT: %.loc11_37.5: ref %A = converted %.loc11_37.1, %.loc11_37.4 // CHECK:STDOUT: %.loc11_37.6: %A = bind_value %.loc11_37.5 -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init %ptr.2 = call %ExplicitAndAlsoDeduced.specific_fn(%.loc11_37.6) -// CHECK:STDOUT: %.loc11_39.1: %ptr.2 = value_of_initializer %ExplicitAndAlsoDeduced.call -// CHECK:STDOUT: %.loc11_39.2: %ptr.2 = converted %ExplicitAndAlsoDeduced.call, %.loc11_39.1 +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.call: init %ptr.6db = call %ExplicitAndAlsoDeduced.specific_fn(%.loc11_37.6) +// CHECK:STDOUT: %.loc11_39.1: %ptr.6db = value_of_initializer %ExplicitAndAlsoDeduced.call +// CHECK:STDOUT: %.loc11_39.2: %ptr.6db = converted %ExplicitAndAlsoDeduced.call, %.loc11_39.1 // CHECK:STDOUT: return %.loc11_39.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitAndAlsoDeduced(constants.%T) { // CHECK:STDOUT: %T.loc6_27.2 => constants.%T // CHECK:STDOUT: %T.patt.loc6_27.2 => constants.%T -// CHECK:STDOUT: %ptr.loc6_47.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc6_47.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_43 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc6_38 => constants.%require_complete.2 -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc6_43 => constants.%require_complete.968 +// CHECK:STDOUT: %require_complete.loc6_38 => constants.%require_complete.db1 +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.5bc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ExplicitAndAlsoDeduced(%T.loc6_27.2) {} @@ -624,12 +624,12 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @ExplicitAndAlsoDeduced(constants.%A) { // CHECK:STDOUT: %T.loc6_27.2 => constants.%A // CHECK:STDOUT: %T.patt.loc6_27.2 => constants.%A -// CHECK:STDOUT: %ptr.loc6_47.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc6_47.2 => constants.%ptr.6db // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc6_43 => constants.%complete_type.2 -// CHECK:STDOUT: %require_complete.loc6_38 => constants.%complete_type.1 -// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc6_43 => constants.%complete_type.7ea +// CHECK:STDOUT: %require_complete.loc6_38 => constants.%complete_type.357 +// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.7c3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- deduce_implicit.carbon @@ -637,26 +637,26 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %ImplicitGenericParam.type: type = fn_type @ImplicitGenericParam [template] // CHECK:STDOUT: %ImplicitGenericParam: %ImplicitGenericParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.1: = specific_function %ImplicitGenericParam, @ImplicitGenericParam(%T) [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.993: = specific_function %ImplicitGenericParam, @ImplicitGenericParam(%T) [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %CallImplicitGenericParam.type: type = fn_type @CallImplicitGenericParam [template] // CHECK:STDOUT: %CallImplicitGenericParam: %CallImplicitGenericParam.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.2: = specific_function %ImplicitGenericParam, @ImplicitGenericParam(%i32) [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %ptr.2 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.65b: = specific_function %ImplicitGenericParam, @ImplicitGenericParam(%i32) [template] +// CHECK:STDOUT: %complete_type.566: = complete_type_witness %ptr.dc3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -674,81 +674,81 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_25.1, runtime_param [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T) = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc4_44: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc4_45.1: type = ptr_type %T [symbolic = %ptr.loc4_45.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_45.1: type = ptr_type %T [symbolic = %ptr.loc4_45.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %x.param: @ImplicitGenericParam.%T.loc4_25.2 (%T) = value_param runtime_param0 // CHECK:STDOUT: %T.ref.loc4_38: type = name_ref T, %T.loc4_25.1 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %x: @ImplicitGenericParam.%T.loc4_25.2 (%T) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallImplicitGenericParam.decl: %CallImplicitGenericParam.type = fn_decl @CallImplicitGenericParam [template = constants.%CallImplicitGenericParam] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc6_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.dc3] // CHECK:STDOUT: %n.param: %i32 = value_param runtime_param0 // CHECK:STDOUT: %.loc6: type = splice_block %i32.loc6_32 [template = constants.%i32] { // CHECK:STDOUT: %int_32.loc6_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc6_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @ImplicitGenericParam(%T.loc4_25.1: type) { // CHECK:STDOUT: %T.loc4_25.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_25.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_25.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc4_45.2: type = ptr_type @ImplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %ptr.loc4_45.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_45.2: type = ptr_type @ImplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %ptr.loc4_45.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc4_41: = require_complete_type @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) [symbolic = %require_complete.loc4_41 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc4_36: = require_complete_type @ImplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %require_complete.loc4_36 (constants.%require_complete.2)] -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2: = specific_function constants.%ImplicitGenericParam, @ImplicitGenericParam(%T.loc4_25.2) [symbolic = %ImplicitGenericParam.specific_fn.loc4_56.2 (constants.%ImplicitGenericParam.specific_fn.1)] +// CHECK:STDOUT: %require_complete.loc4_41: = require_complete_type @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) [symbolic = %require_complete.loc4_41 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc4_36: = require_complete_type @ImplicitGenericParam.%T.loc4_25.2 (%T) [symbolic = %require_complete.loc4_36 (constants.%require_complete.db1)] +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2: = specific_function constants.%ImplicitGenericParam, @ImplicitGenericParam(%T.loc4_25.2) [symbolic = %ImplicitGenericParam.specific_fn.loc4_56.2 (constants.%ImplicitGenericParam.specific_fn.993)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T)) -> @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @ImplicitGenericParam.%T.loc4_25.2 (%T)) -> @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ImplicitGenericParam.ref: %ImplicitGenericParam.type = name_ref ImplicitGenericParam, file.%ImplicitGenericParam.decl [template = constants.%ImplicitGenericParam] // CHECK:STDOUT: %x.ref: @ImplicitGenericParam.%T.loc4_25.2 (%T) = name_ref x, %x -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.1: = specific_function %ImplicitGenericParam.ref, @ImplicitGenericParam(constants.%T) [symbolic = %ImplicitGenericParam.specific_fn.loc4_56.2 (constants.%ImplicitGenericParam.specific_fn.1)] -// CHECK:STDOUT: %ImplicitGenericParam.call: init @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = call %ImplicitGenericParam.specific_fn.loc4_56.1(%x.ref) -// CHECK:STDOUT: %.loc4_79.1: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = value_of_initializer %ImplicitGenericParam.call -// CHECK:STDOUT: %.loc4_79.2: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.1) = converted %ImplicitGenericParam.call, %.loc4_79.1 +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.1: = specific_function %ImplicitGenericParam.ref, @ImplicitGenericParam(constants.%T) [symbolic = %ImplicitGenericParam.specific_fn.loc4_56.2 (constants.%ImplicitGenericParam.specific_fn.993)] +// CHECK:STDOUT: %ImplicitGenericParam.call: init @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = call %ImplicitGenericParam.specific_fn.loc4_56.1(%x.ref) +// CHECK:STDOUT: %.loc4_79.1: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = value_of_initializer %ImplicitGenericParam.call +// CHECK:STDOUT: %.loc4_79.2: @ImplicitGenericParam.%ptr.loc4_45.2 (%ptr.251) = converted %ImplicitGenericParam.call, %.loc4_79.1 // CHECK:STDOUT: return %.loc4_79.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallImplicitGenericParam(%n.param_patt: %i32) -> %ptr.2 { +// CHECK:STDOUT: fn @CallImplicitGenericParam(%n.param_patt: %i32) -> %ptr.dc3 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %ImplicitGenericParam.ref: %ImplicitGenericParam.type = name_ref ImplicitGenericParam, file.%ImplicitGenericParam.decl [template = constants.%ImplicitGenericParam] // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn: = specific_function %ImplicitGenericParam.ref, @ImplicitGenericParam(constants.%i32) [template = constants.%ImplicitGenericParam.specific_fn.2] -// CHECK:STDOUT: %ImplicitGenericParam.call: init %ptr.2 = call %ImplicitGenericParam.specific_fn(%n.ref) -// CHECK:STDOUT: %.loc7_33.1: %ptr.2 = value_of_initializer %ImplicitGenericParam.call -// CHECK:STDOUT: %.loc7_33.2: %ptr.2 = converted %ImplicitGenericParam.call, %.loc7_33.1 +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn: = specific_function %ImplicitGenericParam.ref, @ImplicitGenericParam(constants.%i32) [template = constants.%ImplicitGenericParam.specific_fn.65b] +// CHECK:STDOUT: %ImplicitGenericParam.call: init %ptr.dc3 = call %ImplicitGenericParam.specific_fn(%n.ref) +// CHECK:STDOUT: %.loc7_33.1: %ptr.dc3 = value_of_initializer %ImplicitGenericParam.call +// CHECK:STDOUT: %.loc7_33.2: %ptr.dc3 = converted %ImplicitGenericParam.call, %.loc7_33.1 // CHECK:STDOUT: return %.loc7_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitGenericParam(constants.%T) { // CHECK:STDOUT: %T.loc4_25.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_25.2 => constants.%T -// CHECK:STDOUT: %ptr.loc4_45.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc4_45.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc4_41 => constants.%require_complete.1 -// CHECK:STDOUT: %require_complete.loc4_36 => constants.%require_complete.2 -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.1 +// CHECK:STDOUT: %require_complete.loc4_41 => constants.%require_complete.968 +// CHECK:STDOUT: %require_complete.loc4_36 => constants.%require_complete.db1 +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.993 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @ImplicitGenericParam(%T.loc4_25.2) {} @@ -756,12 +756,12 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @ImplicitGenericParam(constants.%i32) { // CHECK:STDOUT: %T.loc4_25.2 => constants.%i32 // CHECK:STDOUT: %T.patt.loc4_25.2 => constants.%i32 -// CHECK:STDOUT: %ptr.loc4_45.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc4_45.2 => constants.%ptr.dc3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc4_41 => constants.%complete_type.3 -// CHECK:STDOUT: %require_complete.loc4_36 => constants.%complete_type.2 -// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.2 +// CHECK:STDOUT: %require_complete.loc4_41 => constants.%complete_type.566 +// CHECK:STDOUT: %require_complete.loc4_36 => constants.%complete_type.f8a +// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.65b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- deduce_nested_tuple.carbon @@ -772,33 +772,33 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%T, %i32) [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.5a7: type = tuple_type (%T, %i32) [symbolic] // CHECK:STDOUT: %TupleParam.type: type = fn_type @TupleParam [template] // CHECK:STDOUT: %TupleParam: %TupleParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %tuple.type.2 [symbolic] +// CHECK:STDOUT: %require_complete.596: = require_complete_type %tuple.type.5a7 [symbolic] // CHECK:STDOUT: %CallTupleParam.type: type = fn_type @CallTupleParam [template] // CHECK:STDOUT: %CallTupleParam: %CallTupleParam.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (Core.IntLiteral, %i32) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.abd: type = tuple_type (Core.IntLiteral, %i32) [template] // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam, @TupleParam(Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple: %tuple.type.4 = tuple_value (%int_1, %int_2.2) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %tuple.type.4 [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple: %tuple.type.abd = tuple_value (%int_1, %int_2.166) [template] +// CHECK:STDOUT: %complete_type.5b7: = complete_type_witness %tuple.type.abd [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -814,20 +814,20 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %TupleParam.decl: %TupleParam.type = fn_decl @TupleParam [template = constants.%TupleParam] { // CHECK:STDOUT: %T.patt.loc4_15.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_15.1, runtime_param [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @TupleParam.%tuple.type (%tuple.type.2) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @TupleParam.%tuple.type (%tuple.type.2) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @TupleParam.%tuple.type (%tuple.type.5a7) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @TupleParam.%tuple.type (%tuple.type.5a7) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_15.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @TupleParam.%tuple.type (%tuple.type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc4_35.1: type = splice_block %.loc4_35.3 [symbolic = %tuple.type (constants.%tuple.type.2)] { +// CHECK:STDOUT: %x.param: @TupleParam.%tuple.type (%tuple.type.5a7) = value_param runtime_param0 +// CHECK:STDOUT: %.loc4_35.1: type = splice_block %.loc4_35.3 [symbolic = %tuple.type (constants.%tuple.type.5a7)] { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.1 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc4_35.2: %tuple.type.1 = tuple_literal (%T.ref, %i32) -// CHECK:STDOUT: %.loc4_35.3: type = converted %.loc4_35.2, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %.loc4_35.2: %tuple.type.24b = tuple_literal (%T.ref, %i32) +// CHECK:STDOUT: %.loc4_35.3: type = converted %.loc4_35.2, constants.%tuple.type.5a7 [symbolic = %tuple.type (constants.%tuple.type.5a7)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @TupleParam.%tuple.type (%tuple.type.2) = bind_name x, %x.param +// CHECK:STDOUT: %x: @TupleParam.%tuple.type (%tuple.type.5a7) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallTupleParam.decl: %CallTupleParam.type = fn_decl @CallTupleParam [template = constants.%CallTupleParam] {} {} // CHECK:STDOUT: } @@ -835,12 +835,12 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: generic fn @TupleParam(%T.loc4_15.1: type) { // CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_15.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_15.2 (constants.%T.patt)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@TupleParam.%T.loc4_15.2 (%T), %i32) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@TupleParam.%T.loc4_15.2 (%T), %i32) [symbolic = %tuple.type (constants.%tuple.type.5a7)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @TupleParam.%tuple.type (%tuple.type.2) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @TupleParam.%tuple.type (%tuple.type.5a7) [symbolic = %require_complete (constants.%require_complete.596)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @TupleParam.%tuple.type (%tuple.type.2)) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @TupleParam.%tuple.type (%tuple.type.5a7)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -850,17 +850,17 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %TupleParam.ref: %TupleParam.type = name_ref TupleParam, file.%TupleParam.decl [template = constants.%TupleParam] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc7_19.1: %tuple.type.3 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc7_19.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam.ref, @TupleParam(Core.IntLiteral) [template = constants.%TupleParam.specific_fn] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc7_19.3: %i32 = converted %int_2, %.loc7_19.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %tuple: %tuple.type.4 = tuple_value (%int_1, %.loc7_19.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc7_19.4: %tuple.type.4 = converted %.loc7_19.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc7_19.3: %i32 = converted %int_2, %.loc7_19.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %tuple: %tuple.type.abd = tuple_value (%int_1, %.loc7_19.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc7_19.4: %tuple.type.abd = converted %.loc7_19.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %TupleParam.call: init %empty_tuple.type = call %TupleParam.specific_fn(%.loc7_19.4) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -868,16 +868,16 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @TupleParam(constants.%T) { // CHECK:STDOUT: %T.loc4_15.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_15.2 => constants.%T -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.5a7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @TupleParam(Core.IntLiteral) { // CHECK:STDOUT: %T.loc4_15.2 => Core.IntLiteral // CHECK:STDOUT: %T.patt.loc4_15.2 => Core.IntLiteral -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.4 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.abd // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.5b7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- deduce_nested_struct.carbon @@ -888,32 +888,32 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %T, .b: %i32} [symbolic] +// CHECK:STDOUT: %struct_type.a.b.145: type = struct_type {.a: %T, .b: %i32} [symbolic] // CHECK:STDOUT: %StructParam.type: type = fn_type @StructParam [template] // CHECK:STDOUT: %StructParam: %StructParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.a.b.1 [symbolic] +// CHECK:STDOUT: %require_complete.d9e: = require_complete_type %struct_type.a.b.145 [symbolic] // CHECK:STDOUT: %CallStructParam.type: type = fn_type @CallStructParam [template] // CHECK:STDOUT: %CallStructParam: %CallStructParam.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct_type.a.b.3: type = struct_type {.a: Core.IntLiteral, .b: %i32} [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.a.b.788: type = struct_type {.a: Core.IntLiteral, .b: %i32} [template] // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam, @StructParam(Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.3 = struct_value (%int_1, %int_2.2) [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.a.b.3 [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.788 = struct_value (%int_1, %int_2.166) [template] +// CHECK:STDOUT: %complete_type.d03: = complete_type_witness %struct_type.a.b.788 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -929,19 +929,19 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %StructParam.decl: %StructParam.type = fn_decl @StructParam [template = constants.%StructParam] { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc4: type = splice_block %struct_type.a.b.loc4_44.1 [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.1)] { +// CHECK:STDOUT: %x.param: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145) = value_param runtime_param0 +// CHECK:STDOUT: %.loc4: type = splice_block %struct_type.a.b.loc4_44.1 [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.145)] { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_16.1 [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.loc4_44.1: type = struct_type {.a: %T, .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.1)] +// CHECK:STDOUT: %struct_type.a.b.loc4_44.1: type = struct_type {.a: %T, .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.145)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1) = bind_name x, %x.param +// CHECK:STDOUT: %x: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145) = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallStructParam.decl: %CallStructParam.type = fn_decl @CallStructParam [template = constants.%CallStructParam] {} {} // CHECK:STDOUT: } @@ -949,12 +949,12 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: generic fn @StructParam(%T.loc4_16.1: type) { // CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc4_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] -// CHECK:STDOUT: %struct_type.a.b.loc4_44.2: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.1)] +// CHECK:STDOUT: %struct_type.a.b.loc4_44.2: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.145)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145) [symbolic = %require_complete (constants.%require_complete.d9e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.1)) { +// CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.145)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -964,17 +964,17 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %StructParam.ref: %StructParam.type = name_ref StructParam, file.%StructParam.decl [template = constants.%StructParam] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam.ref, @StructParam(Core.IntLiteral) [template = constants.%StructParam.specific_fn] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc7_30.3: %i32 = converted %int_2, %.loc7_30.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %struct: %struct_type.a.b.3 = struct_value (%int_1, %.loc7_30.3) [template = constants.%struct] -// CHECK:STDOUT: %.loc7_30.4: %struct_type.a.b.3 = converted %.loc7_30.1, %struct [template = constants.%struct] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc7_30.3: %i32 = converted %int_2, %.loc7_30.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %struct: %struct_type.a.b.788 = struct_value (%int_1, %.loc7_30.3) [template = constants.%struct] +// CHECK:STDOUT: %.loc7_30.4: %struct_type.a.b.788 = converted %.loc7_30.1, %struct [template = constants.%struct] // CHECK:STDOUT: %StructParam.call: init %empty_tuple.type = call %StructParam.specific_fn(%.loc7_30.4) // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -982,16 +982,16 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: specific @StructParam(constants.%T) { // CHECK:STDOUT: %T.loc4_16.2 => constants.%T // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T -// CHECK:STDOUT: %struct_type.a.b.loc4_44.2 => constants.%struct_type.a.b.1 +// CHECK:STDOUT: %struct_type.a.b.loc4_44.2 => constants.%struct_type.a.b.145 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @StructParam(Core.IntLiteral) { // CHECK:STDOUT: %T.loc4_16.2 => Core.IntLiteral // CHECK:STDOUT: %T.patt.loc4_16.2 => Core.IntLiteral -// CHECK:STDOUT: %struct_type.a.b.loc4_44.2 => constants.%struct_type.a.b.3 +// CHECK:STDOUT: %struct_type.a.b.loc4_44.2 => constants.%struct_type.a.b.788 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.d03 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_deduce_bigger_struct.carbon @@ -1004,7 +1004,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.c.d.e: type = struct_type {.c: %T, .d: %i32, .e: %i32} [symbolic] // CHECK:STDOUT: %BigStructParam.type: type = fn_type @BigStructParam [template] // CHECK:STDOUT: %BigStructParam: %BigStructParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.c.d.e [symbolic] +// CHECK:STDOUT: %require_complete.e0d: = require_complete_type %struct_type.c.d.e [symbolic] // CHECK:STDOUT: %CallBigStructParam.type: type = fn_type @CallBigStructParam [template] // CHECK:STDOUT: %CallBigStructParam: %CallBigStructParam.type = struct_value () [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] @@ -1014,7 +1014,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1055,7 +1055,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.c.d.e.loc4_56.2: type = struct_type {.c: @BigStructParam.%T.loc4_19.2 (%T), .d: %i32, .e: %i32} [symbolic = %struct_type.c.d.e.loc4_56.2 (constants.%struct_type.c.d.e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @BigStructParam.%struct_type.c.d.e.loc4_56.2 (%struct_type.c.d.e) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @BigStructParam.%struct_type.c.d.e.loc4_56.2 (%struct_type.c.d.e) [symbolic = %require_complete (constants.%require_complete.e0d)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @BigStructParam.%struct_type.c.d.e.loc4_56.2 (%struct_type.c.d.e)) { // CHECK:STDOUT: !entry: @@ -1088,7 +1088,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.f.g: type = struct_type {.f: %T, .g: %i32} [symbolic] // CHECK:STDOUT: %SmallStructParam.type: type = fn_type @SmallStructParam [template] // CHECK:STDOUT: %SmallStructParam: %SmallStructParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.f.g [symbolic] +// CHECK:STDOUT: %require_complete.64e: = require_complete_type %struct_type.f.g [symbolic] // CHECK:STDOUT: %CallSmallStructParam.type: type = fn_type @CallSmallStructParam [template] // CHECK:STDOUT: %CallSmallStructParam: %CallSmallStructParam.type = struct_value () [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] @@ -1099,7 +1099,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1138,7 +1138,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.f.g.loc4_49.2: type = struct_type {.f: @SmallStructParam.%T.loc4_21.2 (%T), .g: %i32} [symbolic = %struct_type.f.g.loc4_49.2 (constants.%struct_type.f.g)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @SmallStructParam.%struct_type.f.g.loc4_49.2 (%struct_type.f.g) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @SmallStructParam.%struct_type.f.g.loc4_49.2 (%struct_type.f.g) [symbolic = %require_complete (constants.%require_complete.64e)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @SmallStructParam.%struct_type.f.g.loc4_49.2 (%struct_type.f.g)) { // CHECK:STDOUT: !entry: @@ -1172,7 +1172,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.i.different: type = struct_type {.i: %T, .different: %i32} [symbolic] // CHECK:STDOUT: %WrongNameStructParam.type: type = fn_type @WrongNameStructParam [template] // CHECK:STDOUT: %WrongNameStructParam: %WrongNameStructParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.i.different [symbolic] +// CHECK:STDOUT: %require_complete.d65: = require_complete_type %struct_type.i.different [symbolic] // CHECK:STDOUT: %CallWrongNameStructParam.type: type = fn_type @CallWrongNameStructParam [template] // CHECK:STDOUT: %CallWrongNameStructParam: %CallWrongNameStructParam.type = struct_value () [template] // CHECK:STDOUT: %int_8: Core.IntLiteral = int_value 8 [template] @@ -1182,7 +1182,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1221,7 +1221,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.i.different.loc4_61.2: type = struct_type {.i: @WrongNameStructParam.%T.loc4_25.2 (%T), .different: %i32} [symbolic = %struct_type.i.different.loc4_61.2 (constants.%struct_type.i.different)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @WrongNameStructParam.%struct_type.i.different.loc4_61.2 (%struct_type.i.different) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @WrongNameStructParam.%struct_type.i.different.loc4_61.2 (%struct_type.i.different) [symbolic = %require_complete (constants.%require_complete.d65)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @WrongNameStructParam.%struct_type.i.different.loc4_61.2 (%struct_type.i.different)) { // CHECK:STDOUT: !entry: @@ -1254,7 +1254,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.first.second: type = struct_type {.first: %T, .second: %i32} [symbolic] // CHECK:STDOUT: %WrongOrderStructParam.type: type = fn_type @WrongOrderStructParam [template] // CHECK:STDOUT: %WrongOrderStructParam: %WrongOrderStructParam.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %struct_type.first.second [symbolic] +// CHECK:STDOUT: %require_complete.231: = require_complete_type %struct_type.first.second [symbolic] // CHECK:STDOUT: %CallWrongOrderStructParam.type: type = fn_type @CallWrongOrderStructParam [template] // CHECK:STDOUT: %CallWrongOrderStructParam: %CallWrongOrderStructParam.type = struct_value () [template] // CHECK:STDOUT: %int_11: Core.IntLiteral = int_value 11 [template] @@ -1264,7 +1264,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1303,7 +1303,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: %struct_type.first.second.loc4_63.2: type = struct_type {.first: @WrongOrderStructParam.%T.loc4_26.2 (%T), .second: %i32} [symbolic = %struct_type.first.second.loc4_63.2 (constants.%struct_type.first.second)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @WrongOrderStructParam.%struct_type.first.second.loc4_63.2 (%struct_type.first.second) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @WrongOrderStructParam.%struct_type.first.second.loc4_63.2 (%struct_type.first.second) [symbolic = %require_complete (constants.%require_complete.231)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @WrongOrderStructParam.%struct_type.first.second.loc4_63.2 (%struct_type.first.second)) { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon b/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon index 5d1407c16530..3c0fca96e979 100644 --- a/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon +++ b/toolchain/check/testdata/function/generic/fail_todo_param_in_type.carbon @@ -18,23 +18,23 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %N.2: %i32 = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %i32 = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.18), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.2, %Convert.9 [symbolic] +// CHECK:STDOUT: %N.3e4: %i32 = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.52a: %i32 = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %impl_witness.dd3: = impl_witness (imports.%import_ref.a80), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.3e4, %Convert.079 [symbolic] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.3(%int_32) [symbolic] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.2) [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %Convert.specific_fn(%N.3e4) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -47,8 +47,8 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %N.patt.loc14_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc14_6.1, runtime_param [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt.loc14_6.1: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %N.param_patt: %i32 = value_param_pattern %N.patt.loc14_6.1, runtime_param [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.52a)] // CHECK:STDOUT: %a.patt: = binding_pattern a // CHECK:STDOUT: %a.param_patt: = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { @@ -57,13 +57,13 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: %int_32.loc14_10: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc14_10: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc14_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_6.2 (constants.%N.2)] +// CHECK:STDOUT: %N.loc14_6.1: %i32 = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc14_6.2 (constants.%N.3e4)] // CHECK:STDOUT: %a.param: = value_param runtime_param0 // CHECK:STDOUT: %.loc14_26: type = splice_block %ptr [template = ] { // CHECK:STDOUT: %int_32.loc14_19: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc14_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc14_6.1 [symbolic = %N.loc14_6.2 (constants.%N.2)] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.9] +// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc14_6.1 [symbolic = %N.loc14_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %impl.elem0: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] // CHECK:STDOUT: %Convert.bound.loc14_24.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound.loc14_24.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc14_24.1: = specific_function %Convert.bound.loc14_24.1, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc14_24.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc14_24.1: init Core.IntLiteral = call %Convert.specific_fn.loc14_24.1(%N.ref) [symbolic = %int.convert_checked.loc14_24.2 (constants.%int.convert_checked)] @@ -77,18 +77,18 @@ fn F(N:! i32, a: [i32; N]*); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc14_6.1: %i32) { -// CHECK:STDOUT: %N.loc14_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc14_6.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc14_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %Convert.bound.loc14_24.2: = bound_method %N.loc14_6.2, constants.%Convert.9 [symbolic = %Convert.bound.loc14_24.2 (constants.%Convert.bound)] +// CHECK:STDOUT: %N.loc14_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc14_6.2 (constants.%N.3e4)] +// CHECK:STDOUT: %N.patt.loc14_6.2: %i32 = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc14_6.2 (constants.%N.patt.52a)] +// CHECK:STDOUT: %Convert.bound.loc14_24.2: = bound_method %N.loc14_6.2, constants.%Convert.079 [symbolic = %Convert.bound.loc14_24.2 (constants.%Convert.bound)] // CHECK:STDOUT: %Convert.specific_fn.loc14_24.2: = specific_function %Convert.bound.loc14_24.2, @Convert.3(constants.%int_32) [symbolic = %Convert.specific_fn.loc14_24.2 (constants.%Convert.specific_fn)] // CHECK:STDOUT: %int.convert_checked.loc14_24.2: init Core.IntLiteral = call %Convert.specific_fn.loc14_24.2(%N.loc14_6.2) [symbolic = %int.convert_checked.loc14_24.2 (constants.%int.convert_checked)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%N.param_patt: %i32, %a.param_patt: ); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%N.2) { -// CHECK:STDOUT: %N.loc14_6.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc14_6.2 => constants.%N.2 +// CHECK:STDOUT: specific @F(constants.%N.3e4) { +// CHECK:STDOUT: %N.loc14_6.2 => constants.%N.3e4 +// CHECK:STDOUT: %N.patt.loc14_6.2 => constants.%N.3e4 // CHECK:STDOUT: %Convert.bound.loc14_24.2 => constants.%Convert.bound // CHECK:STDOUT: %Convert.specific_fn.loc14_24.2 => constants.%Convert.specific_fn // CHECK:STDOUT: %int.convert_checked.loc14_24.2 => constants.%int.convert_checked diff --git a/toolchain/check/testdata/function/generic/no_prelude/call.carbon b/toolchain/check/testdata/function/generic/no_prelude/call.carbon index 7d204813ad63..acd9b3f60277 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/call.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/call.carbon @@ -59,21 +59,21 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [template] // CHECK:STDOUT: %Function: %Function.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [template] // CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [template] -// CHECK:STDOUT: %Function.specific_fn.1: = specific_function %Function, @Function(%T) [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %Function.specific_fn.f85: = specific_function %Function, @Function(%T) [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %CallGenericPtr.type: type = fn_type @CallGenericPtr [template] // CHECK:STDOUT: %CallGenericPtr: %CallGenericPtr.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %Function.specific_fn.2: = specific_function %Function, @Function(%ptr.1) [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %Function.specific_fn.969: = specific_function %Function, @Function(%ptr.251) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %CallSpecific.type: type = fn_type @CallSpecific [template] // CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [template] -// CHECK:STDOUT: %Function.specific_fn.3: = specific_function %Function, @Function(%C) [template] +// CHECK:STDOUT: %Function.specific_fn.133: = specific_function %Function, @Function(%C) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -121,23 +121,23 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] { // CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_19.1, runtime_param [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %x.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_40: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_40: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12: type = splice_block %ptr.loc12_33.1 [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %x.param: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12: type = splice_block %ptr.loc12_33.1 [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] { // CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_33.1: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_33.1: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %x: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] { @@ -168,7 +168,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Function.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Function.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @Function.%T.loc4_13.2 (%T)) -> @Function.%T.loc4_13.2 (%T) { // CHECK:STDOUT: !entry: @@ -182,15 +182,15 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc8_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @CallGeneric.%T.loc8_16.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Function.specific_fn.loc9_10.2: = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @CallGeneric.%T.loc8_16.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Function.specific_fn.loc9_10.2: = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.f85)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T)) -> @CallGeneric.%T.loc8_16.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc8_16.1 [symbolic = %T.loc8_16.2 (constants.%T)] // CHECK:STDOUT: %x.ref: @CallGeneric.%T.loc8_16.2 (%T) = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn.loc9_10.1: = specific_function %Function.ref, @Function(constants.%T) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.1)] +// CHECK:STDOUT: %Function.specific_fn.loc9_10.1: = specific_function %Function.ref, @Function(constants.%T) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.f85)] // CHECK:STDOUT: %Function.call: init @CallGeneric.%T.loc8_16.2 (%T) = call %Function.specific_fn.loc9_10.1(%x.ref) // CHECK:STDOUT: %.loc9_24.1: @CallGeneric.%T.loc8_16.2 (%T) = value_of_initializer %Function.call // CHECK:STDOUT: %.loc9_24.2: @CallGeneric.%T.loc8_16.2 (%T) = converted %Function.call, %.loc9_24.1 @@ -201,22 +201,22 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: generic fn @CallGenericPtr(%T.loc12_19.1: type) { // CHECK:STDOUT: %T.loc12_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc12_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Function.specific_fn.loc13_10.2: = specific_function constants.%Function, @Function(%ptr.loc12_33.2) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) [symbolic = %require_complete (constants.%require_complete.968)] +// CHECK:STDOUT: %Function.specific_fn.loc13_10.2: = specific_function constants.%Function, @Function(%ptr.loc12_33.2) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.969)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1)) -> @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) { +// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251)) -> @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc13: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] -// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn.loc13_10.1: = specific_function %Function.ref, @Function(constants.%ptr.1) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.2)] -// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = call %Function.specific_fn.loc13_10.1(%x.ref) -// CHECK:STDOUT: %.loc13_25.1: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_of_initializer %Function.call -// CHECK:STDOUT: %.loc13_25.2: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = converted %Function.call, %.loc13_25.1 +// CHECK:STDOUT: %ptr.loc13: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] +// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = name_ref x, %x +// CHECK:STDOUT: %Function.specific_fn.loc13_10.1: = specific_function %Function.ref, @Function(constants.%ptr.251) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.969)] +// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = call %Function.specific_fn.loc13_10.1(%x.ref) +// CHECK:STDOUT: %.loc13_25.1: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_of_initializer %Function.call +// CHECK:STDOUT: %.loc13_25.2: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = converted %Function.call, %.loc13_25.1 // CHECK:STDOUT: return %.loc13_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -226,7 +226,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %x.ref: %C = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%Function.specific_fn.3] +// CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%Function.specific_fn.133] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 // CHECK:STDOUT: return %Function.call to %return @@ -237,7 +237,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGeneric(constants.%T) { @@ -250,15 +250,15 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: specific @CallGenericPtr(constants.%T) { // CHECK:STDOUT: %T.loc12_19.2 => constants.%T // CHECK:STDOUT: %T.patt.loc12_19.2 => constants.%T -// CHECK:STDOUT: %ptr.loc12_33.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc12_33.2 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Function(constants.%ptr.1) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.1 -// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.1 +// CHECK:STDOUT: specific @Function(constants.%ptr.251) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.251 +// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 +// CHECK:STDOUT: %require_complete => constants.%require_complete.968 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Function(@CallGenericPtr.%ptr.loc12_33.2) {} @@ -278,21 +278,21 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Function.type: type = fn_type @Function [template] // CHECK:STDOUT: %Function: %Function.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %CallGeneric.type: type = fn_type @CallGeneric [template] // CHECK:STDOUT: %CallGeneric: %CallGeneric.type = struct_value () [template] -// CHECK:STDOUT: %Function.specific_fn.1: = specific_function %Function, @Function(%T) [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %Function.specific_fn.f85: = specific_function %Function, @Function(%T) [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %CallGenericPtr.type: type = fn_type @CallGenericPtr [template] // CHECK:STDOUT: %CallGenericPtr: %CallGenericPtr.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %Function.specific_fn.2: = specific_function %Function, @Function(%ptr.1) [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %Function.specific_fn.969: = specific_function %Function, @Function(%ptr.251) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %CallSpecific.type: type = fn_type @CallSpecific [template] // CHECK:STDOUT: %CallSpecific: %CallSpecific.type = struct_value () [template] -// CHECK:STDOUT: %Function.specific_fn.3: = specific_function %Function, @Function(%C) [template] +// CHECK:STDOUT: %Function.specific_fn.133: = specific_function %Function, @Function(%C) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -340,23 +340,23 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %CallGenericPtr.decl: %CallGenericPtr.type = fn_decl @CallGenericPtr [template = constants.%CallGenericPtr] { // CHECK:STDOUT: %T.patt.loc12_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_19.1, runtime_param [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] -// CHECK:STDOUT: %x.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %x.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc12_39: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_40: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_40: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc12_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %x.param: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12: type = splice_block %ptr.loc12_33.1 [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] { +// CHECK:STDOUT: %x.param: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12: type = splice_block %ptr.loc12_33.1 [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] { // CHECK:STDOUT: %T.ref.loc12_32: type = name_ref T, %T.loc12_19.1 [symbolic = %T.loc12_19.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_33.1: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_33.1: type = ptr_type %T [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %x: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %CallSpecific.decl: %CallSpecific.type = fn_decl @CallSpecific [template = constants.%CallSpecific] { @@ -387,7 +387,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Function.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Function.%T.loc4_13.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @Function.%T.loc4_13.2 (%T)) -> @Function.%T.loc4_13.2 (%T) { // CHECK:STDOUT: !entry: @@ -401,14 +401,14 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc8_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_16.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @CallGeneric.%T.loc8_16.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Function.specific_fn.loc9_10.2: = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @CallGeneric.%T.loc8_16.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Function.specific_fn.loc9_10.2: = specific_function constants.%Function, @Function(%T.loc8_16.2) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.f85)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGeneric.%T.loc8_16.2 (%T)) -> @CallGeneric.%T.loc8_16.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %x.ref: @CallGeneric.%T.loc8_16.2 (%T) = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn.loc9_10.1: = specific_function %Function.ref, @Function(constants.%T) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.1)] +// CHECK:STDOUT: %Function.specific_fn.loc9_10.1: = specific_function %Function.ref, @Function(constants.%T) [symbolic = %Function.specific_fn.loc9_10.2 (constants.%Function.specific_fn.f85)] // CHECK:STDOUT: %Function.call: init @CallGeneric.%T.loc8_16.2 (%T) = call %Function.specific_fn.loc9_10.1(%x.ref) // CHECK:STDOUT: %.loc9_21.1: @CallGeneric.%T.loc8_16.2 (%T) = value_of_initializer %Function.call // CHECK:STDOUT: %.loc9_21.2: @CallGeneric.%T.loc8_16.2 (%T) = converted %Function.call, %.loc9_21.1 @@ -419,20 +419,20 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: generic fn @CallGenericPtr(%T.loc12_19.1: type) { // CHECK:STDOUT: %T.loc12_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_19.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc12_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_19.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %ptr.loc12_33.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc12_33.2: type = ptr_type @CallGenericPtr.%T.loc12_19.2 (%T) [symbolic = %ptr.loc12_33.2 (constants.%ptr.251)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Function.specific_fn.loc13_10.2: = specific_function constants.%Function, @Function(%ptr.loc12_33.2) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) [symbolic = %require_complete (constants.%require_complete.968)] +// CHECK:STDOUT: %Function.specific_fn.loc13_10.2: = specific_function constants.%Function, @Function(%ptr.loc12_33.2) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.969)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1)) -> @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) { +// CHECK:STDOUT: fn(%T.param_patt: type, %x.param_patt: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251)) -> @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] -// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn.loc13_10.1: = specific_function %Function.ref, @Function(constants.%ptr.1) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.2)] -// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = call %Function.specific_fn.loc13_10.1(%x.ref) -// CHECK:STDOUT: %.loc13_21.1: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = value_of_initializer %Function.call -// CHECK:STDOUT: %.loc13_21.2: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.1) = converted %Function.call, %.loc13_21.1 +// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = name_ref x, %x +// CHECK:STDOUT: %Function.specific_fn.loc13_10.1: = specific_function %Function.ref, @Function(constants.%ptr.251) [symbolic = %Function.specific_fn.loc13_10.2 (constants.%Function.specific_fn.969)] +// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = call %Function.specific_fn.loc13_10.1(%x.ref) +// CHECK:STDOUT: %.loc13_21.1: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = value_of_initializer %Function.call +// CHECK:STDOUT: %.loc13_21.2: @CallGenericPtr.%ptr.loc12_33.2 (%ptr.251) = converted %Function.call, %.loc13_21.1 // CHECK:STDOUT: return %.loc13_21.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -441,7 +441,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [template = constants.%Function] // CHECK:STDOUT: %x.ref: %C = name_ref x, %x -// CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%Function.specific_fn.3] +// CHECK:STDOUT: %Function.specific_fn: = specific_function %Function.ref, @Function(constants.%C) [template = constants.%Function.specific_fn.133] // CHECK:STDOUT: %.loc18: ref %C = splice_block %return {} // CHECK:STDOUT: %Function.call: init %C = call %Function.specific_fn(%x.ref) to %.loc18 // CHECK:STDOUT: return %Function.call to %return @@ -452,7 +452,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGeneric(constants.%T) { @@ -465,15 +465,15 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: specific @CallGenericPtr(constants.%T) { // CHECK:STDOUT: %T.loc12_19.2 => constants.%T // CHECK:STDOUT: %T.patt.loc12_19.2 => constants.%T -// CHECK:STDOUT: %ptr.loc12_33.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc12_33.2 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Function(constants.%ptr.1) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.1 -// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.1 +// CHECK:STDOUT: specific @Function(constants.%ptr.251) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%ptr.251 +// CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%ptr.251 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 +// CHECK:STDOUT: %require_complete => constants.%require_complete.968 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Function(@CallGenericPtr.%ptr.loc12_33.2) {} diff --git a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon index 9f283eed466b..bc225780794e 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon @@ -26,8 +26,8 @@ fn F(T:! type, U:! type) { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -55,8 +55,8 @@ fn F(T:! type, U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ptr: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %ptr (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc12: = require_complete_type @F.%ptr (%ptr) [symbolic = %require_complete.loc12 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc16: = require_complete_type @F.%U.loc11_16.2 (%U) [symbolic = %require_complete.loc16 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc12: = require_complete_type @F.%ptr (%ptr) [symbolic = %require_complete.loc12 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc16: = require_complete_type @F.%U.loc11_16.2 (%U) [symbolic = %require_complete.loc16 (constants.%require_complete.427)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon b/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon index 6b1caf3f8fc8..422b9e6b3146 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon @@ -124,22 +124,22 @@ fn H() { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %F.specific_fn.1: = specific_function %F, @F(%C) [template] +// CHECK:STDOUT: %F.specific_fn.002: = specific_function %F, @F(%C) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn.2: = specific_function %F, @F(%T) [symbolic] +// CHECK:STDOUT: %F.specific_fn.3dc: = specific_function %F, @F(%T) [symbolic] // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%C) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Main//library, F, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.2: %G.type = import_ref Main//library, G, loaded [template = constants.%G] +// CHECK:STDOUT: %import_ref.d4d: %F.type = import_ref Main//library, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.f18: %G.type = import_ref Main//library, G, loaded [template = constants.%G] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .F = imports.%import_ref.1 -// CHECK:STDOUT: .G = imports.%import_ref.2 +// CHECK:STDOUT: .F = imports.%import_ref.d4d +// CHECK:STDOUT: .G = imports.%import_ref.f18 // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } @@ -158,11 +158,11 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.d4d [template = constants.%F] // CHECK:STDOUT: %C.ref.loc10: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.1] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.ref, @F(constants.%C) [template = constants.%F.specific_fn.002] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%import_ref.2 [template = constants.%G] +// CHECK:STDOUT: %G.ref: %G.type = name_ref G, imports.%import_ref.f18 [template = constants.%G] // CHECK:STDOUT: %C.ref.loc12: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %G.specific_fn: = specific_function %G.ref, @G(constants.%C) [template = constants.%G.specific_fn] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn() @@ -183,7 +183,7 @@ fn H() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.specific_fn: = specific_function constants.%F, @F(%T) [symbolic = %F.specific_fn (constants.%F.specific_fn.2)] +// CHECK:STDOUT: %F.specific_fn: = specific_function constants.%F, @F(%T) [symbolic = %F.specific_fn (constants.%F.specific_fn.3dc)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type); // CHECK:STDOUT: } @@ -214,6 +214,6 @@ fn H() { // CHECK:STDOUT: %T.patt => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.1 +// CHECK:STDOUT: %F.specific_fn => constants.%F.specific_fn.002 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon b/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon index c05bf347be35..4a418515954b 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/indirect_generic_type.carbon @@ -17,12 +17,12 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %ptr.1 [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.9ad: type = ptr_type %ptr.251 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr.1 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %ptr.2 [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr.251 [symbolic] +// CHECK:STDOUT: %require_complete.e31: = require_complete_type %ptr.9ad [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -32,42 +32,42 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_6.1, runtime_param [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %p.patt: @F.%ptr.loc11_21.2 (%ptr.2) = binding_pattern p -// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc11_21.2 (%ptr.2) = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @F.%ptr.loc11_20.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc11_20.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: @F.%ptr.loc11_21.2 (%ptr.9ad) = binding_pattern p +// CHECK:STDOUT: %p.param_patt: @F.%ptr.loc11_21.2 (%ptr.9ad) = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%ptr.loc11_20.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc11_20.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc11_27: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc11_28: type = ptr_type %T [symbolic = %ptr.loc11_20.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc11_28: type = ptr_type %T [symbolic = %ptr.loc11_20.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc11_21.2 (%ptr.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_21.1 [symbolic = %ptr.loc11_21.2 (constants.%ptr.2)] { +// CHECK:STDOUT: %p.param: @F.%ptr.loc11_21.2 (%ptr.9ad) = value_param runtime_param0 +// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_21.1 [symbolic = %ptr.loc11_21.2 (constants.%ptr.9ad)] { // CHECK:STDOUT: %T.ref.loc11_19: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc11_20.1: type = ptr_type %T [symbolic = %ptr.loc11_20.2 (constants.%ptr.1)] -// CHECK:STDOUT: %ptr.loc11_21.1: type = ptr_type %ptr.1 [symbolic = %ptr.loc11_21.2 (constants.%ptr.2)] +// CHECK:STDOUT: %ptr.loc11_20.1: type = ptr_type %T [symbolic = %ptr.loc11_20.2 (constants.%ptr.251)] +// CHECK:STDOUT: %ptr.loc11_21.1: type = ptr_type %ptr.251 [symbolic = %ptr.loc11_21.2 (constants.%ptr.9ad)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc11_21.2 (%ptr.2) = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref @F.%ptr.loc11_20.2 (%ptr.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @F.%ptr.loc11_20.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %p: @F.%ptr.loc11_21.2 (%ptr.9ad) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref @F.%ptr.loc11_20.2 (%ptr.251) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @F.%ptr.loc11_20.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc11_6.1: type) { // CHECK:STDOUT: %T.loc11_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc11_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %ptr.loc11_20.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %ptr.loc11_20.2 (constants.%ptr.1)] -// CHECK:STDOUT: %ptr.loc11_21.2: type = ptr_type @F.%ptr.loc11_20.2 (%ptr.1) [symbolic = %ptr.loc11_21.2 (constants.%ptr.2)] +// CHECK:STDOUT: %ptr.loc11_20.2: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %ptr.loc11_20.2 (constants.%ptr.251)] +// CHECK:STDOUT: %ptr.loc11_21.2: type = ptr_type @F.%ptr.loc11_20.2 (%ptr.251) [symbolic = %ptr.loc11_21.2 (constants.%ptr.9ad)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_24: = require_complete_type @F.%ptr.loc11_20.2 (%ptr.1) [symbolic = %require_complete.loc11_24 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc11_17: = require_complete_type @F.%ptr.loc11_21.2 (%ptr.2) [symbolic = %require_complete.loc11_17 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc11_24: = require_complete_type @F.%ptr.loc11_20.2 (%ptr.251) [symbolic = %require_complete.loc11_24 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc11_17: = require_complete_type @F.%ptr.loc11_21.2 (%ptr.9ad) [symbolic = %require_complete.loc11_17 (constants.%require_complete.e31)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %p.param_patt: @F.%ptr.loc11_21.2 (%ptr.2)) -> @F.%ptr.loc11_20.2 (%ptr.1) { +// CHECK:STDOUT: fn(%T.param_patt: type, %p.param_patt: @F.%ptr.loc11_21.2 (%ptr.9ad)) -> @F.%ptr.loc11_20.2 (%ptr.251) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: @F.%ptr.loc11_21.2 (%ptr.2) = name_ref p, %p -// CHECK:STDOUT: %.loc12_10.1: ref @F.%ptr.loc11_20.2 (%ptr.1) = deref %p.ref -// CHECK:STDOUT: %.loc12_10.2: @F.%ptr.loc11_20.2 (%ptr.1) = bind_value %.loc12_10.1 +// CHECK:STDOUT: %p.ref: @F.%ptr.loc11_21.2 (%ptr.9ad) = name_ref p, %p +// CHECK:STDOUT: %.loc12_10.1: ref @F.%ptr.loc11_20.2 (%ptr.251) = deref %p.ref +// CHECK:STDOUT: %.loc12_10.2: @F.%ptr.loc11_20.2 (%ptr.251) = bind_value %.loc12_10.1 // CHECK:STDOUT: return %.loc12_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -75,7 +75,7 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: specific @F(constants.%T) { // CHECK:STDOUT: %T.loc11_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc11_6.2 => constants.%T -// CHECK:STDOUT: %ptr.loc11_20.2 => constants.%ptr.1 -// CHECK:STDOUT: %ptr.loc11_21.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc11_20.2 => constants.%ptr.251 +// CHECK:STDOUT: %ptr.loc11_21.2 => constants.%ptr.9ad // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon b/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon index a7f66e41c5b6..e99331da1574 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon @@ -21,8 +21,8 @@ fn F(T:! type) { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %ptr [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.968: = require_complete_type %ptr [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -44,8 +44,8 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %ptr: type = ptr_type @F.%T.loc11_6.2 (%T) [symbolic = %ptr (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc12: = require_complete_type @F.%ptr (%ptr) [symbolic = %require_complete.loc12 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @F.%T.loc11_6.2 (%T) [symbolic = %require_complete.loc13 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc12: = require_complete_type @F.%ptr (%ptr) [symbolic = %require_complete.loc12 (constants.%require_complete.968)] +// CHECK:STDOUT: %require_complete.loc13: = require_complete_type @F.%T.loc11_6.2 (%T) [symbolic = %require_complete.loc13 (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type) { // CHECK:STDOUT: !entry: diff --git a/toolchain/check/testdata/function/generic/redeclare.carbon b/toolchain/check/testdata/function/generic/redeclare.carbon index 9390ce6effbd..736df1ed64b7 100644 --- a/toolchain/check/testdata/function/generic/redeclare.carbon +++ b/toolchain/check/testdata/function/generic/redeclare.carbon @@ -182,13 +182,13 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %U [symbolic] +// CHECK:STDOUT: %ptr.585: type = ptr_type %U [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] -// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.2 [symbolic] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] +// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.585 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -209,34 +209,34 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T [symbolic = %ptr.loc4_30.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.251) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %T.patt.loc13_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_6.1, runtime_param [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.patt.loc13_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_16.1, runtime_param [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.585) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.585) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_16.1 [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U [symbolic = %ptr.loc13_30.2 (constants.%ptr.585)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc13_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)] // CHECK:STDOUT: %U.param: type = value_param runtime_param // CHECK:STDOUT: %U.loc13_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc13_16.2 (constants.%U)] -// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.585) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.585) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -245,9 +245,9 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.patt.loc4_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.loc4_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_16.2 (constants.%U)] // CHECK:STDOUT: %U.patt.loc4_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T) [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T) [symbolic = %ptr.loc4_30.2 (constants.%ptr.251)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.1); +// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.251); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @.1(%T.loc13_6.1: type, %U.loc13_16.1: type) { @@ -255,12 +255,12 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.patt.loc13_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] // CHECK:STDOUT: %U.loc13_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc13_16.2 (constants.%U)] // CHECK:STDOUT: %U.patt.loc13_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc13_16.2 (constants.%U.patt)] -// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%U.loc13_16.2 (%U) [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%U.loc13_16.2 (%U) [symbolic = %ptr.loc13_30.2 (constants.%ptr.585)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.2) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.585) [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.2) { +// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.585) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)] @@ -273,7 +273,7 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.patt.loc4_6.2 => constants.%T // CHECK:STDOUT: %U.loc4_16.2 => constants.%U // CHECK:STDOUT: %U.patt.loc4_16.2 => constants.%U -// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.1 +// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @.1(constants.%T, constants.%U) { @@ -281,27 +281,27 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: %T.patt.loc13_6.2 => constants.%T // CHECK:STDOUT: %U.loc13_16.2 => constants.%U // CHECK:STDOUT: %U.patt.loc13_16.2 => constants.%U -// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.2 +// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.585 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_reorder.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %U.1: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T.1 [symbolic] +// CHECK:STDOUT: %T.6bab16.1: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d8619a.1: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %U.2868b5.1: type = bind_symbolic_name U, 1 [symbolic] +// CHECK:STDOUT: %U.patt.1caacc.1: type = symbolic_binding_pattern U, 1 [symbolic] +// CHECK:STDOUT: %ptr.251602.1: type = ptr_type %T.6bab16.1 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %U.2: type = bind_symbolic_name U, 0 [symbolic] -// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %T.2: type = bind_symbolic_name T, 1 [symbolic] -// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %T.2 [symbolic] +// CHECK:STDOUT: %U.2868b5.2: type = bind_symbolic_name U, 0 [symbolic] +// CHECK:STDOUT: %U.patt.1caacc.2: type = symbolic_binding_pattern U, 0 [symbolic] +// CHECK:STDOUT: %T.6bab16.2: type = bind_symbolic_name T, 1 [symbolic] +// CHECK:STDOUT: %T.patt.d8619a.2: type = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %ptr.251602.2: type = ptr_type %T.6bab16.2 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] -// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.2 [symbolic] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] +// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.251602.2 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -318,103 +318,103 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %T.patt.loc4_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %T.patt.loc4_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.251602.1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.251602.1) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.1 [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] +// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.6bab16.1 [symbolic = %ptr.loc4_30.2 (constants.%ptr.251602.1)] // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] // CHECK:STDOUT: %U.param: type = value_param runtime_param -// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)] -// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.2868b5.1)] +// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.251602.1) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.251602.1) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { -// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { +// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.251602.2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.251602.2) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)] -// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %T.2 [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] +// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %T.6bab16.2 [symbolic = %ptr.loc13_30.2 (constants.%ptr.251602.2)] // CHECK:STDOUT: %U.param: type = value_param runtime_param -// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)] +// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2868b5.2)] // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)] -// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot %return.param +// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] +// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.251602.2) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.251602.2) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc4_6.1: type, %U.loc4_16.1: type) { -// CHECK:STDOUT: %T.loc4_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %U.loc4_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_16.2 (constants.%U.1)] -// CHECK:STDOUT: %U.patt.loc4_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T.1) [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %T.loc4_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] +// CHECK:STDOUT: %T.patt.loc4_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %U.loc4_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_16.2 (constants.%U.2868b5.1)] +// CHECK:STDOUT: %U.patt.loc4_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T.6bab16.1) [symbolic = %ptr.loc4_30.2 (constants.%ptr.251602.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.1); +// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.251602.1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @.1(%U.loc13_6.1: type, %T.loc13_16.1: type) { -// CHECK:STDOUT: %U.loc13_6.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc13_6.2 (constants.%U.2)] -// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%T.loc13_16.2 (%T.2) [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %U.loc13_6.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc13_6.2 (constants.%U.2868b5.2)] +// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] +// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%T.loc13_16.2 (%T.6bab16.2) [symbolic = %ptr.loc13_30.2 (constants.%ptr.251602.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.2) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.251602.2) [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.2) { +// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.251602.2) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %T.ref.loc21: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %T.ref.loc21: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.1, constants.%U.1) { -// CHECK:STDOUT: %T.loc4_6.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_6.2 => constants.%T.1 -// CHECK:STDOUT: %U.loc4_16.2 => constants.%U.1 -// CHECK:STDOUT: %U.patt.loc4_16.2 => constants.%U.1 -// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.1 +// CHECK:STDOUT: specific @F(constants.%T.6bab16.1, constants.%U.2868b5.1) { +// CHECK:STDOUT: %T.loc4_6.2 => constants.%T.6bab16.1 +// CHECK:STDOUT: %T.patt.loc4_6.2 => constants.%T.6bab16.1 +// CHECK:STDOUT: %U.loc4_16.2 => constants.%U.2868b5.1 +// CHECK:STDOUT: %U.patt.loc4_16.2 => constants.%U.2868b5.1 +// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.251602.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%U.2, constants.%T.2) { -// CHECK:STDOUT: %U.loc13_6.2 => constants.%U.2 -// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2 -// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.2 -// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.2 +// CHECK:STDOUT: specific @.1(constants.%U.2868b5.2, constants.%T.6bab16.2) { +// CHECK:STDOUT: %U.loc13_6.2 => constants.%U.2868b5.2 +// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2868b5.2 +// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.6bab16.2 +// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.6bab16.2 +// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.251602.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_rename.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %U.1: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %U.patt.1: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T.1 [symbolic] +// CHECK:STDOUT: %T.6bab16.1: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d8619a.1: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %U.2868b5.1: type = bind_symbolic_name U, 1 [symbolic] +// CHECK:STDOUT: %U.patt.1caacc.1: type = symbolic_binding_pattern U, 1 [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T.6bab16.1 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %U.2: type = bind_symbolic_name U, 0 [symbolic] -// CHECK:STDOUT: %U.patt.2: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %T.2: type = bind_symbolic_name T, 1 [symbolic] -// CHECK:STDOUT: %T.patt.2: type = symbolic_binding_pattern T, 1 [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %U.2 [symbolic] +// CHECK:STDOUT: %U.2868b5.2: type = bind_symbolic_name U, 0 [symbolic] +// CHECK:STDOUT: %U.patt.1caacc.2: type = symbolic_binding_pattern U, 0 [symbolic] +// CHECK:STDOUT: %T.6bab16.2: type = bind_symbolic_name T, 1 [symbolic] +// CHECK:STDOUT: %T.patt.d8619a.2: type = symbolic_binding_pattern T, 1 [symbolic] +// CHECK:STDOUT: %ptr.585: type = ptr_type %U.2868b5.2 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] -// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.2 [symbolic] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] +// CHECK:STDOUT: %require_complete: = require_complete_type %ptr.585 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -431,82 +431,82 @@ fn F(U:! type, T:! type) -> U* { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %T.patt.loc4_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %T.patt.loc4_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_6.1, runtime_param [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %U.patt.loc4_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc4_16.1, runtime_param [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %return.patt: @F.%ptr.loc4_30.2 (%ptr.251) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.%ptr.loc4_30.2 (%ptr.251) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.1 [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_6.1 [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] +// CHECK:STDOUT: %ptr.loc4_30.1: type = ptr_type %T.6bab16.1 [symbolic = %ptr.loc4_30.2 (constants.%ptr.251)] // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] // CHECK:STDOUT: %U.param: type = value_param runtime_param -// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.1)] -// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.1) = return_slot %return.param +// CHECK:STDOUT: %U.loc4_16.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc4_16.2 (constants.%U.2868b5.1)] +// CHECK:STDOUT: %return.param: ref @F.%ptr.loc4_30.2 (%ptr.251) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @F.%ptr.loc4_30.2 (%ptr.251) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { -// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { +// CHECK:STDOUT: %U.patt.loc13_6.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc13_6.1, runtime_param [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %T.patt.loc13_16.1: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc13_16.1, runtime_param [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %return.patt: @.1.%ptr.loc13_30.2 (%ptr.585) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @.1.%ptr.loc13_30.2 (%ptr.585) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.1 [symbolic = %U.loc13_6.2 (constants.%U.2)] -// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.2 [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc13_6.1 [symbolic = %U.loc13_6.2 (constants.%U.2868b5.2)] +// CHECK:STDOUT: %ptr.loc13_30.1: type = ptr_type %U.2868b5.2 [symbolic = %ptr.loc13_30.2 (constants.%ptr.585)] // CHECK:STDOUT: %U.param: type = value_param runtime_param -// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2)] +// CHECK:STDOUT: %U.loc13_6.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc13_6.2 (constants.%U.2868b5.2)] // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.2)] -// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.2) = return_slot %return.param +// CHECK:STDOUT: %T.loc13_16.1: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] +// CHECK:STDOUT: %return.param: ref @.1.%ptr.loc13_30.2 (%ptr.585) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @.1.%ptr.loc13_30.2 (%ptr.585) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc4_6.1: type, %U.loc4_16.1: type) { -// CHECK:STDOUT: %T.loc4_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %U.loc4_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_16.2 (constants.%U.1)] -// CHECK:STDOUT: %U.patt.loc4_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1)] -// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T.1) [symbolic = %ptr.loc4_30.2 (constants.%ptr.1)] +// CHECK:STDOUT: %T.loc4_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.2 (constants.%T.6bab16.1)] +// CHECK:STDOUT: %T.patt.loc4_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_6.2 (constants.%T.patt.d8619a.1)] +// CHECK:STDOUT: %U.loc4_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc4_16.2 (constants.%U.2868b5.1)] +// CHECK:STDOUT: %U.patt.loc4_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc4_16.2 (constants.%U.patt.1caacc.1)] +// CHECK:STDOUT: %ptr.loc4_30.2: type = ptr_type @F.%T.loc4_6.2 (%T.6bab16.1) [symbolic = %ptr.loc4_30.2 (constants.%ptr.251)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.1); +// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: type) -> @F.%ptr.loc4_30.2 (%ptr.251); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @.1(%U.loc13_6.1: type, %T.loc13_16.1: type) { -// CHECK:STDOUT: %U.loc13_6.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc13_6.2 (constants.%U.2)] -// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.2)] -// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%U.loc13_6.2 (%U.2) [symbolic = %ptr.loc13_30.2 (constants.%ptr.2)] +// CHECK:STDOUT: %U.loc13_6.2: type = bind_symbolic_name U, 0 [symbolic = %U.loc13_6.2 (constants.%U.2868b5.2)] +// CHECK:STDOUT: %U.patt.loc13_6.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc13_6.2 (constants.%U.patt.1caacc.2)] +// CHECK:STDOUT: %T.loc13_16.2: type = bind_symbolic_name T, 1 [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] +// CHECK:STDOUT: %T.patt.loc13_16.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc13_16.2 (constants.%T.patt.d8619a.2)] +// CHECK:STDOUT: %ptr.loc13_30.2: type = ptr_type @.1.%U.loc13_6.2 (%U.2868b5.2) [symbolic = %ptr.loc13_30.2 (constants.%ptr.585)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.2) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type @.1.%ptr.loc13_30.2 (%ptr.585) [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.2) { +// CHECK:STDOUT: fn(%U.param_patt: type, %T.param_patt: type) -> @.1.%ptr.loc13_30.2 (%ptr.585) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.2)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc13_16.1 [symbolic = %T.loc13_16.2 (constants.%T.6bab16.2)] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.1, constants.%U.1) { -// CHECK:STDOUT: %T.loc4_6.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_6.2 => constants.%T.1 -// CHECK:STDOUT: %U.loc4_16.2 => constants.%U.1 -// CHECK:STDOUT: %U.patt.loc4_16.2 => constants.%U.1 -// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.1 +// CHECK:STDOUT: specific @F(constants.%T.6bab16.1, constants.%U.2868b5.1) { +// CHECK:STDOUT: %T.loc4_6.2 => constants.%T.6bab16.1 +// CHECK:STDOUT: %T.patt.loc4_6.2 => constants.%T.6bab16.1 +// CHECK:STDOUT: %U.loc4_16.2 => constants.%U.2868b5.1 +// CHECK:STDOUT: %U.patt.loc4_16.2 => constants.%U.2868b5.1 +// CHECK:STDOUT: %ptr.loc4_30.2 => constants.%ptr.251 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%U.2, constants.%T.2) { -// CHECK:STDOUT: %U.loc13_6.2 => constants.%U.2 -// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2 -// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.2 -// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.2 +// CHECK:STDOUT: specific @.1(constants.%U.2868b5.2, constants.%T.6bab16.2) { +// CHECK:STDOUT: %U.loc13_6.2 => constants.%U.2868b5.2 +// CHECK:STDOUT: %U.patt.loc13_6.2 => constants.%U.2868b5.2 +// CHECK:STDOUT: %T.loc13_16.2 => constants.%T.6bab16.2 +// CHECK:STDOUT: %T.patt.loc13_16.2 => constants.%T.6bab16.2 +// CHECK:STDOUT: %ptr.loc13_30.2 => constants.%ptr.585 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index eced0333f50c..9fa811506ceb 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -44,23 +44,23 @@ fn CallNegative() { // CHECK:STDOUT: %ErrorIfNIsZero.type: type = fn_type @ErrorIfNIsZero [template] // CHECK:STDOUT: %ErrorIfNIsZero: %ErrorIfNIsZero.type = struct_value () [template] // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N) [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Int [symbolic] +// CHECK:STDOUT: %require_complete.5cb: = require_complete_type %Int [symbolic] // CHECK:STDOUT: %CallNegative.type: type = fn_type @CallNegative [template] // CHECK:STDOUT: %CallNegative: %CallNegative.type = struct_value () [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %ErrorIfNIsZero.specific_fn: = specific_function %ErrorIfNIsZero, @ErrorIfNIsZero(%int_0) [template] // CHECK:STDOUT: %i0: type = class_type @Int, @Int(%int_0) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness [template] +// CHECK:STDOUT: %complete_type.d94: = complete_type_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IntLiteral = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .IntLiteral = %import_ref.8ee +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] +// CHECK:STDOUT: %import_ref.8ee: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -77,7 +77,7 @@ fn CallNegative() { // CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param // CHECK:STDOUT: %.loc4_39.1: type = splice_block %.loc4_39.3 [template = Core.IntLiteral] { // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.1 [template = constants.%IntLiteral] +// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%import_ref.8ee [template = constants.%IntLiteral] // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_39.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc4_39.3: type = converted %int_literal.make_type, %.loc4_39.2 [template = Core.IntLiteral] @@ -93,7 +93,7 @@ fn CallNegative() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Int: type = class_type @Int, @Int(%N.loc4_19.2) [symbolic = %Int (constants.%Int)] -// CHECK:STDOUT: %require_complete: = require_complete_type @ErrorIfNIsZero.%Int (%Int) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @ErrorIfNIsZero.%Int (%Int) [symbolic = %require_complete (constants.%require_complete.5cb)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%N.param_patt: Core.IntLiteral) { // CHECK:STDOUT: !entry: @@ -123,6 +123,6 @@ fn CallNegative() { // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Int => constants.%i0 -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.d94 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 954e4534e77d..7d78101a7461 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -28,43 +28,43 @@ fn G() { // CHECK:STDOUT: %Wrap.type: type = generic_class_type @Wrap [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Wrap.generic: %Wrap.type = struct_value () [template] -// CHECK:STDOUT: %Wrap.1: type = class_type @Wrap, @Wrap(%T) [symbolic] -// CHECK:STDOUT: %Make.type.1: type = fn_type @Make, @Wrap(%T) [symbolic] -// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Wrap.f96: type = class_type @Wrap, @Wrap(%T) [symbolic] +// CHECK:STDOUT: %Make.type.8f2: type = fn_type @Make, @Wrap(%T) [symbolic] +// CHECK:STDOUT: %Make.017: %Make.type.8f2 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Make.specific_fn.1: = specific_function %Make.1, @Make(%T) [symbolic] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Make.specific_fn.b56: = specific_function %Make.017, @Make(%T) [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_100: Core.IntLiteral = int_value 100 [template] // CHECK:STDOUT: %array_type: type = array_type %int_100, %i32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %array_type [template] -// CHECK:STDOUT: %struct_type.arr.1: type = struct_type {.arr: %array_type} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.arr.1 [template] +// CHECK:STDOUT: %struct_type.arr.1a0: type = struct_type {.arr: %array_type} [template] +// CHECK:STDOUT: %complete_type.b49: = complete_type_witness %struct_type.arr.1a0 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %Wrap.2: type = class_type @Wrap, @Wrap(%i32) [template] -// CHECK:STDOUT: %Make.type.2: type = fn_type @Make, @Wrap(%i32) [template] -// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template] -// CHECK:STDOUT: %Make.specific_fn.2: = specific_function %Make.2, @Make(%i32) [template] -// CHECK:STDOUT: %Wrap.3: type = class_type @Wrap, @Wrap(%empty_tuple.type) [template] -// CHECK:STDOUT: %Make.type.3: type = fn_type @Make, @Wrap(%empty_tuple.type) [template] -// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template] -// CHECK:STDOUT: %Make.specific_fn.3: = specific_function %Make.3, @Make(%empty_tuple.type) [template] -// CHECK:STDOUT: %Wrap.4: type = class_type @Wrap, @Wrap(%C) [template] -// CHECK:STDOUT: %Make.type.4: type = fn_type @Make, @Wrap(%C) [template] -// CHECK:STDOUT: %Make.4: %Make.type.4 = struct_value () [template] -// CHECK:STDOUT: %Make.specific_fn.4: = specific_function %Make.4, @Make(%C) [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %empty_tuple.type [template] +// CHECK:STDOUT: %Wrap.7d7: type = class_type @Wrap, @Wrap(%i32) [template] +// CHECK:STDOUT: %Make.type.cc6: type = fn_type @Make, @Wrap(%i32) [template] +// CHECK:STDOUT: %Make.115: %Make.type.cc6 = struct_value () [template] +// CHECK:STDOUT: %Make.specific_fn.05c: = specific_function %Make.115, @Make(%i32) [template] +// CHECK:STDOUT: %Wrap.948: type = class_type @Wrap, @Wrap(%empty_tuple.type) [template] +// CHECK:STDOUT: %Make.type.2c9: type = fn_type @Make, @Wrap(%empty_tuple.type) [template] +// CHECK:STDOUT: %Make.b25: %Make.type.2c9 = struct_value () [template] +// CHECK:STDOUT: %Make.specific_fn.086: = specific_function %Make.b25, @Make(%empty_tuple.type) [template] +// CHECK:STDOUT: %Wrap.411: type = class_type @Wrap, @Wrap(%C) [template] +// CHECK:STDOUT: %Make.type.c1b: type = fn_type @Make, @Wrap(%C) [template] +// CHECK:STDOUT: %Make.0a1: %Make.type.c1b = struct_value () [template] +// CHECK:STDOUT: %Make.specific_fn.9b4: = specific_function %Make.0a1, @Make(%C) [template] +// CHECK:STDOUT: %complete_type.782: = complete_type_witness %empty_tuple.type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -94,11 +94,11 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_12.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T.loc11_12.2) [symbolic = %Make.type (constants.%Make.type.1)] -// CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T.loc11_12.2) [symbolic = %Make.type (constants.%Make.type.8f2)] +// CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.8f2) = struct_value () [symbolic = %Make (constants.%Make.017)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.1) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.1)] { +// CHECK:STDOUT: %Make.decl: @Wrap.%Make.type (%Make.type.8f2) = fn_decl @Make [symbolic = @Wrap.%Make (constants.%Make.017)] { // CHECK:STDOUT: %return.patt: @Make.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Make.%T (%T) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -106,10 +106,10 @@ fn G() { // CHECK:STDOUT: %return.param: ref @Make.%T (%T) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Wrap.1 +// CHECK:STDOUT: .Self = constants.%Wrap.f96 // CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -117,7 +117,7 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc15: %C.elem = field_decl arr, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.arr.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.arr.1a0 [template = constants.%complete_type.b49] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -129,16 +129,16 @@ fn G() { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%T (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T) [symbolic = %Make.type (constants.%Make.type.1)] -// CHECK:STDOUT: %Make: @Make.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.specific_fn.loc12_27.2: = specific_function %Make, @Make(%T) [symbolic = %Make.specific_fn.loc12_27.2 (constants.%Make.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T) [symbolic = %Make.type (constants.%Make.type.8f2)] +// CHECK:STDOUT: %Make: @Make.%Make.type (%Make.type.8f2) = struct_value () [symbolic = %Make (constants.%Make.017)] +// CHECK:STDOUT: %Make.specific_fn.loc12_27.2: = specific_function %Make, @Make(%T) [symbolic = %Make.specific_fn.loc12_27.2 (constants.%Make.specific_fn.b56)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Make.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc12_27: @Make.%Make.type (%Make.type.1) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.1) = name_ref Make, %.loc12_27 [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.specific_fn.loc12_27.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc12_27.2 (constants.%Make.specific_fn.1)] +// CHECK:STDOUT: %.loc12_27: @Make.%Make.type (%Make.type.8f2) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.017)] +// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.8f2) = name_ref Make, %.loc12_27 [symbolic = %Make (constants.%Make.017)] +// CHECK:STDOUT: %Make.specific_fn.loc12_27.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc12_27.2 (constants.%Make.specific_fn.b56)] // CHECK:STDOUT: %Make.call: init @Make.%T (%T) = call %Make.specific_fn.loc12_27.1() // CHECK:STDOUT: %.loc12_33.1: @Make.%T (%T) = value_of_initializer %Make.call // CHECK:STDOUT: %.loc12_33.2: @Make.%T (%T) = converted %Make.call, %.loc12_33.1 @@ -153,10 +153,10 @@ fn G() { // CHECK:STDOUT: %Wrap.ref.loc18: %Wrap.type = name_ref Wrap, file.%Wrap.decl [template = constants.%Wrap.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Wrap.loc18: type = class_type @Wrap, @Wrap(constants.%i32) [template = constants.%Wrap.2] -// CHECK:STDOUT: %.loc18: %Make.type.2 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%i32) [template = constants.%Make.2] -// CHECK:STDOUT: %Make.ref.loc18: %Make.type.2 = name_ref Make, %.loc18 [template = constants.%Make.2] -// CHECK:STDOUT: %Make.specific_fn.loc18: = specific_function %Make.ref.loc18, @Make(constants.%i32) [template = constants.%Make.specific_fn.2] +// CHECK:STDOUT: %Wrap.loc18: type = class_type @Wrap, @Wrap(constants.%i32) [template = constants.%Wrap.7d7] +// CHECK:STDOUT: %.loc18: %Make.type.cc6 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%i32) [template = constants.%Make.115] +// CHECK:STDOUT: %Make.ref.loc18: %Make.type.cc6 = name_ref Make, %.loc18 [template = constants.%Make.115] +// CHECK:STDOUT: %Make.specific_fn.loc18: = specific_function %Make.ref.loc18, @Make(constants.%i32) [template = constants.%Make.specific_fn.05c] // CHECK:STDOUT: %Make.call.loc18: init %i32 = call %Make.specific_fn.loc18() // CHECK:STDOUT: assign %a.var, %Make.call.loc18 // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var b @@ -164,20 +164,20 @@ fn G() { // CHECK:STDOUT: %Wrap.ref.loc19: %Wrap.type = name_ref Wrap, file.%Wrap.decl [template = constants.%Wrap.generic] // CHECK:STDOUT: %.loc19_21: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc19_22: type = converted %.loc19_21, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %Wrap.loc19: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [template = constants.%Wrap.3] -// CHECK:STDOUT: %.loc19_23: %Make.type.3 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [template = constants.%Make.3] -// CHECK:STDOUT: %Make.ref.loc19: %Make.type.3 = name_ref Make, %.loc19_23 [template = constants.%Make.3] -// CHECK:STDOUT: %Make.specific_fn.loc19: = specific_function %Make.ref.loc19, @Make(constants.%empty_tuple.type) [template = constants.%Make.specific_fn.3] +// CHECK:STDOUT: %Wrap.loc19: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [template = constants.%Wrap.948] +// CHECK:STDOUT: %.loc19_23: %Make.type.2c9 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [template = constants.%Make.b25] +// CHECK:STDOUT: %Make.ref.loc19: %Make.type.2c9 = name_ref Make, %.loc19_23 [template = constants.%Make.b25] +// CHECK:STDOUT: %Make.specific_fn.loc19: = specific_function %Make.ref.loc19, @Make(constants.%empty_tuple.type) [template = constants.%Make.specific_fn.086] // CHECK:STDOUT: %Make.call.loc19: init %empty_tuple.type = call %Make.specific_fn.loc19() // CHECK:STDOUT: assign %b.var, %Make.call.loc19 // CHECK:STDOUT: %c.var: ref %C = var c // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %Wrap.ref.loc20: %Wrap.type = name_ref Wrap, file.%Wrap.decl [template = constants.%Wrap.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Wrap.loc20: type = class_type @Wrap, @Wrap(constants.%C) [template = constants.%Wrap.4] -// CHECK:STDOUT: %.loc20_21: %Make.type.4 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [template = constants.%Make.4] -// CHECK:STDOUT: %Make.ref.loc20: %Make.type.4 = name_ref Make, %.loc20_21 [template = constants.%Make.4] -// CHECK:STDOUT: %Make.specific_fn.loc20: = specific_function %Make.ref.loc20, @Make(constants.%C) [template = constants.%Make.specific_fn.4] +// CHECK:STDOUT: %Wrap.loc20: type = class_type @Wrap, @Wrap(constants.%C) [template = constants.%Wrap.411] +// CHECK:STDOUT: %.loc20_21: %Make.type.c1b = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [template = constants.%Make.0a1] +// CHECK:STDOUT: %Make.ref.loc20: %Make.type.c1b = name_ref Make, %.loc20_21 [template = constants.%Make.0a1] +// CHECK:STDOUT: %Make.specific_fn.loc20: = specific_function %Make.ref.loc20, @Make(constants.%C) [template = constants.%Make.specific_fn.9b4] // CHECK:STDOUT: %.loc20_7: ref %C = splice_block %c.var {} // CHECK:STDOUT: %Make.call.loc20: init %C = call %Make.specific_fn.loc20() to %.loc20_7 // CHECK:STDOUT: assign %c.var, %Make.call.loc20 @@ -189,18 +189,18 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.1 -// CHECK:STDOUT: %Make => constants.%Make.1 +// CHECK:STDOUT: %Make.type => constants.%Make.type.8f2 +// CHECK:STDOUT: %Make => constants.%Make.017 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Make.type => constants.%Make.type.1 -// CHECK:STDOUT: %Make => constants.%Make.1 -// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Make.type => constants.%Make.type.8f2 +// CHECK:STDOUT: %Make => constants.%Make.017 +// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.b56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(%T.loc11_12.2) {} @@ -214,18 +214,18 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.2 -// CHECK:STDOUT: %Make => constants.%Make.2 +// CHECK:STDOUT: %Make.type => constants.%Make.type.cc6 +// CHECK:STDOUT: %Make => constants.%Make.115 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%i32) { // CHECK:STDOUT: %T => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %Make.type => constants.%Make.type.2 -// CHECK:STDOUT: %Make => constants.%Make.2 -// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Make.type => constants.%Make.type.cc6 +// CHECK:STDOUT: %Make => constants.%Make.115 +// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.05c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%empty_tuple.type) { @@ -233,18 +233,18 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%empty_tuple.type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.3 -// CHECK:STDOUT: %Make => constants.%Make.3 +// CHECK:STDOUT: %Make.type => constants.%Make.type.2c9 +// CHECK:STDOUT: %Make => constants.%Make.b25 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%empty_tuple.type) { // CHECK:STDOUT: %T => constants.%empty_tuple.type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.5 -// CHECK:STDOUT: %Make.type => constants.%Make.type.3 -// CHECK:STDOUT: %Make => constants.%Make.3 -// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.3 +// CHECK:STDOUT: %require_complete => constants.%complete_type.782 +// CHECK:STDOUT: %Make.type => constants.%Make.type.2c9 +// CHECK:STDOUT: %Make => constants.%Make.b25 +// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.086 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%C) { @@ -252,17 +252,17 @@ fn G() { // CHECK:STDOUT: %T.patt.loc11_12.2 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type => constants.%Make.type.4 -// CHECK:STDOUT: %Make => constants.%Make.4 +// CHECK:STDOUT: %Make.type => constants.%Make.type.c1b +// CHECK:STDOUT: %Make => constants.%Make.0a1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(constants.%C) { // CHECK:STDOUT: %T => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %Make.type => constants.%Make.type.4 -// CHECK:STDOUT: %Make => constants.%Make.4 -// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.4 +// CHECK:STDOUT: %require_complete => constants.%complete_type.b49 +// CHECK:STDOUT: %Make.type => constants.%Make.type.c1b +// CHECK:STDOUT: %Make => constants.%Make.0a1 +// CHECK:STDOUT: %Make.specific_fn.loc12_27.2 => constants.%Make.specific_fn.9b4 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/undefined.carbon b/toolchain/check/testdata/function/generic/undefined.carbon index bb6c228d68fd..c2e9cffa6a91 100644 --- a/toolchain/check/testdata/function/generic/undefined.carbon +++ b/toolchain/check/testdata/function/generic/undefined.carbon @@ -57,28 +57,28 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Defined.type: type = fn_type @Defined [template] // CHECK:STDOUT: %Defined: %Defined.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %CallDefined.type: type = fn_type @CallDefined [template] // CHECK:STDOUT: %CallDefined: %CallDefined.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.27), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.6c4 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined, @Defined(%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -124,7 +124,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.patt.loc4_12.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_12.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Defined.%T.loc4_12.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Defined.%T.loc4_12.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: @Defined.%T.loc4_12.2 (%T)) -> @Defined.%T.loc4_12.2 (%T) { // CHECK:STDOUT: !entry: @@ -136,15 +136,15 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: fn @CallDefined() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Defined.ref: %Defined.type = name_ref Defined, file.%Defined.decl [template = constants.%Defined] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc9: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc9: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_20.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc9_20.2: %i32 = converted %int_0, %.loc9_20.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_20.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc9_20.2: %i32 = converted %int_0, %.loc9_20.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined.ref, @Defined(constants.%i32) [template = constants.%Defined.specific_fn] // CHECK:STDOUT: %Defined.call: init %i32 = call %Defined.specific_fn(%.loc9_20.2) // CHECK:STDOUT: %.loc9_27.1: %i32 = value_of_initializer %Defined.call @@ -162,7 +162,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.patt.loc4_12.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- call_defined_late.carbon @@ -177,23 +177,23 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %CallDefined.type: type = fn_type @CallDefined [template] // CHECK:STDOUT: %CallDefined: %CallDefined.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.27), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.6c4 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined, @Defined(%i32) [template] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -256,7 +256,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.patt.loc4: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Defined.%T.loc4_12.2 (%T) [symbolic = %require_complete (constants.%require_complete.5)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Defined.%T.loc4_12.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%T.param_patt: type](%x.param_patt: %T) -> %T { // CHECK:STDOUT: !entry: @@ -268,15 +268,15 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: fn @CallDefined() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Defined.ref: %Defined.type = name_ref Defined, file.%Defined.decl.loc4 [template = constants.%Defined] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc7_20.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc7_20.2: %i32 = converted %int_0, %.loc7_20.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc7_20.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc7_20.2: %i32 = converted %int_0, %.loc7_20.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Defined.specific_fn: = specific_function %Defined.ref, @Defined(constants.%i32) [template = constants.%Defined.specific_fn] // CHECK:STDOUT: %Defined.call: init %i32 = call %Defined.specific_fn(%.loc7_20.2) // CHECK:STDOUT: %.loc7_27.1: %i32 = value_of_initializer %Defined.call @@ -294,7 +294,7 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %T.patt.loc4 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_call_undefined.carbon @@ -308,21 +308,21 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %CallUndefined.type: type = fn_type @CallUndefined [template] // CHECK:STDOUT: %CallUndefined: %CallUndefined.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.27), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.1, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.6c4 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Undefined.specific_fn: = specific_function %Undefined, @Undefined(%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .As = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -373,15 +373,15 @@ fn CallUndefined() -> i32 { // CHECK:STDOUT: fn @CallUndefined() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Undefined.ref: %Undefined.type = name_ref Undefined, file.%Undefined.decl [template = constants.%Undefined] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_22.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_22.2: %i32 = converted %int_0, %.loc13_22.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_22.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_22.2: %i32 = converted %int_0, %.loc13_22.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Undefined.specific_fn: = specific_function %Undefined.ref, @Undefined(constants.%i32) [template = constants.%Undefined.specific_fn] // CHECK:STDOUT: %Undefined.call: init %i32 = call %Undefined.specific_fn(%.loc13_22.2) // CHECK:STDOUT: %.loc13_29.1: %i32 = value_of_initializer %Undefined.call diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index fe8e18f099fb..c7bf4987eea4 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -83,19 +83,19 @@ fn G() { F(B); } // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %A.type: type = generic_class_type @A [template] // CHECK:STDOUT: %A.generic: %A.type = struct_value () [template] -// CHECK:STDOUT: %A.1: type = class_type @A, @A(%T) [symbolic] +// CHECK:STDOUT: %A.619: type = class_type @A, @A(%T) [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %A.elem.1: type = unbound_element_type %A.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.v.1: type = struct_type {.v: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.v.1 [symbolic] -// CHECK:STDOUT: %A.2: type = class_type @A, @A(%B) [template] +// CHECK:STDOUT: %A.elem.78a: type = unbound_element_type %A.619, %T [symbolic] +// CHECK:STDOUT: %struct_type.v.65f: type = struct_type {.v: %T} [symbolic] +// CHECK:STDOUT: %complete_type.5c5: = complete_type_witness %struct_type.v.65f [symbolic] +// CHECK:STDOUT: %A.ffe: type = class_type @A, @A(%B) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %A.elem.2: type = unbound_element_type %A.2, %B [template] -// CHECK:STDOUT: %struct_type.v.2: type = struct_type {.v: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.v.2 [template] +// CHECK:STDOUT: %A.elem.853: type = unbound_element_type %A.ffe, %B [template] +// CHECK:STDOUT: %struct_type.v.d45: type = struct_type {.v: %B} [template] +// CHECK:STDOUT: %complete_type.1df: = complete_type_witness %struct_type.v.d45 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -122,22 +122,22 @@ fn G() { F(B); } // CHECK:STDOUT: %T.loc6_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_9.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %x.patt: %A.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %A.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %A.ffe = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %A.ffe = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %A.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc27: type = splice_block %A [template = constants.%A.2] { +// CHECK:STDOUT: %x.param: %A.ffe = value_param runtime_param0 +// CHECK:STDOUT: %.loc27: type = splice_block %A [template = constants.%A.ffe] { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl.loc4 [template = constants.%B] -// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%B) [template = constants.%A.2] +// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%B) [template = constants.%A.ffe] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %A.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %A.ffe = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl.loc29: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -150,23 +150,23 @@ fn G() { F(B); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type @A.%T.loc6_9.2 (%T) [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc6_9.2) [symbolic = %A (constants.%A.1)] -// CHECK:STDOUT: %A.elem: type = unbound_element_type @A.%A (%A.1), @A.%T.loc6_9.2 (%T) [symbolic = %A.elem (constants.%A.elem.1)] -// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: @A.%T.loc6_9.2 (%T)} [symbolic = %struct_type.v (constants.%struct_type.v.1)] -// CHECK:STDOUT: %complete_type.loc14_1.2: = complete_type_witness @A.%struct_type.v (%struct_type.v.1) [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc6_9.2) [symbolic = %A (constants.%A.619)] +// CHECK:STDOUT: %A.elem: type = unbound_element_type @A.%A (%A.619), @A.%T.loc6_9.2 (%T) [symbolic = %A.elem (constants.%A.elem.78a)] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: @A.%T.loc6_9.2 (%T)} [symbolic = %struct_type.v (constants.%struct_type.v.65f)] +// CHECK:STDOUT: %complete_type.loc14_1.2: = complete_type_witness @A.%struct_type.v (%struct_type.v.65f) [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.5c5)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc13: @A.%A.elem (%A.elem.1) = field_decl v, element0 [template] -// CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.v.1 [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc13: @A.%A.elem (%A.elem.78a) = field_decl v, element0 [template] +// CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.v.65f [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.5c5)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.1 +// CHECK:STDOUT: .Self = constants.%A.619 // CHECK:STDOUT: .v = %.loc13 // CHECK:STDOUT: complete_type_witness = %complete_type.loc14_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%x.param_patt: %A.2) { +// CHECK:STDOUT: fn @F(%x.param_patt: %A.ffe) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -184,10 +184,10 @@ fn G() { F(B); } // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => -// CHECK:STDOUT: %A => constants.%A.2 -// CHECK:STDOUT: %A.elem => constants.%A.elem.2 -// CHECK:STDOUT: %struct_type.v => constants.%struct_type.v.2 -// CHECK:STDOUT: %complete_type.loc14_1.2 => constants.%complete_type.2 +// CHECK:STDOUT: %A => constants.%A.ffe +// CHECK:STDOUT: %A.elem => constants.%A.elem.853 +// CHECK:STDOUT: %struct_type.v => constants.%struct_type.v.d45 +// CHECK:STDOUT: %complete_type.loc14_1.2 => constants.%complete_type.1df // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- incomplete_in_function.carbon diff --git a/toolchain/check/testdata/global/decl.carbon b/toolchain/check/testdata/global/decl.carbon index 5c07ed62c106..3e367afe3b26 100644 --- a/toolchain/check/testdata/global/decl.carbon +++ b/toolchain/check/testdata/global/decl.carbon @@ -18,7 +18,7 @@ var a: i32; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/global/simple_init.carbon b/toolchain/check/testdata/global/simple_init.carbon index 839b51c676ed..dbc9c3260dab 100644 --- a/toolchain/check/testdata/global/simple_init.carbon +++ b/toolchain/check/testdata/global/simple_init.carbon @@ -14,20 +14,20 @@ var a: i32 = 0; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -45,12 +45,12 @@ var a: i32 = 0; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc10: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc10: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%a.var, %.loc10 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/global/simple_with_fun.carbon b/toolchain/check/testdata/global/simple_with_fun.carbon index 9f9e07a0ccf8..595a17e9245f 100644 --- a/toolchain/check/testdata/global/simple_with_fun.carbon +++ b/toolchain/check/testdata/global/simple_with_fun.carbon @@ -21,20 +21,20 @@ var a: i32 = test_a(); // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %test_a.type: type = fn_type @test_a [template] // CHECK:STDOUT: %test_a: %test_a.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -62,13 +62,13 @@ var a: i32 = test_a(); // CHECK:STDOUT: // CHECK:STDOUT: fn @test_a() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc12_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon index 50a8963a14f7..9c246d73ce7c 100644 --- a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon @@ -48,29 +48,29 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %If1.type: type = fn_type @If1 [template] // CHECK:STDOUT: %If1: %If1.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %If2.type: type = fn_type @If2 [template] // CHECK:STDOUT: %If2: %If2.type = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: %If3.type: type = fn_type @If3 [template] // CHECK:STDOUT: %If3: %If3.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -146,13 +146,13 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: if %b.ref br !if.then else br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.then: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc13_13.2 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: @@ -170,13 +170,13 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: br !if.done // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc25_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc25_13.2: %i32 = converted %int_2, %.loc25_13.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc25_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc25_13.2: %i32 = converted %int_2, %.loc25_13.1 [template = constants.%int_2.166] // CHECK:STDOUT: return %.loc25_13.2 // CHECK:STDOUT: // CHECK:STDOUT: !if.done: @@ -188,13 +188,13 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: if %b.ref br !if.then else br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.then: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc35_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc35_13.2: %i32 = converted %int_1, %.loc35_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc35_13.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc35_13.2: %i32 = converted %int_1, %.loc35_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc35_13.2 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: diff --git a/toolchain/check/testdata/if/fail_scope.carbon b/toolchain/check/testdata/if/fail_scope.carbon index d95df7dcc605..efaa6f16bbb3 100644 --- a/toolchain/check/testdata/if/fail_scope.carbon +++ b/toolchain/check/testdata/if/fail_scope.carbon @@ -28,21 +28,21 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %VarScope.type: type = fn_type @VarScope [template] // CHECK:STDOUT: %VarScope: %VarScope.type = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.1, %Convert.10 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -82,12 +82,12 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: !if.then: // CHECK:STDOUT: %n.var: ref %i32 = var n // CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc13: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc13: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.166] // CHECK:STDOUT: assign %n.var, %.loc13 // CHECK:STDOUT: %n.ref.loc14: ref %i32 = name_ref n, %n // CHECK:STDOUT: %.loc14: %i32 = bind_value %n.ref.loc14 diff --git a/toolchain/check/testdata/if/unreachable_fallthrough.carbon b/toolchain/check/testdata/if/unreachable_fallthrough.carbon index ea4acaed24b3..e6eb2b78d2bd 100644 --- a/toolchain/check/testdata/if/unreachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/unreachable_fallthrough.carbon @@ -26,25 +26,25 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %If.type: type = fn_type @If [template] // CHECK:STDOUT: %If: %If.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -82,23 +82,23 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: if %b.ref br !if.then else br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.then: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_1, %impl.elem0.loc13 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_1, %impl.elem0.loc13 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc13_13.2: %i32 = converted %int_1, %.loc13_13.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc13_13.2 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_2, %impl.elem0.loc15 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_13.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_13.2: %i32 = converted %int_2, %.loc15_13.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_2, %impl.elem0.loc15 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_13.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_13.2: %i32 = converted %int_2, %.loc15_13.1 [template = constants.%int_2.166] // CHECK:STDOUT: return %.loc15_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index 3bb6ffd023f4..9b220bb73673 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -24,23 +24,23 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.2) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_0.f61) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,16 +92,16 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.var: ref %array_type = var x // CHECK:STDOUT: %x: ref %array_type = bind_name x, %x.var -// CHECK:STDOUT: %int_0.loc12_22: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc12_22: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc12_24.1: %tuple.type = tuple_literal (%int_0.loc12_22) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.loc12_22, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0.loc12_22) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_24.2: init %i32 = converted %int_0.loc12_22, %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %int_0.loc12_24: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0.loc12_22) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_24.2: init %i32 = converted %int_0.loc12_22, %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %int_0.loc12_24: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc12_24.3: ref %i32 = array_index %x.var, %int_0.loc12_24 -// CHECK:STDOUT: %.loc12_24.4: init %i32 = initialize_from %.loc12_24.2 to %.loc12_24.3 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc12_24.4: init %i32 = initialize_from %.loc12_24.2 to %.loc12_24.3 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc12_24.5: init %array_type = array_init (%.loc12_24.4) to %x.var [template = constants.%array] // CHECK:STDOUT: %.loc12_25: init %array_type = converted %.loc12_24.1, %.loc12_24.5 [template = constants.%array] // CHECK:STDOUT: assign %x.var, %.loc12_25 diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index b27c7c2d47ad..99df0647912e 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -38,20 +38,20 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] @@ -67,8 +67,8 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -147,25 +147,25 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_1, %.loc11_25.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_1, %.loc11_25.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc11_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_2, %.loc12_25.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_2, %.loc12_25.1 [template = constants.%int_2.166] // CHECK:STDOUT: return %.loc12_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -221,12 +221,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc23: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc23: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: assign %v.var, %.loc23 // CHECK:STDOUT: %w.var: ref %ptr = var w // CHECK:STDOUT: %w: ref %ptr = bind_name w, %w.var @@ -244,12 +244,12 @@ fn PartiallyConstant(t: type) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc29: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc29: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: assign %v.var, %.loc29 // CHECK:STDOUT: %w.var: ref %ptr = var w // CHECK:STDOUT: %w: ref %ptr = bind_name w, %w.var diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index 8a03e8f91d06..a430741d5948 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -22,20 +22,20 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] @@ -44,9 +44,9 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Bool = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -100,25 +100,25 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_1, %.loc11_25.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_1, %.loc11_25.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc11_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_2, %.loc12_25.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_2, %.loc12_25.1 [template = constants.%int_2.166] // CHECK:STDOUT: return %.loc12_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon index 8f6703416cbe..2de3a33260bf 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -60,14 +60,14 @@ class C { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Float = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Float = %import_ref.20bd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -96,7 +96,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc49: %C.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon index bac1e1d7711b..b643247de032 100644 --- a/toolchain/check/testdata/if_expr/fail_partial_constant.carbon +++ b/toolchain/check/testdata/if_expr/fail_partial_constant.carbon @@ -51,8 +51,8 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -97,7 +97,7 @@ fn ChosenBranchIsNonConstant(t: type) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index 930c504e65c5..2721674b18d4 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -21,33 +21,33 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -107,25 +107,25 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: if %b.ref br !if.expr.then.loc12_20 else br !if.expr.else.loc12_20 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc12_20: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc12_25: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_25: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc12_25: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_25: = bound_method %int_1, %impl.elem0.loc12_25 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12_25: = specific_function %Convert.bound.loc12_25, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12_25: init %i32 = call %Convert.specific_fn.loc12_25(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked.loc12_25 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_1, %.loc12_25.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc12_25: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_25: = bound_method %int_1, %impl.elem0.loc12_25 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc12_25: = specific_function %Convert.bound.loc12_25, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc12_25: init %i32 = call %Convert.specific_fn.loc12_25(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_25.1: %i32 = value_of_initializer %int.convert_checked.loc12_25 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_25.2: %i32 = converted %int_1, %.loc12_25.1 [template = constants.%int_1.c60] // CHECK:STDOUT: br !if.expr.result.loc12_20(%.loc12_25.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc12_20: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc12_32: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_32: = bound_method %int_2, %impl.elem0.loc12_32 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc12_32: = specific_function %Convert.bound.loc12_32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc12_32: init %i32 = call %Convert.specific_fn.loc12_32(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_32.1: %i32 = value_of_initializer %int.convert_checked.loc12_32 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_32.2: %i32 = converted %int_2, %.loc12_32.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc12_32: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_32: = bound_method %int_2, %impl.elem0.loc12_32 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc12_32: = specific_function %Convert.bound.loc12_32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc12_32: init %i32 = call %Convert.specific_fn.loc12_32(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_32.1: %i32 = value_of_initializer %int.convert_checked.loc12_32 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_32.2: %i32 = converted %int_2, %.loc12_32.1 [template = constants.%int_2.166] // CHECK:STDOUT: br !if.expr.result.loc12_20(%.loc12_32.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result.loc12_20: @@ -137,25 +137,25 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: if %c.ref br !if.expr.then.loc12_44 else br !if.expr.else.loc12_44 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc12_44: -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %int_32.loc12_49: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc12_49: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_49: = bound_method %int_3, %impl.elem0.loc12_49 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc12_49: = specific_function %Convert.bound.loc12_49, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc12_49: init %i32 = call %Convert.specific_fn.loc12_49(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_49.1: %i32 = value_of_initializer %int.convert_checked.loc12_49 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_49.2: %i32 = converted %int_3, %.loc12_49.1 [template = constants.%int_3.2] +// CHECK:STDOUT: %impl.elem0.loc12_49: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_49: = bound_method %int_3, %impl.elem0.loc12_49 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc12_49: = specific_function %Convert.bound.loc12_49, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc12_49: init %i32 = call %Convert.specific_fn.loc12_49(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_49.1: %i32 = value_of_initializer %int.convert_checked.loc12_49 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_49.2: %i32 = converted %int_3, %.loc12_49.1 [template = constants.%int_3.25b] // CHECK:STDOUT: br !if.expr.result.loc12_44(%.loc12_49.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc12_44: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc12_56: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_56: = bound_method %int_4, %impl.elem0.loc12_56 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc12_56: = specific_function %Convert.bound.loc12_56, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc12_56: init %i32 = call %Convert.specific_fn.loc12_56(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc12_56.1: %i32 = value_of_initializer %int.convert_checked.loc12_56 [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc12_56.2: %i32 = converted %int_4, %.loc12_56.1 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc12_56: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_56: = bound_method %int_4, %impl.elem0.loc12_56 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc12_56: = specific_function %Convert.bound.loc12_56, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc12_56: init %i32 = call %Convert.specific_fn.loc12_56(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc12_56.1: %i32 = value_of_initializer %int.convert_checked.loc12_56 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc12_56.2: %i32 = converted %int_4, %.loc12_56.1 [template = constants.%int_4.2ec] // CHECK:STDOUT: br !if.expr.result.loc12_44(%.loc12_56.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result.loc12_44: diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index a6791fd763fb..59ea4d29bd87 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -21,34 +21,34 @@ fn F(cond: bool) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -62,18 +62,18 @@ fn F(cond: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %s.patt: %struct_type.a.b.1 = binding_pattern s -// CHECK:STDOUT: %s.param_patt: %struct_type.a.b.1 = value_param_pattern %s.patt, runtime_param0 +// CHECK:STDOUT: %s.patt: %struct_type.a.b.3de = binding_pattern s +// CHECK:STDOUT: %s.param_patt: %struct_type.a.b.3de = value_param_pattern %s.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %s.param: %struct_type.a.b.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %struct_type.a.b [template = constants.%struct_type.a.b.1] { +// CHECK:STDOUT: %s.param: %struct_type.a.b.3de = value_param runtime_param0 +// CHECK:STDOUT: %.loc11: type = splice_block %struct_type.a.b [template = constants.%struct_type.a.b.3de] { // CHECK:STDOUT: %int_32.loc11_14: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_14: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_23: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_23: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.1] +// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.3de] // CHECK:STDOUT: } -// CHECK:STDOUT: %s: %struct_type.a.b.1 = bind_name s, %s.param +// CHECK:STDOUT: %s: %struct_type.a.b.3de = bind_name s, %s.param // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %cond.patt: bool = binding_pattern cond @@ -89,58 +89,58 @@ fn F(cond: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%s.param_patt: %struct_type.a.b.1); +// CHECK:STDOUT: fn @G(%s.param_patt: %struct_type.a.b.3de); // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%cond.param_patt: bool) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.var: ref %struct_type.a.b.1 = var a -// CHECK:STDOUT: %a: ref %struct_type.a.b.1 = bind_name a, %a.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc14_46.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc14_46.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_46.1: = bound_method %int_1, %impl.elem0.loc14_46.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_46.1: = specific_function %Convert.bound.loc14_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_46.1: init %i32 = call %Convert.specific_fn.loc14_46.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_46.2: init %i32 = converted %int_1, %int.convert_checked.loc14_46.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %a.var: ref %struct_type.a.b.3de = var a +// CHECK:STDOUT: %a: ref %struct_type.a.b.3de = bind_name a, %a.var +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc14_46.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc14_46.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_46.1: = bound_method %int_1, %impl.elem0.loc14_46.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_46.1: = specific_function %Convert.bound.loc14_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_46.1: init %i32 = call %Convert.specific_fn.loc14_46.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_46.2: init %i32 = converted %int_1, %int.convert_checked.loc14_46.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc14_46.3: ref %i32 = struct_access %a.var, element0 -// CHECK:STDOUT: %.loc14_46.4: init %i32 = initialize_from %.loc14_46.2 to %.loc14_46.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_46.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_46.2: = bound_method %int_2, %impl.elem0.loc14_46.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_46.2: = specific_function %Convert.bound.loc14_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_46.2: init %i32 = call %Convert.specific_fn.loc14_46.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_46.5: init %i32 = converted %int_2, %int.convert_checked.loc14_46.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc14_46.4: init %i32 = initialize_from %.loc14_46.2 to %.loc14_46.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_46.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_46.2: = bound_method %int_2, %impl.elem0.loc14_46.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_46.2: = specific_function %Convert.bound.loc14_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_46.2: init %i32 = call %Convert.specific_fn.loc14_46.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_46.5: init %i32 = converted %int_2, %int.convert_checked.loc14_46.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc14_46.6: ref %i32 = struct_access %a.var, element1 -// CHECK:STDOUT: %.loc14_46.7: init %i32 = initialize_from %.loc14_46.5 to %.loc14_46.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_46.8: init %struct_type.a.b.1 = struct_init (%.loc14_46.4, %.loc14_46.7) to %a.var [template = constants.%struct] -// CHECK:STDOUT: %.loc14_47: init %struct_type.a.b.1 = converted %.loc14_46.1, %.loc14_46.8 [template = constants.%struct] +// CHECK:STDOUT: %.loc14_46.7: init %i32 = initialize_from %.loc14_46.5 to %.loc14_46.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_46.8: init %struct_type.a.b.3de = struct_init (%.loc14_46.4, %.loc14_46.7) to %a.var [template = constants.%struct] +// CHECK:STDOUT: %.loc14_47: init %struct_type.a.b.3de = converted %.loc14_46.1, %.loc14_46.8 [template = constants.%struct] // CHECK:STDOUT: assign %a.var, %.loc14_47 // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G] // CHECK:STDOUT: %cond.ref: bool = name_ref cond, %cond // CHECK:STDOUT: if %cond.ref br !if.expr.then else br !if.expr.else // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then: -// CHECK:STDOUT: %a.ref.loc15_18: ref %struct_type.a.b.1 = name_ref a, %a +// CHECK:STDOUT: %a.ref.loc15_18: ref %struct_type.a.b.3de = name_ref a, %a // CHECK:STDOUT: %.loc15_18.1: ref %i32 = struct_access %a.ref.loc15_18, element0 // CHECK:STDOUT: %.loc15_18.2: %i32 = bind_value %.loc15_18.1 // CHECK:STDOUT: %.loc15_18.3: ref %i32 = struct_access %a.ref.loc15_18, element1 // CHECK:STDOUT: %.loc15_18.4: %i32 = bind_value %.loc15_18.3 -// CHECK:STDOUT: %struct.loc15_18: %struct_type.a.b.1 = struct_value (%.loc15_18.2, %.loc15_18.4) -// CHECK:STDOUT: %.loc15_18.5: %struct_type.a.b.1 = converted %a.ref.loc15_18, %struct.loc15_18 +// CHECK:STDOUT: %struct.loc15_18: %struct_type.a.b.3de = struct_value (%.loc15_18.2, %.loc15_18.4) +// CHECK:STDOUT: %.loc15_18.5: %struct_type.a.b.3de = converted %a.ref.loc15_18, %struct.loc15_18 // CHECK:STDOUT: br !if.expr.result(%.loc15_18.5) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: -// CHECK:STDOUT: %a.ref.loc15_25: ref %struct_type.a.b.1 = name_ref a, %a +// CHECK:STDOUT: %a.ref.loc15_25: ref %struct_type.a.b.3de = name_ref a, %a // CHECK:STDOUT: %.loc15_25.1: ref %i32 = struct_access %a.ref.loc15_25, element0 // CHECK:STDOUT: %.loc15_25.2: %i32 = bind_value %.loc15_25.1 // CHECK:STDOUT: %.loc15_25.3: ref %i32 = struct_access %a.ref.loc15_25, element1 // CHECK:STDOUT: %.loc15_25.4: %i32 = bind_value %.loc15_25.3 -// CHECK:STDOUT: %struct.loc15_25: %struct_type.a.b.1 = struct_value (%.loc15_25.2, %.loc15_25.4) -// CHECK:STDOUT: %.loc15_20: %struct_type.a.b.1 = converted %a.ref.loc15_25, %struct.loc15_25 +// CHECK:STDOUT: %struct.loc15_25: %struct_type.a.b.3de = struct_value (%.loc15_25.2, %.loc15_25.4) +// CHECK:STDOUT: %.loc15_20: %struct_type.a.b.3de = converted %a.ref.loc15_25, %struct.loc15_25 // CHECK:STDOUT: br !if.expr.result(%.loc15_20) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result: -// CHECK:STDOUT: %.loc15_5: %struct_type.a.b.1 = block_arg !if.expr.result +// CHECK:STDOUT: %.loc15_5: %struct_type.a.b.3de = block_arg !if.expr.result // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref(%.loc15_5) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/compound.carbon b/toolchain/check/testdata/impl/compound.carbon index b2b224106bb6..60b0b6b531eb 100644 --- a/toolchain/check/testdata/impl/compound.carbon +++ b/toolchain/check/testdata/impl/compound.carbon @@ -38,25 +38,25 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template] -// CHECK:STDOUT: %Self.1: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %Self.7d2: %Simple.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.c46: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type = assoc_entity element0, @Simple.%F.decl [template] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %Simple.type, %G.type.1 [template] +// CHECK:STDOUT: %F.41f: %F.type.c46 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.c46 [template] +// CHECK:STDOUT: %assoc0.579: %F.assoc_type = assoc_entity element0, @Simple.%F.decl [template] +// CHECK:STDOUT: %Self.as_type.39e: type = facet_access_type %Self.7d2 [symbolic] +// CHECK:STDOUT: %G.type.1d2: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.d3c: %G.type.1d2 = struct_value () [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %Simple.type, %G.type.1d2 [template] // CHECK:STDOUT: %assoc1: %G.assoc_type = assoc_entity element1, @Simple.%G.decl [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] -// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.1 [template] +// CHECK:STDOUT: %impl_witness.99f: = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template] +// CHECK:STDOUT: %F.type.baa: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.2a1: %F.type.baa = struct_value () [template] +// CHECK:STDOUT: %G.type.1b3: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.8c8: %G.type.1b3 = struct_value () [template] +// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.99f [template] // CHECK:STDOUT: %NonInstanceCall.type: type = fn_type @NonInstanceCall [template] // CHECK:STDOUT: %NonInstanceCall: %NonInstanceCall.type = struct_value () [template] // CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [template] @@ -70,7 +70,7 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,7 +92,7 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template = constants.%impl_witness.99f] // CHECK:STDOUT: %NonInstanceCall.decl: %NonInstanceCall.type = fn_decl @NonInstanceCall [template = constants.%NonInstanceCall] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 @@ -142,20 +142,20 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { -// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.1] -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] { -// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.1) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.7d2] +// CHECK:STDOUT: %F.decl: %F.type.c46 = fn_decl @F.1 [template = constants.%F.41f] {} {} +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.579] +// CHECK:STDOUT: %G.decl: %G.type.1d2 = fn_decl @G.1 [template = constants.%G.d3c] { +// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.39e) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.39e) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.2 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc13_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc13_14.2: type = converted %Self.ref, %Self.as_type.loc13_14.2 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %self.param: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.39e) = value_param runtime_param0 +// CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.2 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.39e)] { +// CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self.7d2)] +// CHECK:STDOUT: %Self.as_type.loc13_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.39e)] +// CHECK:STDOUT: %.loc13_14.2: type = converted %Self.ref, %Self.as_type.loc13_14.2 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.39e)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.39e) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc1: %G.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1] // CHECK:STDOUT: @@ -167,8 +167,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %Simple.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] { +// CHECK:STDOUT: %F.decl: %F.type.baa = fn_decl @F.2 [template = constants.%F.2a1] {} {} +// CHECK:STDOUT: %G.decl: %G.type.1b3 = fn_decl @G.2 [template = constants.%G.8c8] { // CHECK:STDOUT: %self.patt: %i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -192,10 +192,10 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G.1(@Simple.%Self: %Simple.type) { -// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc13_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.7d2)] +// CHECK:STDOUT: %Self.as_type.loc13_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type.39e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.1)](); +// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.39e)](); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2(); @@ -206,8 +206,8 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.1] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.2] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.579] +// CHECK:STDOUT: %impl.elem0: %F.type.c46 = impl_witness_access constants.%impl_witness.99f, element0 [template = constants.%F.2a1] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -217,7 +217,7 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] // CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, @Simple.%assoc1 [template = constants.%assoc1] -// CHECK:STDOUT: %impl.elem1: %G.type.1 = impl_witness_access constants.%impl_witness.1, element1 [template = constants.%G.2] +// CHECK:STDOUT: %impl.elem1: %G.type.1d2 = impl_witness_access constants.%impl_witness.99f, element1 [template = constants.%G.8c8] // CHECK:STDOUT: %G.bound: = bound_method %n.ref, %impl.elem1 // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound(%n.ref) // CHECK:STDOUT: return @@ -227,9 +227,9 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr = name_ref p, %p // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.579] // CHECK:STDOUT: %.loc30: ref %i32 = deref %p.ref -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0: %F.type.c46 = impl_witness_access constants.%impl_witness.99f, element0 [template = constants.%F.2a1] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -240,18 +240,18 @@ fn InstanceCallIndirect(p: i32*) { // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] // CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, @Simple.%assoc1 [template = constants.%assoc1] // CHECK:STDOUT: %.loc34_4.1: ref %i32 = deref %p.ref -// CHECK:STDOUT: %impl.elem1: %G.type.1 = impl_witness_access constants.%impl_witness.1, element1 [template = constants.%G.2] +// CHECK:STDOUT: %impl.elem1: %G.type.1d2 = impl_witness_access constants.%impl_witness.99f, element1 [template = constants.%G.8c8] // CHECK:STDOUT: %G.bound: = bound_method %.loc34_4.1, %impl.elem1 // CHECK:STDOUT: %.loc34_4.2: %i32 = bind_value %.loc34_4.1 // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.bound(%.loc34_4.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.7d2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.1) { -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type.loc13_14.1 => constants.%Self.as_type.1 +// CHECK:STDOUT: specific @G.1(constants.%Self.7d2) { +// CHECK:STDOUT: %Self => constants.%Self.7d2 +// CHECK:STDOUT: %Self.as_type.loc13_14.1 => constants.%Self.as_type.39e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%Simple.facet) {} diff --git a/toolchain/check/testdata/impl/declaration.carbon b/toolchain/check/testdata/impl/declaration.carbon index bf1d666d4910..94fbd1e853af 100644 --- a/toolchain/check/testdata/impl/declaration.carbon +++ b/toolchain/check/testdata/impl/declaration.carbon @@ -26,7 +26,7 @@ impl i32 as I {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/empty.carbon b/toolchain/check/testdata/impl/empty.carbon index a97b9f60702e..d2be01499a45 100644 --- a/toolchain/check/testdata/impl/empty.carbon +++ b/toolchain/check/testdata/impl/empty.carbon @@ -26,7 +26,7 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index e1bdcb6d3c6d..894a6aa60477 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -28,15 +28,15 @@ fn G(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.cf2: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.f1c: %F.type.cf2 = struct_value () [template] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] @@ -73,7 +73,7 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -83,7 +83,7 @@ fn G(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.cf2 = fn_decl @F.2 [template = constants.%F.f1c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -118,11 +118,11 @@ fn G(c: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %F.ref.loc22: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc22: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0.loc22: %F.type.16d = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.f1c] // CHECK:STDOUT: %F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22() // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %F.ref.loc23: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc23: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0.loc23: %F.type.16d = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.f1c] // CHECK:STDOUT: %F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index 529f622d9f91..e3a65596722f 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -52,50 +52,50 @@ class X(U:! type) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %HasF.type.1: type = generic_interface_type @HasF [template] -// CHECK:STDOUT: %HasF.generic: %HasF.type.1 = struct_value () [template] -// CHECK:STDOUT: %HasF.type.2: type = facet_type <@HasF, @HasF(%T)> [symbolic] -// CHECK:STDOUT: %Self.1: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %HasF.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template] +// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template] +// CHECK:STDOUT: %HasF.type.a19: type = facet_type <@HasF, @HasF(%T)> [symbolic] +// CHECK:STDOUT: %Self.340: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.38a: type = fn_type @F.1, @HasF(%T) [symbolic] +// CHECK:STDOUT: %F.81b: %F.type.38a = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.cd1: type = assoc_entity_type %HasF.type.a19, %F.type.38a [symbolic] +// CHECK:STDOUT: %assoc0.8ee: %F.assoc_type.cd1 = assoc_entity element0, @HasF.%F.decl [symbolic] // CHECK:STDOUT: %Param: type = class_type @Param [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Param.elem: type = unbound_element_type %Param, %i32 [template] -// CHECK:STDOUT: %struct_type.x.1: type = struct_type {.x: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.x.1 [template] +// CHECK:STDOUT: %struct_type.x.b74: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %complete_type.f6d: = complete_type_witness %struct_type.x.b74 [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %HasF.type.3: type = facet_type <@HasF, @HasF(%Param)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @HasF(%Param) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %HasF.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @HasF.%F.decl [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %HasF.facet: %HasF.type.2 = facet_value %C, %impl_witness.1 [symbolic] +// CHECK:STDOUT: %HasF.type.fd3: type = facet_type <@HasF, @HasF(%Param)> [template] +// CHECK:STDOUT: %F.type.4fd: type = fn_type @F.1, @HasF(%Param) [template] +// CHECK:STDOUT: %F.4ae: %F.type.4fd = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.343: type = assoc_entity_type %HasF.type.fd3, %F.type.4fd [template] +// CHECK:STDOUT: %assoc0.d46: %F.assoc_type.343 = assoc_entity element0, @HasF.%F.decl [template] +// CHECK:STDOUT: %impl_witness.f5c: = impl_witness (@impl.1.%F.decl) [template] +// CHECK:STDOUT: %F.type.ab8: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.cf6: %F.type.ab8 = struct_value () [template] +// CHECK:STDOUT: %HasF.facet: %HasF.type.a19 = facet_value %C, %impl_witness.f5c [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.x.2: type = struct_type {.x: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.20: = impl_witness (imports.%import_ref.14), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.1, %Convert.10 [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Param.val: %Param = struct_value (%int_2.2) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Param.val: %Param = struct_value (%int_2.166) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -110,7 +110,7 @@ class X(U:! type) { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %HasF.decl: %HasF.type.1 = interface_decl @HasF [template = constants.%HasF.generic] { +// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -134,16 +134,16 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.2)] -// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_14.2: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.a19)] +// CHECK:STDOUT: %Self.2: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.340)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.38a)] +// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.38a) = struct_value () [symbolic = %F (constants.%F.81b)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.a19), @HasF.%F.type (%F.type.38a) [symbolic = %F.assoc_type (constants.%F.assoc_type.cd1)] +// CHECK:STDOUT: %assoc0.loc5_14.2: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.8ee)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] { +// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.a19) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.340)] +// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.38a) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.81b)] { // CHECK:STDOUT: %return.patt: @F.1.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.1.%T (%T) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -151,7 +151,7 @@ class X(U:! type) { // CHECK:STDOUT: %return.param: ref @F.1.%T (%T) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @F.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_14.1: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc5_14.1: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_14.2 (constants.%assoc0.8ee)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -161,7 +161,7 @@ class X(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %Self.ref as %HasF.type { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.2 [template = constants.%F.3] { +// CHECK:STDOUT: %F.decl: %F.type.ab8 = fn_decl @F.2 [template = constants.%F.cf6] { // CHECK:STDOUT: %return.patt: %Param = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %Param = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -177,7 +177,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class @Param { // CHECK:STDOUT: %.loc9: %Param.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.b74 [template = constants.%complete_type.f6d] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param @@ -188,12 +188,12 @@ class X(U:! type) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] +// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] // CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [template = constants.%Param] -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [template = constants.%HasF.type.3] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [template = constants.%HasF.type.fd3] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.1] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.f5c] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -201,7 +201,7 @@ class X(U:! type) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.a19)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @F.1.%T (%T); @@ -209,15 +209,15 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2() -> %return.param_patt: %Param { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc15_21.1: %struct_type.x.2 = struct_literal (%int_2) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.20, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc15_21.1: %struct_type.x.c96 = struct_literal (%int_2) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.166] // CHECK:STDOUT: %.loc15_21.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.2 to %.loc15_21.3 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.2 to %.loc15_21.3 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc15_21.5: init %Param = class_init (%.loc15_21.4), %return [template = constants.%Param.val] // CHECK:STDOUT: %.loc15_22: init %Param = converted %.loc15_21.1, %.loc15_21.5 [template = constants.%Param.val] // CHECK:STDOUT: return %.loc15_22 to %return @@ -226,9 +226,9 @@ class X(U:! type) { // CHECK:STDOUT: fn @G(%c.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %.loc21_17: %F.assoc_type.2 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref.loc21: %F.assoc_type.2 = name_ref F, %.loc21_17 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0.loc21: %F.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.3] +// CHECK:STDOUT: %.loc21_17: %F.assoc_type.343 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.d46] +// CHECK:STDOUT: %F.ref.loc21: %F.assoc_type.343 = name_ref F, %.loc21_17 [template = constants.%assoc0.d46] +// CHECK:STDOUT: %impl.elem0.loc21: %F.type.4fd = impl_witness_access constants.%impl_witness.f5c, element0 [template = constants.%F.cf6] // CHECK:STDOUT: %.loc21_20.1: ref %Param = temporary_storage // CHECK:STDOUT: %F.call.loc21: init %Param = call %impl.elem0.loc21() to %.loc21_20.1 // CHECK:STDOUT: %.loc21_20.2: ref %Param = temporary %.loc21_20.1, %F.call.loc21 @@ -239,9 +239,9 @@ class X(U:! type) { // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %.loc22_17: %F.assoc_type.2 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref.loc22: %F.assoc_type.2 = name_ref F, %.loc22_17 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0.loc22: %F.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.3] +// CHECK:STDOUT: %.loc22_17: %F.assoc_type.343 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.d46] +// CHECK:STDOUT: %F.ref.loc22: %F.assoc_type.343 = name_ref F, %.loc22_17 [template = constants.%assoc0.d46] +// CHECK:STDOUT: %impl.elem0.loc22: %F.type.4fd = impl_witness_access constants.%impl_witness.f5c, element0 [template = constants.%F.cf6] // CHECK:STDOUT: %.loc22_20.1: ref %Param = temporary_storage // CHECK:STDOUT: %F.call.loc22: init %Param = call %impl.elem0.loc22() to %.loc22_20.1 // CHECK:STDOUT: %.loc22_20.2: ref %Param = temporary %.loc22_20.1, %F.call.loc22 @@ -257,7 +257,7 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.1) { +// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.340) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: @@ -268,12 +268,12 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%Param // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3 -// CHECK:STDOUT: %Self.2 => constants.%Self.1 -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_14.2 => constants.%assoc0.2 +// CHECK:STDOUT: %HasF.type => constants.%HasF.type.fd3 +// CHECK:STDOUT: %Self.2 => constants.%Self.340 +// CHECK:STDOUT: %F.type => constants.%F.type.4fd +// CHECK:STDOUT: %F => constants.%F.4ae +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.343 +// CHECK:STDOUT: %assoc0.loc5_14.2 => constants.%assoc0.d46 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%Param, constants.%HasF.facet) { @@ -285,34 +285,34 @@ class X(U:! type) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.bc4: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %F.type.c41: type = fn_type @F.1, @I(%T) [symbolic] +// CHECK:STDOUT: %F.ada: %F.type.c41 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.b9c: type = assoc_entity_type %I.type.bc4, %F.type.c41 [symbolic] +// CHECK:STDOUT: %assoc0.55f: %F.assoc_type.b9c = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %X.type: type = generic_class_type @X [template] // CHECK:STDOUT: %X.generic: %X.type = struct_value () [template] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%U)> [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %I.type.3 [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%U) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [symbolic] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %I.type.2fa: type = facet_type <@I, @I(%U)> [symbolic] +// CHECK:STDOUT: %require_complete.296: = require_complete_type %I.type.2fa [symbolic] +// CHECK:STDOUT: %F.type.490: type = fn_type @F.1, @I(%U) [symbolic] +// CHECK:STDOUT: %F.009: %F.type.490 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.c2e: type = assoc_entity_type %I.type.2fa, %F.type.490 [symbolic] +// CHECK:STDOUT: %assoc0.525: %F.assoc_type.c2e = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%U) [symbolic] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%U) [symbolic] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [symbolic] -// CHECK:STDOUT: %I.facet: %I.type.2 = facet_value %X, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.8e1: type = fn_type @F.2, @impl(%U) [symbolic] +// CHECK:STDOUT: %F.400: %F.type.8e1 = struct_value () [symbolic] +// CHECK:STDOUT: %I.facet: %I.type.bc4 = facet_value %X, %impl_witness [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %X [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %require_complete.0b5: = require_complete_type %X [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -329,7 +329,7 @@ class X(U:! type) { // CHECK:STDOUT: .X = %X.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -350,16 +350,16 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T.loc4_13.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_25.2: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self.2: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T.loc4_13.2) [symbolic = %F.type (constants.%F.type.c41)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.c41) = struct_value () [symbolic = %F (constants.%F.ada)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.bc4), @I.%F.type (%F.type.c41) [symbolic = %F.assoc_type (constants.%F.assoc_type.b9c)] +// CHECK:STDOUT: %assoc0.loc5_25.2: @I.%F.assoc_type (%F.assoc_type.b9c) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.55f)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @I.%F (constants.%F.1)] { +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.bc4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.c41) = fn_decl @F.1 [symbolic = @I.%F (constants.%F.ada)] { // CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %t.patt: @F.1.%T (%T) = binding_pattern t @@ -367,8 +367,8 @@ class X(U:! type) { // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc5_14.1: type = splice_block %.loc5_14.3 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc5_14.2: @F.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @F.1.%I.type (%I.type.2) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc5_14.2: @F.1.%I.type (%I.type.bc4) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @F.1.%I.type (%I.type.bc4) = name_ref Self, %.loc5_14.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc5_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc5_14.3: type = converted %Self.ref, %Self.as_type.loc5_14.2 [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -377,7 +377,7 @@ class X(U:! type) { // CHECK:STDOUT: %T.ref: type = name_ref T, @I.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %t: @F.1.%T (%T) = bind_name t, %t.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_25.1: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc5_25.1: @I.%F.assoc_type (%F.assoc_type.b9c) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_25.2 (constants.%assoc0.55f)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -389,16 +389,16 @@ class X(U:! type) { // CHECK:STDOUT: generic impl @impl(@X.%U.loc8_9.1: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %I.type.loc9_21.2: type = facet_type <@I, @I(%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%I.type.loc9_21.2 (%I.type.3) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %I.type.loc9_21.2: type = facet_type <@I, @I(%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.2fa)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%I.type.loc9_21.2 (%I.type.2fa) [symbolic = %require_complete (constants.%require_complete.296)] // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%U) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%U) [symbolic = %F.type (constants.%F.type.3)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.3) = struct_value () [symbolic = %F (constants.%F.3)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%U) [symbolic = %F.type (constants.%F.type.8e1)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.8e1) = struct_value () [symbolic = %F (constants.%F.400)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %I.type.loc9_21.1 { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.3) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.3)] { +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.8e1) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.400)] { // CHECK:STDOUT: %self.patt: @F.2.%X (%X) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.2.%X (%X) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %t.patt: @F.2.%U (%U) = binding_pattern t @@ -426,17 +426,17 @@ class X(U:! type) { // CHECK:STDOUT: %U.patt.loc8_9.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc8_9.2 (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc8_9.2)> [symbolic = %I.type (constants.%I.type.3)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc8_9.2)> [symbolic = %I.type (constants.%I.type.2fa)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc8_9.1 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.3)] +// CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.2fa)] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%U) [symbolic = @impl.%impl_witness (constants.%impl_witness)] -// CHECK:STDOUT: %.loc9: type = specific_constant @impl.%I.type.loc9_21.1, @impl(constants.%U) [symbolic = %I.type (constants.%I.type.3)] +// CHECK:STDOUT: %.loc9: type = specific_constant @impl.%I.type.loc9_21.1, @impl(constants.%U) [symbolic = %I.type (constants.%I.type.2fa)] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -446,10 +446,10 @@ class X(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@I.%T.loc4_13.1: type, @I.%Self.1: @I.%I.type (%I.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@I.%T.loc4_13.1: type, @I.%Self.1: @I.%I.type (%I.type.bc4)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc5_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc5_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type)](%t.param_patt: @F.1.%T (%T)); @@ -458,12 +458,12 @@ class X(U:! type) { // CHECK:STDOUT: generic fn @F.2(@X.%U.loc8_9.1: type) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U)> [symbolic = %I.type (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete.loc10_25: = require_complete_type @F.2.%I.type (%I.type.3) [symbolic = %require_complete.loc10_25 (constants.%require_complete.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U)> [symbolic = %I.type (constants.%I.type.2fa)] +// CHECK:STDOUT: %require_complete.loc10_25: = require_complete_type @F.2.%I.type (%I.type.2fa) [symbolic = %require_complete.loc10_25 (constants.%require_complete.296)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc10_14: = require_complete_type @F.2.%X (%X) [symbolic = %require_complete.loc10_14 (constants.%require_complete.2)] -// CHECK:STDOUT: %require_complete.loc10_23: = require_complete_type @F.2.%U (%U) [symbolic = %require_complete.loc10_23 (constants.%require_complete.3)] +// CHECK:STDOUT: %require_complete.loc10_14: = require_complete_type @F.2.%X (%X) [symbolic = %require_complete.loc10_14 (constants.%require_complete.0b5)] +// CHECK:STDOUT: %require_complete.loc10_23: = require_complete_type @F.2.%U (%U) [symbolic = %require_complete.loc10_23 (constants.%require_complete.427)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @F.2.%X (%X)](%t.param_patt: @F.2.%U (%U)) { // CHECK:STDOUT: !entry: @@ -478,7 +478,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%Self.as_type // CHECK:STDOUT: } @@ -492,7 +492,7 @@ class X(U:! type) { // CHECK:STDOUT: %U.patt.loc8_9.2 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.2fa // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%U) { @@ -500,24 +500,24 @@ class X(U:! type) { // CHECK:STDOUT: %T.patt.loc4_13.2 => constants.%U // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.2fa // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_25.2 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.490 +// CHECK:STDOUT: %F => constants.%F.009 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.c2e +// CHECK:STDOUT: %assoc0.loc5_25.2 => constants.%assoc0.525 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %X => constants.%X -// CHECK:STDOUT: %I.type.loc9_21.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %I.type.loc9_21.2 => constants.%I.type.2fa +// CHECK:STDOUT: %require_complete => constants.%require_complete.296 // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.8e1 +// CHECK:STDOUT: %F => constants.%F.400 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(@impl.%U) {} @@ -529,8 +529,8 @@ class X(U:! type) { // CHECK:STDOUT: specific @F.2(constants.%U) { // CHECK:STDOUT: %U => constants.%U // CHECK:STDOUT: %X => constants.%X -// CHECK:STDOUT: %I.type => constants.%I.type.3 -// CHECK:STDOUT: %require_complete.loc10_25 => constants.%require_complete.1 +// CHECK:STDOUT: %I.type => constants.%I.type.2fa +// CHECK:STDOUT: %require_complete.loc10_25 => constants.%require_complete.296 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @X(@F.2.%U) {} @@ -539,7 +539,7 @@ class X(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%U, constants.%I.facet) { // CHECK:STDOUT: %T => constants.%U -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.2fa // CHECK:STDOUT: %Self => constants.%I.facet // CHECK:STDOUT: %Self.as_type.loc5_14.1 => constants.%X // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_call_invalid.carbon b/toolchain/check/testdata/impl/fail_call_invalid.carbon index 8cc8c0824564..affcc90f7a7f 100644 --- a/toolchain/check/testdata/impl/fail_call_invalid.carbon +++ b/toolchain/check/testdata/impl/fail_call_invalid.carbon @@ -27,25 +27,25 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template] -// CHECK:STDOUT: %Self.1: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %Simple.type, %G.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %G.assoc_type = assoc_entity element0, @Simple.%G.decl [template] +// CHECK:STDOUT: %Self.7d2: %Simple.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type.39e: type = facet_access_type %Self.7d2 [symbolic] +// CHECK:STDOUT: %G.type.1d2: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.d3c: %G.type.1d2 = struct_value () [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %Simple.type, %G.type.1d2 [template] +// CHECK:STDOUT: %assoc0.c6f: %G.assoc_type = assoc_entity element0, @Simple.%G.decl [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness () [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] -// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.1 [template] +// CHECK:STDOUT: %impl_witness.85b: = impl_witness () [template] +// CHECK:STDOUT: %G.type.1b3: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.8c8: %G.type.1b3 = struct_value () [template] +// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.85b [template] // CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [template] // CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -64,7 +64,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85b] // CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [template = constants.%InstanceCall] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 @@ -79,20 +79,20 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { -// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] { -// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.7d2] +// CHECK:STDOUT: %G.decl: %G.type.1d2 = fn_decl @G.1 [template = constants.%G.d3c] { +// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.39e) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.39e) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %self.param: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.39e) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.39e)] { +// CHECK:STDOUT: %Self.ref: %Simple.type = name_ref Self, @Simple.%Self [symbolic = %Self (constants.%Self.7d2)] +// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.39e)] +// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.39e)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = bind_name self, %self.param +// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.39e) = bind_name self, %self.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.c6f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -101,7 +101,7 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %Simple.ref { -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] { +// CHECK:STDOUT: %G.decl: %G.type.1b3 = fn_decl @G.2 [template = constants.%G.8c8] { // CHECK:STDOUT: %self.patt: = binding_pattern self // CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -116,10 +116,10 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G.1(@Simple.%Self: %Simple.type) { -// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.7d2)] +// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.39e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.1)](); +// CHECK:STDOUT: fn[%self.param_patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.39e)](); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G.2[%self.param_patt: ](); @@ -128,15 +128,15 @@ fn InstanceCall(n: i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type] -// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, @Simple.%assoc0 [template = constants.%assoc0.1] -// CHECK:STDOUT: %impl.elem0: %G.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = ] +// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, @Simple.%assoc0 [template = constants.%assoc0.c6f] +// CHECK:STDOUT: %impl.elem0: %G.type.1d2 = impl_witness_access constants.%impl_witness.85b, element0 [template = ] // CHECK:STDOUT: %G.bound: = bound_method %n.ref, %impl.elem0 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.1) { -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.1 +// CHECK:STDOUT: specific @G.1(constants.%Self.7d2) { +// CHECK:STDOUT: %Self => constants.%Self.7d2 +// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.39e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @G.1(constants.%Simple.facet) { diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index c83c57395d02..f4573bee4615 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -26,23 +26,23 @@ class C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %GenericInterface.type.1: type = generic_interface_type @GenericInterface [template] -// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.1 = struct_value () [template] -// CHECK:STDOUT: %GenericInterface.type.2: type = facet_type <@GenericInterface, @GenericInterface(%T)> [symbolic] -// CHECK:STDOUT: %Self: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @GenericInterface(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %GenericInterface.type.2, %F.type.1 [symbolic] +// CHECK:STDOUT: %GenericInterface.type.c92: type = generic_interface_type @GenericInterface [template] +// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.c92 = struct_value () [template] +// CHECK:STDOUT: %GenericInterface.type.94a: type = facet_type <@GenericInterface, @GenericInterface(%T)> [symbolic] +// CHECK:STDOUT: %Self: %GenericInterface.type.94a = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.614: type = fn_type @F.1, @GenericInterface(%T) [symbolic] +// CHECK:STDOUT: %F.98b: %F.type.614 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %GenericInterface.type.94a, %F.type.614 [symbolic] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @GenericInterface.%F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %GenericInterface.type.2 [symbolic] +// CHECK:STDOUT: %require_complete.8db: = require_complete_type %GenericInterface.type.94a [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %GenericInterface.facet: %GenericInterface.type.2 = facet_value %C, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.3c5: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.700: %F.type.3c5 = struct_value () [symbolic] +// CHECK:STDOUT: %GenericInterface.facet: %GenericInterface.type.94a = facet_value %C, %impl_witness [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -59,7 +59,7 @@ class C { // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.1 = interface_decl @GenericInterface [template = constants.%GenericInterface.generic] { +// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.c92 = interface_decl @GenericInterface [template = constants.%GenericInterface.generic] { // CHECK:STDOUT: %T.patt.loc11_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_28.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_28.1, runtime_param [symbolic = %T.patt.loc11_28.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -74,16 +74,16 @@ class C { // CHECK:STDOUT: %T.patt.loc11_28.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_28.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%T.loc11_28.2)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.2)] -// CHECK:STDOUT: %Self.2: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @GenericInterface(%T.loc11_28.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @GenericInterface.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @GenericInterface.%GenericInterface.type (%GenericInterface.type.2), @GenericInterface.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type)] +// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%T.loc11_28.2)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.94a)] +// CHECK:STDOUT: %Self.2: %GenericInterface.type.94a = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @GenericInterface(%T.loc11_28.2) [symbolic = %F.type (constants.%F.type.614)] +// CHECK:STDOUT: %F: @GenericInterface.%F.type (%F.type.614) = struct_value () [symbolic = %F (constants.%F.98b)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @GenericInterface.%GenericInterface.type (%GenericInterface.type.94a), @GenericInterface.%F.type (%F.type.614) [symbolic = %F.assoc_type (constants.%F.assoc_type)] // CHECK:STDOUT: %assoc0.loc12_13.2: @GenericInterface.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc12_13.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @GenericInterface.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @GenericInterface.%F (constants.%F.1)] { +// CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.94a) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @GenericInterface.%F.type (%F.type.614) = fn_decl @F.1 [symbolic = @GenericInterface.%F (constants.%F.98b)] { // CHECK:STDOUT: %x.patt: @F.1.%T (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @F.1.%T (%T) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { @@ -103,16 +103,16 @@ class C { // CHECK:STDOUT: generic impl @impl(%T.loc19_23.1: type) { // CHECK:STDOUT: %T.loc19_23.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_23.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc19_23.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_23.2 (constants.%T.patt)] -// CHECK:STDOUT: %GenericInterface.type.loc19_54.2: type = facet_type <@GenericInterface, @GenericInterface(%T.loc19_23.2)> [symbolic = %GenericInterface.type.loc19_54.2 (constants.%GenericInterface.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%GenericInterface.type.loc19_54.2 (%GenericInterface.type.2) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %GenericInterface.type.loc19_54.2: type = facet_type <@GenericInterface, @GenericInterface(%T.loc19_23.2)> [symbolic = %GenericInterface.type.loc19_54.2 (constants.%GenericInterface.type.94a)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%GenericInterface.type.loc19_54.2 (%GenericInterface.type.94a) [symbolic = %require_complete (constants.%require_complete.8db)] // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc19_23.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc19_23.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc19_23.2) [symbolic = %F.type (constants.%F.type.3c5)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.3c5) = struct_value () [symbolic = %F (constants.%F.700)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %GenericInterface.type.loc19_54.1 { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] { +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.3c5) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.700)] { // CHECK:STDOUT: %x.patt: @F.2.%T (%T) = binding_pattern x // CHECK:STDOUT: %x.param_patt: @F.2.%T (%T) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { @@ -133,14 +133,14 @@ class C { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_23.1, runtime_param [symbolic = %T.patt.loc19_23.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.1 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface.generic] +// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc19_23.1 [symbolic = %T.loc19_23.2 (constants.%T)] -// CHECK:STDOUT: %GenericInterface.type.loc19_54.1: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc19_54.2 (constants.%GenericInterface.type.2)] +// CHECK:STDOUT: %GenericInterface.type.loc19_54.1: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc19_54.2 (constants.%GenericInterface.type.94a)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc19_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_23.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)] -// CHECK:STDOUT: %.loc19: type = specific_constant @impl.%GenericInterface.type.loc19_54.1, @impl(constants.%T) [symbolic = constants.%GenericInterface.type.2] +// CHECK:STDOUT: %.loc19: type = specific_constant @impl.%GenericInterface.type.loc19_54.1, @impl(constants.%T) [symbolic = constants.%GenericInterface.type.94a] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -149,7 +149,7 @@ class C { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@GenericInterface.%T.loc11_28.1: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@GenericInterface.%T.loc11_28.1: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.94a)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param_patt: @F.1.%T (%T)); @@ -159,7 +159,7 @@ class C { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @F.2.%T (%T) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @F.2.%T (%T) [symbolic = %require_complete (constants.%require_complete.db1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param_patt: @F.2.%T (%T)) { // CHECK:STDOUT: !entry: @@ -172,10 +172,10 @@ class C { // CHECK:STDOUT: %T.patt.loc11_28.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericInterface.type => constants.%GenericInterface.type.2 +// CHECK:STDOUT: %GenericInterface.type => constants.%GenericInterface.type.94a // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 +// CHECK:STDOUT: %F.type => constants.%F.type.614 +// CHECK:STDOUT: %F => constants.%F.98b // CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type // CHECK:STDOUT: %assoc0.loc12_13.2 => constants.%assoc0 // CHECK:STDOUT: } @@ -189,13 +189,13 @@ class C { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc19_23.2 => constants.%T // CHECK:STDOUT: %T.patt.loc19_23.2 => constants.%T -// CHECK:STDOUT: %GenericInterface.type.loc19_54.2 => constants.%GenericInterface.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %GenericInterface.type.loc19_54.2 => constants.%GenericInterface.type.94a +// CHECK:STDOUT: %require_complete => constants.%require_complete.8db // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.3c5 +// CHECK:STDOUT: %F => constants.%F.700 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericInterface(@impl.%T.loc19_23.2) {} diff --git a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon index 642c26326b35..5b94681fb975 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_scope.carbon @@ -27,7 +27,7 @@ extend impl i32 as I {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon index 5a756509b3b0..8a9a73108ae4 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -53,14 +53,14 @@ class E { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %impl_witness: = impl_witness () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %E: type = class_type @E [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -108,7 +108,7 @@ class E { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -122,7 +122,7 @@ class E { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -136,7 +136,7 @@ class E { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%E diff --git a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon index dc5251a7ae7d..98ee79591896 100644 --- a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon @@ -30,12 +30,12 @@ class C { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -58,7 +58,7 @@ class C { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon index 2209bfcc4e2a..19b22c12aafa 100644 --- a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon @@ -29,8 +29,8 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%Self) [symbolic] +// CHECK:STDOUT: %C.4bc: type = class_type @C [template] +// CHECK:STDOUT: %C.dbe: type = class_type @C, @C(%Self) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -53,7 +53,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.1] {} {} +// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.4bc] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -63,7 +63,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C.dbe)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %Self.ref as %I.ref; // CHECK:STDOUT: } @@ -73,14 +73,14 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: impl_decl @impl [template] {} { -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.2 [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.dbe [symbolic = %C (constants.%C.dbe)] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc23: type = specific_constant @impl.%I.ref, @impl(constants.%Self) [template = constants.%I.type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: .Self = constants.%C.dbe // CHECK:STDOUT: extend %.loc23 // CHECK:STDOUT: has_error // CHECK:STDOUT: complete_type_witness = %complete_type @@ -91,7 +91,7 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %C => constants.%C.2 +// CHECK:STDOUT: %C => constants.%C.dbe // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@impl.%Self) {} diff --git a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon index 7b72bd3dcfc3..80e86f83351e 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -217,121 +217,121 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @I.%F.decl [template] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.5f5: type = assoc_entity_type %I.type, %F.type.9df [template] +// CHECK:STDOUT: %assoc0.389: %F.assoc_type.5f5 = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %NoF: type = class_type @NoF [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness () [template] +// CHECK:STDOUT: %impl_witness.85bcb7.1: = impl_witness () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %FNotFunction: type = class_type @FNotFunction [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness () [template] -// CHECK:STDOUT: %F.2: type = class_type @F.16 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.2: = impl_witness () [template] +// CHECK:STDOUT: %F.25a: type = class_type @F.16 [template] // CHECK:STDOUT: %PossiblyF.type: type = fn_type @PossiblyF [template] // CHECK:STDOUT: %PossiblyF: %PossiblyF.type = struct_value () [template] // CHECK:STDOUT: %FAlias: type = class_type @FAlias [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness () [template] +// CHECK:STDOUT: %impl_witness.85bcb7.3: = impl_witness () [template] // CHECK:STDOUT: %FExtraParam: type = class_type @FExtraParam [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness () [template] +// CHECK:STDOUT: %impl_witness.85bcb7.4: = impl_witness () [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %I.facet.1: %I.type = facet_value %FExtraParam, %impl_witness.4 [template] +// CHECK:STDOUT: %F.type.b6e: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.081: %F.type.b6e = struct_value () [template] +// CHECK:STDOUT: %I.facet.3bf: %I.type = facet_value %FExtraParam, %impl_witness.85bcb7.4 [template] // CHECK:STDOUT: %FExtraImplicitParam: type = class_type @FExtraImplicitParam [template] -// CHECK:STDOUT: %impl_witness.5: = impl_witness () [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.4: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %I.facet.2: %I.type = facet_value %FExtraImplicitParam, %impl_witness.5 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.5: = impl_witness () [template] +// CHECK:STDOUT: %F.type.a8b: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.bf5: %F.type.a8b = struct_value () [template] +// CHECK:STDOUT: %I.facet.33b: %I.type = facet_value %FExtraImplicitParam, %impl_witness.85bcb7.5 [template] // CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [template] -// CHECK:STDOUT: %impl_witness.6: = impl_witness () [template] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.4 [template] -// CHECK:STDOUT: %F.5: %F.type.4 = struct_value () [template] -// CHECK:STDOUT: %I.facet.3: %I.type = facet_value %FExtraReturnType, %impl_witness.6 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.6: = impl_witness () [template] +// CHECK:STDOUT: %F.type.60d: type = fn_type @F.4 [template] +// CHECK:STDOUT: %F.ae3: %F.type.60d = struct_value () [template] +// CHECK:STDOUT: %I.facet.fad: %I.type = facet_value %FExtraReturnType, %impl_witness.85bcb7.6 [template] // CHECK:STDOUT: %J.type: type = facet_type <@J> [template] -// CHECK:STDOUT: %Self.2: %J.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.5: type = fn_type @F.5 [template] -// CHECK:STDOUT: %F.6: %F.type.5 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %J.type, %F.type.5 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @J.%F.decl [template] +// CHECK:STDOUT: %Self.f9f: %J.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.b65: type = fn_type @F.5 [template] +// CHECK:STDOUT: %F.83e: %F.type.b65 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.60d: type = assoc_entity_type %J.type, %F.type.b65 [template] +// CHECK:STDOUT: %assoc0.03a: %F.assoc_type.60d = assoc_entity element0, @J.%F.decl [template] // CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [template] -// CHECK:STDOUT: %impl_witness.7: = impl_witness () [template] -// CHECK:STDOUT: %F.type.6: type = fn_type @F.6 [template] -// CHECK:STDOUT: %F.7: %F.type.6 = struct_value () [template] -// CHECK:STDOUT: %J.facet.1: %J.type = facet_value %FMissingParam, %impl_witness.7 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.7: = impl_witness () [template] +// CHECK:STDOUT: %F.type.254: type = fn_type @F.6 [template] +// CHECK:STDOUT: %F.3dd: %F.type.254 = struct_value () [template] +// CHECK:STDOUT: %J.facet.515: %J.type = facet_value %FMissingParam, %impl_witness.85bcb7.7 [template] // CHECK:STDOUT: %FMissingImplicitParam: type = class_type @FMissingImplicitParam [template] -// CHECK:STDOUT: %impl_witness.8: = impl_witness () [template] -// CHECK:STDOUT: %F.type.7: type = fn_type @F.7 [template] -// CHECK:STDOUT: %F.8: %F.type.7 = struct_value () [template] -// CHECK:STDOUT: %J.facet.2: %J.type = facet_value %FMissingImplicitParam, %impl_witness.8 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.8: = impl_witness () [template] +// CHECK:STDOUT: %F.type.a49: type = fn_type @F.7 [template] +// CHECK:STDOUT: %F.95b: %F.type.a49 = struct_value () [template] +// CHECK:STDOUT: %J.facet.f88: %J.type = facet_value %FMissingImplicitParam, %impl_witness.85bcb7.8 [template] // CHECK:STDOUT: %FMissingReturnType: type = class_type @FMissingReturnType [template] -// CHECK:STDOUT: %impl_witness.9: = impl_witness () [template] -// CHECK:STDOUT: %F.type.8: type = fn_type @F.8 [template] -// CHECK:STDOUT: %F.9: %F.type.8 = struct_value () [template] -// CHECK:STDOUT: %J.facet.3: %J.type = facet_value %FMissingReturnType, %impl_witness.9 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.9: = impl_witness () [template] +// CHECK:STDOUT: %F.type.bc5: type = fn_type @F.8 [template] +// CHECK:STDOUT: %F.d2b: %F.type.bc5 = struct_value () [template] +// CHECK:STDOUT: %J.facet.43b: %J.type = facet_value %FMissingReturnType, %impl_witness.85bcb7.9 [template] // CHECK:STDOUT: %FDifferentParamType: type = class_type @FDifferentParamType [template] -// CHECK:STDOUT: %impl_witness.10: = impl_witness () [template] -// CHECK:STDOUT: %F.type.9: type = fn_type @F.9 [template] -// CHECK:STDOUT: %F.10: %F.type.9 = struct_value () [template] -// CHECK:STDOUT: %J.facet.4: %J.type = facet_value %FDifferentParamType, %impl_witness.10 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.10: = impl_witness () [template] +// CHECK:STDOUT: %F.type.f00: type = fn_type @F.9 [template] +// CHECK:STDOUT: %F.a37: %F.type.f00 = struct_value () [template] +// CHECK:STDOUT: %J.facet.9b0: %J.type = facet_value %FDifferentParamType, %impl_witness.85bcb7.10 [template] // CHECK:STDOUT: %FDifferentImplicitParamType: type = class_type @FDifferentImplicitParamType [template] -// CHECK:STDOUT: %impl_witness.11: = impl_witness () [template] -// CHECK:STDOUT: %F.type.10: type = fn_type @F.10 [template] -// CHECK:STDOUT: %F.11: %F.type.10 = struct_value () [template] -// CHECK:STDOUT: %J.facet.5: %J.type = facet_value %FDifferentImplicitParamType, %impl_witness.11 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.11: = impl_witness () [template] +// CHECK:STDOUT: %F.type.c1a: type = fn_type @F.10 [template] +// CHECK:STDOUT: %F.edd: %F.type.c1a = struct_value () [template] +// CHECK:STDOUT: %J.facet.4bb: %J.type = facet_value %FDifferentImplicitParamType, %impl_witness.85bcb7.11 [template] // CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [template] -// CHECK:STDOUT: %impl_witness.12: = impl_witness () [template] -// CHECK:STDOUT: %F.type.11: type = fn_type @F.11 [template] -// CHECK:STDOUT: %F.12: %F.type.11 = struct_value () [template] -// CHECK:STDOUT: %J.facet.6: %J.type = facet_value %FDifferentReturnType, %impl_witness.12 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.12: = impl_witness () [template] +// CHECK:STDOUT: %F.type.bad: type = fn_type @F.11 [template] +// CHECK:STDOUT: %F.6df: %F.type.bad = struct_value () [template] +// CHECK:STDOUT: %J.facet.5c7: %J.type = facet_value %FDifferentReturnType, %impl_witness.85bcb7.12 [template] // CHECK:STDOUT: %FDifferentParamName: type = class_type @FDifferentParamName [template] -// CHECK:STDOUT: %impl_witness.13: = impl_witness () [template] -// CHECK:STDOUT: %F.type.12: type = fn_type @F.12 [template] -// CHECK:STDOUT: %F.13: %F.type.12 = struct_value () [template] -// CHECK:STDOUT: %J.facet.7: %J.type = facet_value %FDifferentParamName, %impl_witness.13 [template] +// CHECK:STDOUT: %impl_witness.85bcb7.13: = impl_witness () [template] +// CHECK:STDOUT: %F.type.b18: type = fn_type @F.12 [template] +// CHECK:STDOUT: %F.ada: %F.type.b18 = struct_value () [template] +// CHECK:STDOUT: %J.facet.daf: %J.type = facet_value %FDifferentParamName, %impl_witness.85bcb7.13 [template] // CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [template] -// CHECK:STDOUT: %Self.3: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.3 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %Self.as_type [symbolic] +// CHECK:STDOUT: %Self.36c: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.36c [symbolic] +// CHECK:STDOUT: %ptr.af7: type = ptr_type %Self.as_type [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.x.y.1: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%ptr.1, %struct_type.x.y.1) [symbolic] +// CHECK:STDOUT: %struct_type.x.y.a57: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.5f6: type = tuple_type (%ptr.af7, %struct_type.x.y.a57) [symbolic] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %array_type.1: type = array_type %int_4, %Self.as_type [symbolic] -// CHECK:STDOUT: %F.type.13: type = fn_type @F.13 [template] -// CHECK:STDOUT: %F.14: %F.type.13 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.3: type = assoc_entity_type %SelfNested.type, %F.type.13 [template] -// CHECK:STDOUT: %assoc0.3: %F.assoc_type.3 = assoc_entity element0, @SelfNested.%F.decl [template] +// CHECK:STDOUT: %array_type.126f: type = array_type %int_4, %Self.as_type [symbolic] +// CHECK:STDOUT: %F.type.f33: type = fn_type @F.13 [template] +// CHECK:STDOUT: %F.04f: %F.type.f33 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.c02: type = assoc_entity_type %SelfNested.type, %F.type.f33 [template] +// CHECK:STDOUT: %assoc0.b35: %F.assoc_type.c02 = assoc_entity element0, @SelfNested.%F.decl [template] // CHECK:STDOUT: %SelfNestedBadParam: type = class_type @SelfNestedBadParam [template] -// CHECK:STDOUT: %impl_witness.14: = impl_witness () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %SelfNestedBadParam [template] -// CHECK:STDOUT: %struct_type.x.y.2: type = struct_type {.x: %i32, .y: %i32} [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%ptr.2, %struct_type.x.y.2) [template] -// CHECK:STDOUT: %array_type.2: type = array_type %int_4, %SelfNestedBadParam [template] -// CHECK:STDOUT: %F.type.14: type = fn_type @F.14 [template] -// CHECK:STDOUT: %F.15: %F.type.14 = struct_value () [template] -// CHECK:STDOUT: %SelfNested.facet.1: %SelfNested.type = facet_value %SelfNestedBadParam, %impl_witness.14 [template] -// CHECK:STDOUT: %struct_type.x.y.3: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (%ptr.2, %struct_type.x.y.3) [template] +// CHECK:STDOUT: %impl_witness.85bcb7.14: = impl_witness () [template] +// CHECK:STDOUT: %ptr.4cd: type = ptr_type %SelfNestedBadParam [template] +// CHECK:STDOUT: %struct_type.x.y.f68: type = struct_type {.x: %i32, .y: %i32} [template] +// CHECK:STDOUT: %tuple.type.0cf: type = tuple_type (%ptr.4cd, %struct_type.x.y.f68) [template] +// CHECK:STDOUT: %array_type.a41: type = array_type %int_4, %SelfNestedBadParam [template] +// CHECK:STDOUT: %F.type.965: type = fn_type @F.14 [template] +// CHECK:STDOUT: %F.f18: %F.type.965 = struct_value () [template] +// CHECK:STDOUT: %SelfNested.facet.61c: %SelfNested.type = facet_value %SelfNestedBadParam, %impl_witness.85bcb7.14 [template] +// CHECK:STDOUT: %struct_type.x.y.110: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [template] +// CHECK:STDOUT: %tuple.type.aa1: type = tuple_type (%ptr.4cd, %struct_type.x.y.110) [template] // CHECK:STDOUT: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [template] -// CHECK:STDOUT: %impl_witness.15: = impl_witness () [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %SelfNestedBadReturnType [template] -// CHECK:STDOUT: %struct_type.x.y.4: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template] -// CHECK:STDOUT: %tuple.type.5: type = tuple_type (%ptr.3, %struct_type.x.y.4) [template] -// CHECK:STDOUT: %F.type.15: type = fn_type @F.15 [template] -// CHECK:STDOUT: %F.16: %F.type.15 = struct_value () [template] -// CHECK:STDOUT: %SelfNested.facet.2: %SelfNested.type = facet_value %SelfNestedBadReturnType, %impl_witness.15 [template] -// CHECK:STDOUT: %array_type.3: type = array_type %int_4, %SelfNestedBadReturnType [template] +// CHECK:STDOUT: %impl_witness.85bcb7.15: = impl_witness () [template] +// CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [template] +// CHECK:STDOUT: %struct_type.x.y.d53: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template] +// CHECK:STDOUT: %tuple.type.ff1: type = tuple_type (%ptr.612, %struct_type.x.y.d53) [template] +// CHECK:STDOUT: %F.type.3e7: type = fn_type @F.15 [template] +// CHECK:STDOUT: %F.be8: %F.type.3e7 = struct_value () [template] +// CHECK:STDOUT: %SelfNested.facet.01f: %SelfNested.type = facet_value %SelfNestedBadReturnType, %impl_witness.85bcb7.15 [template] +// CHECK:STDOUT: %array_type.126b: type = array_type %int_4, %SelfNestedBadReturnType [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -383,9 +383,9 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %assoc0: %F.assoc_type.1 = assoc_entity element0, %F.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} +// CHECK:STDOUT: %assoc0: %F.assoc_type.5f5 = assoc_entity element0, %F.decl [template = constants.%assoc0.389] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -394,8 +394,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { -// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %F.decl: %F.type.5 = fn_decl @F.5 [template = constants.%F.6] { +// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f9f] +// CHECK:STDOUT: %F.decl: %F.type.b65 = fn_decl @F.5 [template = constants.%F.83e] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b @@ -423,7 +423,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %F.assoc_type.2 = assoc_entity element0, %F.decl [template = constants.%assoc0.2] +// CHECK:STDOUT: %assoc0: %F.assoc_type.60d = assoc_entity element0, %F.decl [template = constants.%assoc0.03a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -432,38 +432,38 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @SelfNested { -// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3] -// CHECK:STDOUT: %F.decl: %F.type.13 = fn_decl @F.13 [template = constants.%F.14] { -// CHECK:STDOUT: %x.patt: @F.13.%tuple.type (%tuple.type.2) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @F.13.%tuple.type (%tuple.type.2) = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: @F.13.%array_type.loc188_52.1 (%array_type.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.13.%array_type.loc188_52.1 (%array_type.1) = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.36c] +// CHECK:STDOUT: %F.decl: %F.type.f33 = fn_decl @F.13 [template = constants.%F.04f] { +// CHECK:STDOUT: %x.patt: @F.13.%tuple.type (%tuple.type.5f6) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @F.13.%tuple.type (%tuple.type.5f6) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: @F.13.%array_type.loc188_52.1 (%array_type.126f) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.13.%array_type.loc188_52.1 (%array_type.126f) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc188_45: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.3)] +// CHECK:STDOUT: %Self.ref.loc188_45: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.36c)] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4] // CHECK:STDOUT: %Self.as_type.loc188_45: type = facet_access_type %Self.ref.loc188_45 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc188_45: type = converted %Self.ref.loc188_45, %Self.as_type.loc188_45 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %array_type.loc188_52.2: type = array_type %int_4, %Self.as_type [symbolic = %array_type.loc188_52.1 (constants.%array_type.1)] -// CHECK:STDOUT: %x.param: @F.13.%tuple.type (%tuple.type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc188_38.1: type = splice_block %.loc188_38.3 [symbolic = %tuple.type (constants.%tuple.type.2)] { -// CHECK:STDOUT: %Self.ref.loc188_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.3)] +// CHECK:STDOUT: %array_type.loc188_52.2: type = array_type %int_4, %Self.as_type [symbolic = %array_type.loc188_52.1 (constants.%array_type.126f)] +// CHECK:STDOUT: %x.param: @F.13.%tuple.type (%tuple.type.5f6) = value_param runtime_param0 +// CHECK:STDOUT: %.loc188_38.1: type = splice_block %.loc188_38.3 [symbolic = %tuple.type (constants.%tuple.type.5f6)] { +// CHECK:STDOUT: %Self.ref.loc188_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.36c)] // CHECK:STDOUT: %Self.as_type.loc188_16.2: type = facet_access_type %Self.ref.loc188_12 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc188_16: type = converted %Self.ref.loc188_12, %Self.as_type.loc188_16.2 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %ptr.loc188_16.2: type = ptr_type %Self.as_type [symbolic = %ptr.loc188_16.1 (constants.%ptr.1)] -// CHECK:STDOUT: %Self.ref.loc188_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.3)] +// CHECK:STDOUT: %ptr.loc188_16.2: type = ptr_type %Self.as_type [symbolic = %ptr.loc188_16.1 (constants.%ptr.af7)] +// CHECK:STDOUT: %Self.ref.loc188_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.36c)] // CHECK:STDOUT: %Self.as_type.loc188_24: type = facet_access_type %Self.ref.loc188_24 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc188_24: type = converted %Self.ref.loc188_24, %Self.as_type.loc188_24 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.x.y.loc188_37.2: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic = %struct_type.x.y.loc188_37.1 (constants.%struct_type.x.y.1)] -// CHECK:STDOUT: %.loc188_38.2: %tuple.type.1 = tuple_literal (%ptr.loc188_16.2, %struct_type.x.y.loc188_37.2) -// CHECK:STDOUT: %.loc188_38.3: type = converted %.loc188_38.2, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %struct_type.x.y.loc188_37.2: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic = %struct_type.x.y.loc188_37.1 (constants.%struct_type.x.y.a57)] +// CHECK:STDOUT: %.loc188_38.2: %tuple.type.24b = tuple_literal (%ptr.loc188_16.2, %struct_type.x.y.loc188_37.2) +// CHECK:STDOUT: %.loc188_38.3: type = converted %.loc188_38.2, constants.%tuple.type.5f6 [symbolic = %tuple.type (constants.%tuple.type.5f6)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.13.%tuple.type (%tuple.type.2) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.13.%array_type.loc188_52.1 (%array_type.1) = out_param runtime_param1 -// CHECK:STDOUT: %return: ref @F.13.%array_type.loc188_52.1 (%array_type.1) = return_slot %return.param +// CHECK:STDOUT: %x: @F.13.%tuple.type (%tuple.type.5f6) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @F.13.%array_type.loc188_52.1 (%array_type.126f) = out_param runtime_param1 +// CHECK:STDOUT: %return: ref @F.13.%array_type.loc188_52.1 (%array_type.126f) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %F.assoc_type.3 = assoc_entity element0, %F.decl [template = constants.%assoc0.3] +// CHECK:STDOUT: %assoc0: %F.assoc_type.c02 = assoc_entity element0, %F.decl [template = constants.%assoc0.b35] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -477,7 +477,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: type = class_decl @F.16 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: type = class_decl @F.16 [template = constants.%F.25a] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -494,7 +494,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.4: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.3] { +// CHECK:STDOUT: %F.decl: %F.type.b6e = fn_decl @F.2 [template = constants.%F.081] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = value_param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: } { @@ -513,7 +513,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.5: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.4] { +// CHECK:STDOUT: %F.decl: %F.type.a8b = fn_decl @F.3 [template = constants.%F.bf5] { // CHECK:STDOUT: %self.patt: %FExtraImplicitParam = binding_pattern self // CHECK:STDOUT: %self.param_patt: %FExtraImplicitParam = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { @@ -528,7 +528,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.6: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.4 = fn_decl @F.4 [template = constants.%F.5] { +// CHECK:STDOUT: %F.decl: %F.type.60d = fn_decl @F.4 [template = constants.%F.ae3] { // CHECK:STDOUT: %return.patt: bool = return_slot_pattern // CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -545,7 +545,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.7: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.6 = fn_decl @F.6 [template = constants.%F.7] { +// CHECK:STDOUT: %F.decl: %F.type.254 = fn_decl @F.6 [template = constants.%F.3dd] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: bool = return_slot_pattern @@ -571,7 +571,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.8: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.7 = fn_decl @F.7 [template = constants.%F.8] { +// CHECK:STDOUT: %F.decl: %F.type.a49 = fn_decl @F.7 [template = constants.%F.95b] { // CHECK:STDOUT: %b.patt: bool = binding_pattern b // CHECK:STDOUT: %b.param_patt: bool = value_param_pattern %b.patt, runtime_param0 // CHECK:STDOUT: %return.patt: bool = return_slot_pattern @@ -597,7 +597,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.9: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.8 = fn_decl @F.8 [template = constants.%F.9] { +// CHECK:STDOUT: %F.decl: %F.type.bc5 = fn_decl @F.8 [template = constants.%F.d2b] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b @@ -625,7 +625,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.10: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.9 = fn_decl @F.9 [template = constants.%F.10] { +// CHECK:STDOUT: %F.decl: %F.type.f00 = fn_decl @F.9 [template = constants.%F.a37] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %FDifferentParamType = binding_pattern b @@ -656,7 +656,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.11: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.10 = fn_decl @F.10 [template = constants.%F.11] { +// CHECK:STDOUT: %F.decl: %F.type.c1a = fn_decl @F.10 [template = constants.%F.edd] { // CHECK:STDOUT: %self.patt: %FDifferentImplicitParamType = binding_pattern self // CHECK:STDOUT: %self.param_patt: %FDifferentImplicitParamType = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b @@ -687,7 +687,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.12: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.11 = fn_decl @F.11 [template = constants.%F.12] { +// CHECK:STDOUT: %F.decl: %F.type.bad = fn_decl @F.11 [template = constants.%F.6df] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %b.patt: bool = binding_pattern b @@ -720,7 +720,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.13: %Self.ref as %J.ref { -// CHECK:STDOUT: %F.decl: %F.type.12 = fn_decl @F.12 [template = constants.%F.13] { +// CHECK:STDOUT: %F.decl: %F.type.b18 = fn_decl @F.12 [template = constants.%F.ada] { // CHECK:STDOUT: %self.patt: bool = binding_pattern self // CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %not_b.patt: bool = binding_pattern not_b @@ -755,30 +755,30 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.14: %Self.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.14 = fn_decl @F.14 [template = constants.%F.15] { -// CHECK:STDOUT: %x.patt: %tuple.type.3 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %tuple.type.3 = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %array_type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %array_type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %F.decl: %F.type.965 = fn_decl @F.14 [template = constants.%F.f18] { +// CHECK:STDOUT: %x.patt: %tuple.type.0cf = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %tuple.type.0cf = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %array_type.a41 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %array_type.a41 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_60: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4] -// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.2] -// CHECK:STDOUT: %x.param: %tuple.type.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc200_53.1: type = splice_block %.loc200_53.3 [template = constants.%tuple.type.3] { +// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.a41] +// CHECK:STDOUT: %x.param: %tuple.type.0cf = value_param runtime_param0 +// CHECK:STDOUT: %.loc200_53.1: type = splice_block %.loc200_53.3 [template = constants.%tuple.type.0cf] { // CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_14: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] -// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadParam [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadParam [template = constants.%ptr.4cd] // CHECK:STDOUT: %int_32.loc200_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc200_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc200_49: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc200_49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [template = constants.%struct_type.x.y.2] -// CHECK:STDOUT: %.loc200_53.2: %tuple.type.1 = tuple_literal (%ptr, %struct_type.x.y) -// CHECK:STDOUT: %.loc200_53.3: type = converted %.loc200_53.2, constants.%tuple.type.3 [template = constants.%tuple.type.3] +// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [template = constants.%struct_type.x.y.f68] +// CHECK:STDOUT: %.loc200_53.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc200_53.3: type = converted %.loc200_53.2, constants.%tuple.type.0cf [template = constants.%tuple.type.0cf] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %tuple.type.3 = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref %array_type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %array_type.2 = return_slot %return.param +// CHECK:STDOUT: %x: %tuple.type.0cf = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %array_type.a41 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -787,29 +787,29 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.15: %Self.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.15 = fn_decl @F.15 [template = constants.%F.16] { -// CHECK:STDOUT: %x.patt: %tuple.type.5 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %tuple.type.5 = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %array_type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %array_type.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %F.decl: %F.type.3e7 = fn_decl @F.15 [template = constants.%F.be8] { +// CHECK:STDOUT: %x.patt: %tuple.type.ff1 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %tuple.type.ff1 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %array_type.a41 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %array_type.a41 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %SelfNestedBadParam.ref: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4] -// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.2] -// CHECK:STDOUT: %x.param: %tuple.type.5 = value_param runtime_param0 -// CHECK:STDOUT: %.loc212_78.1: type = splice_block %.loc212_78.3 [template = constants.%tuple.type.5] { +// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.a41] +// CHECK:STDOUT: %x.param: %tuple.type.ff1 = value_param runtime_param0 +// CHECK:STDOUT: %.loc212_78.1: type = splice_block %.loc212_78.3 [template = constants.%tuple.type.ff1] { // CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc212_14: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [template = constants.%SelfNestedBadReturnType] -// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadReturnType [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadReturnType [template = constants.%ptr.612] // CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc212_45: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [template = constants.%SelfNestedBadReturnType] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template = constants.%struct_type.x.y.4] -// CHECK:STDOUT: %.loc212_78.2: %tuple.type.1 = tuple_literal (%ptr, %struct_type.x.y) -// CHECK:STDOUT: %.loc212_78.3: type = converted %.loc212_78.2, constants.%tuple.type.5 [template = constants.%tuple.type.5] +// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template = constants.%struct_type.x.y.d53] +// CHECK:STDOUT: %.loc212_78.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc212_78.3: type = converted %.loc212_78.2, constants.%tuple.type.ff1 [template = constants.%tuple.type.ff1] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %tuple.type.5 = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref %array_type.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %array_type.2 = return_slot %return.param +// CHECK:STDOUT: %x: %tuple.type.ff1 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %array_type.a41 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -822,8 +822,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NoF [template = constants.%NoF] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.1] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NoF @@ -835,8 +835,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FNotFunction [template = constants.%FNotFunction] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.2] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FNotFunction @@ -850,8 +850,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FAlias [template = constants.%FAlias] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.3] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FAlias @@ -863,8 +863,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraParam [template = constants.%FExtraParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.4] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraParam @@ -876,8 +876,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [template = constants.%FExtraImplicitParam] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.5] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.5] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraImplicitParam @@ -889,8 +889,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraReturnType [template = constants.%FExtraReturnType] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.6] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.6] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraReturnType @@ -902,8 +902,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingParam [template = constants.%FMissingParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.7] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.7] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingParam @@ -915,8 +915,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingImplicitParam [template = constants.%FMissingImplicitParam] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.8] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.8] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingImplicitParam @@ -928,8 +928,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingReturnType [template = constants.%FMissingReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.9] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.9] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingReturnType @@ -941,8 +941,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [template = constants.%FDifferentParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.10] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.10] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentParamType @@ -954,8 +954,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [template = constants.%FDifferentImplicitParamType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.11] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.11] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentImplicitParamType @@ -967,8 +967,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [template = constants.%FDifferentReturnType] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.12] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.12] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentReturnType @@ -980,8 +980,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamName [template = constants.%FDifferentParamName] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.13] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.13] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentParamName @@ -993,8 +993,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadParam [template = constants.%SelfNestedBadParam] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.14] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.14] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SelfNestedBadParam @@ -1006,8 +1006,8 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadReturnType [template = constants.%SelfNestedBadReturnType] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.15] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85bcb7.15] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SelfNestedBadReturnType @@ -1047,68 +1047,68 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: fn @F.12[%self.param_patt: bool](%not_b.param_patt: bool) -> bool; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.13(@SelfNested.%Self: %SelfNested.type) { -// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.3)] +// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.36c)] // CHECK:STDOUT: %Self.as_type.loc188_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %ptr.loc188_16.1: type = ptr_type @F.13.%Self.as_type.loc188_16.1 (%Self.as_type) [symbolic = %ptr.loc188_16.1 (constants.%ptr.1)] -// CHECK:STDOUT: %struct_type.x.y.loc188_37.1: type = struct_type {.x: @F.13.%Self.as_type.loc188_16.1 (%Self.as_type), .y: %i32} [symbolic = %struct_type.x.y.loc188_37.1 (constants.%struct_type.x.y.1)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.13.%ptr.loc188_16.1 (%ptr.1), @F.13.%struct_type.x.y.loc188_37.1 (%struct_type.x.y.1)) [symbolic = %tuple.type (constants.%tuple.type.2)] -// CHECK:STDOUT: %array_type.loc188_52.1: type = array_type constants.%int_4, @F.13.%Self.as_type.loc188_16.1 (%Self.as_type) [symbolic = %array_type.loc188_52.1 (constants.%array_type.1)] +// CHECK:STDOUT: %ptr.loc188_16.1: type = ptr_type @F.13.%Self.as_type.loc188_16.1 (%Self.as_type) [symbolic = %ptr.loc188_16.1 (constants.%ptr.af7)] +// CHECK:STDOUT: %struct_type.x.y.loc188_37.1: type = struct_type {.x: @F.13.%Self.as_type.loc188_16.1 (%Self.as_type), .y: %i32} [symbolic = %struct_type.x.y.loc188_37.1 (constants.%struct_type.x.y.a57)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.13.%ptr.loc188_16.1 (%ptr.af7), @F.13.%struct_type.x.y.loc188_37.1 (%struct_type.x.y.a57)) [symbolic = %tuple.type (constants.%tuple.type.5f6)] +// CHECK:STDOUT: %array_type.loc188_52.1: type = array_type constants.%int_4, @F.13.%Self.as_type.loc188_16.1 (%Self.as_type) [symbolic = %array_type.loc188_52.1 (constants.%array_type.126f)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param_patt: @F.13.%tuple.type (%tuple.type.2)) -> @F.13.%array_type.loc188_52.1 (%array_type.1); +// CHECK:STDOUT: fn(%x.param_patt: @F.13.%tuple.type (%tuple.type.5f6)) -> @F.13.%array_type.loc188_52.1 (%array_type.126f); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.14(%x.param_patt: %tuple.type.3) -> %array_type.2; +// CHECK:STDOUT: fn @F.14(%x.param_patt: %tuple.type.0cf) -> %array_type.a41; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.15(%x.param_patt: %tuple.type.5) -> %array_type.2; +// CHECK:STDOUT: fn @F.15(%x.param_patt: %tuple.type.ff1) -> %array_type.a41; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.fb7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%I.facet.1) {} +// CHECK:STDOUT: specific @F.1(constants.%I.facet.3bf) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%I.facet.2) {} +// CHECK:STDOUT: specific @F.1(constants.%I.facet.33b) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%I.facet.3) {} +// CHECK:STDOUT: specific @F.1(constants.%I.facet.fad) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%Self.2) {} +// CHECK:STDOUT: specific @F.5(constants.%Self.f9f) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.1) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.515) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.2) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.f88) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.3) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.43b) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.4) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.9b0) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.5) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.4bb) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.6) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.5c7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.5(constants.%J.facet.7) {} +// CHECK:STDOUT: specific @F.5(constants.%J.facet.daf) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.13(constants.%Self.3) { -// CHECK:STDOUT: %Self => constants.%Self.3 +// CHECK:STDOUT: specific @F.13(constants.%Self.36c) { +// CHECK:STDOUT: %Self => constants.%Self.36c // CHECK:STDOUT: %Self.as_type.loc188_16.1 => constants.%Self.as_type -// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.1 -// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.1 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 -// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.1 +// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.af7 +// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.a57 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.5f6 +// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.126f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.13(constants.%SelfNested.facet.1) { -// CHECK:STDOUT: %Self => constants.%SelfNested.facet.1 +// CHECK:STDOUT: specific @F.13(constants.%SelfNested.facet.61c) { +// CHECK:STDOUT: %Self => constants.%SelfNested.facet.61c // CHECK:STDOUT: %Self.as_type.loc188_16.1 => constants.%SelfNestedBadParam -// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.2 -// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.3 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.4 -// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.2 +// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.4cd +// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.110 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.aa1 +// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.a41 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.13(constants.%SelfNested.facet.2) { -// CHECK:STDOUT: %Self => constants.%SelfNested.facet.2 +// CHECK:STDOUT: specific @F.13(constants.%SelfNested.facet.01f) { +// CHECK:STDOUT: %Self => constants.%SelfNested.facet.01f // CHECK:STDOUT: %Self.as_type.loc188_16.1 => constants.%SelfNestedBadReturnType -// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.3 -// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.4 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.5 -// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.3 +// CHECK:STDOUT: %ptr.loc188_16.1 => constants.%ptr.612 +// CHECK:STDOUT: %struct_type.x.y.loc188_37.1 => constants.%struct_type.x.y.d53 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.ff1 +// CHECK:STDOUT: %array_type.loc188_52.1 => constants.%array_type.126b // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon index 55085a9af151..f9f5dcdeab8c 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_interface.carbon @@ -53,8 +53,8 @@ impl f64 as type where .Self impls type {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_redefinition.carbon b/toolchain/check/testdata/impl/fail_redefinition.carbon index e6f009a07d87..2202646d3eb9 100644 --- a/toolchain/check/testdata/impl/fail_redefinition.carbon +++ b/toolchain/check/testdata/impl/fail_redefinition.carbon @@ -32,7 +32,7 @@ impl i32 as I {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon index 7f820277bd50..a72665044b67 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -33,29 +33,29 @@ impl i32 as I { // CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T, %X) [symbolic] +// CHECK:STDOUT: %C.b62: type = class_type @C, @C(%T, %X) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%I.type, %Self) [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %C.082: type = class_type @C, @C(%I.type, %Self) [symbolic] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %impl_witness: = impl_witness () [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(type, %i32) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %C.11b: type = class_type @C, @C(type, %i32) [template] +// CHECK:STDOUT: %F.type.0e2: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c9c: %F.type.0e2 = struct_value () [template] // CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, %impl_witness [template] -// CHECK:STDOUT: %C.4: type = class_type @C, @C(%I.type, %I.facet) [template] +// CHECK:STDOUT: %C.33a: type = class_type @C, @C(%I.type, %I.facet) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -91,17 +91,17 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %c.patt: @F.1.%C.loc14_17.1 (%C.2) = binding_pattern c -// CHECK:STDOUT: %c.param_patt: @F.1.%C.loc14_17.1 (%C.2) = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] { +// CHECK:STDOUT: %c.patt: @F.1.%C.loc14_17.1 (%C.082) = binding_pattern c +// CHECK:STDOUT: %c.param_patt: @F.1.%C.loc14_17.1 (%C.082) = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: @F.1.%C.loc14_17.1 (%C.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %C.loc14_17.2 [symbolic = %C.loc14_17.1 (constants.%C.2)] { +// CHECK:STDOUT: %c.param: @F.1.%C.loc14_17.1 (%C.082) = value_param runtime_param0 +// CHECK:STDOUT: %.loc14: type = splice_block %C.loc14_17.2 [symbolic = %C.loc14_17.1 (constants.%C.082)] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %C.loc14_17.2: type = class_type @C, @C(constants.%I.type, constants.%Self) [symbolic = %C.loc14_17.1 (constants.%C.2)] +// CHECK:STDOUT: %C.loc14_17.2: type = class_type @C, @C(constants.%I.type, constants.%Self) [symbolic = %C.loc14_17.1 (constants.%C.082)] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: @F.1.%C.loc14_17.1 (%C.2) = bind_name c, %c.param +// CHECK:STDOUT: %c: @F.1.%C.loc14_17.1 (%C.082) = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: @@ -112,18 +112,18 @@ impl i32 as I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %i32 as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { -// CHECK:STDOUT: %c.patt: %C.3 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %C.3 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.0e2 = fn_decl @F.2 [template = constants.%F.c9c] { +// CHECK:STDOUT: %c.patt: %C.11b = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %C.11b = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: %C.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc24: type = splice_block %C [template = constants.%C.3] { +// CHECK:STDOUT: %c.param: %C.11b = value_param runtime_param0 +// CHECK:STDOUT: %.loc24: type = splice_block %C [template = constants.%C.11b] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %C: type = class_type @C, @C(type, constants.%i32) [template = constants.%C.3] +// CHECK:STDOUT: %C: type = class_type @C, @C(type, constants.%i32) [template = constants.%C.11b] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %C.3 = bind_name c, %c.param +// CHECK:STDOUT: %c: %C.11b = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -140,22 +140,22 @@ impl i32 as I { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.b62 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %C.loc14_17.1: type = class_type @C, @C(constants.%I.type, %Self) [symbolic = %C.loc14_17.1 (constants.%C.2)] +// CHECK:STDOUT: %C.loc14_17.1: type = class_type @C, @C(constants.%I.type, %Self) [symbolic = %C.loc14_17.1 (constants.%C.082)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%c.param_patt: @F.1.%C.loc14_17.1 (%C.2)); +// CHECK:STDOUT: fn(%c.param_patt: @F.1.%C.loc14_17.1 (%C.082)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%c.param_patt: %C.3); +// CHECK:STDOUT: fn @F.2(%c.param_patt: %C.11b); // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T, constants.%X) { // CHECK:STDOUT: %T.loc11_9.2 => constants.%T @@ -173,7 +173,7 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %C.loc14_17.1 => constants.%C.2 +// CHECK:STDOUT: %C.loc14_17.1 => constants.%C.082 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%I.type, @F.1.%Self) {} @@ -187,7 +187,7 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %C.loc14_17.1 => constants.%C.4 +// CHECK:STDOUT: %C.loc14_17.1 => constants.%C.33a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%I.type, constants.%I.facet) { diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index 931d0e6b57a2..9cec142b5695 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -26,14 +26,14 @@ class C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template] // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.c46: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.41f: %F.type.c46 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.c46 [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @Simple.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.1ec: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c23: %F.type.1ec = struct_value () [template] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] @@ -60,7 +60,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.c46 = fn_decl @F.1 [template = constants.%F.41f] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -70,7 +70,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.1ec = fn_decl @F.2 [template = constants.%F.c23] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl diff --git a/toolchain/check/testdata/impl/impl_forall.carbon b/toolchain/check/testdata/impl/impl_forall.carbon index 06e79aa2aadc..336673dfbcd5 100644 --- a/toolchain/check/testdata/impl/impl_forall.carbon +++ b/toolchain/check/testdata/impl/impl_forall.carbon @@ -21,15 +21,15 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template] // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.c46: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.41f: %F.type.c46 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.c46 [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @Simple.%F.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] +// CHECK:STDOUT: %F.type.f2d: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.d76: %F.type.f2d = struct_value () [symbolic] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %T, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -61,7 +61,7 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.c46 = fn_decl @F.1 [template = constants.%F.41f] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -76,11 +76,11 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc15_14.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc15_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc15_14.2) [symbolic = %F.type (constants.%F.type.f2d)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.f2d) = struct_value () [symbolic = %F (constants.%F.d76)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.f2d) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.d76)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -110,8 +110,8 @@ impl forall [T:! type] T as Simple { // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.f2d +// CHECK:STDOUT: %F => constants.%F.d76 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(%T.loc15_14.2) {} diff --git a/toolchain/check/testdata/impl/lookup/alias.carbon b/toolchain/check/testdata/impl/lookup/alias.carbon index a134b8ec4cd6..ca43dddce1cc 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -30,17 +30,17 @@ fn G(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.2e0: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.89c: %F.type.2e0 = struct_value () [template] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] @@ -80,7 +80,7 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -90,7 +90,7 @@ fn G(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.2e0 = fn_decl @F.2 [template = constants.%F.89c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -123,11 +123,11 @@ fn G(c: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %G.ref.loc24: %F.assoc_type = name_ref G, @C.%G [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc24: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0.loc24: %F.type.16d = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.89c] // CHECK:STDOUT: %F.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %G.ref.loc25: %F.assoc_type = name_ref G, @C.%G [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc25: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0.loc25: %F.type.16d = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.89c] // CHECK:STDOUT: %F.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon index ca3fe49f966c..169c8e873300 100644 --- a/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_alias_impl_not_found.carbon @@ -33,15 +33,15 @@ fn F(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -61,7 +61,7 @@ fn F(c: C) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c // CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { @@ -73,7 +73,7 @@ fn F(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: diff --git a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon index cf3427973682..feda471e9f4c 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -40,27 +40,27 @@ impl C as I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness () [template] +// CHECK:STDOUT: %impl_witness.85b: = impl_witness () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness.2 [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.433: = impl_witness (@impl.2.%F.decl) [template] +// CHECK:STDOUT: %F.type.663: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.0c9: %F.type.663 = struct_value () [template] +// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness.433 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,7 +76,7 @@ impl C as I { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -89,12 +89,12 @@ impl C as I { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.433] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -106,7 +106,7 @@ impl C as I { // CHECK:STDOUT: impl @impl.1: %Self.ref as %I.ref; // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] {} {} +// CHECK:STDOUT: %F.decl: %F.type.663 = fn_decl @F.3 [template = constants.%F.0c9] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -118,8 +118,8 @@ impl C as I { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.1] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.85b] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -136,7 +136,7 @@ impl C as I { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = ] +// CHECK:STDOUT: %impl.elem0: %F.type.9df = impl_witness_access constants.%impl_witness.85b, element0 [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index cf7ba66d2aa1..d9cbe2c0a930 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -126,24 +126,24 @@ fn G(x: A) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness.1 [symbolic] +// CHECK:STDOUT: %impl_witness.c72: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.6cd: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.074: %F.type.6cd = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness.c72 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.3, @F.2(%empty_struct_type) [template] +// CHECK:STDOUT: %impl_witness.93b: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.e4d: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.da1: %F.type.e4d = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.da1, @F.2(%empty_struct_type) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -170,7 +170,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.c72)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0 @@ -186,7 +186,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -198,14 +198,14 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.c72)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.6cd)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.6cd) = struct_value () [symbolic = %F (constants.%F.074)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.6cd) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.074)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -232,7 +232,7 @@ fn G(x: A) { // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%F.3] +// CHECK:STDOUT: %impl.elem0: %F.type.16d = impl_witness_access constants.%impl_witness.93b, element0 [template = constants.%F.da1] // CHECK:STDOUT: %F.specific_fn: = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() // CHECK:STDOUT: return @@ -243,11 +243,11 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.c72 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.6cd +// CHECK:STDOUT: %F => constants.%F.074 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(%T.loc8_14.2) {} @@ -259,11 +259,11 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.93b // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.e4d +// CHECK:STDOUT: %F => constants.%F.da1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { @@ -276,23 +276,23 @@ fn G(x: A) { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness.1 [symbolic] +// CHECK:STDOUT: %impl_witness.11b: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.6cd: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.074: %F.type.6cd = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness.11b [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.f45: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.e4d: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.da1: %F.type.e4d = struct_value () [template] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -321,7 +321,7 @@ fn G(x: A) { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.11b)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0 @@ -343,7 +343,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] { // CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = return_slot_pattern @@ -373,14 +373,14 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.11b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.6cd)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.6cd) = struct_value () [symbolic = %F (constants.%F.074)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] { +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.6cd) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.074)] { // CHECK:STDOUT: %self.patt: @F.2.%T (%T) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.2.%T (%T) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.2.%T (%T) = return_slot_pattern @@ -425,7 +425,7 @@ fn G(x: A) { // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%F.3] +// CHECK:STDOUT: %impl.elem0: %F.type.16d = impl_witness_access constants.%impl_witness.f45, element0 [template = constants.%F.da1] // CHECK:STDOUT: %F.bound: = bound_method %x.ref, %impl.elem0 // CHECK:STDOUT: %F.specific_fn: = specific_function %F.bound, @F.2(constants.%empty_struct_type) // CHECK:STDOUT: %F.call: init %empty_struct_type = call %F.specific_fn(%x.ref) @@ -444,11 +444,11 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.11b // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.6cd +// CHECK:STDOUT: %F => constants.%F.074 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(%T.loc8_14.2) {} @@ -465,11 +465,11 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.f45 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.e4d +// CHECK:STDOUT: %F => constants.%F.da1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { @@ -484,29 +484,29 @@ fn G(x: A) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C.1, %impl_witness.1 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%empty_struct_type) [template] +// CHECK:STDOUT: %impl_witness.cf5: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.823: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.743: %F.type.823 = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C.37e, %impl_witness.cf5 [symbolic] +// CHECK:STDOUT: %C.27b: type = class_type @C, @C(%empty_struct_type) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.3, @F.2(%empty_struct_type) [template] +// CHECK:STDOUT: %impl_witness.3d0: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.239: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.c56: %F.type.239 = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.c56, @F.2(%empty_struct_type) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -538,30 +538,30 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)] -// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C.1)] +// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C.37e)] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.cf5)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %x.patt: %C.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %C.2 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: %C.27b = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %C.27b = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc14_13.1: type = splice_block %C [template = constants.%C.2] { +// CHECK:STDOUT: %x.param: %C.27b = value_param runtime_param0 +// CHECK:STDOUT: %.loc14_13.1: type = splice_block %C [template = constants.%C.27b] { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_12, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [template = constants.%C.2] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [template = constants.%C.27b] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %C.2 = bind_name x, %x.param +// CHECK:STDOUT: %x: %C.27b = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -573,15 +573,15 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @impl(%T.loc10_14.1: type) { // CHECK:STDOUT: %T.loc10_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc10_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc10_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(%T.loc10_14.2) [symbolic = %C.loc10_27.2 (constants.%C.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc10_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %C.loc10_27.2: type = class_type @C, @C(%T.loc10_14.2) [symbolic = %C.loc10_27.2 (constants.%C.37e)] +// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc10_14.2) [symbolic = %impl_witness (constants.%impl_witness.cf5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.823)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.823) = struct_value () [symbolic = %F (constants.%F.743)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.loc10_27.1 as %HasF.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.823) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.743)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -599,7 +599,7 @@ fn G(x: A) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -618,12 +618,12 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%x.param_patt: %C.2) { +// CHECK:STDOUT: fn @G(%x.param_patt: %C.27b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref: %C.2 = name_ref x, %x +// CHECK:STDOUT: %x.ref: %C.27b = name_ref x, %x // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%F.3] +// CHECK:STDOUT: %impl.elem0: %F.type.16d = impl_witness_access constants.%impl_witness.3d0, element0 [template = constants.%F.c56] // CHECK:STDOUT: %F.specific_fn: = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() // CHECK:STDOUT: return @@ -639,12 +639,12 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc10_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc10_14.2 => constants.%T -// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.37e +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.cf5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.823 +// CHECK:STDOUT: %F => constants.%F.743 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@impl.%T.loc10_14.2) {} @@ -665,12 +665,12 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc10_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %T.patt.loc10_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %C.loc10_27.2 => constants.%C.27b +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.3d0 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.239 +// CHECK:STDOUT: %F => constants.%F.c56 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { @@ -682,33 +682,33 @@ fn G(x: A) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %HasF.type.1: type = generic_interface_type @HasF [template] +// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %HasF.generic: %HasF.type.1 = struct_value () [template] -// CHECK:STDOUT: %HasF.type.2: type = facet_type <@HasF, @HasF(%T)> [symbolic] -// CHECK:STDOUT: %Self: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %HasF.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template] +// CHECK:STDOUT: %HasF.type.a19: type = facet_type <@HasF, @HasF(%T)> [symbolic] +// CHECK:STDOUT: %Self: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.38a: type = fn_type @F.1, @HasF(%T) [symbolic] +// CHECK:STDOUT: %F.81b: %F.type.38a = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.cd1: type = assoc_entity_type %HasF.type.a19, %F.type.38a [symbolic] +// CHECK:STDOUT: %assoc0.1d6: %F.assoc_type.cd1 = assoc_entity element0, @HasF.%F.decl [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.2 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %HasF.facet: %HasF.type.2 = facet_value %empty_struct_type, %impl_witness.1 [symbolic] +// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.a19 [symbolic] +// CHECK:STDOUT: %impl_witness.b35: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.7da: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.421: %F.type.7da = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.facet: %HasF.type.a19 = facet_value %empty_struct_type, %impl_witness.b35 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %HasF.type.3: type = facet_type <@HasF, @HasF(%empty_struct_type)> [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @HasF(%empty_struct_type) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %HasF.type.3, %F.type.3 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @HasF.%F.decl [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %HasF.type.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.4, @F.2(%empty_struct_type) [template] +// CHECK:STDOUT: %HasF.type.914: type = facet_type <@HasF, @HasF(%empty_struct_type)> [template] +// CHECK:STDOUT: %F.type.6ab: type = fn_type @F.1, @HasF(%empty_struct_type) [template] +// CHECK:STDOUT: %F.5c7: %F.type.6ab = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.26b: type = assoc_entity_type %HasF.type.914, %F.type.6ab [template] +// CHECK:STDOUT: %assoc0.589: %F.assoc_type.26b = assoc_entity element0, @HasF.%F.decl [template] +// CHECK:STDOUT: %complete_type: = complete_type_witness %HasF.type.914 [template] +// CHECK:STDOUT: %impl_witness.7cd: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.c45: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.b2a: %F.type.c45 = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.b2a, @F.2(%empty_struct_type) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -725,7 +725,7 @@ fn G(x: A) { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %HasF.decl: %HasF.type.1 = interface_decl @HasF [template = constants.%HasF.generic] { +// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -738,13 +738,13 @@ fn G(x: A) { // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] +// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_36.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.2)] +// CHECK:STDOUT: %HasF.type.loc8_36.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.a19)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.b35)] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0 @@ -763,17 +763,17 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.2)] -// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.a19)] +// CHECK:STDOUT: %Self.2: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.38a)] +// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.38a) = struct_value () [symbolic = %F (constants.%F.81b)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.a19), @HasF.%F.type (%F.type.38a) [symbolic = %F.assoc_type (constants.%F.assoc_type.cd1)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1d6)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.a19) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.38a) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.81b)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1d6)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -785,16 +785,16 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %HasF.type.loc8_36.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%HasF.type.loc8_36.2 (%HasF.type.2) [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %HasF.type.loc8_36.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.a19)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%HasF.type.loc8_36.2 (%HasF.type.a19) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.b35)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.7da)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.7da) = struct_value () [symbolic = %F (constants.%F.421)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %.loc8_25.2 as %HasF.type.loc8_36.1 { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.7da) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.421)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -802,7 +802,7 @@ fn G(x: A) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.a19)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -819,13 +819,13 @@ fn G(x: A) { // CHECK:STDOUT: fn @G(%x.param_patt: %empty_struct_type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x -// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] +// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] // CHECK:STDOUT: %.loc13_12: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc13_13: type = converted %.loc13_12, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [template = constants.%HasF.type.3] -// CHECK:STDOUT: %.loc13_14: %F.assoc_type.2 = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%empty_struct_type) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref: %F.assoc_type.2 = name_ref F, %.loc13_14 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %F.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%F.4] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [template = constants.%HasF.type.914] +// CHECK:STDOUT: %.loc13_14: %F.assoc_type.26b = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%empty_struct_type) [template = constants.%assoc0.589] +// CHECK:STDOUT: %F.ref: %F.assoc_type.26b = name_ref F, %.loc13_14 [template = constants.%assoc0.589] +// CHECK:STDOUT: %impl.elem0: %F.type.6ab = impl_witness_access constants.%impl_witness.7cd, element0 [template = constants.%F.b2a] // CHECK:STDOUT: %F.specific_fn: = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() // CHECK:STDOUT: return @@ -836,12 +836,12 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2 +// CHECK:STDOUT: %HasF.type => constants.%HasF.type.a19 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.1 -// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.1 +// CHECK:STDOUT: %F.type => constants.%F.type.38a +// CHECK:STDOUT: %F => constants.%F.81b +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.cd1 +// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.1d6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {} @@ -851,13 +851,13 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.2 +// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.a19 // CHECK:STDOUT: %require_complete => constants.%require_complete -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.b35 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.7da +// CHECK:STDOUT: %F => constants.%F.421 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @HasF(@impl.%T.loc8_14.2) {} @@ -873,24 +873,24 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3 +// CHECK:STDOUT: %HasF.type => constants.%HasF.type.914 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.6ab +// CHECK:STDOUT: %F => constants.%F.5c7 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.26b +// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.589 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.3 +// CHECK:STDOUT: %HasF.type.loc8_36.2 => constants.%HasF.type.914 // CHECK:STDOUT: %require_complete => constants.%complete_type -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.7cd // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.4 -// CHECK:STDOUT: %F => constants.%F.4 +// CHECK:STDOUT: %F.type => constants.%F.type.c45 +// CHECK:STDOUT: %F => constants.%F.b2a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { @@ -902,17 +902,17 @@ fn G(x: A) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%T, %U) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T, %U) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] +// CHECK:STDOUT: %F.type.c6f: type = fn_type @F.2, @impl(%T, %U) [symbolic] +// CHECK:STDOUT: %F.554: %F.type.c6f = struct_value () [symbolic] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -963,7 +963,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -980,11 +980,11 @@ fn G(x: A) { // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc9_14.2, %U.loc9_24.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc9_14.2, %U.loc9_24.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc9_14.2, %U.loc9_24.2) [symbolic = %F.type (constants.%F.type.c6f)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.c6f) = struct_value () [symbolic = %F (constants.%F.554)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.c6f) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.554)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -1024,8 +1024,8 @@ fn G(x: A) { // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.c6f +// CHECK:STDOUT: %F => constants.%F.554 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(%T.loc9_14.2, %U.loc9_24.2) {} @@ -1039,30 +1039,30 @@ fn G(x: A) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %HasF.type.1: type = generic_interface_type @HasF [template] -// CHECK:STDOUT: %HasF.generic: %HasF.type.1 = struct_value () [template] -// CHECK:STDOUT: %HasF.type.2: type = facet_type <@HasF, @HasF(%T)> [symbolic] -// CHECK:STDOUT: %Self: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @HasF(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %HasF.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @HasF.%F.decl [symbolic] -// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.2 [symbolic] +// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template] +// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template] +// CHECK:STDOUT: %HasF.type.a19: type = facet_type <@HasF, @HasF(%T)> [symbolic] +// CHECK:STDOUT: %Self: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.38a: type = fn_type @F.1, @HasF(%T) [symbolic] +// CHECK:STDOUT: %F.81b: %F.type.38a = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.cd1: type = assoc_entity_type %HasF.type.a19, %F.type.38a [symbolic] +// CHECK:STDOUT: %assoc0.1d6: %F.assoc_type.cd1 = assoc_entity element0, @HasF.%F.decl [symbolic] +// CHECK:STDOUT: %require_complete: = require_complete_type %HasF.type.a19 [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %HasF.facet: %HasF.type.2 = facet_value %T, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.7a5: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.dde: %F.type.7a5 = struct_value () [symbolic] +// CHECK:STDOUT: %HasF.facet: %HasF.type.a19 = facet_value %T, %impl_witness [symbolic] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %HasF.type.3: type = facet_type <@HasF, @HasF(%B)> [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.1, @HasF(%B) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %HasF.type.3, %F.type.3 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @HasF.%F.decl [template] +// CHECK:STDOUT: %HasF.type.086: type = facet_type <@HasF, @HasF(%B)> [template] +// CHECK:STDOUT: %F.type.d90: type = fn_type @F.1, @HasF(%B) [template] +// CHECK:STDOUT: %F.765: %F.type.d90 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.cee: type = assoc_entity_type %HasF.type.086, %F.type.d90 [template] +// CHECK:STDOUT: %assoc0.f48: %F.assoc_type.cee = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -1081,7 +1081,7 @@ fn G(x: A) { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %HasF.decl: %HasF.type.1 = interface_decl @HasF [template = constants.%HasF.generic] { +// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1093,9 +1093,9 @@ fn G(x: A) { // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] +// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] // CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.2)] +// CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.a19)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } @@ -1117,17 +1117,17 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.2)] -// CHECK:STDOUT: %Self.2: %HasF.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.2), @HasF.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_9.2: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(%T.loc4_16.2)> [symbolic = %HasF.type (constants.%HasF.type.a19)] +// CHECK:STDOUT: %Self.2: %HasF.type.a19 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @HasF(%T.loc4_16.2) [symbolic = %F.type (constants.%F.type.38a)] +// CHECK:STDOUT: %F: @HasF.%F.type (%F.type.38a) = struct_value () [symbolic = %F (constants.%F.81b)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @HasF.%HasF.type (%HasF.type.a19), @HasF.%F.type (%F.type.38a) [symbolic = %F.assoc_type (constants.%F.assoc_type.cd1)] +// CHECK:STDOUT: %assoc0.loc5_9.2: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1d6)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.1)] {} {} -// CHECK:STDOUT: %assoc0.loc5_9.1: @HasF.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Self.1: @HasF.%HasF.type (%HasF.type.a19) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @HasF.%F.type (%F.type.38a) = fn_decl @F.1 [symbolic = @HasF.%F (constants.%F.81b)] {} {} +// CHECK:STDOUT: %assoc0.loc5_9.1: @HasF.%F.assoc_type (%F.assoc_type.cd1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0.1d6)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -1139,16 +1139,16 @@ fn G(x: A) { // CHECK:STDOUT: generic impl @impl(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %HasF.type.loc8_35.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%HasF.type.loc8_35.2 (%HasF.type.2) [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %HasF.type.loc8_35.2: type = facet_type <@HasF, @HasF(%T.loc8_14.2)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.a19)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%HasF.type.loc8_35.2 (%HasF.type.a19) [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc8_14.2) [symbolic = %F.type (constants.%F.type.7a5)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.7a5) = struct_value () [symbolic = %F (constants.%F.dde)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %T.ref.loc8_24 as %HasF.type.loc8_35.1 { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.7a5) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.dde)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -1172,7 +1172,7 @@ fn G(x: A) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.a19)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -1189,11 +1189,11 @@ fn G(x: A) { // CHECK:STDOUT: fn @G(%x.param_patt: %A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %A = name_ref x, %x -// CHECK:STDOUT: %HasF.ref: %HasF.type.1 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] +// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%B)> [template = constants.%HasF.type.3] -// CHECK:STDOUT: %.loc21: %F.assoc_type.2 = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%B) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref: %F.assoc_type.2 = name_ref F, %.loc21 [template = constants.%assoc0.2] +// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%B)> [template = constants.%HasF.type.086] +// CHECK:STDOUT: %.loc21: %F.assoc_type.cee = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%B) [template = constants.%assoc0.f48] +// CHECK:STDOUT: %F.ref: %F.assoc_type.cee = name_ref F, %.loc21 [template = constants.%assoc0.f48] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1202,12 +1202,12 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type => constants.%HasF.type.2 +// CHECK:STDOUT: %HasF.type => constants.%HasF.type.a19 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.1 -// CHECK:STDOUT: %F => constants.%F.1 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.1 -// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.1 +// CHECK:STDOUT: %F.type => constants.%F.type.38a +// CHECK:STDOUT: %F => constants.%F.81b +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.cd1 +// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.1d6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self) {} @@ -1217,13 +1217,13 @@ fn G(x: A) { // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %HasF.type.loc8_35.2 => constants.%HasF.type.2 +// CHECK:STDOUT: %HasF.type.loc8_35.2 => constants.%HasF.type.a19 // CHECK:STDOUT: %require_complete => constants.%require_complete // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.7a5 +// CHECK:STDOUT: %F => constants.%F.dde // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @HasF(@impl.%T.loc8_14.2) {} @@ -1239,11 +1239,11 @@ fn G(x: A) { // CHECK:STDOUT: %T.patt.loc4_16.2 => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %HasF.type => constants.%HasF.type.3 +// CHECK:STDOUT: %HasF.type => constants.%HasF.type.086 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.d90 +// CHECK:STDOUT: %F => constants.%F.765 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.cee +// CHECK:STDOUT: %assoc0.loc5_9.2 => constants.%assoc0.f48 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index 565dc6d434f1..f9e21ada8586 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -33,23 +33,23 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.58f: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.17c: %F.type.58f = struct_value () [template] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -66,7 +66,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %C.decl.loc11: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {} // CHECK:STDOUT: %C.decl.loc17: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] { +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [template = constants.%F.c41] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c // CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -84,7 +84,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] { // CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc14_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -111,7 +111,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.58f = fn_decl @F.2 [template = constants.%F.17c] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -137,7 +137,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -158,7 +158,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0: %F.type.9df = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.17c] // CHECK:STDOUT: %F.bound: = bound_method %c.ref, %impl.elem0 // CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%c.ref) // CHECK:STDOUT: %.loc24_15.1: %i32 = value_of_initializer %F.call diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon index f7c5b756c278..4d3907f34490 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon @@ -39,76 +39,76 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %A.type: type = generic_class_type @A [template] // CHECK:STDOUT: %A.generic: %A.type = struct_value () [template] -// CHECK:STDOUT: %A.1: type = class_type @A, @A(%T) [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %A.elem.1: type = unbound_element_type %A.1, %T [symbolic] -// CHECK:STDOUT: %struct_type.n.1: type = struct_type {.n: %T} [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.n.1 [symbolic] +// CHECK:STDOUT: %A.619: type = class_type @A, @A(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %A.elem.78a: type = unbound_element_type %A.619, %T [symbolic] +// CHECK:STDOUT: %struct_type.n.0d6: type = struct_type {.n: %T} [symbolic] +// CHECK:STDOUT: %complete_type.74d: = complete_type_witness %struct_type.n.0d6 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%U)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.995: type = facet_type <@I, @I(%U)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.995 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%U) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %F.type.1c6: type = fn_type @F.1, @I(%U) [symbolic] +// CHECK:STDOUT: %F.7e2: %F.type.1c6 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.0d1: type = assoc_entity_type %I.type.995, %F.type.1c6 [symbolic] +// CHECK:STDOUT: %assoc0.1b8: %F.assoc_type.0d1 = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %V: type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %V.patt: type = symbolic_binding_pattern V, 0 [symbolic] -// CHECK:STDOUT: %A.2: type = class_type @A, @A(%V) [symbolic] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%V)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %I.type.3 [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%V) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [symbolic] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @I.%F.decl [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.%F.decl), @impl(%V) [symbolic] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%V) [symbolic] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [symbolic] -// CHECK:STDOUT: %I.facet: %I.type.2 = facet_value %A.2, %impl_witness.1 [symbolic] -// CHECK:STDOUT: %require_complete.3: = require_complete_type %V [symbolic] -// CHECK:STDOUT: %A.elem.2: type = unbound_element_type %A.2, %V [symbolic] -// CHECK:STDOUT: %struct_type.n.2: type = struct_type {.n: %V} [symbolic] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.n.2 [symbolic] -// CHECK:STDOUT: %require_complete.4: = require_complete_type %A.2 [symbolic] +// CHECK:STDOUT: %A.53d: type = class_type @A, @A(%V) [symbolic] +// CHECK:STDOUT: %I.type.1af: type = facet_type <@I, @I(%V)> [symbolic] +// CHECK:STDOUT: %require_complete.f84: = require_complete_type %I.type.1af [symbolic] +// CHECK:STDOUT: %F.type.a96: type = fn_type @F.1, @I(%V) [symbolic] +// CHECK:STDOUT: %F.0a7: %F.type.a96 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.07c: type = assoc_entity_type %I.type.1af, %F.type.a96 [symbolic] +// CHECK:STDOUT: %assoc0.fa4: %F.assoc_type.07c = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %impl_witness.ed3: = impl_witness (@impl.%F.decl), @impl(%V) [symbolic] +// CHECK:STDOUT: %F.type.bf7: type = fn_type @F.2, @impl(%V) [symbolic] +// CHECK:STDOUT: %F.684: %F.type.bf7 = struct_value () [symbolic] +// CHECK:STDOUT: %I.facet: %I.type.995 = facet_value %A.53d, %impl_witness.ed3 [symbolic] +// CHECK:STDOUT: %require_complete.5da: = require_complete_type %V [symbolic] +// CHECK:STDOUT: %A.elem.49b: type = unbound_element_type %A.53d, %V [symbolic] +// CHECK:STDOUT: %struct_type.n.626: type = struct_type {.n: %V} [symbolic] +// CHECK:STDOUT: %complete_type.a0c: = complete_type_witness %struct_type.n.626 [symbolic] +// CHECK:STDOUT: %require_complete.51f: = require_complete_type %A.53d [symbolic] // CHECK:STDOUT: %W: type = bind_symbolic_name W, 0 [symbolic] // CHECK:STDOUT: %W.patt: type = symbolic_binding_pattern W, 0 [symbolic] -// CHECK:STDOUT: %A.3: type = class_type @A, @A(%W) [symbolic] +// CHECK:STDOUT: %A.6bc: type = class_type @A, @A(%W) [symbolic] // CHECK:STDOUT: %TestGeneric.type: type = fn_type @TestGeneric [template] // CHECK:STDOUT: %TestGeneric: %TestGeneric.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.5: = require_complete_type %W [symbolic] -// CHECK:STDOUT: %A.elem.3: type = unbound_element_type %A.3, %W [symbolic] -// CHECK:STDOUT: %struct_type.n.3: type = struct_type {.n: %W} [symbolic] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n.3 [symbolic] -// CHECK:STDOUT: %require_complete.6: = require_complete_type %A.3 [symbolic] -// CHECK:STDOUT: %I.type.4: type = facet_type <@I, @I(%W)> [symbolic] -// CHECK:STDOUT: %require_complete.7: = require_complete_type %I.type.4 [symbolic] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.1, @I(%W) [symbolic] -// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.3: type = assoc_entity_type %I.type.4, %F.type.4 [symbolic] -// CHECK:STDOUT: %assoc0.3: %F.assoc_type.3 = assoc_entity element0, @I.%F.decl [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.%F.decl), @impl(%W) [symbolic] -// CHECK:STDOUT: %F.type.5: type = fn_type @F.2, @impl(%W) [symbolic] -// CHECK:STDOUT: %F.5: %F.type.5 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.7dc: = require_complete_type %W [symbolic] +// CHECK:STDOUT: %A.elem.6e4: type = unbound_element_type %A.6bc, %W [symbolic] +// CHECK:STDOUT: %struct_type.n.784: type = struct_type {.n: %W} [symbolic] +// CHECK:STDOUT: %complete_type.793: = complete_type_witness %struct_type.n.784 [symbolic] +// CHECK:STDOUT: %require_complete.697: = require_complete_type %A.6bc [symbolic] +// CHECK:STDOUT: %I.type.c20: type = facet_type <@I, @I(%W)> [symbolic] +// CHECK:STDOUT: %require_complete.9c6: = require_complete_type %I.type.c20 [symbolic] +// CHECK:STDOUT: %F.type.6be: type = fn_type @F.1, @I(%W) [symbolic] +// CHECK:STDOUT: %F.c9b: %F.type.6be = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.79f: type = assoc_entity_type %I.type.c20, %F.type.6be [symbolic] +// CHECK:STDOUT: %assoc0.2b5: %F.assoc_type.79f = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %impl_witness.1c5: = impl_witness (@impl.%F.decl), @impl(%W) [symbolic] +// CHECK:STDOUT: %F.type.7b7: type = fn_type @F.2, @impl(%W) [symbolic] +// CHECK:STDOUT: %F.038: %F.type.7b7 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %A.4: type = class_type @A, @A(%empty_struct_type) [template] +// CHECK:STDOUT: %A.e6e: type = class_type @A, @A(%empty_struct_type) [template] // CHECK:STDOUT: %TestSpecific.type: type = fn_type @TestSpecific [template] // CHECK:STDOUT: %TestSpecific: %TestSpecific.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %A.elem.4: type = unbound_element_type %A.4, %empty_struct_type [template] -// CHECK:STDOUT: %struct_type.n.4: type = struct_type {.n: %empty_struct_type} [template] -// CHECK:STDOUT: %complete_type.5: = complete_type_witness %struct_type.n.4 [template] -// CHECK:STDOUT: %I.type.5: type = facet_type <@I, @I(%empty_struct_type)> [template] -// CHECK:STDOUT: %F.type.6: type = fn_type @F.1, @I(%empty_struct_type) [template] -// CHECK:STDOUT: %F.6: %F.type.6 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.4: type = assoc_entity_type %I.type.5, %F.type.6 [template] -// CHECK:STDOUT: %assoc0.4: %F.assoc_type.4 = assoc_entity element0, @I.%F.decl [template] -// CHECK:STDOUT: %complete_type.6: = complete_type_witness %I.type.5 [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.7: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.7: %F.type.7 = struct_value () [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %A.elem.949: type = unbound_element_type %A.e6e, %empty_struct_type [template] +// CHECK:STDOUT: %struct_type.n.91c: type = struct_type {.n: %empty_struct_type} [template] +// CHECK:STDOUT: %complete_type.0a6: = complete_type_witness %struct_type.n.91c [template] +// CHECK:STDOUT: %I.type.263: type = facet_type <@I, @I(%empty_struct_type)> [template] +// CHECK:STDOUT: %F.type.9ae: type = fn_type @F.1, @I(%empty_struct_type) [template] +// CHECK:STDOUT: %F.ce1: %F.type.9ae = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.693: type = assoc_entity_type %I.type.263, %F.type.9ae [template] +// CHECK:STDOUT: %assoc0.aef: %F.assoc_type.693 = assoc_entity element0, @I.%F.decl [template] +// CHECK:STDOUT: %complete_type.db7: = complete_type_witness %I.type.263 [template] +// CHECK:STDOUT: %impl_witness.6cd: = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.0df: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.01e: %F.type.0df = struct_value () [template] // CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -126,7 +126,7 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc2_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_9.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %U.patt.loc6_13.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc6_13.1, runtime_param [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)] // CHECK:STDOUT: } { @@ -139,51 +139,51 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic] // CHECK:STDOUT: %V.ref.loc10_26: type = name_ref V, %V.loc10_14.1 [symbolic = %V.loc10_14.2 (constants.%V)] -// CHECK:STDOUT: %A.loc10_27.1: type = class_type @A, @A(constants.%V) [symbolic = %A.loc10_27.2 (constants.%A.2)] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %A.loc10_27.1: type = class_type @A, @A(constants.%V) [symbolic = %A.loc10_27.2 (constants.%A.53d)] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %V.ref.loc10_34: type = name_ref V, %V.loc10_14.1 [symbolic = %V.loc10_14.2 (constants.%V)] -// CHECK:STDOUT: %I.type.loc10_35.1: type = facet_type <@I, @I(constants.%V)> [symbolic = %I.type.loc10_35.2 (constants.%I.type.3)] +// CHECK:STDOUT: %I.type.loc10_35.1: type = facet_type <@I, @I(constants.%V)> [symbolic = %I.type.loc10_35.2 (constants.%I.type.1af)] // CHECK:STDOUT: %V.param: type = value_param runtime_param // CHECK:STDOUT: %V.loc10_14.1: type = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc10_14.2 (constants.%V)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%V) [symbolic = @impl.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(constants.%V) [symbolic = @impl.%impl_witness (constants.%impl_witness.ed3)] // CHECK:STDOUT: %TestGeneric.decl: %TestGeneric.type = fn_decl @TestGeneric [template = constants.%TestGeneric] { // CHECK:STDOUT: %W.patt.loc16_16.1: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)] // CHECK:STDOUT: %W.param_patt: type = value_param_pattern %W.patt.loc16_16.1, runtime_param [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)] -// CHECK:STDOUT: %a.patt: @TestGeneric.%A.loc16_32.2 (%A.3) = binding_pattern a -// CHECK:STDOUT: %a.param_patt: @TestGeneric.%A.loc16_32.2 (%A.3) = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: @TestGeneric.%A.loc16_32.2 (%A.6bc) = binding_pattern a +// CHECK:STDOUT: %a.param_patt: @TestGeneric.%A.loc16_32.2 (%A.6bc) = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @TestGeneric.%W.loc16_16.2 (%W) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @TestGeneric.%W.loc16_16.2 (%W) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %W.ref.loc16_38: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)] // CHECK:STDOUT: %W.param: type = value_param runtime_param // CHECK:STDOUT: %W.loc16_16.1: type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc16_16.2 (constants.%W)] -// CHECK:STDOUT: %a.param: @TestGeneric.%A.loc16_32.2 (%A.3) = value_param runtime_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %A.loc16_32.1 [symbolic = %A.loc16_32.2 (constants.%A.3)] { +// CHECK:STDOUT: %a.param: @TestGeneric.%A.loc16_32.2 (%A.6bc) = value_param runtime_param0 +// CHECK:STDOUT: %.loc16: type = splice_block %A.loc16_32.1 [symbolic = %A.loc16_32.2 (constants.%A.6bc)] { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic] // CHECK:STDOUT: %W.ref.loc16_31: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)] -// CHECK:STDOUT: %A.loc16_32.1: type = class_type @A, @A(constants.%W) [symbolic = %A.loc16_32.2 (constants.%A.3)] +// CHECK:STDOUT: %A.loc16_32.1: type = class_type @A, @A(constants.%W) [symbolic = %A.loc16_32.2 (constants.%A.6bc)] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: @TestGeneric.%A.loc16_32.2 (%A.3) = bind_name a, %a.param +// CHECK:STDOUT: %a: @TestGeneric.%A.loc16_32.2 (%A.6bc) = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref @TestGeneric.%W.loc16_16.2 (%W) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @TestGeneric.%W.loc16_16.2 (%W) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestSpecific.decl: %TestSpecific.type = fn_decl @TestSpecific [template = constants.%TestSpecific] { -// CHECK:STDOUT: %a.patt: %A.4 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %A.4 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %A.e6e = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %A.e6e = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc20_31.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc20_31.2: type = converted %.loc20_31.1, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %a.param: %A.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc20_24.1: type = splice_block %A [template = constants.%A.4] { +// CHECK:STDOUT: %a.param: %A.e6e = value_param runtime_param0 +// CHECK:STDOUT: %.loc20_24.1: type = splice_block %A [template = constants.%A.e6e] { // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic] // CHECK:STDOUT: %.loc20_23: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc20_24.2: type = converted %.loc20_23, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%empty_struct_type) [template = constants.%A.4] +// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%empty_struct_type) [template = constants.%A.e6e] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %A.4 = bind_name a, %a.param +// CHECK:STDOUT: %a: %A.e6e = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param1 // CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param // CHECK:STDOUT: } @@ -194,16 +194,16 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.patt.loc6_13.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc6_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%U.loc6_13.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc7_26.2: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc7_26.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc6_13.2)> [symbolic = %I.type (constants.%I.type.995)] +// CHECK:STDOUT: %Self.2: %I.type.995 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%U.loc6_13.2) [symbolic = %F.type (constants.%F.type.1c6)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.1c6) = struct_value () [symbolic = %F (constants.%F.7e2)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.995), @I.%F.type (%F.type.1c6) [symbolic = %F.assoc_type (constants.%F.assoc_type.0d1)] +// CHECK:STDOUT: %assoc0.loc7_26.2: @I.%F.assoc_type (%F.assoc_type.0d1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc7_26.2 (constants.%assoc0.1b8)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @I.%F (constants.%F.1)] { +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.995) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1c6) = fn_decl @F.1 [symbolic = @I.%F (constants.%F.7e2)] { // CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc7_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc7_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.1.%U (%U) = return_slot_pattern @@ -212,8 +212,8 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.ref: type = name_ref U, @I.%U.loc6_13.1 [symbolic = %U (constants.%U)] // CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc7_14.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.3 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc7_14.2: @F.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%U) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @F.1.%I.type (%I.type.2) = name_ref Self, %.loc7_14.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc7_14.2: @F.1.%I.type (%I.type.995) = specific_constant @I.%Self.1, @I(constants.%U) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @F.1.%I.type (%I.type.995) = name_ref Self, %.loc7_14.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc7_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc7_14.3: type = converted %Self.ref, %Self.as_type.loc7_14.2 [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -221,7 +221,7 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %return.param: ref @F.1.%U (%U) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.1.%U (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc7_26.1: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc7_26.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc7_26.1: @I.%F.assoc_type (%F.assoc_type.0d1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc7_26.2 (constants.%assoc0.1b8)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -233,26 +233,26 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: generic impl @impl(%V.loc10_14.1: type) { // CHECK:STDOUT: %V.loc10_14.2: type = bind_symbolic_name V, 0 [symbolic = %V.loc10_14.2 (constants.%V)] // CHECK:STDOUT: %V.patt.loc10_14.2: type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc10_14.2 (constants.%V.patt)] -// CHECK:STDOUT: %A.loc10_27.2: type = class_type @A, @A(%V.loc10_14.2) [symbolic = %A.loc10_27.2 (constants.%A.2)] -// CHECK:STDOUT: %I.type.loc10_35.2: type = facet_type <@I, @I(%V.loc10_14.2)> [symbolic = %I.type.loc10_35.2 (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%I.type.loc10_35.2 (%I.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%V.loc10_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %A.loc10_27.2: type = class_type @A, @A(%V.loc10_14.2) [symbolic = %A.loc10_27.2 (constants.%A.53d)] +// CHECK:STDOUT: %I.type.loc10_35.2: type = facet_type <@I, @I(%V.loc10_14.2)> [symbolic = %I.type.loc10_35.2 (constants.%I.type.1af)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%I.type.loc10_35.2 (%I.type.1af) [symbolic = %require_complete (constants.%require_complete.f84)] +// CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%V.loc10_14.2) [symbolic = %impl_witness (constants.%impl_witness.ed3)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%V.loc10_14.2) [symbolic = %F.type (constants.%F.type.3)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.3) = struct_value () [symbolic = %F (constants.%F.3)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%V.loc10_14.2) [symbolic = %F.type (constants.%F.type.bf7)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.bf7) = struct_value () [symbolic = %F (constants.%F.684)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %A.loc10_27.1 as %I.type.loc10_35.1 { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.3) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.3)] { -// CHECK:STDOUT: %self.patt: @F.2.%A (%A.2) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @F.2.%A (%A.2) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.bf7) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.684)] { +// CHECK:STDOUT: %self.patt: @F.2.%A (%A.53d) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @F.2.%A (%A.53d) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.2.%V (%V) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.2.%V (%V) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %V.ref: type = name_ref V, @impl.%V.loc10_14.1 [symbolic = %V (constants.%V)] -// CHECK:STDOUT: %self.param: @F.2.%A (%A.2) = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%A.loc10_27.1 [symbolic = %A (constants.%A.2)] -// CHECK:STDOUT: %self: @F.2.%A (%A.2) = bind_name self, %self.param +// CHECK:STDOUT: %self.param: @F.2.%A (%A.53d) = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%A.loc10_27.1 [symbolic = %A (constants.%A.53d)] +// CHECK:STDOUT: %self: @F.2.%A (%A.53d) = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref @F.2.%V (%V) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @F.2.%V (%V) = return_slot %return.param // CHECK:STDOUT: } @@ -268,27 +268,27 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt.loc2_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @A.%T.loc2_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc2_9.2) [symbolic = %A (constants.%A.1)] -// CHECK:STDOUT: %A.elem: type = unbound_element_type @A.%A (%A.1), @A.%T.loc2_9.2 (%T) [symbolic = %A.elem (constants.%A.elem.1)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @A.%T.loc2_9.2 (%T)} [symbolic = %struct_type.n (constants.%struct_type.n.1)] -// CHECK:STDOUT: %complete_type.loc4_1.2: = complete_type_witness @A.%struct_type.n (%struct_type.n.1) [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @A.%T.loc2_9.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %A: type = class_type @A, @A(%T.loc2_9.2) [symbolic = %A (constants.%A.619)] +// CHECK:STDOUT: %A.elem: type = unbound_element_type @A.%A (%A.619), @A.%T.loc2_9.2 (%T) [symbolic = %A.elem (constants.%A.elem.78a)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @A.%T.loc2_9.2 (%T)} [symbolic = %struct_type.n (constants.%struct_type.n.0d6)] +// CHECK:STDOUT: %complete_type.loc4_1.2: = complete_type_witness @A.%struct_type.n (%struct_type.n.0d6) [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.74d)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %.loc3: @A.%A.elem (%A.elem.1) = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type.loc4_1.1: = complete_type_witness %struct_type.n.1 [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.1)] +// CHECK:STDOUT: %.loc3: @A.%A.elem (%A.elem.78a) = field_decl n, element0 [template] +// CHECK:STDOUT: %complete_type.loc4_1.1: = complete_type_witness %struct_type.n.0d6 [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.74d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.1 +// CHECK:STDOUT: .Self = constants.%A.619 // CHECK:STDOUT: .n = %.loc3 // CHECK:STDOUT: complete_type_witness = %complete_type.loc4_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@I.%U.loc6_13.1: type, @I.%Self.1: @I.%I.type (%I.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@I.%U.loc6_13.1: type, @I.%Self.1: @I.%I.type (%I.type.995)) { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic = %U (constants.%U)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U)> [symbolic = %I.type (constants.%I.type.995)] +// CHECK:STDOUT: %Self: %I.type.995 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc7_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc7_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc7_14.1 (%Self.as_type)]() -> @F.1.%U (%U); @@ -296,17 +296,17 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.2(@impl.%V.loc10_14.1: type) { // CHECK:STDOUT: %V: type = bind_symbolic_name V, 0 [symbolic = %V (constants.%V)] -// CHECK:STDOUT: %A: type = class_type @A, @A(%V) [symbolic = %A (constants.%A.2)] +// CHECK:STDOUT: %A: type = class_type @A, @A(%V) [symbolic = %A (constants.%A.53d)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_22: = require_complete_type @F.2.%V (%V) [symbolic = %require_complete.loc11_22 (constants.%require_complete.3)] -// CHECK:STDOUT: %require_complete.loc11_12: = require_complete_type @F.2.%A (%A.2) [symbolic = %require_complete.loc11_12 (constants.%require_complete.4)] -// CHECK:STDOUT: %A.elem: type = unbound_element_type @F.2.%A (%A.2), @F.2.%V (%V) [symbolic = %A.elem (constants.%A.elem.2)] +// CHECK:STDOUT: %require_complete.loc11_22: = require_complete_type @F.2.%V (%V) [symbolic = %require_complete.loc11_22 (constants.%require_complete.5da)] +// CHECK:STDOUT: %require_complete.loc11_12: = require_complete_type @F.2.%A (%A.53d) [symbolic = %require_complete.loc11_12 (constants.%require_complete.51f)] +// CHECK:STDOUT: %A.elem: type = unbound_element_type @F.2.%A (%A.53d), @F.2.%V (%V) [symbolic = %A.elem (constants.%A.elem.49b)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @F.2.%A (%A.2)]() -> @F.2.%V (%V) { +// CHECK:STDOUT: fn[%self.param_patt: @F.2.%A (%A.53d)]() -> @F.2.%V (%V) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: @F.2.%A (%A.2) = name_ref self, %self -// CHECK:STDOUT: %n.ref: @F.2.%A.elem (%A.elem.2) = name_ref n, @A.%.loc3 [template = @A.%.loc3] +// CHECK:STDOUT: %self.ref: @F.2.%A (%A.53d) = name_ref self, %self +// CHECK:STDOUT: %n.ref: @F.2.%A.elem (%A.elem.49b) = name_ref n, @A.%.loc3 [template = @A.%.loc3] // CHECK:STDOUT: %.loc12_16.1: ref @F.2.%V (%V) = class_element_access %self.ref, element0 // CHECK:STDOUT: %.loc12_16.2: @F.2.%V (%V) = bind_value %.loc12_16.1 // CHECK:STDOUT: return %.loc12_16.2 @@ -316,28 +316,28 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: generic fn @TestGeneric(%W.loc16_16.1: type) { // CHECK:STDOUT: %W.loc16_16.2: type = bind_symbolic_name W, 0 [symbolic = %W.loc16_16.2 (constants.%W)] // CHECK:STDOUT: %W.patt.loc16_16.2: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)] -// CHECK:STDOUT: %A.loc16_32.2: type = class_type @A, @A(%W.loc16_16.2) [symbolic = %A.loc16_32.2 (constants.%A.3)] +// CHECK:STDOUT: %A.loc16_32.2: type = class_type @A, @A(%W.loc16_16.2) [symbolic = %A.loc16_32.2 (constants.%A.6bc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc16_35: = require_complete_type @TestGeneric.%W.loc16_16.2 (%W) [symbolic = %require_complete.loc16_35 (constants.%require_complete.5)] -// CHECK:STDOUT: %require_complete.loc16_27: = require_complete_type @TestGeneric.%A.loc16_32.2 (%A.3) [symbolic = %require_complete.loc16_27 (constants.%require_complete.6)] -// CHECK:STDOUT: %I.type.loc17_16.2: type = facet_type <@I, @I(%W.loc16_16.2)> [symbolic = %I.type.loc17_16.2 (constants.%I.type.4)] -// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @TestGeneric.%I.type.loc17_16.2 (%I.type.4) [symbolic = %require_complete.loc17 (constants.%require_complete.7)] -// CHECK:STDOUT: %F.type.loc17_17: type = fn_type @F.1, @I(%W.loc16_16.2) [symbolic = %F.type.loc17_17 (constants.%F.type.4)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @TestGeneric.%I.type.loc17_16.2 (%I.type.4), @TestGeneric.%F.type.loc17_17 (%F.type.4) [symbolic = %F.assoc_type (constants.%F.assoc_type.3)] -// CHECK:STDOUT: %assoc0: @TestGeneric.%F.assoc_type (%F.assoc_type.3) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %F.type.loc17_11: type = fn_type @F.2, @impl(%W.loc16_16.2) [symbolic = %F.type.loc17_11 (constants.%F.type.5)] -// CHECK:STDOUT: %F: @TestGeneric.%F.type.loc17_11 (%F.type.5) = struct_value () [symbolic = %F (constants.%F.5)] +// CHECK:STDOUT: %require_complete.loc16_35: = require_complete_type @TestGeneric.%W.loc16_16.2 (%W) [symbolic = %require_complete.loc16_35 (constants.%require_complete.7dc)] +// CHECK:STDOUT: %require_complete.loc16_27: = require_complete_type @TestGeneric.%A.loc16_32.2 (%A.6bc) [symbolic = %require_complete.loc16_27 (constants.%require_complete.697)] +// CHECK:STDOUT: %I.type.loc17_16.2: type = facet_type <@I, @I(%W.loc16_16.2)> [symbolic = %I.type.loc17_16.2 (constants.%I.type.c20)] +// CHECK:STDOUT: %require_complete.loc17: = require_complete_type @TestGeneric.%I.type.loc17_16.2 (%I.type.c20) [symbolic = %require_complete.loc17 (constants.%require_complete.9c6)] +// CHECK:STDOUT: %F.type.loc17_17: type = fn_type @F.1, @I(%W.loc16_16.2) [symbolic = %F.type.loc17_17 (constants.%F.type.6be)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @TestGeneric.%I.type.loc17_16.2 (%I.type.c20), @TestGeneric.%F.type.loc17_17 (%F.type.6be) [symbolic = %F.assoc_type (constants.%F.assoc_type.79f)] +// CHECK:STDOUT: %assoc0: @TestGeneric.%F.assoc_type (%F.assoc_type.79f) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.2b5)] +// CHECK:STDOUT: %F.type.loc17_11: type = fn_type @F.2, @impl(%W.loc16_16.2) [symbolic = %F.type.loc17_11 (constants.%F.type.7b7)] +// CHECK:STDOUT: %F: @TestGeneric.%F.type.loc17_11 (%F.type.7b7) = struct_value () [symbolic = %F (constants.%F.038)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%W.param_patt: type](%a.param_patt: @TestGeneric.%A.loc16_32.2 (%A.3)) -> @TestGeneric.%W.loc16_16.2 (%W) { +// CHECK:STDOUT: fn[%W.param_patt: type](%a.param_patt: @TestGeneric.%A.loc16_32.2 (%A.6bc)) -> @TestGeneric.%W.loc16_16.2 (%W) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: @TestGeneric.%A.loc16_32.2 (%A.3) = name_ref a, %a -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %a.ref: @TestGeneric.%A.loc16_32.2 (%A.6bc) = name_ref a, %a +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %W.ref.loc17: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)] -// CHECK:STDOUT: %I.type.loc17_16.1: type = facet_type <@I, @I(constants.%W)> [symbolic = %I.type.loc17_16.2 (constants.%I.type.4)] -// CHECK:STDOUT: %.loc17_17: @TestGeneric.%F.assoc_type (%F.assoc_type.3) = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%W) [symbolic = %assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %F.ref: @TestGeneric.%F.assoc_type (%F.assoc_type.3) = name_ref F, %.loc17_17 [symbolic = %assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %impl.elem0: @TestGeneric.%F.type.loc17_17 (%F.type.4) = impl_witness_access constants.%impl_witness.2, element0 [symbolic = %F (constants.%F.5)] +// CHECK:STDOUT: %I.type.loc17_16.1: type = facet_type <@I, @I(constants.%W)> [symbolic = %I.type.loc17_16.2 (constants.%I.type.c20)] +// CHECK:STDOUT: %.loc17_17: @TestGeneric.%F.assoc_type (%F.assoc_type.79f) = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%W) [symbolic = %assoc0 (constants.%assoc0.2b5)] +// CHECK:STDOUT: %F.ref: @TestGeneric.%F.assoc_type (%F.assoc_type.79f) = name_ref F, %.loc17_17 [symbolic = %assoc0 (constants.%assoc0.2b5)] +// CHECK:STDOUT: %impl.elem0: @TestGeneric.%F.type.loc17_17 (%F.type.6be) = impl_witness_access constants.%impl_witness.1c5, element0 [symbolic = %F (constants.%F.038)] // CHECK:STDOUT: %F.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %F.specific_fn: = specific_function %F.bound, @F.2(constants.%W) // CHECK:STDOUT: %F.call: init @TestGeneric.%W.loc16_16.2 (%W) = call %F.specific_fn(%a.ref) @@ -347,16 +347,16 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestSpecific(%a.param_patt: %A.4) -> %empty_struct_type { +// CHECK:STDOUT: fn @TestSpecific(%a.param_patt: %A.e6e) -> %empty_struct_type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %A.4 = name_ref a, %a -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %a.ref: %A.e6e = name_ref a, %a +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %.loc21_16: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc21_17: type = converted %.loc21_16, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [template = constants.%I.type.5] -// CHECK:STDOUT: %.loc21_18: %F.assoc_type.4 = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%empty_struct_type) [template = constants.%assoc0.4] -// CHECK:STDOUT: %F.ref: %F.assoc_type.4 = name_ref F, %.loc21_18 [template = constants.%assoc0.4] -// CHECK:STDOUT: %impl.elem0: %F.type.6 = impl_witness_access constants.%impl_witness.3, element0 [template = constants.%F.7] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [template = constants.%I.type.263] +// CHECK:STDOUT: %.loc21_18: %F.assoc_type.693 = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%empty_struct_type) [template = constants.%assoc0.aef] +// CHECK:STDOUT: %F.ref: %F.assoc_type.693 = name_ref F, %.loc21_18 [template = constants.%assoc0.aef] +// CHECK:STDOUT: %impl.elem0: %F.type.9ae = impl_witness_access constants.%impl_witness.6cd, element0 [template = constants.%F.01e] // CHECK:STDOUT: %F.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %F.specific_fn: = specific_function %F.bound, @F.2(constants.%empty_struct_type) // CHECK:STDOUT: %F.call: init %empty_struct_type = call %F.specific_fn(%a.ref) @@ -381,7 +381,7 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%U, constants.%Self) { // CHECK:STDOUT: %U => constants.%U -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.995 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%Self.as_type // CHECK:STDOUT: } @@ -395,11 +395,11 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt.loc2_9.2 => constants.%V // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.3 -// CHECK:STDOUT: %A => constants.%A.2 -// CHECK:STDOUT: %A.elem => constants.%A.elem.2 -// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.2 -// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%require_complete.5da +// CHECK:STDOUT: %A => constants.%A.53d +// CHECK:STDOUT: %A.elem => constants.%A.elem.49b +// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.626 +// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.a0c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%V) { @@ -407,25 +407,25 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.patt.loc6_13.2 => constants.%V // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.1af // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.a96 +// CHECK:STDOUT: %F => constants.%F.0a7 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.07c +// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.fa4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%V) { // CHECK:STDOUT: %V.loc10_14.2 => constants.%V // CHECK:STDOUT: %V.patt.loc10_14.2 => constants.%V -// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.2 -// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.53d +// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.1af +// CHECK:STDOUT: %require_complete => constants.%require_complete.f84 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.ed3 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.bf7 +// CHECK:STDOUT: %F => constants.%F.684 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(@impl.%V.loc10_14.2) {} @@ -436,16 +436,16 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%V) { // CHECK:STDOUT: %V => constants.%V -// CHECK:STDOUT: %A => constants.%A.2 +// CHECK:STDOUT: %A => constants.%A.53d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(@F.2.%V) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%V, constants.%I.facet) { // CHECK:STDOUT: %U => constants.%V -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.1af // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%A.2 +// CHECK:STDOUT: %Self.as_type.loc7_14.1 => constants.%A.53d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(constants.%W) { @@ -453,17 +453,17 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt.loc2_9.2 => constants.%W // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.5 -// CHECK:STDOUT: %A => constants.%A.3 -// CHECK:STDOUT: %A.elem => constants.%A.elem.3 -// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.3 -// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.3 +// CHECK:STDOUT: %require_complete => constants.%require_complete.7dc +// CHECK:STDOUT: %A => constants.%A.6bc +// CHECK:STDOUT: %A.elem => constants.%A.elem.6e4 +// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.784 +// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.793 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @TestGeneric(constants.%W) { // CHECK:STDOUT: %W.loc16_16.2 => constants.%W // CHECK:STDOUT: %W.patt.loc16_16.2 => constants.%W -// CHECK:STDOUT: %A.loc16_32.2 => constants.%A.3 +// CHECK:STDOUT: %A.loc16_32.2 => constants.%A.6bc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @A(@TestGeneric.%W.loc16_16.2) {} @@ -473,35 +473,35 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.patt.loc6_13.2 => constants.%W // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.4 +// CHECK:STDOUT: %I.type => constants.%I.type.c20 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.4 -// CHECK:STDOUT: %F => constants.%F.4 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.3 -// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.3 +// CHECK:STDOUT: %F.type => constants.%F.type.6be +// CHECK:STDOUT: %F => constants.%F.c9b +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.79f +// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.2b5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%W) { // CHECK:STDOUT: %V.loc10_14.2 => constants.%W // CHECK:STDOUT: %V.patt.loc10_14.2 => constants.%W -// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.3 -// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.4 -// CHECK:STDOUT: %require_complete => constants.%require_complete.7 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.6bc +// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.c20 +// CHECK:STDOUT: %require_complete => constants.%require_complete.9c6 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1c5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.5 -// CHECK:STDOUT: %F => constants.%F.5 +// CHECK:STDOUT: %F.type => constants.%F.type.7b7 +// CHECK:STDOUT: %F => constants.%F.038 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%W) { // CHECK:STDOUT: %V => constants.%W -// CHECK:STDOUT: %A => constants.%A.3 +// CHECK:STDOUT: %A => constants.%A.6bc // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_22 => constants.%require_complete.5 -// CHECK:STDOUT: %require_complete.loc11_12 => constants.%require_complete.6 -// CHECK:STDOUT: %A.elem => constants.%A.elem.3 +// CHECK:STDOUT: %require_complete.loc11_22 => constants.%require_complete.7dc +// CHECK:STDOUT: %require_complete.loc11_12 => constants.%require_complete.697 +// CHECK:STDOUT: %A.elem => constants.%A.elem.6e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@TestGeneric.%W.loc16_16.2) {} @@ -513,11 +513,11 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %T.patt.loc2_9.2 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.4 -// CHECK:STDOUT: %A => constants.%A.4 -// CHECK:STDOUT: %A.elem => constants.%A.elem.4 -// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.4 -// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.5 +// CHECK:STDOUT: %require_complete => constants.%complete_type.357 +// CHECK:STDOUT: %A => constants.%A.e6e +// CHECK:STDOUT: %A.elem => constants.%A.elem.949 +// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.91c +// CHECK:STDOUT: %complete_type.loc4_1.2 => constants.%complete_type.0a6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%empty_struct_type) { @@ -525,34 +525,34 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %U.patt.loc6_13.2 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.5 +// CHECK:STDOUT: %I.type => constants.%I.type.263 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.6 -// CHECK:STDOUT: %F => constants.%F.6 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.4 -// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.4 +// CHECK:STDOUT: %F.type => constants.%F.type.9ae +// CHECK:STDOUT: %F => constants.%F.ce1 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.693 +// CHECK:STDOUT: %assoc0.loc7_26.2 => constants.%assoc0.aef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %V.loc10_14.2 => constants.%empty_struct_type // CHECK:STDOUT: %V.patt.loc10_14.2 => constants.%empty_struct_type -// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.4 -// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.5 -// CHECK:STDOUT: %require_complete => constants.%complete_type.6 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.3 +// CHECK:STDOUT: %A.loc10_27.2 => constants.%A.e6e +// CHECK:STDOUT: %I.type.loc10_35.2 => constants.%I.type.263 +// CHECK:STDOUT: %require_complete => constants.%complete_type.db7 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.6cd // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.7 -// CHECK:STDOUT: %F => constants.%F.7 +// CHECK:STDOUT: %F.type => constants.%F.type.0df +// CHECK:STDOUT: %F => constants.%F.01e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { // CHECK:STDOUT: %V => constants.%empty_struct_type -// CHECK:STDOUT: %A => constants.%A.4 +// CHECK:STDOUT: %A => constants.%A.e6e // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc11_22 => constants.%complete_type.4 -// CHECK:STDOUT: %require_complete.loc11_12 => constants.%complete_type.5 -// CHECK:STDOUT: %A.elem => constants.%A.elem.4 +// CHECK:STDOUT: %require_complete.loc11_22 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc11_12 => constants.%complete_type.0a6 +// CHECK:STDOUT: %A.elem => constants.%A.elem.949 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon index bf688e029749..8362a53491f6 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon @@ -194,16 +194,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.2e0: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.89c: %F.type.2e0 = struct_value () [template] // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,7 +223,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -233,7 +233,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.2e0 = fn_decl @F.2 [template = constants.%F.89c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -266,46 +266,46 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template] -// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.1 [template] +// CHECK:STDOUT: %Self.4db: %HasG.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %G.type.6fe: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.0ea: %G.type.6fe = struct_value () [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.6fe [template] // CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, @HasG.%G.decl [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%G.decl) [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] -// CHECK:STDOUT: %HasG.facet.1: %HasG.type = facet_value %C, %impl_witness.1 [template] +// CHECK:STDOUT: %impl_witness.58b: = impl_witness (@impl.1.%G.decl) [template] +// CHECK:STDOUT: %G.type.407: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.b4a: %G.type.407 = struct_value () [template] +// CHECK:STDOUT: %HasG.facet.fd4: %HasG.type = facet_value %C, %impl_witness.58b [template] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] -// CHECK:STDOUT: %Self.2: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %D, %impl_witness.2 [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (@impl.3.%G.decl) [template] -// CHECK:STDOUT: %G.type.3: type = fn_type @G.3 [template] -// CHECK:STDOUT: %G.3: %G.type.3 = struct_value () [template] -// CHECK:STDOUT: %HasG.facet.2: %HasG.type = facet_value %D, %impl_witness.3 [template] +// CHECK:STDOUT: %Self.c46: %HasF.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.d75: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.3ac: %F.type.d75 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.ea3: = impl_witness (@impl.2.%F.decl) [template] +// CHECK:STDOUT: %F.type.e3c: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.66f: %F.type.e3c = struct_value () [template] +// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %D, %impl_witness.ea3 [template] +// CHECK:STDOUT: %impl_witness.88f: = impl_witness (@impl.3.%G.decl) [template] +// CHECK:STDOUT: %G.type.854: type = fn_type @G.3 [template] +// CHECK:STDOUT: %G.ae6: %G.type.854 = struct_value () [template] +// CHECK:STDOUT: %HasG.facet.bec: %HasG.type = facet_value %D, %impl_witness.88f [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 -// CHECK:STDOUT: .HasF = %import_ref.4 +// CHECK:STDOUT: .C = %import_ref.0ac +// CHECK:STDOUT: .HasF = %import_ref.2d0 // CHECK:STDOUT: import PackageA//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageA//default, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageA//default, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageA//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref PackageA//default, loc5_9, unloaded -// CHECK:STDOUT: %import_ref.7: %F.type.1 = import_ref PackageA//default, F, loaded [template = constants.%F.1] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref PackageA//default, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref PackageA//default, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2d0: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.28d = import_ref PackageA//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.cc4 = import_ref PackageA//default, loc5_9, unloaded +// CHECK:STDOUT: %import_ref.ab3: %F.type.d75 = import_ref PackageA//default, F, loaded [template = constants.%F.3ac] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -319,26 +319,26 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [template = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%G.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%G.decl) [template = constants.%impl_witness.58b] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.4 [template = constants.%HasF.type] +// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.2d0 [template = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.ea3] // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [template = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.3.%G.decl) [template = constants.%impl_witness.3] +// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.3.%G.decl) [template = constants.%impl_witness.88f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG { -// CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] {} {} +// CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.4db] +// CHECK:STDOUT: %G.decl: %G.type.6fe = fn_decl @G.1 [template = constants.%G.0ea] {} {} // CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -349,13 +349,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.28d +// CHECK:STDOUT: .F = imports.%import_ref.cc4 +// CHECK:STDOUT: witness = (imports.%import_ref.ab3) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] {} {} +// CHECK:STDOUT: %G.decl: %G.type.407 = fn_decl @G.2 [template = constants.%G.b4a] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .G = %G.decl @@ -363,7 +363,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %D.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.e3c = fn_decl @F.2 [template = constants.%F.66f] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -371,7 +371,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.3: %D.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.3 = fn_decl @G.3 [template = constants.%G.3] {} {} +// CHECK:STDOUT: %G.decl: %G.type.854 = fn_decl @G.3 [template = constants.%G.ae6] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .G = %G.decl @@ -388,8 +388,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G.1(@HasG.%Self: %HasG.type) { @@ -402,7 +402,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%Self.2: %HasF.type) [from "package_a.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%Self.c46: %HasF.type) [from "package_a.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -417,15 +417,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @G.1(constants.%Self.4db) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%HasG.facet.1) {} +// CHECK:STDOUT: specific @G.1(constants.%HasG.facet.fd4) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.c46) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%HasF.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%HasG.facet.2) {} +// CHECK:STDOUT: specific @G.1(constants.%HasG.facet.bec) {} // CHECK:STDOUT: // CHECK:STDOUT: --- use_cf.carbon // CHECK:STDOUT: @@ -438,30 +438,30 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %TestCF: %TestCF.type = struct_value () [template] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.12) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.d75: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.d75 [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.4a0 [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.ac3) [template] +// CHECK:STDOUT: %F.type.c5e: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.8d0: %F.type.c5e = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 -// CHECK:STDOUT: .HasF = %import_ref.4 +// CHECK:STDOUT: .C = %import_ref.0ac +// CHECK:STDOUT: .HasF = %import_ref.2d0 // CHECK:STDOUT: import PackageA//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageA//default, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageA//default, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageA//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %import_ref.9: = import_ref PackageA//default, loc11_16, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.10: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.11: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref PackageA//default, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref PackageA//default, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2d0: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.28d = import_ref PackageA//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b67: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.64f = import_ref PackageA//default, F, unloaded +// CHECK:STDOUT: %import_ref.7a7: = import_ref PackageA//default, loc11_16, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.3de: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e33: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -477,7 +477,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %c.param: %C = value_param runtime_param0 // CHECK:STDOUT: %.loc6: type = splice_block %C.ref [template = constants.%C] { // CHECK:STDOUT: %PackageA.ref.loc6: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } @@ -485,29 +485,29 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.28d +// CHECK:STDOUT: .F = imports.%import_ref.b67 +// CHECK:STDOUT: witness = (imports.%import_ref.64f) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.10 as imports.%import_ref.11 [from "package_a.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.3de as imports.%import_ref.e33 [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.7a7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCF(%c.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %PackageA.ref.loc7: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.4 [template = constants.%HasF.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.2d0 [template = constants.%HasF.type] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.b67 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %F.type.d75 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.8d0] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -531,50 +531,50 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestDF: %TestDF.type = struct_value () [template] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] -// CHECK:STDOUT: %Self.1: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] +// CHECK:STDOUT: %Self.c46: %HasF.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.d75: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.d75 [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.4a0 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.26) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.e33a) [template] +// CHECK:STDOUT: %F.type.975: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.ec0: %F.type.975 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [template] { -// CHECK:STDOUT: .HasF = %import_ref.4 +// CHECK:STDOUT: .HasF = %import_ref.2d0 // CHECK:STDOUT: import PackageA//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageB: = namespace file.%PackageB.import, [template] { -// CHECK:STDOUT: .D = %import_ref.1 +// CHECK:STDOUT: .D = %import_ref.275 // CHECK:STDOUT: import PackageB//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageB//default, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageB//default, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageA//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref PackageA//default, loc11_16, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.11 = import_ref PackageA//default, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.13: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.14 = import_ref PackageB//default, loc13_25, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref PackageB//default, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref PackageB//default, loc7_9, unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %import_ref.18: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.19: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] -// CHECK:STDOUT: %import_ref.20: = import_ref PackageB//default, loc18_25, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.21: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.22: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.23 = import_ref PackageB//default, loc23_16, unloaded -// CHECK:STDOUT: %import_ref.24: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.25: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.275: type = import_ref PackageB//default, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref PackageB//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2d0: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.28d = import_ref PackageA//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b67: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.64f = import_ref PackageA//default, F, unloaded +// CHECK:STDOUT: %import_ref.487 = import_ref PackageA//default, loc11_16, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref PackageA//default, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3de: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e338: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.f91 = import_ref PackageB//default, loc13_25, unloaded +// CHECK:STDOUT: %import_ref.f3e = import_ref PackageB//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.a79 = import_ref PackageB//default, loc7_9, unloaded +// CHECK:STDOUT: %import_ref.f03 = import_ref PackageB//default, G, unloaded +// CHECK:STDOUT: %import_ref.4a6: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e527c5.1: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.dc8: = import_ref PackageB//default, loc18_25, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.3b992b.1: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.9e1: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.ebd = import_ref PackageB//default, loc23_16, unloaded +// CHECK:STDOUT: %import_ref.3b992b.2: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.e527c5.2: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -592,7 +592,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %d.param: %D = value_param runtime_param0 // CHECK:STDOUT: %.loc7: type = splice_block %D.ref [template = constants.%D] { // CHECK:STDOUT: %PackageB.ref: = name_ref PackageB, imports.%PackageB [template = imports.%PackageB] -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] // CHECK:STDOUT: } // CHECK:STDOUT: %d: %D = bind_name d, %d.param // CHECK:STDOUT: } @@ -600,69 +600,69 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.28d +// CHECK:STDOUT: .F = imports.%import_ref.b67 +// CHECK:STDOUT: witness = (imports.%import_ref.64f) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.15 -// CHECK:STDOUT: .G = imports.%import_ref.16 -// CHECK:STDOUT: witness = (imports.%import_ref.17) +// CHECK:STDOUT: .Self = imports.%import_ref.f3e +// CHECK:STDOUT: .G = imports.%import_ref.a79 +// CHECK:STDOUT: witness = (imports.%import_ref.f03) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.12 as imports.%import_ref.13 [from "package_a.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.3de as imports.%import_ref.e338 [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.487 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.2: imports.%import_ref.18 as imports.%import_ref.19 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.2: imports.%import_ref.4a6 as imports.%import_ref.e527c5.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.14 +// CHECK:STDOUT: witness = imports.%import_ref.f91 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.3: imports.%import_ref.21 as imports.%import_ref.22 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.3: imports.%import_ref.3b992b.1 as imports.%import_ref.9e1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.20 +// CHECK:STDOUT: witness = imports.%import_ref.dc8 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.4: imports.%import_ref.24 as imports.%import_ref.25 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.4: imports.%import_ref.3b992b.2 as imports.%import_ref.e527c5.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.23 +// CHECK:STDOUT: witness = imports.%import_ref.ebd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDF(%d.param_patt: %D) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %D = name_ref d, %d // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.4 [template = constants.%HasF.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, imports.%import_ref.2d0 [template = constants.%HasF.type] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.b67 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %F.type.d75 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.ec0] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%Self.1: %HasF.type) [from "package_a.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%Self.c46: %HasF.type) [from "package_a.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2() [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.c46) {} // CHECK:STDOUT: // CHECK:STDOUT: --- use_cg.carbon // CHECK:STDOUT: @@ -674,50 +674,50 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestCG: %TestCG.type = struct_value () [template] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template] -// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.1 [template] -// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] +// CHECK:STDOUT: %Self.102: %HasG.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %G.type.813: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.813 [template] +// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, imports.%import_ref.5b2 [template] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] // CHECK:STDOUT: %D: type = class_type @D [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.26) [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.a5c) [template] +// CHECK:STDOUT: %G.type.6c1: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.b51: %G.type.6c1 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import PackageA//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageB: = namespace file.%PackageB.import, [template] { -// CHECK:STDOUT: .HasG = %import_ref.4 +// CHECK:STDOUT: .HasG = %import_ref.9db // CHECK:STDOUT: import PackageB//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageA//default, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageA//default, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageB//default, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref PackageA//default, loc11_16, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref PackageA//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref PackageA//default, loc5_9, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %import_ref.13: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.14: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.15: = import_ref PackageB//default, loc13_25, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.16: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.17: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] -// CHECK:STDOUT: %import_ref.18 = import_ref PackageB//default, loc18_25, unloaded -// CHECK:STDOUT: %import_ref.19: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.20 = import_ref PackageB//default, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.21: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.22: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.23 = import_ref PackageB//default, loc23_16, unloaded -// CHECK:STDOUT: %import_ref.24: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.25: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref PackageA//default, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref PackageA//default, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref PackageA//default, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9db: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.f3e = import_ref PackageB//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.89f: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.f03 = import_ref PackageB//default, G, unloaded +// CHECK:STDOUT: %import_ref.487 = import_ref PackageA//default, loc11_16, unloaded +// CHECK:STDOUT: %import_ref.28d = import_ref PackageA//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.cc4 = import_ref PackageA//default, loc5_9, unloaded +// CHECK:STDOUT: %import_ref.64f = import_ref PackageA//default, F, unloaded +// CHECK:STDOUT: %import_ref.3de: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e33: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.38a: = import_ref PackageB//default, loc13_25, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.4a6: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e527c5.1: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.f77 = import_ref PackageB//default, loc18_25, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref PackageB//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3b992b.1: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.9e1: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.ebd = import_ref PackageB//default, loc23_16, unloaded +// CHECK:STDOUT: %import_ref.3b992b.2: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.e527c5.2: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -735,7 +735,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %c.param: %C = value_param runtime_param0 // CHECK:STDOUT: %.loc7: type = splice_block %C.ref [template = constants.%C] { // CHECK:STDOUT: %PackageA.ref: = name_ref PackageA, imports.%PackageA [template = imports.%PackageA] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } @@ -743,69 +743,69 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .G = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.f3e +// CHECK:STDOUT: .G = imports.%import_ref.89f +// CHECK:STDOUT: witness = (imports.%import_ref.f03) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.10 -// CHECK:STDOUT: .F = imports.%import_ref.11 -// CHECK:STDOUT: witness = (imports.%import_ref.12) +// CHECK:STDOUT: .Self = imports.%import_ref.28d +// CHECK:STDOUT: .F = imports.%import_ref.cc4 +// CHECK:STDOUT: witness = (imports.%import_ref.64f) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.13 as imports.%import_ref.14 [from "package_a.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.3de as imports.%import_ref.e33 [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.487 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.2: imports.%import_ref.16 as imports.%import_ref.17 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.2: imports.%import_ref.4a6 as imports.%import_ref.e527c5.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.15 +// CHECK:STDOUT: witness = imports.%import_ref.38a // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.3: imports.%import_ref.21 as imports.%import_ref.22 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.3: imports.%import_ref.3b992b.1 as imports.%import_ref.9e1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.18 +// CHECK:STDOUT: witness = imports.%import_ref.f77 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.4: imports.%import_ref.24 as imports.%import_ref.25 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.4: imports.%import_ref.3b992b.2 as imports.%import_ref.e527c5.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.23 +// CHECK:STDOUT: witness = imports.%import_ref.ebd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.20 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.19 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCG(%c.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %PackageB.ref: = name_ref PackageB, imports.%PackageB [template = imports.%PackageB] -// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%import_ref.4 [template = constants.%HasG.type] -// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %G.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%G.2] +// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%import_ref.9db [template = constants.%HasG.type] +// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, imports.%import_ref.89f [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %G.type.813 = impl_witness_access constants.%impl_witness, element0 [template = constants.%G.b51] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.1(constants.%Self.1: %HasG.type) [from "package_b.carbon"] { +// CHECK:STDOUT: generic fn @G.1(constants.%Self.102: %HasG.type) [from "package_b.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G.2() [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @G.1(constants.%Self.102) {} // CHECK:STDOUT: // CHECK:STDOUT: --- use_dg.carbon // CHECK:STDOUT: @@ -817,44 +817,44 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestDG: %TestDG.type = struct_value () [template] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template] -// CHECK:STDOUT: %Self.1: %HasG.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.1 [template] -// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] +// CHECK:STDOUT: %Self.102: %HasG.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %G.type.813: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.813 [template] +// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, imports.%import_ref.5b2 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.23) [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.d18) [template] +// CHECK:STDOUT: %G.type.ec8: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.e97: %G.type.ec8 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageB: = namespace file.%PackageB.import, [template] { -// CHECK:STDOUT: .D = %import_ref.1 -// CHECK:STDOUT: .HasG = %import_ref.4 +// CHECK:STDOUT: .D = %import_ref.275 +// CHECK:STDOUT: .HasG = %import_ref.9db // CHECK:STDOUT: import PackageB//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageB//default, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageB//default, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageB//default, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref PackageB//default, loc13_25, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref PackageB//default, inst35 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.11 = import_ref PackageB//default, inst36 [indirect], unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.13: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] -// CHECK:STDOUT: %import_ref.14 = import_ref PackageB//default, loc18_25, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref PackageB//default, inst53 [indirect], unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref PackageB//default, inst54 [indirect], unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref PackageB//default, F, unloaded -// CHECK:STDOUT: %import_ref.18: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.19: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] -// CHECK:STDOUT: %import_ref.20: = import_ref PackageB//default, loc23_16, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.21: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.22: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.275: type = import_ref PackageB//default, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.8f2: = import_ref PackageB//default, loc10_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref PackageB//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9db: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.f3e = import_ref PackageB//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.89f: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.f03 = import_ref PackageB//default, G, unloaded +// CHECK:STDOUT: %import_ref.f91 = import_ref PackageB//default, loc13_25, unloaded +// CHECK:STDOUT: %import_ref.8db: = import_ref PackageB//default, inst35 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref PackageB//default, inst36 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a6: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.e527c5.1: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] +// CHECK:STDOUT: %import_ref.f77 = import_ref PackageB//default, loc18_25, unloaded +// CHECK:STDOUT: %import_ref.ccf = import_ref PackageB//default, inst53 [indirect], unloaded +// CHECK:STDOUT: %import_ref.09b = import_ref PackageB//default, inst54 [indirect], unloaded +// CHECK:STDOUT: %import_ref.b4f = import_ref PackageB//default, F, unloaded +// CHECK:STDOUT: %import_ref.3b992b.1: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.9e1: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] +// CHECK:STDOUT: %import_ref.f58: = import_ref PackageB//default, loc23_16, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.3b992b.2: type = import_ref PackageB//default, loc23_6, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.e527c5.2: type = import_ref PackageB//default, loc23_11, loaded [template = constants.%HasG.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -870,7 +870,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %d.param: %D = value_param runtime_param0 // CHECK:STDOUT: %.loc6: type = splice_block %D.ref [template = constants.%D] { // CHECK:STDOUT: %PackageB.ref.loc6: = name_ref PackageB, imports.%PackageB [template = imports.%PackageB] -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] // CHECK:STDOUT: } // CHECK:STDOUT: %d: %D = bind_name d, %d.param // CHECK:STDOUT: } @@ -878,78 +878,78 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .G = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.f3e +// CHECK:STDOUT: .G = imports.%import_ref.89f +// CHECK:STDOUT: witness = (imports.%import_ref.f03) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.15 -// CHECK:STDOUT: .F = imports.%import_ref.16 -// CHECK:STDOUT: witness = (imports.%import_ref.17) +// CHECK:STDOUT: .Self = imports.%import_ref.ccf +// CHECK:STDOUT: .F = imports.%import_ref.09b +// CHECK:STDOUT: witness = (imports.%import_ref.b4f) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.12 as imports.%import_ref.13 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.4a6 as imports.%import_ref.e527c5.1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.f91 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.2: imports.%import_ref.18 as imports.%import_ref.19 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.2: imports.%import_ref.3b992b.1 as imports.%import_ref.9e1 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.14 +// CHECK:STDOUT: witness = imports.%import_ref.f77 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.3: imports.%import_ref.21 as imports.%import_ref.22 [from "package_b.carbon"] { +// CHECK:STDOUT: impl @impl.3: imports.%import_ref.3b992b.2 as imports.%import_ref.e527c5.2 [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.20 +// CHECK:STDOUT: witness = imports.%import_ref.f58 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDG(%d.param_patt: %D) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %D = name_ref d, %d // CHECK:STDOUT: %PackageB.ref.loc7: = name_ref PackageB, imports.%PackageB [template = imports.%PackageB] -// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%import_ref.4 [template = constants.%HasG.type] -// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %G.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%G.2] +// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, imports.%import_ref.9db [template = constants.%HasG.type] +// CHECK:STDOUT: %G.ref: %G.assoc_type = name_ref G, imports.%import_ref.89f [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %G.type.813 = impl_witness_access constants.%impl_witness, element0 [template = constants.%G.e97] // CHECK:STDOUT: %G.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G.1(constants.%Self.1: %HasG.type) [from "package_b.carbon"] { +// CHECK:STDOUT: generic fn @G.1(constants.%Self.102: %HasG.type) [from "package_b.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G.2() [from "package_b.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @G.1(constants.%Self.102) {} // CHECK:STDOUT: // CHECK:STDOUT: --- associated_interface.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [template] // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %H.type.1: type = fn_type @H.1 [template] +// CHECK:STDOUT: %H.type.5e7: type = fn_type @H.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %H.1: %H.type.1 = struct_value () [template] -// CHECK:STDOUT: %H.assoc_type: type = assoc_entity_type %Z.type, %H.type.1 [template] +// CHECK:STDOUT: %H.891: %H.type.5e7 = struct_value () [template] +// CHECK:STDOUT: %H.assoc_type: type = assoc_entity_type %Z.type, %H.type.5e7 [template] // CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, @Z.%H.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%H.decl) [template] -// CHECK:STDOUT: %H.type.2: type = fn_type @H.2 [template] -// CHECK:STDOUT: %H.2: %H.type.2 = struct_value () [template] +// CHECK:STDOUT: %H.type.fad: type = fn_type @H.2 [template] +// CHECK:STDOUT: %H.bea: %H.type.fad = struct_value () [template] // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %empty_tuple.type, %impl_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -968,7 +968,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @Z { // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %H.decl: %H.type.1 = fn_decl @H.1 [template = constants.%H.1] {} {} +// CHECK:STDOUT: %H.decl: %H.type.5e7 = fn_decl @H.1 [template = constants.%H.891] {} {} // CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, %H.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -978,7 +978,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %.loc8_7.2 as %Z.ref { -// CHECK:STDOUT: %H.decl: %H.type.2 = fn_decl @H.2 [template = constants.%H.2] {} {} +// CHECK:STDOUT: %H.decl: %H.type.fad = fn_decl @H.2 [template = constants.%H.bea] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .H = %H.decl @@ -1007,26 +1007,26 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %J: %J.type = struct_value () [template] // CHECK:STDOUT: %Z.type: type = facet_type <@Z> [template] // CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %H.type.1: type = fn_type @H.1 [template] -// CHECK:STDOUT: %H.assoc_type: type = assoc_entity_type %Z.type, %H.type.1 [template] -// CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, imports.%import_ref.5 [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.9) [template] -// CHECK:STDOUT: %H.type.2: type = fn_type @H.2 [template] -// CHECK:STDOUT: %H.2: %H.type.2 = struct_value () [template] +// CHECK:STDOUT: %H.type.594: type = fn_type @H.1 [template] +// CHECK:STDOUT: %H.assoc_type: type = assoc_entity_type %Z.type, %H.type.594 [template] +// CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, imports.%import_ref.8f8 [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.a75) [template] +// CHECK:STDOUT: %H.type.96e: type = fn_type @H.2 [template] +// CHECK:STDOUT: %H.33c: %H.type.96e = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageAssociatedInterface: = namespace file.%PackageAssociatedInterface.import, [template] { -// CHECK:STDOUT: .Z = %import_ref.1 +// CHECK:STDOUT: .Z = %import_ref.0ef // CHECK:STDOUT: import PackageAssociatedInterface//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref PackageAssociatedInterface//default, Z, loaded [template = constants.%Z.type] -// CHECK:STDOUT: %import_ref.2 = import_ref PackageAssociatedInterface//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.3: %H.assoc_type = import_ref PackageAssociatedInterface//default, loc5_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.4 = import_ref PackageAssociatedInterface//default, H, unloaded -// CHECK:STDOUT: %import_ref.6: = import_ref PackageAssociatedInterface//default, loc8_14, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.7: type = import_ref PackageAssociatedInterface//default, loc8_7, loaded [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %import_ref.8: type = import_ref PackageAssociatedInterface//default, loc8_12, loaded [template = constants.%Z.type] +// CHECK:STDOUT: %import_ref.0ef: type = import_ref PackageAssociatedInterface//default, Z, loaded [template = constants.%Z.type] +// CHECK:STDOUT: %import_ref.54a = import_ref PackageAssociatedInterface//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ab: %H.assoc_type = import_ref PackageAssociatedInterface//default, loc5_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.108 = import_ref PackageAssociatedInterface//default, H, unloaded +// CHECK:STDOUT: %import_ref.cc2: = import_ref PackageAssociatedInterface//default, loc8_14, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.e5c: type = import_ref PackageAssociatedInterface//default, loc8_7, loaded [template = constants.%empty_tuple.type] +// CHECK:STDOUT: %import_ref.f0c: type = import_ref PackageAssociatedInterface//default, loc8_12, loaded [template = constants.%Z.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1040,23 +1040,23 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @Z [from "associated_interface.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 -// CHECK:STDOUT: .H = imports.%import_ref.3 -// CHECK:STDOUT: witness = (imports.%import_ref.4) +// CHECK:STDOUT: .Self = imports.%import_ref.54a +// CHECK:STDOUT: .H = imports.%import_ref.0ab +// CHECK:STDOUT: witness = (imports.%import_ref.108) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.7 as imports.%import_ref.8 [from "associated_interface.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.e5c as imports.%import_ref.f0c [from "associated_interface.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.6 +// CHECK:STDOUT: witness = imports.%import_ref.cc2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @J() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc7: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %PackageAssociatedInterface.ref: = name_ref PackageAssociatedInterface, imports.%PackageAssociatedInterface [template = imports.%PackageAssociatedInterface] -// CHECK:STDOUT: %Z.ref: type = name_ref Z, imports.%import_ref.1 [template = constants.%Z.type] -// CHECK:STDOUT: %H.ref: %H.assoc_type = name_ref H, imports.%import_ref.3 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %H.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%H.2] +// CHECK:STDOUT: %Z.ref: type = name_ref Z, imports.%import_ref.0ef [template = constants.%Z.type] +// CHECK:STDOUT: %H.ref: %H.assoc_type = name_ref H, imports.%import_ref.0ab [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %H.type.594 = impl_witness_access constants.%impl_witness, element0 [template = constants.%H.33c] // CHECK:STDOUT: %H.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1161,11 +1161,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %GenericInterface.type.1: type = generic_interface_type @GenericInterface [template] +// CHECK:STDOUT: %GenericInterface.type.c92: type = generic_interface_type @GenericInterface [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.1 = struct_value () [template] -// CHECK:STDOUT: %GenericInterface.type.2: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic] -// CHECK:STDOUT: %Self.1: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.c92 = struct_value () [template] +// CHECK:STDOUT: %GenericInterface.type.714: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic] +// CHECK:STDOUT: %Self.c9a: %GenericInterface.type.714 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -1173,36 +1173,36 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %X.patt.2: %T = symbolic_binding_pattern X, 1 [symbolic] -// CHECK:STDOUT: %AnyParam.2: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.1, %GenericInterface.generic) [template] +// CHECK:STDOUT: %X.patt.a277d5.2: %T = symbolic_binding_pattern X, 1 [symbolic] +// CHECK:STDOUT: %AnyParam.422: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.c92, %GenericInterface.generic) [template] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [template] -// CHECK:STDOUT: %Self.2: %Y.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.1: type = fn_type @K.1 [template] -// CHECK:STDOUT: %K.1: %K.type.1 = struct_value () [template] +// CHECK:STDOUT: %Self.ea2: %Y.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %K.type.069: type = fn_type @K.1 [template] +// CHECK:STDOUT: %K.766: %K.type.069 = struct_value () [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%K.decl) [template] -// CHECK:STDOUT: %K.type.2: type = fn_type @K.2 [template] -// CHECK:STDOUT: %K.2: %K.type.2 = struct_value () [template] -// CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.2, %impl_witness [template] +// CHECK:STDOUT: %K.type.7be: type = fn_type @K.2 [template] +// CHECK:STDOUT: %K.328: %K.type.7be = struct_value () [template] +// CHECK:STDOUT: %Y.facet: %Y.type = facet_value %AnyParam.422, %impl_witness [template] // CHECK:STDOUT: %L.type: type = fn_type @L [template] // CHECK:STDOUT: %L: %L.type = struct_value () [template] -// CHECK:STDOUT: %AnyParam.val: %AnyParam.2 = struct_value () [template] -// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %Y.type, %K.type.1 [template] -// CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] +// CHECK:STDOUT: %AnyParam.val: %AnyParam.422 = struct_value () [template] +// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %Y.type, %K.type.069 [template] +// CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, imports.%import_ref.6d0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [template] { -// CHECK:STDOUT: .AnyParam = %import_ref.1 -// CHECK:STDOUT: .Y = %import_ref.4 +// CHECK:STDOUT: .AnyParam = %import_ref.6c9 +// CHECK:STDOUT: .Y = %import_ref.ca2 // CHECK:STDOUT: import PackageHasParam//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [template = constants.%AnyParam.generic] -// CHECK:STDOUT: %import_ref.2: = import_ref PackageHasParam//default, loc4_34, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageHasParam//default, inst34 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] -// CHECK:STDOUT: %import_ref.5 = import_ref PackageHasParam//default, inst40 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %K.assoc_type = import_ref PackageHasParam//default, loc7_10, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7: %K.type.1 = import_ref PackageHasParam//default, K, loaded [template = constants.%K.1] +// CHECK:STDOUT: %import_ref.6c9: %AnyParam.type = import_ref PackageHasParam//default, AnyParam, loaded [template = constants.%AnyParam.generic] +// CHECK:STDOUT: %import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.8e4 = import_ref PackageHasParam//default, inst34 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ca2: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] +// CHECK:STDOUT: %import_ref.434 = import_ref PackageHasParam//default, inst40 [no loc], unloaded +// CHECK:STDOUT: %import_ref.991: %K.assoc_type = import_ref PackageHasParam//default, loc7_10, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.c68: %K.type.069 = import_ref PackageHasParam//default, K, loaded [template = constants.%K.766] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1212,7 +1212,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: .L = %L.decl // CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam.import = import PackageHasParam -// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.1 = interface_decl @GenericInterface [template = constants.%GenericInterface.generic] { +// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.c92 = interface_decl @GenericInterface [template = constants.%GenericInterface.generic] { // CHECK:STDOUT: %U.patt.loc6_28.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_28.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc6_28.1, runtime_param [symbolic = %U.patt.loc6_28.2 (constants.%U.patt)] // CHECK:STDOUT: } { @@ -1221,11 +1221,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %PackageHasParam.ref.loc8_6: = name_ref PackageHasParam, imports.%PackageHasParam [template = imports.%PackageHasParam] -// CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%import_ref.1 [template = constants.%AnyParam.generic] -// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.1 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface.generic] -// CHECK:STDOUT: %AnyParam: type = class_type @AnyParam, @AnyParam(constants.%GenericInterface.type.1, constants.%GenericInterface.generic) [template = constants.%AnyParam.2] +// CHECK:STDOUT: %AnyParam.ref: %AnyParam.type = name_ref AnyParam, imports.%import_ref.6c9 [template = constants.%AnyParam.generic] +// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface.generic] +// CHECK:STDOUT: %AnyParam: type = class_type @AnyParam, @AnyParam(constants.%GenericInterface.type.c92, constants.%GenericInterface.generic) [template = constants.%AnyParam.422] // CHECK:STDOUT: %PackageHasParam.ref.loc8_52: = name_ref PackageHasParam, imports.%PackageHasParam [template = imports.%PackageHasParam] -// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.4 [template = constants.%Y.type] +// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.ca2 [template = constants.%Y.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%K.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %L.decl: %L.type = fn_decl @L [template = constants.%L] {} {} @@ -1236,11 +1236,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %U.patt.loc6_28.2: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_28.2 (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%U.loc6_28.2)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.2)] -// CHECK:STDOUT: %Self.2: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%U.loc6_28.2)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.714)] +// CHECK:STDOUT: %Self.2: %GenericInterface.type.714 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.c9a)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.714) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.c9a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -1250,13 +1250,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: interface @Y [from "has_param.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .K = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.434 +// CHECK:STDOUT: .K = imports.%import_ref.991 +// CHECK:STDOUT: witness = (imports.%import_ref.c68) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %AnyParam as %Y.ref { -// CHECK:STDOUT: %K.decl: %K.type.2 = fn_decl @K.2 [template = constants.%K.2] {} {} +// CHECK:STDOUT: %K.decl: %K.type.7be = fn_decl @K.2 [template = constants.%K.328] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .K = %K.decl @@ -1267,18 +1267,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic = %X.patt (constants.%X.patt.2)] +// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic = %X.patt (constants.%X.patt.a277d5.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.8e4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.1(constants.%Self.2: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @K.1(constants.%Self.ea2: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(); @@ -1291,17 +1291,17 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: fn @L() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %obj.var: ref %AnyParam.2 = var obj -// CHECK:STDOUT: %obj: ref %AnyParam.2 = bind_name obj, %obj.var +// CHECK:STDOUT: %obj.var: ref %AnyParam.422 = var obj +// CHECK:STDOUT: %obj: ref %AnyParam.422 = bind_name obj, %obj.var // CHECK:STDOUT: %.loc13_58.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc13_58.2: init %AnyParam.2 = class_init (), %obj.var [template = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc13_59: init %AnyParam.2 = converted %.loc13_58.1, %.loc13_58.2 [template = constants.%AnyParam.val] +// CHECK:STDOUT: %.loc13_58.2: init %AnyParam.422 = class_init (), %obj.var [template = constants.%AnyParam.val] +// CHECK:STDOUT: %.loc13_59: init %AnyParam.422 = converted %.loc13_58.1, %.loc13_58.2 [template = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc13_59 -// CHECK:STDOUT: %obj.ref: ref %AnyParam.2 = name_ref obj, %obj +// CHECK:STDOUT: %obj.ref: ref %AnyParam.422 = name_ref obj, %obj // CHECK:STDOUT: %PackageHasParam.ref: = name_ref PackageHasParam, imports.%PackageHasParam [template = imports.%PackageHasParam] -// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.4 [template = constants.%Y.type] -// CHECK:STDOUT: %K.ref: %K.assoc_type = name_ref K, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %K.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%K.2] +// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.ca2 [template = constants.%Y.type] +// CHECK:STDOUT: %K.ref: %K.assoc_type = name_ref K, imports.%import_ref.991 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %K.type.069 = impl_witness_access constants.%impl_witness, element0 [template = constants.%K.328] // CHECK:STDOUT: %K.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -1320,16 +1320,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %X.patt => constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AnyParam(constants.%GenericInterface.type.1, constants.%GenericInterface.generic) { -// CHECK:STDOUT: %T => constants.%GenericInterface.type.1 -// CHECK:STDOUT: %T.patt => constants.%GenericInterface.type.1 +// CHECK:STDOUT: specific @AnyParam(constants.%GenericInterface.type.c92, constants.%GenericInterface.generic) { +// CHECK:STDOUT: %T => constants.%GenericInterface.type.c92 +// CHECK:STDOUT: %T.patt => constants.%GenericInterface.type.c92 // CHECK:STDOUT: %X => constants.%GenericInterface.generic // CHECK:STDOUT: %X.patt => constants.%GenericInterface.generic // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @K.1(constants.%Self.ea2) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @K.1(constants.%Y.facet) {} // CHECK:STDOUT: @@ -1344,45 +1344,45 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %X.patt.2: %T = symbolic_binding_pattern X, 1 [symbolic] -// CHECK:STDOUT: %GenericInterface.type.1: type = generic_interface_type @GenericInterface [template] -// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.1 = struct_value () [template] +// CHECK:STDOUT: %X.patt.a277d5.2: %T = symbolic_binding_pattern X, 1 [symbolic] +// CHECK:STDOUT: %GenericInterface.type.0da: type = generic_interface_type @GenericInterface [template] +// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.0da = struct_value () [template] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] -// CHECK:STDOUT: %GenericInterface.type.2: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic] -// CHECK:STDOUT: %Self.1: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %GenericInterface.type.954: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic] +// CHECK:STDOUT: %Self.ebd: %GenericInterface.type.954 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] -// CHECK:STDOUT: %AnyParam.2: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.1, %GenericInterface.generic) [template] -// CHECK:STDOUT: %AnyParam.val: %AnyParam.2 = struct_value () [template] +// CHECK:STDOUT: %AnyParam.35d: type = class_type @AnyParam, @AnyParam(%GenericInterface.type.0da, %GenericInterface.generic) [template] +// CHECK:STDOUT: %AnyParam.val: %AnyParam.35d = struct_value () [template] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [template] -// CHECK:STDOUT: %Self.2: %Y.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.1: type = fn_type @K.1 [template] -// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %Y.type, %K.type.1 [template] -// CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, imports.%import_ref.10 [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.14) [template] -// CHECK:STDOUT: %K.type.2: type = fn_type @K.2 [template] -// CHECK:STDOUT: %K.2: %K.type.2 = struct_value () [template] +// CHECK:STDOUT: %Self.ea2: %Y.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %K.type.069: type = fn_type @K.1 [template] +// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %Y.type, %K.type.069 [template] +// CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, imports.%import_ref.6d0 [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.a9a) [template] +// CHECK:STDOUT: %K.type.d9f: type = fn_type @K.2 [template] +// CHECK:STDOUT: %K.4e3: %K.type.d9f = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [template] { -// CHECK:STDOUT: .AnyParam = %import_ref.1 -// CHECK:STDOUT: .Y = %import_ref.6 +// CHECK:STDOUT: .AnyParam = %import_ref.6c9 +// CHECK:STDOUT: .Y = %import_ref.ca2 // CHECK:STDOUT: import PackageHasParam//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageGenericInterface: = namespace file.%PackageGenericInterface.import, [template] { -// CHECK:STDOUT: .GenericInterface = %import_ref.4 +// CHECK:STDOUT: .GenericInterface = %import_ref.012 // CHECK:STDOUT: import PackageGenericInterface//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref PackageHasParam//default, loc4_34, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref PackageHasParam//default, inst34 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref PackageGenericInterface//default, inst28 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] -// CHECK:STDOUT: %import_ref.7 = import_ref PackageHasParam//default, inst40 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: %K.assoc_type = import_ref PackageHasParam//default, loc7_10, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.9 = import_ref PackageHasParam//default, K, unloaded -// CHECK:STDOUT: %import_ref.11: = import_ref PackageGenericInterface//default, loc8_70, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.12: type = import_ref PackageGenericInterface//default, loc8_47, loaded [template = constants.%AnyParam.2] -// CHECK:STDOUT: %import_ref.13: type = import_ref PackageGenericInterface//default, loc8_67, loaded [template = constants.%Y.type] +// CHECK:STDOUT: %import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.8e4 = import_ref PackageHasParam//default, inst34 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ef8 = import_ref PackageGenericInterface//default, inst28 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ca2: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] +// CHECK:STDOUT: %import_ref.434 = import_ref PackageHasParam//default, inst40 [no loc], unloaded +// CHECK:STDOUT: %import_ref.991: %K.assoc_type = import_ref PackageHasParam//default, loc7_10, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.6f6 = import_ref PackageHasParam//default, K, unloaded +// CHECK:STDOUT: %import_ref.e37: = import_ref PackageGenericInterface//default, loc8_70, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.d44: type = import_ref PackageGenericInterface//default, loc8_47, loaded [template = constants.%AnyParam.35d] +// CHECK:STDOUT: %import_ref.63d: type = import_ref PackageGenericInterface//default, loc8_67, loaded [template = constants.%Y.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1401,61 +1401,61 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.2)] -// CHECK:STDOUT: %Self: %GenericInterface.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.1)] +// CHECK:STDOUT: %GenericInterface.type: type = facet_type <@GenericInterface, @GenericInterface(%U)> [symbolic = %GenericInterface.type (constants.%GenericInterface.type.954)] +// CHECK:STDOUT: %Self: %GenericInterface.type.954 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.ebd)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.ef8 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Y [from "has_param.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .K = imports.%import_ref.8 -// CHECK:STDOUT: witness = (imports.%import_ref.9) +// CHECK:STDOUT: .Self = imports.%import_ref.434 +// CHECK:STDOUT: .K = imports.%import_ref.991 +// CHECK:STDOUT: witness = (imports.%import_ref.6f6) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.12 as imports.%import_ref.13 [from "has_generic_interface.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.d44 as imports.%import_ref.63d [from "has_generic_interface.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.11 +// CHECK:STDOUT: witness = imports.%import_ref.e37 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @AnyParam(constants.%T: type, constants.%X: %T) [from "has_param.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic = %X.patt (constants.%X.patt.2)] +// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic = %X.patt (constants.%X.patt.a277d5.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.8e4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @M() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %obj.var: ref %AnyParam.2 = var obj -// CHECK:STDOUT: %obj: ref %AnyParam.2 = bind_name obj, %obj.var +// CHECK:STDOUT: %obj.var: ref %AnyParam.35d = var obj +// CHECK:STDOUT: %obj: ref %AnyParam.35d = bind_name obj, %obj.var // CHECK:STDOUT: %.loc9_50.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc9_50.2: init %AnyParam.2 = class_init (), %obj.var [template = constants.%AnyParam.val] -// CHECK:STDOUT: %.loc9_51: init %AnyParam.2 = converted %.loc9_50.1, %.loc9_50.2 [template = constants.%AnyParam.val] +// CHECK:STDOUT: %.loc9_50.2: init %AnyParam.35d = class_init (), %obj.var [template = constants.%AnyParam.val] +// CHECK:STDOUT: %.loc9_51: init %AnyParam.35d = converted %.loc9_50.1, %.loc9_50.2 [template = constants.%AnyParam.val] // CHECK:STDOUT: assign %obj.var, %.loc9_51 -// CHECK:STDOUT: %obj.ref: ref %AnyParam.2 = name_ref obj, %obj +// CHECK:STDOUT: %obj.ref: ref %AnyParam.35d = name_ref obj, %obj // CHECK:STDOUT: %PackageHasParam.ref: = name_ref PackageHasParam, imports.%PackageHasParam [template = imports.%PackageHasParam] -// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.6 [template = constants.%Y.type] -// CHECK:STDOUT: %K.ref: %K.assoc_type = name_ref K, imports.%import_ref.8 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %K.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%K.2] +// CHECK:STDOUT: %Y.ref: type = name_ref Y, imports.%import_ref.ca2 [template = constants.%Y.type] +// CHECK:STDOUT: %K.ref: %K.assoc_type = name_ref K, imports.%import_ref.991 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %K.type.069 = impl_witness_access constants.%impl_witness, element0 [template = constants.%K.4e3] // CHECK:STDOUT: %K.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @K.1(constants.%Self.2: %Y.type) [from "has_param.carbon"] { +// CHECK:STDOUT: generic fn @K.1(constants.%Self.ea2: %Y.type) [from "has_param.carbon"] { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: fn(); @@ -1477,56 +1477,56 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericInterface(%U) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @AnyParam(constants.%GenericInterface.type.1, constants.%GenericInterface.generic) { -// CHECK:STDOUT: %T => constants.%GenericInterface.type.1 -// CHECK:STDOUT: %T.patt => constants.%GenericInterface.type.1 +// CHECK:STDOUT: specific @AnyParam(constants.%GenericInterface.type.0da, constants.%GenericInterface.generic) { +// CHECK:STDOUT: %T => constants.%GenericInterface.type.0da +// CHECK:STDOUT: %T.patt => constants.%GenericInterface.type.0da // CHECK:STDOUT: %X => constants.%GenericInterface.generic // CHECK:STDOUT: %X.patt => constants.%GenericInterface.generic // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @K.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @K.1(constants.%Self.ea2) {} // CHECK:STDOUT: // CHECK:STDOUT: --- has_extra_interfaces.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Extra1.type: type = facet_type <@Extra1> [template] -// CHECK:STDOUT: %Self.1: %Extra1.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.a02: %Extra1.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra2.type: type = facet_type <@Extra2> [template] -// CHECK:STDOUT: %Self.2: %Extra2.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.f86: %Extra2.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra3.type: type = facet_type <@Extra3> [template] -// CHECK:STDOUT: %Self.3: %Extra3.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.9d3: %Extra3.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra4.type: type = facet_type <@Extra4> [template] -// CHECK:STDOUT: %Self.4: %Extra4.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.4fb: %Extra4.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra5.type: type = facet_type <@Extra5> [template] -// CHECK:STDOUT: %Self.5: %Extra5.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.acd: %Extra5.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra6.type: type = facet_type <@Extra6> [template] -// CHECK:STDOUT: %Self.6: %Extra6.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.27e: %Extra6.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra7.type: type = facet_type <@Extra7> [template] -// CHECK:STDOUT: %Self.7: %Extra7.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.f8e: %Extra7.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Extra8.type: type = facet_type <@Extra8> [template] -// CHECK:STDOUT: %Self.8: %Extra8.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.0e4: %Extra8.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.9: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type, type, type, type, type, type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%tuple.type.2) [template] +// CHECK:STDOUT: %tuple.type.c53: type = tuple_type (type, type, type, type, type, type, type, type) [template] +// CHECK:STDOUT: %tuple.type.15d: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [template] +// CHECK:STDOUT: %C.88d: type = class_type @C, @C(%tuple.type.15d) [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %I.facet: %I.type = facet_value %C.2, %impl_witness [template] +// CHECK:STDOUT: %F.type.b71: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.32b: %F.type.b71 = struct_value () [template] +// CHECK:STDOUT: %I.facet: %I.type = facet_value %C.88d, %impl_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1568,16 +1568,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Extra6.ref: type = name_ref Extra6, file.%Extra6.decl [template = constants.%Extra6.type] // CHECK:STDOUT: %Extra7.ref: type = name_ref Extra7, file.%Extra7.decl [template = constants.%Extra7.type] // CHECK:STDOUT: %Extra8.ref: type = name_ref Extra8, file.%Extra8.decl [template = constants.%Extra8.type] -// CHECK:STDOUT: %.loc16_71: %tuple.type.1 = tuple_literal (%Extra1.ref, %Extra2.ref, %Extra3.ref, %Extra4.ref, %Extra5.ref, %Extra6.ref, %Extra7.ref, %Extra8.ref) -// CHECK:STDOUT: %.loc16_72: type = converted %.loc16_71, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.type.2) [template = constants.%C.2] +// CHECK:STDOUT: %.loc16_71: %tuple.type.c53 = tuple_literal (%Extra1.ref, %Extra2.ref, %Extra3.ref, %Extra4.ref, %Extra5.ref, %Extra6.ref, %Extra7.ref, %Extra8.ref) +// CHECK:STDOUT: %.loc16_72: type = converted %.loc16_71, constants.%tuple.type.15d [template = constants.%tuple.type.15d] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.type.15d) [template = constants.%C.88d] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra1 { -// CHECK:STDOUT: %Self: %Extra1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Extra1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.a02] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1585,7 +1585,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra2 { -// CHECK:STDOUT: %Self: %Extra2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %Extra2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f86] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1593,7 +1593,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra3 { -// CHECK:STDOUT: %Self: %Extra3.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3] +// CHECK:STDOUT: %Self: %Extra3.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.9d3] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1601,7 +1601,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra4 { -// CHECK:STDOUT: %Self: %Extra4.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.4] +// CHECK:STDOUT: %Self: %Extra4.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.4fb] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1609,7 +1609,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra5 { -// CHECK:STDOUT: %Self: %Extra5.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.5] +// CHECK:STDOUT: %Self: %Extra5.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.acd] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1617,7 +1617,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra6 { -// CHECK:STDOUT: %Self: %Extra6.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.6] +// CHECK:STDOUT: %Self: %Extra6.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.27e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1625,7 +1625,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra7 { -// CHECK:STDOUT: %Self: %Extra7.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.7] +// CHECK:STDOUT: %Self: %Extra7.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f8e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1633,7 +1633,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra8 { -// CHECK:STDOUT: %Self: %Extra8.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.8] +// CHECK:STDOUT: %Self: %Extra8.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.0e4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1641,8 +1641,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.9] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -1652,7 +1652,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.b71 = fn_decl @F.2 [template = constants.%F.32b] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -1669,7 +1669,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1689,11 +1689,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %T.patt.loc13_9.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.9) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.fb7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%tuple.type.2) { -// CHECK:STDOUT: %T.loc13_9.2 => constants.%tuple.type.2 -// CHECK:STDOUT: %T.patt.loc13_9.2 => constants.%tuple.type.2 +// CHECK:STDOUT: specific @C(constants.%tuple.type.15d) { +// CHECK:STDOUT: %T.loc13_9.2 => constants.%tuple.type.15d +// CHECK:STDOUT: %T.patt.loc13_9.2 => constants.%tuple.type.15d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%I.facet) {} @@ -1707,14 +1707,14 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(type) [template] +// CHECK:STDOUT: %C.b1d: type = class_type @C, @C(type) [template] // CHECK:STDOUT: %Test.type: type = fn_type @Test [template] // CHECK:STDOUT: %Test: %Test.type = struct_value () [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.ce8: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.911 [template] // CHECK:STDOUT: %Extra8.type: type = facet_type <@Extra8> [template] // CHECK:STDOUT: %Extra7.type: type = facet_type <@Extra7> [template] // CHECK:STDOUT: %Extra6.type: type = facet_type <@Extra6> [template] @@ -1724,33 +1724,33 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Extra2.type: type = facet_type <@Extra2> [template] // CHECK:STDOUT: %Extra1.type: type = facet_type <@Extra1> [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (%Extra1.type, %Extra2.type, %Extra3.type, %Extra4.type, %Extra5.type, %Extra6.type, %Extra7.type, %Extra8.type) [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple.type) [template] +// CHECK:STDOUT: %C.d74: type = class_type @C, @C(%tuple.type) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %HasExtraInterfaces: = namespace file.%HasExtraInterfaces.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 -// CHECK:STDOUT: .I = %import_ref.4 +// CHECK:STDOUT: .C = %import_ref.e8a +// CHECK:STDOUT: .I = %import_ref.9f4 // CHECK:STDOUT: import HasExtraInterfaces//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %C.type = import_ref HasExtraInterfaces//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.2: = import_ref HasExtraInterfaces//default, loc13_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref HasExtraInterfaces//default, inst57 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref HasExtraInterfaces//default, I, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.5 = import_ref HasExtraInterfaces//default, inst63 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %F.assoc_type = import_ref HasExtraInterfaces//default, loc14_21, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref HasExtraInterfaces//default, F, unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref HasExtraInterfaces//default, loc16_79, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref HasExtraInterfaces//default, inst43 [no loc], unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref HasExtraInterfaces//default, inst39 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref HasExtraInterfaces//default, inst35 [no loc], unloaded -// CHECK:STDOUT: %import_ref.13 = import_ref HasExtraInterfaces//default, inst31 [no loc], unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref HasExtraInterfaces//default, inst27 [no loc], unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref HasExtraInterfaces//default, inst23 [no loc], unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref HasExtraInterfaces//default, inst19 [no loc], unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref HasExtraInterfaces//default, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.18: type = import_ref HasExtraInterfaces//default, loc16_72, loaded [template = constants.%C.3] -// CHECK:STDOUT: %import_ref.19: type = import_ref HasExtraInterfaces//default, loc16_77, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.e8a: %C.type = import_ref HasExtraInterfaces//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.8f2: = import_ref HasExtraInterfaces//default, loc13_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.495 = import_ref HasExtraInterfaces//default, inst57 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9f4: type = import_ref HasExtraInterfaces//default, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.f8c = import_ref HasExtraInterfaces//default, inst63 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9b9: %F.assoc_type = import_ref HasExtraInterfaces//default, loc14_21, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.a15 = import_ref HasExtraInterfaces//default, F, unloaded +// CHECK:STDOUT: %import_ref.92b = import_ref HasExtraInterfaces//default, loc16_79, unloaded +// CHECK:STDOUT: %import_ref.8b6 = import_ref HasExtraInterfaces//default, inst43 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8c6 = import_ref HasExtraInterfaces//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3dd = import_ref HasExtraInterfaces//default, inst35 [no loc], unloaded +// CHECK:STDOUT: %import_ref.1a7 = import_ref HasExtraInterfaces//default, inst31 [no loc], unloaded +// CHECK:STDOUT: %import_ref.de2 = import_ref HasExtraInterfaces//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.93a = import_ref HasExtraInterfaces//default, inst23 [no loc], unloaded +// CHECK:STDOUT: %import_ref.5a8 = import_ref HasExtraInterfaces//default, inst19 [no loc], unloaded +// CHECK:STDOUT: %import_ref.4be = import_ref HasExtraInterfaces//default, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2a6: type = import_ref HasExtraInterfaces//default, loc16_72, loaded [template = constants.%C.d74] +// CHECK:STDOUT: %import_ref.bd0: type = import_ref HasExtraInterfaces//default, loc16_77, loaded [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1760,77 +1760,77 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %HasExtraInterfaces.import = import HasExtraInterfaces // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] { -// CHECK:STDOUT: %c.patt: %C.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %C.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %C.b1d = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %C.b1d = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc5: type = splice_block %C [template = constants.%C.2] { +// CHECK:STDOUT: %c.param: %C.b1d = value_param runtime_param0 +// CHECK:STDOUT: %.loc5: type = splice_block %C [template = constants.%C.b1d] { // CHECK:STDOUT: %HasExtraInterfaces.ref.loc5: = name_ref HasExtraInterfaces, imports.%HasExtraInterfaces [template = imports.%HasExtraInterfaces] -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.1 [template = constants.%C.generic] -// CHECK:STDOUT: %C: type = class_type @C, @C(type) [template = constants.%C.2] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.e8a [template = constants.%C.generic] +// CHECK:STDOUT: %C: type = class_type @C, @C(type) [template = constants.%C.b1d] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %C.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %C.b1d = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.f8c +// CHECK:STDOUT: .F = imports.%import_ref.9b9 +// CHECK:STDOUT: witness = (imports.%import_ref.a15) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra8 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.8b6 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra7 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 +// CHECK:STDOUT: .Self = imports.%import_ref.8c6 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra6 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.12 +// CHECK:STDOUT: .Self = imports.%import_ref.3dd // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra5 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.13 +// CHECK:STDOUT: .Self = imports.%import_ref.1a7 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra4 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.14 +// CHECK:STDOUT: .Self = imports.%import_ref.de2 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra3 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.15 +// CHECK:STDOUT: .Self = imports.%import_ref.93a // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra2 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.16 +// CHECK:STDOUT: .Self = imports.%import_ref.5a8 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Extra1 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.17 +// CHECK:STDOUT: .Self = imports.%import_ref.4be // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.18 as imports.%import_ref.19 [from "has_extra_interfaces.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.2a6 as imports.%import_ref.bd0 [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.92b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "has_extra_interfaces.carbon"] { @@ -1841,21 +1841,21 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Test(%c.param_patt: %C.2) { +// CHECK:STDOUT: fn @Test(%c.param_patt: %C.b1d) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %C.2 = name_ref c, %c +// CHECK:STDOUT: %c.ref: %C.b1d = name_ref c, %c // CHECK:STDOUT: %HasExtraInterfaces.ref.loc11: = name_ref HasExtraInterfaces, imports.%HasExtraInterfaces [template = imports.%HasExtraInterfaces] -// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.4 [template = constants.%I.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.6 [template = constants.%assoc0] +// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.9f4 [template = constants.%I.type] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.9b9 [template = constants.%assoc0] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(constants.%Self.1: %I.type) [from "has_extra_interfaces.carbon"] { +// CHECK:STDOUT: generic fn @F(constants.%Self.ce8: %I.type) [from "has_extra_interfaces.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -1872,7 +1872,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.1) {} +// CHECK:STDOUT: specific @F(constants.%Self.ce8) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%tuple.type) { // CHECK:STDOUT: %T => constants.%tuple.type diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon b/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon index cd26a7fd0cb5..0200a9e13a22 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon @@ -56,13 +56,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.bc4: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type.2, %F.type [symbolic] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type.bc4, %F.type [symbolic] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] @@ -78,7 +78,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .X = %X.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -100,15 +100,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt.loc4_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc4_13.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self.2: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc4_13.2) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @I.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.bc4), @I.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] // CHECK:STDOUT: %assoc0.loc4_31.2: @I.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc4_31.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.bc4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.decl: @I.%F.type (%F.type) = fn_decl @F [symbolic = @I.%F (constants.%F)] {} {} // CHECK:STDOUT: %assoc0.loc4_31.1: @I.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc4_31.2 (constants.%assoc0)] // CHECK:STDOUT: @@ -142,7 +142,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%T.loc4_13.1: type, @I.%Self.1: @I.%I.type (%I.type.2)) { +// CHECK:STDOUT: generic fn @F(@I.%T.loc4_13.1: type, @I.%Self.1: @I.%I.type (%I.type.bc4)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -168,53 +168,53 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %X: type = class_type @X [template] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.9d1: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.9 [symbolic] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%InInterfaceArgs)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%InInterfaceArgs) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, imports.%import_ref.9 [template] +// CHECK:STDOUT: %F.type.8ee: type = fn_type @F.1, @I(%T) [symbolic] +// CHECK:STDOUT: %F.129: %F.type.8ee = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.351: type = assoc_entity_type %I.type.9d1, %F.type.8ee [symbolic] +// CHECK:STDOUT: %assoc0.fd0: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d8 [symbolic] +// CHECK:STDOUT: %I.type.da1: type = facet_type <@I, @I(%InInterfaceArgs)> [template] +// CHECK:STDOUT: %F.type.5dc: type = fn_type @F.1, @I(%InInterfaceArgs) [template] +// CHECK:STDOUT: %F.55d: %F.type.5dc = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.800: type = assoc_entity_type %I.type.da1, %F.type.5dc [template] +// CHECK:STDOUT: %assoc0.d7d: %F.assoc_type.800 = assoc_entity element0, imports.%import_ref.8d8 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %I.facet: %I.type.2 = facet_value %X, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.2a0: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.eb4: %F.type.2a0 = struct_value () [template] +// CHECK:STDOUT: %I.facet: %I.type.9d1 = facet_value %X, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %I.type.1 = import_ref Main//types, I, loaded [template = constants.%I.generic] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//types, C, unloaded -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//types, X, loaded [template = constants.%X] -// CHECK:STDOUT: %import_ref.4: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//types, inst54 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//types, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//types, loc4_31, unloaded -// CHECK:STDOUT: %import_ref.8: @I.%F.type (%F.type.1) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.1)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.848: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic] +// CHECK:STDOUT: %import_ref.208 = import_ref Main//types, C, unloaded +// CHECK:STDOUT: %import_ref.58f: type = import_ref Main//types, X, loaded [template = constants.%X] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9c1 = import_ref Main//types, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.355 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.938: @I.%F.type (%F.type.8ee) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.129)] +// CHECK:STDOUT: %import_ref.8d8 = import_ref Main//types, loc4_31, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 -// CHECK:STDOUT: .X = imports.%import_ref.3 +// CHECK:STDOUT: .I = imports.%import_ref.848 +// CHECK:STDOUT: .C = imports.%import_ref.208 +// CHECK:STDOUT: .X = imports.%import_ref.58f // CHECK:STDOUT: .InInterfaceArgs = %InInterfaceArgs.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %InInterfaceArgs.decl: type = class_decl @InInterfaceArgs [template = constants.%InInterfaceArgs] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { -// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.3 [template = constants.%X] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.1 [template = constants.%I.generic] +// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.58f [template = constants.%X] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] // CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, file.%InInterfaceArgs.decl [template = constants.%InInterfaceArgs] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.3] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.da1] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } @@ -224,23 +224,23 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, imports.%import_ref.9 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.8ee)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.8ee) = struct_value () [symbolic = %F (constants.%F.129)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.9d1), @I.%F.type (%F.type.8ee) [symbolic = %F.assoc_type (constants.%F.assoc_type.351)] +// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.351) = assoc_entity element0, imports.%import_ref.8d8 [symbolic = %assoc0 (constants.%assoc0.fd0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .F = imports.%import_ref.7 -// CHECK:STDOUT: witness = (imports.%import_ref.8) +// CHECK:STDOUT: .Self = imports.%import_ref.9c1 +// CHECK:STDOUT: .F = imports.%import_ref.355 +// CHECK:STDOUT: witness = (imports.%import_ref.938) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %X.ref as %I.type { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.2 [template = constants.%F.3] {} {} +// CHECK:STDOUT: %F.decl: %F.type.2a0 = fn_decl @F.2 [template = constants.%F.eb4] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -257,11 +257,11 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.acf +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.2) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.9d1) [from "types.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -285,12 +285,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt => constants.%InInterfaceArgs // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.da1 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.5dc +// CHECK:STDOUT: %F => constants.%F.55d +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.800 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.d7d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%InInterfaceArgs, constants.%I.facet) {} @@ -304,52 +304,52 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.9d1: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.10 [symbolic] +// CHECK:STDOUT: %F.type.8ee: type = fn_type @F.1, @I(%T) [symbolic] +// CHECK:STDOUT: %F.129: %F.type.8ee = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.351: type = assoc_entity_type %I.type.9d1, %F.type.8ee [symbolic] +// CHECK:STDOUT: %assoc0.fd0b7a.1: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d80ba.1 [symbolic] // CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [template] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%InInterfaceArgs)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%InInterfaceArgs) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, imports.%import_ref.10 [template] -// CHECK:STDOUT: %assoc0.3: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.13 [symbolic] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.17) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] +// CHECK:STDOUT: %I.type.da1: type = facet_type <@I, @I(%InInterfaceArgs)> [template] +// CHECK:STDOUT: %F.type.5dc: type = fn_type @F.1, @I(%InInterfaceArgs) [template] +// CHECK:STDOUT: %F.55d: %F.type.5dc = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.800: type = assoc_entity_type %I.type.da1, %F.type.5dc [template] +// CHECK:STDOUT: %assoc0.d7d: %F.assoc_type.800 = assoc_entity element0, imports.%import_ref.8d80ba.1 [template] +// CHECK:STDOUT: %assoc0.fd0b7a.2: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d80ba.2 [symbolic] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.a9d) [template] +// CHECK:STDOUT: %F.type.461: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.479: %F.type.461 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %I.type.1 = import_ref Main//types, I, loaded [template = constants.%I.generic] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//types, C, unloaded -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//types, X, loaded [template = constants.%X] -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [template = constants.%InInterfaceArgs] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//types, inst54 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//types, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: @I.%F.assoc_type (%F.assoc_type.1) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//types, F, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Main//types, loc4_31, unloaded -// CHECK:STDOUT: %import_ref.11: = import_ref Main//impl_in_interface_args, loc5_24, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.12 = import_ref Main//impl_in_interface_args, inst18 [no loc], unloaded -// CHECK:STDOUT: %import_ref.14: = import_ref Main//impl_in_interface_args, loc7_30, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.15: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [template = constants.%X] -// CHECK:STDOUT: %import_ref.16: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [template = constants.%I.type.3] +// CHECK:STDOUT: %import_ref.848: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic] +// CHECK:STDOUT: %import_ref.208 = import_ref Main//types, C, unloaded +// CHECK:STDOUT: %import_ref.58f: type = import_ref Main//types, X, loaded [template = constants.%X] +// CHECK:STDOUT: %import_ref.4a4: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [template = constants.%InInterfaceArgs] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9c1 = import_ref Main//types, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.336: @I.%F.assoc_type (%F.assoc_type.351) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.fd0b7a.2)] +// CHECK:STDOUT: %import_ref.3d2 = import_ref Main//types, F, unloaded +// CHECK:STDOUT: %import_ref.8d80ba.1 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//impl_in_interface_args, loc5_24, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.bf8 = import_ref Main//impl_in_interface_args, inst18 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9b8: = import_ref Main//impl_in_interface_args, loc7_30, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.0ae: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [template = constants.%X] +// CHECK:STDOUT: %import_ref.927: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [template = constants.%I.type.da1] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 -// CHECK:STDOUT: .X = imports.%import_ref.3 -// CHECK:STDOUT: .InInterfaceArgs = imports.%import_ref.4 +// CHECK:STDOUT: .I = imports.%import_ref.848 +// CHECK:STDOUT: .C = imports.%import_ref.208 +// CHECK:STDOUT: .X = imports.%import_ref.58f +// CHECK:STDOUT: .InInterfaceArgs = imports.%import_ref.4a4 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -358,7 +358,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %x.param_patt: %X = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %x.param: %X = value_param runtime_param0 -// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.3 [template = constants.%X] +// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.58f [template = constants.%X] // CHECK:STDOUT: %x: %X = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -368,52 +368,52 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, imports.%import_ref.10 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.8ee)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.8ee) = struct_value () [symbolic = %F (constants.%F.129)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.9d1), @I.%F.type (%F.type.8ee) [symbolic = %F.assoc_type (constants.%F.assoc_type.351)] +// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.351) = assoc_entity element0, imports.%import_ref.8d80ba.1 [symbolic = %assoc0 (constants.%assoc0.fd0b7a.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .F = imports.%import_ref.8 -// CHECK:STDOUT: witness = (imports.%import_ref.9) +// CHECK:STDOUT: .Self = imports.%import_ref.9c1 +// CHECK:STDOUT: .F = imports.%import_ref.336 +// CHECK:STDOUT: witness = (imports.%import_ref.3d2) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.15 as imports.%import_ref.16 [from "impl_in_interface_args.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.0ae as imports.%import_ref.927 [from "impl_in_interface_args.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.14 +// CHECK:STDOUT: witness = imports.%import_ref.9b8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.acf +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @InInterfaceArgs [from "impl_in_interface_args.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.12 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.11 +// CHECK:STDOUT: .Self = imports.%import_ref.bf8 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%x.param_patt: %X) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %X = name_ref x, %x -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.1 [template = constants.%I.generic] -// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, imports.%import_ref.4 [template = constants.%InInterfaceArgs] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.3] -// CHECK:STDOUT: %.loc6: %F.assoc_type.2 = specific_constant imports.%import_ref.8, @I(constants.%InInterfaceArgs) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref: %F.assoc_type.2 = name_ref F, %.loc6 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %F.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.3] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] +// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, imports.%import_ref.4a4 [template = constants.%InInterfaceArgs] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.da1] +// CHECK:STDOUT: %.loc6: %F.assoc_type.800 = specific_constant imports.%import_ref.336, @I(constants.%InInterfaceArgs) [template = constants.%assoc0.d7d] +// CHECK:STDOUT: %F.ref: %F.assoc_type.800 = name_ref F, %.loc6 [template = constants.%assoc0.d7d] +// CHECK:STDOUT: %impl.elem0: %F.type.5dc = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.479] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.2) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.9d1) [from "types.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -434,12 +434,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt => constants.%InInterfaceArgs // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.da1 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.5dc +// CHECK:STDOUT: %F => constants.%F.55d +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.800 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.d7d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- impl_in_class_args.carbon @@ -452,57 +452,57 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%InClassArgs) [template] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.9 [symbolic] +// CHECK:STDOUT: %C.5b1: type = class_type @C, @C(%InClassArgs) [template] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.9d1: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.8ee: type = fn_type @F.1, @I(%T) [symbolic] +// CHECK:STDOUT: %F.129: %F.type.8ee = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.351: type = assoc_entity_type %I.type.9d1, %F.type.8ee [symbolic] +// CHECK:STDOUT: %assoc0.fd0: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d8 [symbolic] // CHECK:STDOUT: %X: type = class_type @X [template] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%X)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%X) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, imports.%import_ref.9 [template] +// CHECK:STDOUT: %I.type.914: type = facet_type <@I, @I(%X)> [template] +// CHECK:STDOUT: %F.type.ea3: type = fn_type @F.1, @I(%X) [template] +// CHECK:STDOUT: %F.e0e: %F.type.ea3 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.f41: type = assoc_entity_type %I.type.914, %F.type.ea3 [template] +// CHECK:STDOUT: %assoc0.7c3: %F.assoc_type.f41 = assoc_entity element0, imports.%import_ref.8d8 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %I.facet: %I.type.2 = facet_value %C.2, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.73d: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.e0f: %F.type.73d = struct_value () [template] +// CHECK:STDOUT: %I.facet: %I.type.9d1 = facet_value %C.5b1, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %I.type.1 = import_ref Main//types, I, loaded [template = constants.%I.generic] -// CHECK:STDOUT: %import_ref.2: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//types, X, loaded [template = constants.%X] -// CHECK:STDOUT: %import_ref.4: = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//types, inst49 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//types, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//types, loc4_31, unloaded -// CHECK:STDOUT: %import_ref.8: @I.%F.type (%F.type.1) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.1)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//types, loc4_31, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//types, inst54 [no loc], unloaded +// CHECK:STDOUT: %import_ref.848: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic] +// CHECK:STDOUT: %import_ref.26e: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.58f: type = import_ref Main//types, X, loaded [template = constants.%X] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//types, inst49 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9c1 = import_ref Main//types, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.355 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.938: @I.%F.type (%F.type.8ee) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.129)] +// CHECK:STDOUT: %import_ref.8d8 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 -// CHECK:STDOUT: .X = imports.%import_ref.3 +// CHECK:STDOUT: .I = imports.%import_ref.848 +// CHECK:STDOUT: .C = imports.%import_ref.26e +// CHECK:STDOUT: .X = imports.%import_ref.58f // CHECK:STDOUT: .InClassArgs = %InClassArgs.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %InClassArgs.decl: type = class_decl @InClassArgs [template = constants.%InClassArgs] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.2 [template = constants.%C.generic] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.26e [template = constants.%C.generic] // CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, file.%InClassArgs.decl [template = constants.%InClassArgs] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.2] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.1 [template = constants.%I.generic] -// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.3 [template = constants.%X] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.3] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.5b1] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] +// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.58f [template = constants.%X] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.914] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } @@ -512,23 +512,23 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, imports.%import_ref.9 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.8ee)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.8ee) = struct_value () [symbolic = %F (constants.%F.129)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.9d1), @I.%F.type (%F.type.8ee) [symbolic = %F.assoc_type (constants.%F.assoc_type.351)] +// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.351) = assoc_entity element0, imports.%import_ref.8d8 [symbolic = %assoc0 (constants.%assoc0.fd0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .F = imports.%import_ref.7 -// CHECK:STDOUT: witness = (imports.%import_ref.8) +// CHECK:STDOUT: .Self = imports.%import_ref.9c1 +// CHECK:STDOUT: .F = imports.%import_ref.355 +// CHECK:STDOUT: witness = (imports.%import_ref.938) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C as %I.type { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.2 [template = constants.%F.3] {} {} +// CHECK:STDOUT: %F.decl: %F.type.73d = fn_decl @F.2 [template = constants.%F.e0f] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -551,18 +551,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.acf +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.2) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.9d1) [from "types.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -596,12 +596,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.914 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.ea3 +// CHECK:STDOUT: %F => constants.%F.e0e +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.f41 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.7c3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%X, constants.%I.facet) {} @@ -617,69 +617,69 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %InClassArgs: type = class_type @InClassArgs [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%InClassArgs) [template] +// CHECK:STDOUT: %C.5b1: type = class_type @C, @C(%InClassArgs) [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @I(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.12 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.9d1: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.8ee: type = fn_type @F.1, @I(%T) [symbolic] +// CHECK:STDOUT: %F.129: %F.type.8ee = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.351: type = assoc_entity_type %I.type.9d1, %F.type.8ee [symbolic] +// CHECK:STDOUT: %assoc0.fd0b7a.1: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d80ba.1 [symbolic] // CHECK:STDOUT: %X: type = class_type @X [template] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%X)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @I(%X) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, imports.%import_ref.12 [template] -// CHECK:STDOUT: %assoc0.3: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.15 [symbolic] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.19) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] +// CHECK:STDOUT: %I.type.914: type = facet_type <@I, @I(%X)> [template] +// CHECK:STDOUT: %F.type.ea3: type = fn_type @F.1, @I(%X) [template] +// CHECK:STDOUT: %F.e0e: %F.type.ea3 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.f41: type = assoc_entity_type %I.type.914, %F.type.ea3 [template] +// CHECK:STDOUT: %assoc0.7c3: %F.assoc_type.f41 = assoc_entity element0, imports.%import_ref.8d80ba.1 [template] +// CHECK:STDOUT: %assoc0.fd0b7a.2: %F.assoc_type.351 = assoc_entity element0, imports.%import_ref.8d80ba.2 [symbolic] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.8f2f) [template] +// CHECK:STDOUT: %F.type.563: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.6f3: %F.type.563 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %I.type.1 = import_ref Main//types, I, loaded [template = constants.%I.generic] -// CHECK:STDOUT: %import_ref.2: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//types, X, loaded [template = constants.%X] -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [template = constants.%InClassArgs] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//types, inst49 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//impl_in_class_args, loc5_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//impl_in_class_args, inst18 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//types, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: @I.%F.assoc_type (%F.assoc_type.1) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//types, F, unloaded -// CHECK:STDOUT: %import_ref.12 = import_ref Main//types, loc4_31, unloaded -// CHECK:STDOUT: %import_ref.13: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.14 = import_ref Main//types, inst54 [no loc], unloaded -// CHECK:STDOUT: %import_ref.16: = import_ref Main//impl_in_class_args, loc7_29, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.17: type = import_ref Main//impl_in_class_args, loc7_19, loaded [template = constants.%C.2] -// CHECK:STDOUT: %import_ref.18: type = import_ref Main//impl_in_class_args, loc7_27, loaded [template = constants.%I.type.3] +// CHECK:STDOUT: %import_ref.848: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic] +// CHECK:STDOUT: %import_ref.26e: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.58f: type = import_ref Main//types, X, loaded [template = constants.%X] +// CHECK:STDOUT: %import_ref.4d5: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [template = constants.%InClassArgs] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//types, inst49 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//impl_in_class_args, loc5_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.683 = import_ref Main//impl_in_class_args, inst18 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9c1 = import_ref Main//types, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.336: @I.%F.assoc_type (%F.assoc_type.351) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.fd0b7a.2)] +// CHECK:STDOUT: %import_ref.3d2 = import_ref Main//types, F, unloaded +// CHECK:STDOUT: %import_ref.8d80ba.1 = import_ref Main//types, loc4_31, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.3: = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded +// CHECK:STDOUT: %import_ref.74e: = import_ref Main//impl_in_class_args, loc7_29, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.829: type = import_ref Main//impl_in_class_args, loc7_19, loaded [template = constants.%C.5b1] +// CHECK:STDOUT: %import_ref.022: type = import_ref Main//impl_in_class_args, loc7_27, loaded [template = constants.%I.type.914] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 -// CHECK:STDOUT: .X = imports.%import_ref.3 -// CHECK:STDOUT: .InClassArgs = imports.%import_ref.4 +// CHECK:STDOUT: .I = imports.%import_ref.848 +// CHECK:STDOUT: .C = imports.%import_ref.26e +// CHECK:STDOUT: .X = imports.%import_ref.58f +// CHECK:STDOUT: .InClassArgs = imports.%import_ref.4d5 // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { -// CHECK:STDOUT: %c.patt: %C.2 = binding_pattern c -// CHECK:STDOUT: %c.param_patt: %C.2 = value_param_pattern %c.patt, runtime_param0 +// CHECK:STDOUT: %c.patt: %C.5b1 = binding_pattern c +// CHECK:STDOUT: %c.param_patt: %C.5b1 = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc6_22: type = splice_block %C [template = constants.%C.2] { -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.2 [template = constants.%C.generic] -// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, imports.%import_ref.4 [template = constants.%InClassArgs] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.2] +// CHECK:STDOUT: %c.param: %C.5b1 = value_param runtime_param0 +// CHECK:STDOUT: %.loc6_22: type = splice_block %C [template = constants.%C.5b1] { +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.26e [template = constants.%C.generic] +// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, imports.%import_ref.4d5 [template = constants.%InClassArgs] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.5b1] // CHECK:STDOUT: } -// CHECK:STDOUT: %c: %C.2 = bind_name c, %c.param +// CHECK:STDOUT: %c: %C.5b1 = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -688,24 +688,24 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, imports.%import_ref.12 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @I(%T) [symbolic = %F.type (constants.%F.type.8ee)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.8ee) = struct_value () [symbolic = %F (constants.%F.129)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.9d1), @I.%F.type (%F.type.8ee) [symbolic = %F.assoc_type (constants.%F.assoc_type.351)] +// CHECK:STDOUT: %assoc0: @I.%F.assoc_type (%F.assoc_type.351) = assoc_entity element0, imports.%import_ref.8d80ba.1 [symbolic = %assoc0 (constants.%assoc0.fd0b7a.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .F = imports.%import_ref.10 -// CHECK:STDOUT: witness = (imports.%import_ref.11) +// CHECK:STDOUT: .Self = imports.%import_ref.9c1 +// CHECK:STDOUT: .F = imports.%import_ref.336 +// CHECK:STDOUT: witness = (imports.%import_ref.3d2) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.17 as imports.%import_ref.18 [from "impl_in_class_args.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.829 as imports.%import_ref.022 [from "impl_in_class_args.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.16 +// CHECK:STDOUT: witness = imports.%import_ref.74e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "types.carbon"] { @@ -716,37 +716,37 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @InClassArgs [from "impl_in_class_args.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.683 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.14 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.13 +// CHECK:STDOUT: .Self = imports.%import_ref.acf +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @H(%c.param_patt: %C.2) { +// CHECK:STDOUT: fn @H(%c.param_patt: %C.5b1) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %C.2 = name_ref c, %c -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.1 [template = constants.%I.generic] -// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.3 [template = constants.%X] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.3] -// CHECK:STDOUT: %.loc6_34: %F.assoc_type.2 = specific_constant imports.%import_ref.10, @I(constants.%X) [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.ref: %F.assoc_type.2 = name_ref F, %.loc6_34 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %F.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.3] +// CHECK:STDOUT: %c.ref: %C.5b1 = name_ref c, %c +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] +// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%import_ref.58f [template = constants.%X] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.914] +// CHECK:STDOUT: %.loc6_34: %F.assoc_type.f41 = specific_constant imports.%import_ref.336, @I(constants.%X) [template = constants.%assoc0.7c3] +// CHECK:STDOUT: %F.ref: %F.assoc_type.f41 = name_ref F, %.loc6_34 [template = constants.%assoc0.7c3] +// CHECK:STDOUT: %impl.elem0: %F.type.ea3 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.6f3] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.2) [from "types.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.9d1) [from "types.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -779,11 +779,11 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %T.patt => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.914 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.ea3 +// CHECK:STDOUT: %F => constants.%F.e0e +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.f41 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.7c3 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index 10d8339142c0..f64522db527f 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -96,28 +96,28 @@ fn Call() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.e0c: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.983: %F.type.e0c = struct_value () [template] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//i, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.9f4: type = import_ref Main//i, I, loaded [template = constants.%I.type] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2 = import_ref Main//i, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//i, loc4_21, unloaded -// CHECK:STDOUT: %import_ref.4: %F.type.1 = import_ref Main//i, F, loaded [template = constants.%F.1] +// CHECK:STDOUT: %import_ref.f8c = import_ref Main//i, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e20 = import_ref Main//i, loc4_21, unloaded +// CHECK:STDOUT: %import_ref.95d: %F.type.9df = import_ref Main//i, F, loaded [template = constants.%F.478] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 +// CHECK:STDOUT: .I = imports.%import_ref.9f4 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } @@ -126,20 +126,20 @@ fn Call() { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.1 [template = constants.%I.type] +// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.9f4 [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "i.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 -// CHECK:STDOUT: witness = (imports.%import_ref.4) +// CHECK:STDOUT: .Self = imports.%import_ref.f8c +// CHECK:STDOUT: .F = imports.%import_ref.e20 +// CHECK:STDOUT: witness = (imports.%import_ref.95d) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.e0c = fn_decl @F.2 [template = constants.%F.983] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -179,18 +179,18 @@ fn Call() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//c, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//c, C, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Main//c, loc6_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c, inst18 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//c, loc6_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//c, inst18 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Get = %Get.decl // CHECK:STDOUT: } @@ -200,7 +200,7 @@ fn Call() { // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -208,8 +208,8 @@ fn Call() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Get() -> %C; @@ -227,35 +227,35 @@ fn Call() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.12) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.911 [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.ba1) [template] +// CHECK:STDOUT: %F.type.731: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.2a3: %F.type.731 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Get.type = import_ref Main//get, Get, loaded [template = constants.%Get] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//i, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.2a6: %Get.type = import_ref Main//get, Get, loaded [template = constants.%Get] +// CHECK:STDOUT: %import_ref.9f4: type = import_ref Main//i, I, loaded [template = constants.%I.type] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Main//get, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//get, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//i, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %F.assoc_type = import_ref Main//i, loc4_21, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//i, F, unloaded -// CHECK:STDOUT: %import_ref.9: = import_ref Main//c, loc7_13, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//c, loc7_6, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.11: type = import_ref Main//c, loc7_11, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.8db: = import_ref Main//get, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//get, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f8c = import_ref Main//i, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.145: %F.assoc_type = import_ref Main//i, loc4_21, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.a15 = import_ref Main//i, F, unloaded +// CHECK:STDOUT: %import_ref.938: = import_ref Main//c, loc7_13, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.3de: type = import_ref Main//c, loc7_6, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.60b: type = import_ref Main//c, loc7_11, loaded [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Get = imports.%import_ref.1 -// CHECK:STDOUT: .I = imports.%import_ref.2 +// CHECK:STDOUT: .Get = imports.%import_ref.2a6 +// CHECK:STDOUT: .I = imports.%import_ref.9f4 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Call = %Call.decl // CHECK:STDOUT: } @@ -266,30 +266,30 @@ fn Call() { // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "i.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.f8c +// CHECK:STDOUT: .F = imports.%import_ref.145 +// CHECK:STDOUT: witness = (imports.%import_ref.a15) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.10 as imports.%import_ref.11 [from "c.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.3de as imports.%import_ref.60b [from "c.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.938 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "get.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Call() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Get.ref: %Get.type = name_ref Get, imports.%import_ref.1 [template = constants.%Get] +// CHECK:STDOUT: %Get.ref: %Get.type = name_ref Get, imports.%import_ref.2a6 [template = constants.%Get] // CHECK:STDOUT: %.loc9: ref %C = temporary_storage // CHECK:STDOUT: %Get.call: init %C = call %Get.ref() to %.loc9 -// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.2 [template = constants.%I.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.9f4 [template = constants.%I.type] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.145 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %F.type.9df = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2a3] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/multiple_extend.carbon b/toolchain/check/testdata/impl/multiple_extend.carbon index 2791e5bb8cd5..01d0714765df 100644 --- a/toolchain/check/testdata/impl/multiple_extend.carbon +++ b/toolchain/check/testdata/impl/multiple_extend.carbon @@ -163,27 +163,27 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template] -// CHECK:STDOUT: %Self.1: %HasF.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %Self.348: %HasF.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.16d: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] +// CHECK:STDOUT: %F.a20: %F.type.16d = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %HasF.type, %F.type.16d [template] +// CHECK:STDOUT: %assoc0.472: %F.assoc_type = assoc_entity element0, @HasF.%F.decl [template] // CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template] -// CHECK:STDOUT: %Self.2: %HasG.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %G.type.1: type = fn_type @G.1 [template] -// CHECK:STDOUT: %G.1: %G.type.1 = struct_value () [template] -// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.1 [template] -// CHECK:STDOUT: %assoc0.2: %G.assoc_type = assoc_entity element0, @HasG.%G.decl [template] +// CHECK:STDOUT: %Self.4db: %HasG.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %G.type.6fe: type = fn_type @G.1 [template] +// CHECK:STDOUT: %G.0ea: %G.type.6fe = struct_value () [template] +// CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %HasG.type, %G.type.6fe [template] +// CHECK:STDOUT: %assoc0.8b3: %G.assoc_type = assoc_entity element0, @HasG.%G.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness.1 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%G.decl) [template] -// CHECK:STDOUT: %G.type.2: type = fn_type @G.2 [template] -// CHECK:STDOUT: %G.2: %G.type.2 = struct_value () [template] -// CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, %impl_witness.2 [template] +// CHECK:STDOUT: %impl_witness.52d: = impl_witness (@impl.1.%F.decl) [template] +// CHECK:STDOUT: %F.type.cf2: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.f1c: %F.type.cf2 = struct_value () [template] +// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness.52d [template] +// CHECK:STDOUT: %impl_witness.5f2: = impl_witness (@impl.2.%G.decl) [template] +// CHECK:STDOUT: %G.type.892: type = fn_type @G.2 [template] +// CHECK:STDOUT: %G.90b: %G.type.892 = struct_value () [template] +// CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, %impl_witness.5f2 [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] @@ -220,9 +220,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasF { -// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.348] +// CHECK:STDOUT: %F.decl: %F.type.16d = fn_decl @F.1 [template = constants.%F.a20] {} {} +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.472] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -231,9 +231,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasG { -// CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %G.decl: %G.type.1 = fn_decl @G.1 [template = constants.%G.1] {} {} -// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.2] +// CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.4db] +// CHECK:STDOUT: %G.decl: %G.type.6fe = fn_decl @G.1 [template = constants.%G.0ea] {} {} +// CHECK:STDOUT: %assoc0: %G.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.8b3] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -242,7 +242,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %Self.ref as %HasF.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.cf2 = fn_decl @F.2 [template = constants.%F.f1c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -250,7 +250,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %HasG.ref { -// CHECK:STDOUT: %G.decl: %G.type.2 = fn_decl @G.2 [template = constants.%G.2] {} {} +// CHECK:STDOUT: %G.decl: %G.type.892 = fn_decl @G.2 [template = constants.%G.90b] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .G = %G.decl @@ -262,12 +262,12 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.52d] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] // CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [template = constants.%HasG.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%G.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%G.decl) [template = constants.%impl_witness.5f2] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -300,27 +300,27 @@ fn P(o: O) { // CHECK:STDOUT: fn @H(%c.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %F.ref.loc22: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.1] -// CHECK:STDOUT: %impl.elem0.loc22: %F.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc22: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.472] +// CHECK:STDOUT: %impl.elem0.loc22: %F.type.16d = impl_witness_access constants.%impl_witness.52d, element0 [template = constants.%F.f1c] // CHECK:STDOUT: %F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22() // CHECK:STDOUT: %c.ref.loc23: %C = name_ref c, %c -// CHECK:STDOUT: %F.ref.loc23: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.1] -// CHECK:STDOUT: %impl.elem0.loc23: %F.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc23: %F.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.472] +// CHECK:STDOUT: %impl.elem0.loc23: %F.type.16d = impl_witness_access constants.%impl_witness.52d, element0 [template = constants.%F.f1c] // CHECK:STDOUT: %F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23() // CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %G.ref.loc24: %G.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0.loc24: %G.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%G.2] +// CHECK:STDOUT: %G.ref.loc24: %G.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.8b3] +// CHECK:STDOUT: %impl.elem0.loc24: %G.type.6fe = impl_witness_access constants.%impl_witness.5f2, element0 [template = constants.%G.90b] // CHECK:STDOUT: %G.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24() // CHECK:STDOUT: %c.ref.loc25: %C = name_ref c, %c -// CHECK:STDOUT: %G.ref.loc25: %G.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0.loc25: %G.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%G.2] +// CHECK:STDOUT: %G.ref.loc25: %G.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.8b3] +// CHECK:STDOUT: %impl.elem0.loc25: %G.type.6fe = impl_witness_access constants.%impl_witness.5f2, element0 [template = constants.%G.90b] // CHECK:STDOUT: %G.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.348) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @G.1(constants.%Self.4db) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%HasF.facet) {} // CHECK:STDOUT: @@ -330,26 +330,26 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasA1.type: type = facet_type <@HasA1> [template] -// CHECK:STDOUT: %Self.1: %HasA1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %A.type.1: type = fn_type @A.1 [template] -// CHECK:STDOUT: %A.1: %A.type.1 = struct_value () [template] -// CHECK:STDOUT: %A.assoc_type.1: type = assoc_entity_type %HasA1.type, %A.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %A.assoc_type.1 = assoc_entity element0, @HasA1.%A.decl [template] +// CHECK:STDOUT: %Self.6df: %HasA1.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %A.type.319: type = fn_type @A.1 [template] +// CHECK:STDOUT: %A.072: %A.type.319 = struct_value () [template] +// CHECK:STDOUT: %A.assoc_type.f09: type = assoc_entity_type %HasA1.type, %A.type.319 [template] +// CHECK:STDOUT: %assoc0.680: %A.assoc_type.f09 = assoc_entity element0, @HasA1.%A.decl [template] // CHECK:STDOUT: %HasA2.type: type = facet_type <@HasA2> [template] -// CHECK:STDOUT: %Self.2: %HasA2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %A.type.2: type = fn_type @A.2 [template] -// CHECK:STDOUT: %A.2: %A.type.2 = struct_value () [template] -// CHECK:STDOUT: %A.assoc_type.2: type = assoc_entity_type %HasA2.type, %A.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %A.assoc_type.2 = assoc_entity element0, @HasA2.%A.decl [template] +// CHECK:STDOUT: %Self.0d0: %HasA2.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %A.type.8fb: type = fn_type @A.2 [template] +// CHECK:STDOUT: %A.838: %A.type.8fb = struct_value () [template] +// CHECK:STDOUT: %A.assoc_type.c72: type = assoc_entity_type %HasA2.type, %A.type.8fb [template] +// CHECK:STDOUT: %assoc0.abb: %A.assoc_type.c72 = assoc_entity element0, @HasA2.%A.decl [template] // CHECK:STDOUT: %D: type = class_type @D [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%A.decl) [template] -// CHECK:STDOUT: %A.type.3: type = fn_type @A.3 [template] -// CHECK:STDOUT: %A.3: %A.type.3 = struct_value () [template] -// CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, %impl_witness.1 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%A.decl) [template] -// CHECK:STDOUT: %A.type.4: type = fn_type @A.4 [template] -// CHECK:STDOUT: %A.4: %A.type.4 = struct_value () [template] -// CHECK:STDOUT: %HasA2.facet: %HasA2.type = facet_value %D, %impl_witness.2 [template] +// CHECK:STDOUT: %impl_witness.bb1: = impl_witness (@impl.1.%A.decl) [template] +// CHECK:STDOUT: %A.type.79c: type = fn_type @A.3 [template] +// CHECK:STDOUT: %A.cd0: %A.type.79c = struct_value () [template] +// CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, %impl_witness.bb1 [template] +// CHECK:STDOUT: %impl_witness.fce: = impl_witness (@impl.2.%A.decl) [template] +// CHECK:STDOUT: %A.type.c3a: type = fn_type @A.4 [template] +// CHECK:STDOUT: %A.cfa: %A.type.c3a = struct_value () [template] +// CHECK:STDOUT: %HasA2.facet: %HasA2.type = facet_value %D, %impl_witness.fce [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] @@ -386,9 +386,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasA1 { -// CHECK:STDOUT: %Self: %HasA1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %A.decl: %A.type.1 = fn_decl @A.1 [template = constants.%A.1] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type.1 = assoc_entity element0, %A.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %Self: %HasA1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.6df] +// CHECK:STDOUT: %A.decl: %A.type.319 = fn_decl @A.1 [template = constants.%A.072] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type.f09 = assoc_entity element0, %A.decl [template = constants.%assoc0.680] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -397,9 +397,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasA2 { -// CHECK:STDOUT: %Self: %HasA2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %A.decl: %A.type.2 = fn_decl @A.2 [template = constants.%A.2] {} {} -// CHECK:STDOUT: %assoc0: %A.assoc_type.2 = assoc_entity element0, %A.decl [template = constants.%assoc0.2] +// CHECK:STDOUT: %Self: %HasA2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.0d0] +// CHECK:STDOUT: %A.decl: %A.type.8fb = fn_decl @A.2 [template = constants.%A.838] {} {} +// CHECK:STDOUT: %assoc0: %A.assoc_type.c72 = assoc_entity element0, %A.decl [template = constants.%assoc0.abb] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -408,7 +408,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %Self.ref as %HasA1.ref { -// CHECK:STDOUT: %A.decl: %A.type.3 = fn_decl @A.3 [template = constants.%A.3] {} {} +// CHECK:STDOUT: %A.decl: %A.type.79c = fn_decl @A.3 [template = constants.%A.cd0] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .A = %A.decl @@ -416,7 +416,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %HasA2.ref { -// CHECK:STDOUT: %A.decl: %A.type.4 = fn_decl @A.4 [template = constants.%A.4] {} {} +// CHECK:STDOUT: %A.decl: %A.type.c3a = fn_decl @A.4 [template = constants.%A.cfa] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .A = %A.decl @@ -428,12 +428,12 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [template = constants.%D] // CHECK:STDOUT: %HasA1.ref: type = name_ref HasA1, file.%HasA1.decl [template = constants.%HasA1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%A.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.1.%A.decl) [template = constants.%impl_witness.bb1] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [template = constants.%D] // CHECK:STDOUT: %HasA2.ref: type = name_ref HasA2, file.%HasA2.decl [template = constants.%HasA2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%A.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%A.decl) [template = constants.%impl_witness.fce] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -472,9 +472,9 @@ fn P(o: O) { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @A.1(constants.%Self.6df) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @A.2(constants.%Self.2) {} +// CHECK:STDOUT: specific @A.2(constants.%Self.0d0) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @A.1(constants.%HasA1.facet) {} // CHECK:STDOUT: @@ -485,24 +485,24 @@ fn P(o: O) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %HasI.type: type = facet_type <@HasI> [template] // CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = fn_type @I.1 [template] +// CHECK:STDOUT: %I.type.ed9: type = fn_type @I.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %I.1: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %HasI.type, %I.type.1 [template] +// CHECK:STDOUT: %I.f16: %I.type.ed9 = struct_value () [template] +// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %HasI.type, %I.type.ed9 [template] // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @HasI.%I.decl [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %J.type: type = fn_type @J [template] // CHECK:STDOUT: %J: %J.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %E: type = class_type @E [template] // CHECK:STDOUT: %E.elem: type = unbound_element_type %E, %B [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%I.decl) [template] -// CHECK:STDOUT: %I.type.2: type = fn_type @I.2 [template] -// CHECK:STDOUT: %I.2: %I.type.2 = struct_value () [template] +// CHECK:STDOUT: %I.type.340: type = fn_type @I.2 [template] +// CHECK:STDOUT: %I.c36: %I.type.340 = struct_value () [template] // CHECK:STDOUT: %HasI.facet: %HasI.type = facet_value %E, %impl_witness [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %B} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template] +// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: } @@ -538,7 +538,7 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasI { // CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %I.decl: %I.type.1 = fn_decl @I.1 [template = constants.%I.1] {} {} +// CHECK:STDOUT: %I.decl: %I.type.ed9 = fn_decl @I.1 [template = constants.%I.f16] {} {} // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %I.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -548,7 +548,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %HasI.ref { -// CHECK:STDOUT: %I.decl: %I.type.2 = fn_decl @I.2 [template = constants.%I.2] {} {} +// CHECK:STDOUT: %I.decl: %I.type.340 = fn_decl @I.2 [template = constants.%I.c36] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .I = %I.decl @@ -557,7 +557,7 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B @@ -573,7 +573,7 @@ fn P(o: O) { // CHECK:STDOUT: %HasI.ref: type = name_ref HasI, file.%HasI.decl [template = constants.%HasI.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%I.decl) [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%E @@ -602,11 +602,11 @@ fn P(o: O) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %E.ref.loc20: type = name_ref E, file.%E.decl [template = constants.%E] // CHECK:STDOUT: %I.ref.loc20: %I.assoc_type = name_ref I, @HasI.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc20: %I.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.2] +// CHECK:STDOUT: %impl.elem0.loc20: %I.type.ed9 = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.c36] // CHECK:STDOUT: %I.call.loc20: init %empty_tuple.type = call %impl.elem0.loc20() // CHECK:STDOUT: %e.ref.loc21: %E = name_ref e, %e // CHECK:STDOUT: %I.ref.loc21: %I.assoc_type = name_ref I, @HasI.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc21: %I.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.2] +// CHECK:STDOUT: %impl.elem0.loc21: %I.type.ed9 = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.c36] // CHECK:STDOUT: %I.call.loc21: init %empty_tuple.type = call %impl.elem0.loc21() // CHECK:STDOUT: %E.ref.loc22: type = name_ref E, file.%E.decl [template = constants.%E] // CHECK:STDOUT: %J.ref.loc22: %J.type = name_ref J, @B.%J.decl [template = constants.%J] @@ -625,24 +625,24 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Base: type = class_type @Base [template] -// CHECK:STDOUT: %K.type.1: type = fn_type @K.1 [template] -// CHECK:STDOUT: %K.1: %K.type.1 = struct_value () [template] +// CHECK:STDOUT: %K.type.4ac: type = fn_type @K.1 [template] +// CHECK:STDOUT: %K.5b6: %K.type.4ac = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %HasK.type: type = facet_type <@HasK> [template] // CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %K.type.2: type = fn_type @K.2 [template] -// CHECK:STDOUT: %K.2: %K.type.2 = struct_value () [template] -// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %HasK.type, %K.type.2 [template] +// CHECK:STDOUT: %K.type.cec: type = fn_type @K.2 [template] +// CHECK:STDOUT: %K.389: %K.type.cec = struct_value () [template] +// CHECK:STDOUT: %K.assoc_type: type = assoc_entity_type %HasK.type, %K.type.cec [template] // CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, @HasK.%K.decl [template] // CHECK:STDOUT: %L: type = class_type @L [template] // CHECK:STDOUT: %L.elem: type = unbound_element_type %L, %Base [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%K.decl) [template] -// CHECK:STDOUT: %K.type.3: type = fn_type @K.3 [template] -// CHECK:STDOUT: %K.3: %K.type.3 = struct_value () [template] +// CHECK:STDOUT: %K.type.5ab: type = fn_type @K.3 [template] +// CHECK:STDOUT: %K.d12: %K.type.5ab = struct_value () [template] // CHECK:STDOUT: %HasK.facet: %HasK.type = facet_value %L, %impl_witness [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %Base} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %complete_type.15c: = complete_type_witness %struct_type.base.b1e [template] // CHECK:STDOUT: %M.type: type = fn_type @M [template] // CHECK:STDOUT: %M: %M.type = struct_value () [template] // CHECK:STDOUT: } @@ -678,7 +678,7 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: interface @HasK { // CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %K.decl: %K.type.2 = fn_decl @K.2 [template = constants.%K.2] {} {} +// CHECK:STDOUT: %K.decl: %K.type.cec = fn_decl @K.2 [template = constants.%K.389] {} {} // CHECK:STDOUT: %assoc0: %K.assoc_type = assoc_entity element0, %K.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -688,7 +688,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %HasK.ref { -// CHECK:STDOUT: %K.decl: %K.type.3 = fn_decl @K.3 [template = constants.%K.3] {} {} +// CHECK:STDOUT: %K.decl: %K.type.5ab = fn_decl @K.3 [template = constants.%K.d12] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .K = %K.decl @@ -696,8 +696,8 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %K.decl: %K.type.1 = fn_decl @K.1 [template = constants.%K.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %K.decl: %K.type.4ac = fn_decl @K.1 [template = constants.%K.5b6] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base @@ -713,7 +713,7 @@ fn P(o: O) { // CHECK:STDOUT: %HasK.ref: type = name_ref HasK, file.%HasK.decl [template = constants.%HasK.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%K.decl) [template = constants.%impl_witness] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%L @@ -755,37 +755,37 @@ fn P(o: O) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NBase: type = class_type @NBase [template] -// CHECK:STDOUT: %N.type.1: type = fn_type @N.1 [template] +// CHECK:STDOUT: %N.type.e79: type = fn_type @N.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %N.1: %N.type.1 = struct_value () [template] +// CHECK:STDOUT: %N.950: %N.type.e79 = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %HasN1.type: type = facet_type <@HasN1> [template] -// CHECK:STDOUT: %Self.1: %HasN1.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %N.type.2: type = fn_type @N.2 [template] -// CHECK:STDOUT: %N.2: %N.type.2 = struct_value () [template] -// CHECK:STDOUT: %N.assoc_type.1: type = assoc_entity_type %HasN1.type, %N.type.2 [template] -// CHECK:STDOUT: %assoc0.1: %N.assoc_type.1 = assoc_entity element0, @HasN1.%N.decl [template] +// CHECK:STDOUT: %Self.f9f: %HasN1.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %N.type.4c7: type = fn_type @N.2 [template] +// CHECK:STDOUT: %N.ba3: %N.type.4c7 = struct_value () [template] +// CHECK:STDOUT: %N.assoc_type.58f: type = assoc_entity_type %HasN1.type, %N.type.4c7 [template] +// CHECK:STDOUT: %assoc0.f1a: %N.assoc_type.58f = assoc_entity element0, @HasN1.%N.decl [template] // CHECK:STDOUT: %HasN2.type: type = facet_type <@HasN2> [template] -// CHECK:STDOUT: %Self.2: %HasN2.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %N.type.3: type = fn_type @N.3 [template] -// CHECK:STDOUT: %N.3: %N.type.3 = struct_value () [template] -// CHECK:STDOUT: %N.assoc_type.2: type = assoc_entity_type %HasN2.type, %N.type.3 [template] -// CHECK:STDOUT: %assoc0.2: %N.assoc_type.2 = assoc_entity element0, @HasN2.%N.decl [template] +// CHECK:STDOUT: %Self.82d: %HasN2.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %N.type.06f: type = fn_type @N.3 [template] +// CHECK:STDOUT: %N.039: %N.type.06f = struct_value () [template] +// CHECK:STDOUT: %N.assoc_type.fb0: type = assoc_entity_type %HasN2.type, %N.type.06f [template] +// CHECK:STDOUT: %assoc0.b5a: %N.assoc_type.fb0 = assoc_entity element0, @HasN2.%N.decl [template] // CHECK:STDOUT: %O: type = class_type @O [template] // CHECK:STDOUT: %O.elem: type = unbound_element_type %O, %NBase [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%N.decl) [template] -// CHECK:STDOUT: %N.type.4: type = fn_type @N.4 [template] -// CHECK:STDOUT: %N.4: %N.type.4 = struct_value () [template] -// CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, %impl_witness.1 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%N.decl) [template] -// CHECK:STDOUT: %N.type.5: type = fn_type @N.5 [template] -// CHECK:STDOUT: %N.5: %N.type.5 = struct_value () [template] -// CHECK:STDOUT: %HasN2.facet: %HasN2.type = facet_value %O, %impl_witness.2 [template] -// CHECK:STDOUT: %N.type.6: type = fn_type @N.6 [template] -// CHECK:STDOUT: %N.6: %N.type.6 = struct_value () [template] -// CHECK:STDOUT: %struct_type.base.1: type = struct_type {.base: %NBase} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.base.1 [template] +// CHECK:STDOUT: %impl_witness.d2b: = impl_witness (@impl.1.%N.decl) [template] +// CHECK:STDOUT: %N.type.b8d: type = fn_type @N.4 [template] +// CHECK:STDOUT: %N.cd2: %N.type.b8d = struct_value () [template] +// CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, %impl_witness.d2b [template] +// CHECK:STDOUT: %impl_witness.93f: = impl_witness (@impl.2.%N.decl) [template] +// CHECK:STDOUT: %N.type.afd: type = fn_type @N.5 [template] +// CHECK:STDOUT: %N.512: %N.type.afd = struct_value () [template] +// CHECK:STDOUT: %HasN2.facet: %HasN2.type = facet_value %O, %impl_witness.93f [template] +// CHECK:STDOUT: %N.type.964: type = fn_type @N.6 [template] +// CHECK:STDOUT: %N.3dd: %N.type.964 = struct_value () [template] +// CHECK:STDOUT: %struct_type.base.9c6: type = struct_type {.base: %NBase} [template] +// CHECK:STDOUT: %complete_type.121: = complete_type_witness %struct_type.base.9c6 [template] // CHECK:STDOUT: %P.type: type = fn_type @P [template] // CHECK:STDOUT: %P: %P.type = struct_value () [template] // CHECK:STDOUT: } @@ -822,9 +822,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasN1 { -// CHECK:STDOUT: %Self: %HasN1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %N.decl: %N.type.2 = fn_decl @N.2 [template = constants.%N.2] {} {} -// CHECK:STDOUT: %assoc0: %N.assoc_type.1 = assoc_entity element0, %N.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %Self: %HasN1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f9f] +// CHECK:STDOUT: %N.decl: %N.type.4c7 = fn_decl @N.2 [template = constants.%N.ba3] {} {} +// CHECK:STDOUT: %assoc0: %N.assoc_type.58f = assoc_entity element0, %N.decl [template = constants.%assoc0.f1a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -833,9 +833,9 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @HasN2 { -// CHECK:STDOUT: %Self: %HasN2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %N.decl: %N.type.3 = fn_decl @N.3 [template = constants.%N.3] {} {} -// CHECK:STDOUT: %assoc0: %N.assoc_type.2 = assoc_entity element0, %N.decl [template = constants.%assoc0.2] +// CHECK:STDOUT: %Self: %HasN2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.82d] +// CHECK:STDOUT: %N.decl: %N.type.06f = fn_decl @N.3 [template = constants.%N.039] {} {} +// CHECK:STDOUT: %assoc0: %N.assoc_type.fb0 = assoc_entity element0, %N.decl [template = constants.%assoc0.b5a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -844,7 +844,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %Self.ref as %HasN1.ref { -// CHECK:STDOUT: %N.decl: %N.type.4 = fn_decl @N.4 [template = constants.%N.4] {} {} +// CHECK:STDOUT: %N.decl: %N.type.b8d = fn_decl @N.4 [template = constants.%N.cd2] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .N = %N.decl @@ -852,7 +852,7 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %HasN2.ref { -// CHECK:STDOUT: %N.decl: %N.type.5 = fn_decl @N.5 [template = constants.%N.5] {} {} +// CHECK:STDOUT: %N.decl: %N.type.afd = fn_decl @N.5 [template = constants.%N.512] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .N = %N.decl @@ -860,8 +860,8 @@ fn P(o: O) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NBase { -// CHECK:STDOUT: %N.decl: %N.type.1 = fn_decl @N.1 [template = constants.%N.1] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %N.decl: %N.type.e79 = fn_decl @N.1 [template = constants.%N.950] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NBase @@ -876,14 +876,14 @@ fn P(o: O) { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [template = constants.%O] // CHECK:STDOUT: %HasN1.ref: type = name_ref HasN1, file.%HasN1.decl [template = constants.%HasN1.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.1.%N.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.1.%N.decl) [template = constants.%impl_witness.d2b] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [template = constants.%O] // CHECK:STDOUT: %HasN2.ref: type = name_ref HasN2, file.%HasN2.decl [template = constants.%HasN2.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc21: = impl_witness (@impl.2.%N.decl) [template = constants.%impl_witness.2] -// CHECK:STDOUT: %N.decl: %N.type.6 = fn_decl @N.6 [template = constants.%N.6] {} {} -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %impl_witness.loc21: = impl_witness (@impl.2.%N.decl) [template = constants.%impl_witness.93f] +// CHECK:STDOUT: %N.decl: %N.type.964 = fn_decl @N.6 [template = constants.%N.3dd] {} {} +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.9c6 [template = constants.%complete_type.121] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%O @@ -925,17 +925,17 @@ fn P(o: O) { // CHECK:STDOUT: fn @P(%o.param_patt: %O) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %O.ref.loc28: type = name_ref O, file.%O.decl [template = constants.%O] -// CHECK:STDOUT: %N.ref.loc28: %N.type.6 = name_ref N, @O.%N.decl [template = constants.%N.6] +// CHECK:STDOUT: %N.ref.loc28: %N.type.964 = name_ref N, @O.%N.decl [template = constants.%N.3dd] // CHECK:STDOUT: %N.call.loc28: init %empty_tuple.type = call %N.ref.loc28() // CHECK:STDOUT: %o.ref: %O = name_ref o, %o -// CHECK:STDOUT: %N.ref.loc29: %N.type.6 = name_ref N, @O.%N.decl [template = constants.%N.6] +// CHECK:STDOUT: %N.ref.loc29: %N.type.964 = name_ref N, @O.%N.decl [template = constants.%N.3dd] // CHECK:STDOUT: %N.call.loc29: init %empty_tuple.type = call %N.ref.loc29() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.2(constants.%Self.1) {} +// CHECK:STDOUT: specific @N.2(constants.%Self.f9f) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @N.3(constants.%Self.2) {} +// CHECK:STDOUT: specific @N.3(constants.%Self.82d) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @N.2(constants.%HasN1.facet) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/basic.carbon b/toolchain/check/testdata/impl/no_prelude/basic.carbon index 722e3c451a74..d993077382a7 100644 --- a/toolchain/check/testdata/impl/no_prelude/basic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/basic.carbon @@ -23,16 +23,16 @@ impl C as Simple { // CHECK:STDOUT: constants { // CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template] // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.c46: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.41f: %F.type.c46 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Simple.type, %F.type.c46 [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @Simple.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.228: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.07c: %F.type.228 = struct_value () [template] // CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -52,7 +52,7 @@ impl C as Simple { // CHECK:STDOUT: // CHECK:STDOUT: interface @Simple { // CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.c46 = fn_decl @F.1 [template = constants.%F.41f] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -62,7 +62,7 @@ impl C as Simple { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %Simple.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.228 = fn_decl @F.2 [template = constants.%F.07c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl diff --git a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon b/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon index 35a2534736ed..08cc45a30801 100644 --- a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon @@ -67,31 +67,31 @@ impl (C, C).0 as I {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] -// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.843: %Interface.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.2: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %J.type: type = facet_type <@J> [template] -// CHECK:STDOUT: %Self.3: %J.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.f9f: %J.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %K.type: type = facet_type <@K> [template] -// CHECK:STDOUT: %Self.4: %K.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.744: %K.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %L.type: type = facet_type <@L> [template] -// CHECK:STDOUT: %Self.5: %L.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %T.1: %I.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: %I.type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type.1: type = facet_access_type %T.1 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (), @impl.1(%T.1) [symbolic] -// CHECK:STDOUT: %T.2: %J.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %J.type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type.2: type = facet_access_type %T.2 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (), @impl.2(%T.2) [symbolic] -// CHECK:STDOUT: %T.3: %K.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.3: %K.type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type.3: type = facet_access_type %T.3 [symbolic] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (), @impl.3(%T.3) [symbolic] -// CHECK:STDOUT: %T.4: %L.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.4: %L.type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %T.as_type.4: type = facet_access_type %T.4 [symbolic] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (), @impl.4(%T.4) [symbolic] +// CHECK:STDOUT: %Self.863: %L.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %T.84f: %I.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.8d6: %I.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.26f: type = facet_access_type %T.84f [symbolic] +// CHECK:STDOUT: %impl_witness.62c: = impl_witness (), @impl.1(%T.84f) [symbolic] +// CHECK:STDOUT: %T.be2: %J.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.139: %J.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.6d2: type = facet_access_type %T.be2 [symbolic] +// CHECK:STDOUT: %impl_witness.305: = impl_witness (), @impl.2(%T.be2) [symbolic] +// CHECK:STDOUT: %T.624: %K.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.2b4: %K.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.4d9: type = facet_access_type %T.624 [symbolic] +// CHECK:STDOUT: %impl_witness.c4a: = impl_witness (), @impl.3(%T.624) [symbolic] +// CHECK:STDOUT: %T.4bb: %L.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.61a: %L.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.as_type.e4e: type = facet_access_type %T.4bb [symbolic] +// CHECK:STDOUT: %impl_witness.a8f: = impl_witness (), @impl.4(%T.4bb) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -108,109 +108,109 @@ impl (C, C).0 as I {} // CHECK:STDOUT: %K.decl: type = interface_decl @K [template = constants.%K.type] {} {} // CHECK:STDOUT: %L.decl: type = interface_decl @L [template = constants.%L.type] {} {} // CHECK:STDOUT: impl_decl @impl.1 [template] { -// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.8d6)] +// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.8d6)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc11: %I.type = name_ref T, %T.loc11_14.1 [symbolic = %T.loc11_14.2 (constants.%T.1)] -// CHECK:STDOUT: %T.as_type.loc11_21.1: type = facet_access_type %T.ref.loc11 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.1)] -// CHECK:STDOUT: %.loc11: type = converted %T.ref.loc11, %T.as_type.loc11_21.1 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.1)] +// CHECK:STDOUT: %T.ref.loc11: %I.type = name_ref T, %T.loc11_14.1 [symbolic = %T.loc11_14.2 (constants.%T.84f)] +// CHECK:STDOUT: %T.as_type.loc11_21.1: type = facet_access_type %T.ref.loc11 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.26f)] +// CHECK:STDOUT: %.loc11: type = converted %T.ref.loc11, %T.as_type.loc11_21.1 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.26f)] // CHECK:STDOUT: %Interface.ref.loc11: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc11: %I.type = value_param runtime_param // CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %T.loc11_14.1: %I.type = bind_symbolic_name T, 0, %T.param.loc11 [symbolic = %T.loc11_14.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc11_14.1: %I.type = bind_symbolic_name T, 0, %T.param.loc11 [symbolic = %T.loc11_14.2 (constants.%T.84f)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (), @impl.1(constants.%T.1) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (), @impl.1(constants.%T.84f) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.62c)] // CHECK:STDOUT: impl_decl @impl.2 [template] { -// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.139)] +// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.139)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc12: %J.type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T.2)] -// CHECK:STDOUT: %T.as_type.loc12_21.1: type = facet_access_type %T.ref.loc12 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.2)] -// CHECK:STDOUT: %.loc12: type = converted %T.ref.loc12, %T.as_type.loc12_21.1 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.2)] +// CHECK:STDOUT: %T.ref.loc12: %J.type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T.be2)] +// CHECK:STDOUT: %T.as_type.loc12_21.1: type = facet_access_type %T.ref.loc12 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.6d2)] +// CHECK:STDOUT: %.loc12: type = converted %T.ref.loc12, %T.as_type.loc12_21.1 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.6d2)] // CHECK:STDOUT: %Interface.ref.loc12: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc12: %J.type = value_param runtime_param // CHECK:STDOUT: %J.ref.loc12: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %T.loc12_14.1: %J.type = bind_symbolic_name T, 0, %T.param.loc12 [symbolic = %T.loc12_14.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc12_14.1: %J.type = bind_symbolic_name T, 0, %T.param.loc12 [symbolic = %T.loc12_14.2 (constants.%T.be2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (), @impl.2(constants.%T.2) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (), @impl.2(constants.%T.be2) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.305)] // CHECK:STDOUT: impl_decl @impl.3 [template] { -// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] -// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] +// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.2b4)] +// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.2b4)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc13: %K.type = name_ref T, %T.loc13_14.1 [symbolic = %T.loc13_14.2 (constants.%T.3)] -// CHECK:STDOUT: %T.as_type.loc13_21.1: type = facet_access_type %T.ref.loc13 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.3)] -// CHECK:STDOUT: %.loc13: type = converted %T.ref.loc13, %T.as_type.loc13_21.1 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.3)] +// CHECK:STDOUT: %T.ref.loc13: %K.type = name_ref T, %T.loc13_14.1 [symbolic = %T.loc13_14.2 (constants.%T.624)] +// CHECK:STDOUT: %T.as_type.loc13_21.1: type = facet_access_type %T.ref.loc13 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.4d9)] +// CHECK:STDOUT: %.loc13: type = converted %T.ref.loc13, %T.as_type.loc13_21.1 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.4d9)] // CHECK:STDOUT: %Interface.ref.loc13: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc13: %K.type = value_param runtime_param // CHECK:STDOUT: %K.ref.loc13: type = name_ref K, file.%K.decl [template = constants.%K.type] -// CHECK:STDOUT: %T.loc13_14.1: %K.type = bind_symbolic_name T, 0, %T.param.loc13 [symbolic = %T.loc13_14.2 (constants.%T.3)] +// CHECK:STDOUT: %T.loc13_14.1: %K.type = bind_symbolic_name T, 0, %T.param.loc13 [symbolic = %T.loc13_14.2 (constants.%T.624)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (), @impl.3(constants.%T.3) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (), @impl.3(constants.%T.624) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.c4a)] // CHECK:STDOUT: impl_decl @impl.4 [template] { -// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] -// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] +// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.61a)] +// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.61a)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc14: %L.type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T.4)] -// CHECK:STDOUT: %T.as_type.loc14_21.1: type = facet_access_type %T.ref.loc14 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.4)] -// CHECK:STDOUT: %.loc14: type = converted %T.ref.loc14, %T.as_type.loc14_21.1 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.4)] +// CHECK:STDOUT: %T.ref.loc14: %L.type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T.4bb)] +// CHECK:STDOUT: %T.as_type.loc14_21.1: type = facet_access_type %T.ref.loc14 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.e4e)] +// CHECK:STDOUT: %.loc14: type = converted %T.ref.loc14, %T.as_type.loc14_21.1 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.e4e)] // CHECK:STDOUT: %Interface.ref.loc14: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc14: %L.type = value_param runtime_param // CHECK:STDOUT: %L.ref.loc14: type = name_ref L, file.%L.decl [template = constants.%L.type] -// CHECK:STDOUT: %T.loc14_14.1: %L.type = bind_symbolic_name T, 0, %T.param.loc14 [symbolic = %T.loc14_14.2 (constants.%T.4)] +// CHECK:STDOUT: %T.loc14_14.1: %L.type = bind_symbolic_name T, 0, %T.param.loc14 [symbolic = %T.loc14_14.2 (constants.%T.4bb)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T.4) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T.4bb) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.a8f)] // CHECK:STDOUT: impl_decl @impl.1 [template] { -// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.8d6)] +// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.8d6)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc18: %I.type = name_ref T, %T.loc18 [symbolic = constants.%T.1] -// CHECK:STDOUT: %T.as_type.loc18: type = facet_access_type %T.ref.loc18 [symbolic = constants.%T.as_type.1] -// CHECK:STDOUT: %.loc18: type = converted %T.ref.loc18, %T.as_type.loc18 [symbolic = constants.%T.as_type.1] +// CHECK:STDOUT: %T.ref.loc18: %I.type = name_ref T, %T.loc18 [symbolic = constants.%T.84f] +// CHECK:STDOUT: %T.as_type.loc18: type = facet_access_type %T.ref.loc18 [symbolic = constants.%T.as_type.26f] +// CHECK:STDOUT: %.loc18: type = converted %T.ref.loc18, %T.as_type.loc18 [symbolic = constants.%T.as_type.26f] // CHECK:STDOUT: %Interface.ref.loc18: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc18: %I.type = value_param runtime_param // CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %T.loc18: %I.type = bind_symbolic_name T, 0, %T.param.loc18 [symbolic = constants.%T.1] +// CHECK:STDOUT: %T.loc18: %I.type = bind_symbolic_name T, 0, %T.param.loc18 [symbolic = constants.%T.84f] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.2 [template] { -// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.139)] +// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.139)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc19: %J.type = name_ref T, %T.loc19 [symbolic = constants.%T.2] -// CHECK:STDOUT: %T.as_type.loc19: type = facet_access_type %T.ref.loc19 [symbolic = constants.%T.as_type.2] -// CHECK:STDOUT: %.loc19: type = converted %T.ref.loc19, %T.as_type.loc19 [symbolic = constants.%T.as_type.2] +// CHECK:STDOUT: %T.ref.loc19: %J.type = name_ref T, %T.loc19 [symbolic = constants.%T.be2] +// CHECK:STDOUT: %T.as_type.loc19: type = facet_access_type %T.ref.loc19 [symbolic = constants.%T.as_type.6d2] +// CHECK:STDOUT: %.loc19: type = converted %T.ref.loc19, %T.as_type.loc19 [symbolic = constants.%T.as_type.6d2] // CHECK:STDOUT: %Interface.ref.loc19: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc19: %J.type = value_param runtime_param // CHECK:STDOUT: %J.ref.loc19: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %T.loc19: %J.type = bind_symbolic_name T, 0, %T.param.loc19 [symbolic = constants.%T.2] +// CHECK:STDOUT: %T.loc19: %J.type = bind_symbolic_name T, 0, %T.param.loc19 [symbolic = constants.%T.be2] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.3 [template] { -// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] -// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] +// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.2b4)] +// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.2b4)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc20: %K.type = name_ref T, %T.loc20 [symbolic = constants.%T.3] -// CHECK:STDOUT: %T.as_type.loc20: type = facet_access_type %T.ref.loc20 [symbolic = constants.%T.as_type.3] -// CHECK:STDOUT: %.loc20: type = converted %T.ref.loc20, %T.as_type.loc20 [symbolic = constants.%T.as_type.3] +// CHECK:STDOUT: %T.ref.loc20: %K.type = name_ref T, %T.loc20 [symbolic = constants.%T.624] +// CHECK:STDOUT: %T.as_type.loc20: type = facet_access_type %T.ref.loc20 [symbolic = constants.%T.as_type.4d9] +// CHECK:STDOUT: %.loc20: type = converted %T.ref.loc20, %T.as_type.loc20 [symbolic = constants.%T.as_type.4d9] // CHECK:STDOUT: %Interface.ref.loc20: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc20: %K.type = value_param runtime_param // CHECK:STDOUT: %K.ref.loc20: type = name_ref K, file.%K.decl [template = constants.%K.type] -// CHECK:STDOUT: %T.loc20: %K.type = bind_symbolic_name T, 0, %T.param.loc20 [symbolic = constants.%T.3] +// CHECK:STDOUT: %T.loc20: %K.type = bind_symbolic_name T, 0, %T.param.loc20 [symbolic = constants.%T.624] // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.4 [template] { -// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] -// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] +// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.61a)] +// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.61a)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc21: %L.type = name_ref T, %T.loc21 [symbolic = constants.%T.4] -// CHECK:STDOUT: %T.as_type.loc21: type = facet_access_type %T.ref.loc21 [symbolic = constants.%T.as_type.4] -// CHECK:STDOUT: %.loc21: type = converted %T.ref.loc21, %T.as_type.loc21 [symbolic = constants.%T.as_type.4] +// CHECK:STDOUT: %T.ref.loc21: %L.type = name_ref T, %T.loc21 [symbolic = constants.%T.4bb] +// CHECK:STDOUT: %T.as_type.loc21: type = facet_access_type %T.ref.loc21 [symbolic = constants.%T.as_type.e4e] +// CHECK:STDOUT: %.loc21: type = converted %T.ref.loc21, %T.as_type.loc21 [symbolic = constants.%T.as_type.e4e] // CHECK:STDOUT: %Interface.ref.loc21: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type] // CHECK:STDOUT: %T.param.loc21: %L.type = value_param runtime_param // CHECK:STDOUT: %L.ref.loc21: type = name_ref L, file.%L.decl [template = constants.%L.type] -// CHECK:STDOUT: %T.loc21: %L.type = bind_symbolic_name T, 0, %T.param.loc21 [symbolic = constants.%T.4] +// CHECK:STDOUT: %T.loc21: %L.type = bind_symbolic_name T, 0, %T.param.loc21 [symbolic = constants.%T.4bb] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { -// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.843] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -218,7 +218,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -226,7 +226,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { -// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3] +// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f9f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -234,7 +234,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @K { -// CHECK:STDOUT: %Self: %K.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.4] +// CHECK:STDOUT: %Self: %K.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.744] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -242,7 +242,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @L { -// CHECK:STDOUT: %Self: %L.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.5] +// CHECK:STDOUT: %Self: %L.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.863] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -250,10 +250,10 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.1(%T.loc11_14.1: %I.type) { -// CHECK:STDOUT: %T.loc11_14.2: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc11_14.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc11_14.2: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.as_type.loc11_21.2: type = facet_access_type %T.loc11_14.2 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc11_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %T.loc11_14.2: %I.type = bind_symbolic_name T, 0 [symbolic = %T.loc11_14.2 (constants.%T.84f)] +// CHECK:STDOUT: %T.patt.loc11_14.2: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.8d6)] +// CHECK:STDOUT: %T.as_type.loc11_21.2: type = facet_access_type %T.loc11_14.2 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.26f)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc11_14.2) [symbolic = %impl_witness (constants.%impl_witness.62c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -264,10 +264,10 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.2(%T.loc12_14.1: %J.type) { -// CHECK:STDOUT: %T.loc12_14.2: %J.type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc12_14.2: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.as_type.loc12_21.2: type = facet_access_type %T.loc12_14.2 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc12_14.2) [symbolic = %impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %T.loc12_14.2: %J.type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T.be2)] +// CHECK:STDOUT: %T.patt.loc12_14.2: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.139)] +// CHECK:STDOUT: %T.as_type.loc12_21.2: type = facet_access_type %T.loc12_14.2 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.6d2)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc12_14.2) [symbolic = %impl_witness (constants.%impl_witness.305)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -278,10 +278,10 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.3(%T.loc13_14.1: %K.type) { -// CHECK:STDOUT: %T.loc13_14.2: %K.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_14.2 (constants.%T.3)] -// CHECK:STDOUT: %T.patt.loc13_14.2: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.3)] -// CHECK:STDOUT: %T.as_type.loc13_21.2: type = facet_access_type %T.loc13_14.2 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.3)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc13_14.2) [symbolic = %impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %T.loc13_14.2: %K.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_14.2 (constants.%T.624)] +// CHECK:STDOUT: %T.patt.loc13_14.2: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.2b4)] +// CHECK:STDOUT: %T.as_type.loc13_21.2: type = facet_access_type %T.loc13_14.2 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.4d9)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc13_14.2) [symbolic = %impl_witness (constants.%impl_witness.c4a)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -292,10 +292,10 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.4(%T.loc14_14.1: %L.type) { -// CHECK:STDOUT: %T.loc14_14.2: %L.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T.4)] -// CHECK:STDOUT: %T.patt.loc14_14.2: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.4)] -// CHECK:STDOUT: %T.as_type.loc14_21.2: type = facet_access_type %T.loc14_14.2 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.4)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %T.loc14_14.2: %L.type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T.4bb)] +// CHECK:STDOUT: %T.patt.loc14_14.2: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.61a)] +// CHECK:STDOUT: %T.as_type.loc14_21.2: type = facet_access_type %T.loc14_14.2 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.e4e)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.a8f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -305,38 +305,38 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @impl.1(constants.%T.1) { -// CHECK:STDOUT: %T.loc11_14.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc11_14.2 => constants.%T.1 -// CHECK:STDOUT: %T.as_type.loc11_21.2 => constants.%T.as_type.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: specific @impl.1(constants.%T.84f) { +// CHECK:STDOUT: %T.loc11_14.2 => constants.%T.84f +// CHECK:STDOUT: %T.patt.loc11_14.2 => constants.%T.84f +// CHECK:STDOUT: %T.as_type.loc11_21.2 => constants.%T.as_type.26f +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.62c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl.1(%T.loc11_14.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @impl.2(constants.%T.2) { -// CHECK:STDOUT: %T.loc12_14.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc12_14.2 => constants.%T.2 -// CHECK:STDOUT: %T.as_type.loc12_21.2 => constants.%T.as_type.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: specific @impl.2(constants.%T.be2) { +// CHECK:STDOUT: %T.loc12_14.2 => constants.%T.be2 +// CHECK:STDOUT: %T.patt.loc12_14.2 => constants.%T.be2 +// CHECK:STDOUT: %T.as_type.loc12_21.2 => constants.%T.as_type.6d2 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.305 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl.2(%T.loc12_14.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @impl.3(constants.%T.3) { -// CHECK:STDOUT: %T.loc13_14.2 => constants.%T.3 -// CHECK:STDOUT: %T.patt.loc13_14.2 => constants.%T.3 -// CHECK:STDOUT: %T.as_type.loc13_21.2 => constants.%T.as_type.3 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.3 +// CHECK:STDOUT: specific @impl.3(constants.%T.624) { +// CHECK:STDOUT: %T.loc13_14.2 => constants.%T.624 +// CHECK:STDOUT: %T.patt.loc13_14.2 => constants.%T.624 +// CHECK:STDOUT: %T.as_type.loc13_21.2 => constants.%T.as_type.4d9 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.c4a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl.3(%T.loc13_14.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @impl.4(constants.%T.4) { -// CHECK:STDOUT: %T.loc14_14.2 => constants.%T.4 -// CHECK:STDOUT: %T.patt.loc14_14.2 => constants.%T.4 -// CHECK:STDOUT: %T.as_type.loc14_21.2 => constants.%T.as_type.4 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.4 +// CHECK:STDOUT: specific @impl.4(constants.%T.4bb) { +// CHECK:STDOUT: %T.loc14_14.2 => constants.%T.4bb +// CHECK:STDOUT: %T.patt.loc14_14.2 => constants.%T.4bb +// CHECK:STDOUT: %T.as_type.loc14_21.2 => constants.%T.as_type.e4e +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.a8f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl.4(%T.loc14_14.2) {} @@ -345,9 +345,9 @@ impl (C, C).0 as I {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %J.type: type = facet_type <@J> [template] -// CHECK:STDOUT: %Self.2: %J.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.f9f: %J.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: %I.type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic] @@ -389,7 +389,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -397,7 +397,7 @@ impl (C, C).0 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { -// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f9f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon b/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon index bce6db755d02..9ba498ad3eab 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon @@ -82,9 +82,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.1 [template] +// CHECK:STDOUT: %Op.type.16a: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.93e: %Op.type.16a = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.16a [template] // CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, @Add.%Op.decl [template] // CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template] // CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template] @@ -96,12 +96,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [template] // CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %iN.builtin [symbolic] +// CHECK:STDOUT: %require_complete.889: = require_complete_type %iN.builtin [symbolic] // CHECK:STDOUT: %complete_type: = complete_type_witness %iN.builtin [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Op.decl), @impl(%N) [symbolic] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2, @impl(%N) [symbolic] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %MyInt [symbolic] +// CHECK:STDOUT: %Op.type.43e: type = fn_type @Op.2, @impl(%N) [symbolic] +// CHECK:STDOUT: %Op.83a: %Op.type.43e = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.b8c: = require_complete_type %MyInt [symbolic] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %MyInt, %impl_witness [symbolic] // CHECK:STDOUT: %Double.type: type = fn_type @Double [template] // CHECK:STDOUT: %Double: %Double.type = struct_value () [template] @@ -204,7 +204,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: interface @Add { // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Op.decl: %Op.type.1 = fn_decl @Op.1 [template = constants.%Op.1] { +// CHECK:STDOUT: %Op.decl: %Op.type.16a = fn_decl @Op.1 [template = constants.%Op.93e] { // CHECK:STDOUT: %self.patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern other @@ -247,12 +247,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %impl_witness: = impl_witness (%Op.decl), @impl(%N.loc15_14.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N.loc15_14.2) [symbolic = %Op.type (constants.%Op.type.2)] -// CHECK:STDOUT: %Op: @impl.%Op.type (%Op.type.2) = struct_value () [symbolic = %Op (constants.%Op.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%MyInt.loc15_39.2 (%MyInt) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N.loc15_14.2) [symbolic = %Op.type (constants.%Op.type.43e)] +// CHECK:STDOUT: %Op: @impl.%Op.type (%Op.type.43e) = struct_value () [symbolic = %Op (constants.%Op.83a)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%MyInt.loc15_39.2 (%MyInt) [symbolic = %require_complete (constants.%require_complete.b8c)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %MyInt.loc15_39.1 as %Add.ref { -// CHECK:STDOUT: %Op.decl: @impl.%Op.type (%Op.type.2) = fn_decl @Op.2 [symbolic = @impl.%Op (constants.%Op.2)] { +// CHECK:STDOUT: %Op.decl: @impl.%Op.type (%Op.type.43e) = fn_decl @Op.2 [symbolic = @impl.%Op (constants.%Op.83a)] { // CHECK:STDOUT: %self.patt: @Op.2.%MyInt (%MyInt) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @Op.2.%MyInt (%MyInt) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: @Op.2.%MyInt (%MyInt) = binding_pattern other @@ -283,7 +283,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %iN.builtin: type = int_type signed, %N.loc11_13.2 [symbolic = %iN.builtin (constants.%iN.builtin)] -// CHECK:STDOUT: %require_complete: = require_complete_type @MyInt.%iN.builtin (%iN.builtin) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @MyInt.%iN.builtin (%iN.builtin) [symbolic = %require_complete (constants.%require_complete.889)] // CHECK:STDOUT: %complete_type.loc13_1.2: = complete_type_witness @MyInt.%iN.builtin (%iN.builtin) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -327,16 +327,16 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.loc19_39.2: type = class_type @MyInt, @MyInt(%N.loc19_11.2) [symbolic = %MyInt.loc19_39.2 (constants.%MyInt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Double.%MyInt.loc19_39.2 (%MyInt) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N.loc19_11.2) [symbolic = %Op.type (constants.%Op.type.2)] -// CHECK:STDOUT: %Op: @Double.%Op.type (%Op.type.2) = struct_value () [symbolic = %Op (constants.%Op.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Double.%MyInt.loc19_39.2 (%MyInt) [symbolic = %require_complete (constants.%require_complete.b8c)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N.loc19_11.2) [symbolic = %Op.type (constants.%Op.type.43e)] +// CHECK:STDOUT: %Op: @Double.%Op.type (%Op.type.43e) = struct_value () [symbolic = %Op (constants.%Op.83a)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%N.param_patt: Core.IntLiteral](%x.param_patt: @Double.%MyInt.loc19_39.2 (%MyInt)) -> @Double.%MyInt.loc19_39.2 (%MyInt) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref.loc20_10: @Double.%MyInt.loc19_39.2 (%MyInt) = name_ref x, %x // CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [template = constants.%Add.type] // CHECK:STDOUT: %Op.ref: %Op.assoc_type = name_ref Op, @Add.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [symbolic = %Op (constants.%Op.2)] +// CHECK:STDOUT: %impl.elem0: %Op.type.16a = impl_witness_access constants.%impl_witness, element0 [symbolic = %Op (constants.%Op.83a)] // CHECK:STDOUT: %Op.bound: = bound_method %x.ref.loc20_10, %impl.elem0 // CHECK:STDOUT: %x.ref.loc20_21: @Double.%MyInt.loc19_39.2 (%MyInt) = name_ref x, %x // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.bound, @Op.2(constants.%N) @@ -358,7 +358,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.889 // CHECK:STDOUT: %complete_type.loc13_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -369,9 +369,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.2 -// CHECK:STDOUT: %Op => constants.%Op.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.43e +// CHECK:STDOUT: %Op => constants.%Op.83a +// CHECK:STDOUT: %require_complete => constants.%require_complete.b8c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt(@impl.%N.loc15_14.2) {} @@ -409,30 +409,30 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [template] // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic] // CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %iN.builtin [symbolic] -// CHECK:STDOUT: %MyInt.1: type = class_type @MyInt, @MyInt(%N) [symbolic] +// CHECK:STDOUT: %complete_type.c6b: = complete_type_witness %iN.builtin [symbolic] +// CHECK:STDOUT: %MyInt.080: type = class_type @MyInt, @MyInt(%N) [symbolic] // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %iN.builtin [symbolic] +// CHECK:STDOUT: %require_complete.889: = require_complete_type %iN.builtin [symbolic] // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template] -// CHECK:STDOUT: %MyInt.2: type = class_type @MyInt, @MyInt(%int_64) [template] +// CHECK:STDOUT: %MyInt.f94: type = class_type @MyInt, @MyInt(%int_64) [template] // CHECK:STDOUT: %LocalDouble.type: type = fn_type @LocalDouble [template] // CHECK:STDOUT: %LocalDouble: %LocalDouble.type = struct_value () [template] // CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i64.builtin [template] +// CHECK:STDOUT: %complete_type.4a1: = complete_type_witness %i64.builtin [template] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.16a: type = fn_type @Op.1 [template] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.1 [template] -// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, imports.%import_ref.12 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (imports.%import_ref.16), @impl(%N) [symbolic] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2, @impl(%N) [symbolic] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %MyInt.1 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (imports.%import_ref.16), @impl(%int_64) [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (imports.%import_ref.17), @impl(%N) [symbolic] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.2, @impl(%int_64) [template] -// CHECK:STDOUT: %Op.3: %Op.type.3 = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.16a [template] +// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, imports.%import_ref.3bf [template] +// CHECK:STDOUT: %impl_witness.43f: = impl_witness (imports.%import_ref.b01), @impl(%N) [symbolic] +// CHECK:STDOUT: %Op.type.c77: type = fn_type @Op.2, @impl(%N) [symbolic] +// CHECK:STDOUT: %Op.947: %Op.type.c77 = struct_value () [symbolic] +// CHECK:STDOUT: %require_complete.e07: = require_complete_type %MyInt.080 [symbolic] +// CHECK:STDOUT: %impl_witness.463: = impl_witness (imports.%import_ref.b01), @impl(%int_64) [template] +// CHECK:STDOUT: %impl_witness.68e: = impl_witness (imports.%import_ref.1b9), @impl(%N) [symbolic] +// CHECK:STDOUT: %Op.type.d80: type = fn_type @Op.2, @impl(%int_64) [template] +// CHECK:STDOUT: %Op.bdc: %Op.type.d80 = struct_value () [template] // CHECK:STDOUT: %CallImportedDouble.type: type = fn_type @CallImportedDouble [template] // CHECK:STDOUT: %CallImportedDouble: %CallImportedDouble.type = struct_value () [template] // CHECK:STDOUT: %Double.type: type = fn_type @Double [template] @@ -441,94 +441,94 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//generic_impl, Add, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//generic_impl, IntLiteral, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//generic_impl, Int, unloaded -// CHECK:STDOUT: %import_ref.4: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [template = constants.%MyInt.generic] -// CHECK:STDOUT: %import_ref.5: %Double.type = import_ref Main//generic_impl, Double, loaded [template = constants.%Double] -// CHECK:STDOUT: %import_ref.7: = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.1)] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//generic_impl, inst89 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//generic_impl, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: %Op.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//generic_impl, Op, unloaded -// CHECK:STDOUT: %import_ref.13: = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.3)] -// CHECK:STDOUT: %import_ref.14: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @impl.%MyInt (constants.%MyInt.1)] -// CHECK:STDOUT: %import_ref.15: type = import_ref Main//generic_impl, loc15_44, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.16: @impl.%Op.type (%Op.type.2) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @impl.%Op (constants.%Op.2)] +// CHECK:STDOUT: %import_ref.4b5: type = import_ref Main//generic_impl, Add, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.f28 = import_ref Main//generic_impl, IntLiteral, unloaded +// CHECK:STDOUT: %import_ref.11e = import_ref Main//generic_impl, Int, unloaded +// CHECK:STDOUT: %import_ref.ea3: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [template = constants.%MyInt.generic] +// CHECK:STDOUT: %import_ref.206: %Double.type = import_ref Main//generic_impl, Double, loaded [template = constants.%Double] +// CHECK:STDOUT: %import_ref.caf: = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.c6b)] +// CHECK:STDOUT: %import_ref.b26 = import_ref Main//generic_impl, inst89 [no loc], unloaded +// CHECK:STDOUT: %import_ref.72a = import_ref Main//generic_impl, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b57: %Op.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.b75 = import_ref Main//generic_impl, Op, unloaded +// CHECK:STDOUT: %import_ref.0f5: = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.68e)] +// CHECK:STDOUT: %import_ref.7b9: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @impl.%MyInt (constants.%MyInt.080)] +// CHECK:STDOUT: %import_ref.d37: type = import_ref Main//generic_impl, loc15_44, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.b01: @impl.%Op.type (%Op.type.c77) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @impl.%Op (constants.%Op.947)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Add = imports.%import_ref.1 -// CHECK:STDOUT: .IntLiteral = imports.%import_ref.2 -// CHECK:STDOUT: .Int = imports.%import_ref.3 -// CHECK:STDOUT: .MyInt = imports.%import_ref.4 -// CHECK:STDOUT: .Double = imports.%import_ref.5 +// CHECK:STDOUT: .Add = imports.%import_ref.4b5 +// CHECK:STDOUT: .IntLiteral = imports.%import_ref.f28 +// CHECK:STDOUT: .Int = imports.%import_ref.11e +// CHECK:STDOUT: .MyInt = imports.%import_ref.ea3 +// CHECK:STDOUT: .Double = imports.%import_ref.206 // CHECK:STDOUT: .LocalDouble = %LocalDouble.decl // CHECK:STDOUT: .CallImportedDouble = %CallImportedDouble.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %LocalDouble.decl: %LocalDouble.type = fn_decl @LocalDouble [template = constants.%LocalDouble] { -// CHECK:STDOUT: %x.patt: %MyInt.2 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %MyInt.2 = value_param_pattern %x.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %MyInt.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %MyInt.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %x.patt: %MyInt.f94 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %MyInt.f94 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %MyInt.f94 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %MyInt.f94 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %MyInt.ref.loc8_33: %MyInt.type = name_ref MyInt, imports.%import_ref.4 [template = constants.%MyInt.generic] +// CHECK:STDOUT: %MyInt.ref.loc8_33: %MyInt.type = name_ref MyInt, imports.%import_ref.ea3 [template = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc8_39: Core.IntLiteral = int_value 64 [template = constants.%int_64] -// CHECK:STDOUT: %MyInt.loc8_41: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.2] -// CHECK:STDOUT: %x.param: %MyInt.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc8: type = splice_block %MyInt.loc8_27 [template = constants.%MyInt.2] { -// CHECK:STDOUT: %MyInt.ref.loc8_19: %MyInt.type = name_ref MyInt, imports.%import_ref.4 [template = constants.%MyInt.generic] +// CHECK:STDOUT: %MyInt.loc8_41: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f94] +// CHECK:STDOUT: %x.param: %MyInt.f94 = value_param runtime_param0 +// CHECK:STDOUT: %.loc8: type = splice_block %MyInt.loc8_27 [template = constants.%MyInt.f94] { +// CHECK:STDOUT: %MyInt.ref.loc8_19: %MyInt.type = name_ref MyInt, imports.%import_ref.ea3 [template = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc8_25: Core.IntLiteral = int_value 64 [template = constants.%int_64] -// CHECK:STDOUT: %MyInt.loc8_27: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.2] +// CHECK:STDOUT: %MyInt.loc8_27: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f94] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %MyInt.2 = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref %MyInt.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %MyInt.2 = return_slot %return.param +// CHECK:STDOUT: %x: %MyInt.f94 = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref %MyInt.f94 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %MyInt.f94 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %CallImportedDouble.decl: %CallImportedDouble.type = fn_decl @CallImportedDouble [template = constants.%CallImportedDouble] { -// CHECK:STDOUT: %n.patt: %MyInt.2 = binding_pattern n -// CHECK:STDOUT: %n.param_patt: %MyInt.2 = value_param_pattern %n.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %MyInt.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %MyInt.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %n.patt: %MyInt.f94 = binding_pattern n +// CHECK:STDOUT: %n.param_patt: %MyInt.f94 = value_param_pattern %n.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %MyInt.f94 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %MyInt.f94 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %MyInt.ref.loc12_40: %MyInt.type = name_ref MyInt, imports.%import_ref.4 [template = constants.%MyInt.generic] +// CHECK:STDOUT: %MyInt.ref.loc12_40: %MyInt.type = name_ref MyInt, imports.%import_ref.ea3 [template = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc12_46: Core.IntLiteral = int_value 64 [template = constants.%int_64] -// CHECK:STDOUT: %MyInt.loc12_48: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.2] -// CHECK:STDOUT: %n.param: %MyInt.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12: type = splice_block %MyInt.loc12_34 [template = constants.%MyInt.2] { -// CHECK:STDOUT: %MyInt.ref.loc12_26: %MyInt.type = name_ref MyInt, imports.%import_ref.4 [template = constants.%MyInt.generic] +// CHECK:STDOUT: %MyInt.loc12_48: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f94] +// CHECK:STDOUT: %n.param: %MyInt.f94 = value_param runtime_param0 +// CHECK:STDOUT: %.loc12: type = splice_block %MyInt.loc12_34 [template = constants.%MyInt.f94] { +// CHECK:STDOUT: %MyInt.ref.loc12_26: %MyInt.type = name_ref MyInt, imports.%import_ref.ea3 [template = constants.%MyInt.generic] // CHECK:STDOUT: %int_64.loc12_32: Core.IntLiteral = int_value 64 [template = constants.%int_64] -// CHECK:STDOUT: %MyInt.loc12_34: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.2] +// CHECK:STDOUT: %MyInt.loc12_34: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f94] // CHECK:STDOUT: } -// CHECK:STDOUT: %n: %MyInt.2 = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref %MyInt.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %MyInt.2 = return_slot %return.param +// CHECK:STDOUT: %n: %MyInt.f94 = bind_name n, %n.param +// CHECK:STDOUT: %return.param: ref %MyInt.f94 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %MyInt.f94 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Add [from "generic_impl.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .Op = imports.%import_ref.10 -// CHECK:STDOUT: witness = (imports.%import_ref.11) +// CHECK:STDOUT: .Self = imports.%import_ref.72a +// CHECK:STDOUT: .Op = imports.%import_ref.b57 +// CHECK:STDOUT: witness = (imports.%import_ref.b75) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl(constants.%N: Core.IntLiteral) [from "generic_impl.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)] -// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.16), @impl(%N) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.080)] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.b01), @impl(%N) [symbolic = %impl_witness (constants.%impl_witness.43f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N) [symbolic = %Op.type (constants.%Op.type.2)] -// CHECK:STDOUT: %Op: @impl.%Op.type (%Op.type.2) = struct_value () [symbolic = %Op (constants.%Op.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%MyInt (%MyInt.1) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N) [symbolic = %Op.type (constants.%Op.type.c77)] +// CHECK:STDOUT: %Op: @impl.%Op.type (%Op.type.c77) = struct_value () [symbolic = %Op (constants.%Op.947)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.%MyInt (%MyInt.080) [symbolic = %require_complete (constants.%require_complete.e07)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.14 as imports.%import_ref.15 { +// CHECK:STDOUT: impl: imports.%import_ref.7b9 as imports.%import_ref.d37 { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.13 +// CHECK:STDOUT: witness = imports.%import_ref.0f5 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -538,28 +538,28 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic = %iN.builtin (constants.%iN.builtin)] -// CHECK:STDOUT: %require_complete: = require_complete_type @MyInt.%iN.builtin (%iN.builtin) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %complete_type: = complete_type_witness @MyInt.%iN.builtin (%iN.builtin) [symbolic = %complete_type (constants.%complete_type.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @MyInt.%iN.builtin (%iN.builtin) [symbolic = %require_complete (constants.%require_complete.889)] +// CHECK:STDOUT: %complete_type: = complete_type_witness @MyInt.%iN.builtin (%iN.builtin) [symbolic = %complete_type (constants.%complete_type.c6b)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.b26 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.caf // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @LocalDouble(%x.param_patt: %MyInt.2) -> %MyInt.2 { +// CHECK:STDOUT: fn @LocalDouble(%x.param_patt: %MyInt.f94) -> %MyInt.f94 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %x.ref.loc9_10: %MyInt.2 = name_ref x, %x -// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.1 [template = constants.%Add.type] -// CHECK:STDOUT: %Op.ref: %Op.assoc_type = name_ref Op, imports.%import_ref.10 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.3] +// CHECK:STDOUT: %x.ref.loc9_10: %MyInt.f94 = name_ref x, %x +// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.4b5 [template = constants.%Add.type] +// CHECK:STDOUT: %Op.ref: %Op.assoc_type = name_ref Op, imports.%import_ref.b57 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %Op.type.16a = impl_witness_access constants.%impl_witness.463, element0 [template = constants.%Op.bdc] // CHECK:STDOUT: %Op.bound: = bound_method %x.ref.loc9_10, %impl.elem0 -// CHECK:STDOUT: %x.ref.loc9_21: %MyInt.2 = name_ref x, %x +// CHECK:STDOUT: %x.ref.loc9_21: %MyInt.f94 = name_ref x, %x // CHECK:STDOUT: %Op.specific_fn: = specific_function %Op.bound, @Op.2(constants.%int_64) -// CHECK:STDOUT: %int.sadd: init %MyInt.2 = call %Op.specific_fn(%x.ref.loc9_10, %x.ref.loc9_21) -// CHECK:STDOUT: %.loc9_23.1: %MyInt.2 = value_of_initializer %int.sadd -// CHECK:STDOUT: %.loc9_23.2: %MyInt.2 = converted %int.sadd, %.loc9_23.1 +// CHECK:STDOUT: %int.sadd: init %MyInt.f94 = call %Op.specific_fn(%x.ref.loc9_10, %x.ref.loc9_21) +// CHECK:STDOUT: %.loc9_23.1: %MyInt.f94 = value_of_initializer %int.sadd +// CHECK:STDOUT: %.loc9_23.2: %MyInt.f94 = converted %int.sadd, %.loc9_23.1 // CHECK:STDOUT: return %.loc9_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -572,35 +572,35 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.2(constants.%N: Core.IntLiteral) [from "generic_impl.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.1)] +// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.080)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @Op.2.%MyInt (%MyInt.1)](%other.param_patt: @Op.2.%MyInt (%MyInt.1)) -> @Op.2.%MyInt (%MyInt.1) = "int.sadd"; +// CHECK:STDOUT: fn[%self.param_patt: @Op.2.%MyInt (%MyInt.080)](%other.param_patt: @Op.2.%MyInt (%MyInt.080)) -> @Op.2.%MyInt (%MyInt.080) = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @CallImportedDouble(%n.param_patt: %MyInt.2) -> %MyInt.2 { +// CHECK:STDOUT: fn @CallImportedDouble(%n.param_patt: %MyInt.f94) -> %MyInt.f94 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Double.ref: %Double.type = name_ref Double, imports.%import_ref.5 [template = constants.%Double] -// CHECK:STDOUT: %n.ref: %MyInt.2 = name_ref n, %n +// CHECK:STDOUT: %Double.ref: %Double.type = name_ref Double, imports.%import_ref.206 [template = constants.%Double] +// CHECK:STDOUT: %n.ref: %MyInt.f94 = name_ref n, %n // CHECK:STDOUT: %Double.specific_fn: = specific_function %Double.ref, @Double(constants.%int_64) [template = constants.%Double.specific_fn] -// CHECK:STDOUT: %Double.call: init %MyInt.2 = call %Double.specific_fn(%n.ref) -// CHECK:STDOUT: %.loc13_19.1: %MyInt.2 = value_of_initializer %Double.call -// CHECK:STDOUT: %.loc13_19.2: %MyInt.2 = converted %Double.call, %.loc13_19.1 +// CHECK:STDOUT: %Double.call: init %MyInt.f94 = call %Double.specific_fn(%n.ref) +// CHECK:STDOUT: %.loc13_19.1: %MyInt.f94 = value_of_initializer %Double.call +// CHECK:STDOUT: %.loc13_19.2: %MyInt.f94 = converted %Double.call, %.loc13_19.1 // CHECK:STDOUT: return %.loc13_19.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Double(constants.%N: Core.IntLiteral) [from "generic_impl.carbon"] { // CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic = %N (constants.%N)] // CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt)] -// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.1)] +// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic = %MyInt (constants.%MyInt.080)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Double.%MyInt (%MyInt.1) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N) [symbolic = %Op.type (constants.%Op.type.2)] -// CHECK:STDOUT: %Op: @Double.%Op.type (%Op.type.2) = struct_value () [symbolic = %Op (constants.%Op.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Double.%MyInt (%MyInt.080) [symbolic = %require_complete (constants.%require_complete.e07)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.2, @impl(%N) [symbolic = %Op.type (constants.%Op.type.c77)] +// CHECK:STDOUT: %Op: @Double.%Op.type (%Op.type.c77) = struct_value () [symbolic = %Op (constants.%Op.947)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%N.param_patt: Core.IntLiteral](%x.param_patt: @Double.%MyInt (%MyInt.1)) -> @Double.%MyInt (%MyInt.1); +// CHECK:STDOUT: fn[%N.param_patt: Core.IntLiteral](%x.param_patt: @Double.%MyInt (%MyInt.080)) -> @Double.%MyInt (%MyInt.080); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt(constants.%N) { @@ -609,8 +609,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %iN.builtin => constants.%iN.builtin -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %complete_type => constants.%complete_type.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.889 +// CHECK:STDOUT: %complete_type => constants.%complete_type.c6b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt(constants.%int_64) { @@ -619,8 +619,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %complete_type => constants.%complete_type.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 +// CHECK:STDOUT: %complete_type => constants.%complete_type.4a1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Op.1(constants.%Self) { @@ -631,13 +631,13 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: specific @impl(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %N.patt => constants.%N -// CHECK:STDOUT: %MyInt => constants.%MyInt.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %MyInt => constants.%MyInt.080 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.43f // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.2 -// CHECK:STDOUT: %Op => constants.%Op.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.c77 +// CHECK:STDOUT: %Op => constants.%Op.947 +// CHECK:STDOUT: %require_complete => constants.%require_complete.e07 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MyInt(@impl.%N) {} @@ -648,7 +648,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: specific @Op.2(constants.%N) { // CHECK:STDOUT: %N => constants.%N -// CHECK:STDOUT: %MyInt => constants.%MyInt.1 +// CHECK:STDOUT: %MyInt => constants.%MyInt.080 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -656,18 +656,18 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: specific @impl(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %N.patt => constants.%int_64 -// CHECK:STDOUT: %MyInt => constants.%MyInt.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %MyInt => constants.%MyInt.f94 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.463 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Op.type => constants.%Op.type.3 -// CHECK:STDOUT: %Op => constants.%Op.3 -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.d80 +// CHECK:STDOUT: %Op => constants.%Op.bdc +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Op.2(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 -// CHECK:STDOUT: %MyInt => constants.%MyInt.2 +// CHECK:STDOUT: %MyInt => constants.%MyInt.f94 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -677,7 +677,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: specific @Double(constants.%N) { // CHECK:STDOUT: %N => constants.%N // CHECK:STDOUT: %N.patt => constants.%N -// CHECK:STDOUT: %MyInt => constants.%MyInt.1 +// CHECK:STDOUT: %MyInt => constants.%MyInt.080 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @impl(@Double.%N) {} @@ -685,12 +685,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: specific @Double(constants.%int_64) { // CHECK:STDOUT: %N => constants.%int_64 // CHECK:STDOUT: %N.patt => constants.%int_64 -// CHECK:STDOUT: %MyInt => constants.%MyInt.2 +// CHECK:STDOUT: %MyInt => constants.%MyInt.f94 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %Op.type => constants.%Op.type.3 -// CHECK:STDOUT: %Op => constants.%Op.3 +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 +// CHECK:STDOUT: %Op.type => constants.%Op.type.d80 +// CHECK:STDOUT: %Op => constants.%Op.bdc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- convert_symbolic.carbon @@ -702,31 +702,31 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %ToLiteral.type.1: type = fn_type @ToLiteral.1 [template] -// CHECK:STDOUT: %ToLiteral.1: %ToLiteral.type.1 = struct_value () [template] +// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [template] +// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [template] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [template] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [template] -// CHECK:STDOUT: %N.1: %i32.builtin = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.1: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %int.convert_checked.1: init Core.IntLiteral = call %ToLiteral.1(%N.1) [symbolic] -// CHECK:STDOUT: %iN.builtin.1: type = int_type signed, %int.convert_checked.1 [symbolic] +// CHECK:STDOUT: %N.a7a: %i32.builtin = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.8e9: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %int.convert_checked.84b: init Core.IntLiteral = call %ToLiteral.cf3(%N.a7a) [symbolic] +// CHECK:STDOUT: %iN.builtin.b6f: type = int_type signed, %int.convert_checked.84b [symbolic] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %iN.builtin.1 [symbolic] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make, @Make(%N.1) [symbolic] +// CHECK:STDOUT: %require_complete.b3f: = require_complete_type %iN.builtin.b6f [symbolic] +// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make, @Make(%N.a7a) [symbolic] // CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [template] -// CHECK:STDOUT: %ToLiteral.type.2: type = fn_type @ToLiteral.2 [template] -// CHECK:STDOUT: %ToLiteral.2: %ToLiteral.type.2 = struct_value () [template] +// CHECK:STDOUT: %ToLiteral.type.ea8: type = fn_type @ToLiteral.2 [template] +// CHECK:STDOUT: %ToLiteral.5b3: %ToLiteral.type.ea8 = struct_value () [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %N.2: %OtherInt = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %OtherInt = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N.2, %ToLiteral.2 [symbolic] -// CHECK:STDOUT: %int.convert_checked.2: init Core.IntLiteral = call %ToLiteral.bound(%N.2) [symbolic] -// CHECK:STDOUT: %iN.builtin.2: type = int_type signed, %int.convert_checked.2 [symbolic] +// CHECK:STDOUT: %N.1a2: %OtherInt = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.71c: %OtherInt = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N.1a2, %ToLiteral.5b3 [symbolic] +// CHECK:STDOUT: %int.convert_checked.519: init Core.IntLiteral = call %ToLiteral.bound(%N.1a2) [symbolic] +// CHECK:STDOUT: %iN.builtin.5d1: type = int_type signed, %int.convert_checked.519 [symbolic] // CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [template] // CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %iN.builtin.2 [symbolic] -// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function %MakeFromClass, @MakeFromClass(%N.2) [symbolic] +// CHECK:STDOUT: %require_complete.02e: = require_complete_type %iN.builtin.5d1 [symbolic] +// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function %MakeFromClass, @MakeFromClass(%N.1a2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -763,7 +763,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.param: ref type = out_param runtime_param1 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ToLiteral.decl.loc6: %ToLiteral.type.1 = fn_decl @ToLiteral.1 [template = constants.%ToLiteral.1] { +// CHECK:STDOUT: %ToLiteral.decl.loc6: %ToLiteral.type.e7c = fn_decl @ToLiteral.1 [template = constants.%ToLiteral.cf3] { // CHECK:STDOUT: %n.patt: %i32.builtin = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32.builtin = value_param_pattern %n.patt, runtime_param0 // CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern @@ -808,20 +808,20 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { -// CHECK:STDOUT: %N.patt.loc9_9.1: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.1)] -// CHECK:STDOUT: %N.param_patt: %i32.builtin = value_param_pattern %N.patt.loc9_9.1, runtime_param [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.1)] -// CHECK:STDOUT: %return.patt: @Make.%iN.builtin (%iN.builtin.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @Make.%iN.builtin (%iN.builtin.1) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %N.patt.loc9_9.1: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.8e9)] +// CHECK:STDOUT: %N.param_patt: %i32.builtin = value_param_pattern %N.patt.loc9_9.1, runtime_param [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.8e9)] +// CHECK:STDOUT: %return.patt: @Make.%iN.builtin (%iN.builtin.b6f) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @Make.%iN.builtin (%iN.builtin.b6f) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref.loc9_25: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int] -// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.1 = name_ref ToLiteral, file.%ToLiteral.decl.loc6 [template = constants.%ToLiteral.1] -// CHECK:STDOUT: %N.ref.loc9_39: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.1)] -// CHECK:STDOUT: %int.convert_checked.loc9_40.1: init Core.IntLiteral = call %ToLiteral.ref(%N.ref.loc9_39) [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.1)] -// CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.1)] -// CHECK:STDOUT: %.loc9_40.2: Core.IntLiteral = converted %int.convert_checked.loc9_40.1, %.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.1)] -// CHECK:STDOUT: %int.make_type_signed.loc9_41: init type = call %Int.ref.loc9_25(%.loc9_40.2) [symbolic = %iN.builtin (constants.%iN.builtin.1)] -// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %int.make_type_signed.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.1)] -// CHECK:STDOUT: %.loc9_41.2: type = converted %int.make_type_signed.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.1)] +// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.e7c = name_ref ToLiteral, file.%ToLiteral.decl.loc6 [template = constants.%ToLiteral.cf3] +// CHECK:STDOUT: %N.ref.loc9_39: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.a7a)] +// CHECK:STDOUT: %int.convert_checked.loc9_40.1: init Core.IntLiteral = call %ToLiteral.ref(%N.ref.loc9_39) [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.84b)] +// CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.84b)] +// CHECK:STDOUT: %.loc9_40.2: Core.IntLiteral = converted %int.convert_checked.loc9_40.1, %.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.84b)] +// CHECK:STDOUT: %int.make_type_signed.loc9_41: init type = call %Int.ref.loc9_25(%.loc9_40.2) [symbolic = %iN.builtin (constants.%iN.builtin.b6f)] +// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %int.make_type_signed.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.b6f)] +// CHECK:STDOUT: %.loc9_41.2: type = converted %int.make_type_signed.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.b6f)] // CHECK:STDOUT: %N.param: %i32.builtin = value_param runtime_param // CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [template = constants.%i32.builtin] { // CHECK:STDOUT: %Int.ref.loc9_13: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int] @@ -830,12 +830,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc9_19.2: type = value_of_initializer %int.make_type_signed.loc9_19 [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc9_19.3: type = converted %int.make_type_signed.loc9_19, %.loc9_19.2 [template = constants.%i32.builtin] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc9_9.1: %i32.builtin = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc9_9.2 (constants.%N.1)] -// CHECK:STDOUT: %return.param: ref @Make.%iN.builtin (%iN.builtin.1) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @Make.%iN.builtin (%iN.builtin.1) = return_slot %return.param +// CHECK:STDOUT: %N.loc9_9.1: %i32.builtin = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc9_9.2 (constants.%N.a7a)] +// CHECK:STDOUT: %return.param: ref @Make.%iN.builtin (%iN.builtin.b6f) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @Make.%iN.builtin (%iN.builtin.b6f) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %OtherInt.decl: type = class_decl @OtherInt [template = constants.%OtherInt] {} {} -// CHECK:STDOUT: %ToLiteral.decl.loc16: %ToLiteral.type.2 = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.2] { +// CHECK:STDOUT: %ToLiteral.decl.loc16: %ToLiteral.type.ea8 = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.5b3] { // CHECK:STDOUT: %self.patt: %OtherInt = binding_pattern self // CHECK:STDOUT: %self.param_patt: %OtherInt = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern @@ -852,26 +852,26 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %return.loc16: ref Core.IntLiteral = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %MakeFromClass.decl: %MakeFromClass.type = fn_decl @MakeFromClass [template = constants.%MakeFromClass] { -// CHECK:STDOUT: %N.patt.loc18_18.1: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %N.param_patt: %OtherInt = value_param_pattern %N.patt.loc18_18.1, runtime_param [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %return.patt: @MakeFromClass.%iN.builtin (%iN.builtin.2) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @MakeFromClass.%iN.builtin (%iN.builtin.2) = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %N.patt.loc18_18.1: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.71c)] +// CHECK:STDOUT: %N.param_patt: %OtherInt = value_param_pattern %N.patt.loc18_18.1, runtime_param [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.71c)] +// CHECK:STDOUT: %return.patt: @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int] -// CHECK:STDOUT: %N.ref.loc18_39: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.2)] -// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.2 = name_ref ToLiteral, @OtherInt.%ToLiteral.decl [template = constants.%ToLiteral.2] +// CHECK:STDOUT: %N.ref.loc18_39: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.1a2)] +// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.ea8 = name_ref ToLiteral, @OtherInt.%ToLiteral.decl [template = constants.%ToLiteral.5b3] // CHECK:STDOUT: %ToLiteral.bound.loc18_40.1: = bound_method %N.ref.loc18_39, %ToLiteral.ref [symbolic = %ToLiteral.bound.loc18_40.2 (constants.%ToLiteral.bound)] -// CHECK:STDOUT: %int.convert_checked.loc18_51.1: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.1(%N.ref.loc18_39) [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.2)] -// CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.2)] -// CHECK:STDOUT: %.loc18_51.2: Core.IntLiteral = converted %int.convert_checked.loc18_51.1, %.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.2)] -// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%.loc18_51.2) [symbolic = %iN.builtin (constants.%iN.builtin.2)] -// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin.2)] -// CHECK:STDOUT: %.loc18_52.2: type = converted %int.make_type_signed, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.2)] +// CHECK:STDOUT: %int.convert_checked.loc18_51.1: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.1(%N.ref.loc18_39) [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.519)] +// CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.519)] +// CHECK:STDOUT: %.loc18_51.2: Core.IntLiteral = converted %int.convert_checked.loc18_51.1, %.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.519)] +// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%.loc18_51.2) [symbolic = %iN.builtin (constants.%iN.builtin.5d1)] +// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin.5d1)] +// CHECK:STDOUT: %.loc18_52.2: type = converted %int.make_type_signed, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.5d1)] // CHECK:STDOUT: %N.param: %OtherInt = value_param runtime_param // CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, file.%OtherInt.decl [template = constants.%OtherInt] -// CHECK:STDOUT: %N.loc18_18.1: %OtherInt = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc18_18.2 (constants.%N.2)] -// CHECK:STDOUT: %return.param: ref @MakeFromClass.%iN.builtin (%iN.builtin.2) = out_param runtime_param0 -// CHECK:STDOUT: %return: ref @MakeFromClass.%iN.builtin (%iN.builtin.2) = return_slot %return.param +// CHECK:STDOUT: %N.loc18_18.1: %OtherInt = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc18_18.2 (constants.%N.1a2)] +// CHECK:STDOUT: %return.param: ref @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = out_param runtime_param0 +// CHECK:STDOUT: %return: ref @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -882,7 +882,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %.loc12_16.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc12_16.2: type = converted %int.make_type_signed, %.loc12_16.1 [template = constants.%i32.builtin] // CHECK:STDOUT: adapt_decl %.loc12_16.2 [template] -// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type.2 = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.2] { +// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type.ea8 = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.5b3] { // CHECK:STDOUT: %self.patt: %OtherInt = binding_pattern self // CHECK:STDOUT: %self.param_patt: %OtherInt = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern @@ -915,23 +915,23 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: fn @FromLiteral(%n.param_patt: Core.IntLiteral) -> %i32.builtin = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(%N.loc9_9.1: %i32.builtin) { -// CHECK:STDOUT: %N.loc9_9.2: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N.loc9_9.2 (constants.%N.1)] -// CHECK:STDOUT: %N.patt.loc9_9.2: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.1)] -// CHECK:STDOUT: %int.convert_checked.loc9_40.2: init Core.IntLiteral = call constants.%ToLiteral.1(%N.loc9_9.2) [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.1)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc9_40.2 [symbolic = %iN.builtin (constants.%iN.builtin.1)] +// CHECK:STDOUT: %N.loc9_9.2: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N.loc9_9.2 (constants.%N.a7a)] +// CHECK:STDOUT: %N.patt.loc9_9.2: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.8e9)] +// CHECK:STDOUT: %int.convert_checked.loc9_40.2: init Core.IntLiteral = call constants.%ToLiteral.cf3(%N.loc9_9.2) [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.84b)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc9_40.2 [symbolic = %iN.builtin (constants.%iN.builtin.b6f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%iN.builtin (%iN.builtin.1) [symbolic = %require_complete (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%iN.builtin (%iN.builtin.b6f) [symbolic = %require_complete (constants.%require_complete.b3f)] // CHECK:STDOUT: %Make.specific_fn.loc9_52.2: = specific_function constants.%Make, @Make(%N.loc9_9.2) [symbolic = %Make.specific_fn.loc9_52.2 (constants.%Make.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%N.param_patt: %i32.builtin) -> @Make.%iN.builtin (%iN.builtin.1) { +// CHECK:STDOUT: fn(%N.param_patt: %i32.builtin) -> @Make.%iN.builtin (%iN.builtin.b6f) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] -// CHECK:STDOUT: %N.ref.loc9_57: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.1)] -// CHECK:STDOUT: %Make.specific_fn.loc9_52.1: = specific_function %Make.ref, @Make(constants.%N.1) [symbolic = %Make.specific_fn.loc9_52.2 (constants.%Make.specific_fn)] -// CHECK:STDOUT: %Make.call: init @Make.%iN.builtin (%iN.builtin.1) = call %Make.specific_fn.loc9_52.1() -// CHECK:STDOUT: %.loc9_59.1: @Make.%iN.builtin (%iN.builtin.1) = value_of_initializer %Make.call -// CHECK:STDOUT: %.loc9_59.2: @Make.%iN.builtin (%iN.builtin.1) = converted %Make.call, %.loc9_59.1 +// CHECK:STDOUT: %N.ref.loc9_57: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.a7a)] +// CHECK:STDOUT: %Make.specific_fn.loc9_52.1: = specific_function %Make.ref, @Make(constants.%N.a7a) [symbolic = %Make.specific_fn.loc9_52.2 (constants.%Make.specific_fn)] +// CHECK:STDOUT: %Make.call: init @Make.%iN.builtin (%iN.builtin.b6f) = call %Make.specific_fn.loc9_52.1() +// CHECK:STDOUT: %.loc9_59.1: @Make.%iN.builtin (%iN.builtin.b6f) = value_of_initializer %Make.call +// CHECK:STDOUT: %.loc9_59.2: @Make.%iN.builtin (%iN.builtin.b6f) = converted %Make.call, %.loc9_59.1 // CHECK:STDOUT: return %.loc9_59.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -939,50 +939,50 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: fn @ToLiteral.2[%self.param_patt: %OtherInt]() -> Core.IntLiteral = "int.convert_checked"; // CHECK:STDOUT: // CHECK:STDOUT: generic fn @MakeFromClass(%N.loc18_18.1: %OtherInt) { -// CHECK:STDOUT: %N.loc18_18.2: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N.loc18_18.2 (constants.%N.2)] -// CHECK:STDOUT: %N.patt.loc18_18.2: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.2)] -// CHECK:STDOUT: %ToLiteral.bound.loc18_40.2: = bound_method %N.loc18_18.2, constants.%ToLiteral.2 [symbolic = %ToLiteral.bound.loc18_40.2 (constants.%ToLiteral.bound)] -// CHECK:STDOUT: %int.convert_checked.loc18_51.2: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.2(%N.loc18_18.2) [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.2)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc18_51.2 [symbolic = %iN.builtin (constants.%iN.builtin.2)] +// CHECK:STDOUT: %N.loc18_18.2: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N.loc18_18.2 (constants.%N.1a2)] +// CHECK:STDOUT: %N.patt.loc18_18.2: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.71c)] +// CHECK:STDOUT: %ToLiteral.bound.loc18_40.2: = bound_method %N.loc18_18.2, constants.%ToLiteral.5b3 [symbolic = %ToLiteral.bound.loc18_40.2 (constants.%ToLiteral.bound)] +// CHECK:STDOUT: %int.convert_checked.loc18_51.2: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.2(%N.loc18_18.2) [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.519)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked.loc18_51.2 [symbolic = %iN.builtin (constants.%iN.builtin.5d1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @MakeFromClass.%iN.builtin (%iN.builtin.2) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @MakeFromClass.%iN.builtin (%iN.builtin.5d1) [symbolic = %require_complete (constants.%require_complete.02e)] // CHECK:STDOUT: %MakeFromClass.specific_fn.loc18_63.2: = specific_function constants.%MakeFromClass, @MakeFromClass(%N.loc18_18.2) [symbolic = %MakeFromClass.specific_fn.loc18_63.2 (constants.%MakeFromClass.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%N.param_patt: %OtherInt) -> @MakeFromClass.%iN.builtin (%iN.builtin.2) { +// CHECK:STDOUT: fn(%N.param_patt: %OtherInt) -> @MakeFromClass.%iN.builtin (%iN.builtin.5d1) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, file.%MakeFromClass.decl [template = constants.%MakeFromClass] -// CHECK:STDOUT: %N.ref.loc18_77: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.2)] -// CHECK:STDOUT: %MakeFromClass.specific_fn.loc18_63.1: = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%N.2) [symbolic = %MakeFromClass.specific_fn.loc18_63.2 (constants.%MakeFromClass.specific_fn)] -// CHECK:STDOUT: %MakeFromClass.call: init @MakeFromClass.%iN.builtin (%iN.builtin.2) = call %MakeFromClass.specific_fn.loc18_63.1() -// CHECK:STDOUT: %.loc18_79.1: @MakeFromClass.%iN.builtin (%iN.builtin.2) = value_of_initializer %MakeFromClass.call -// CHECK:STDOUT: %.loc18_79.2: @MakeFromClass.%iN.builtin (%iN.builtin.2) = converted %MakeFromClass.call, %.loc18_79.1 +// CHECK:STDOUT: %N.ref.loc18_77: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.1a2)] +// CHECK:STDOUT: %MakeFromClass.specific_fn.loc18_63.1: = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%N.1a2) [symbolic = %MakeFromClass.specific_fn.loc18_63.2 (constants.%MakeFromClass.specific_fn)] +// CHECK:STDOUT: %MakeFromClass.call: init @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = call %MakeFromClass.specific_fn.loc18_63.1() +// CHECK:STDOUT: %.loc18_79.1: @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = value_of_initializer %MakeFromClass.call +// CHECK:STDOUT: %.loc18_79.2: @MakeFromClass.%iN.builtin (%iN.builtin.5d1) = converted %MakeFromClass.call, %.loc18_79.1 // CHECK:STDOUT: return %.loc18_79.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%N.1) { -// CHECK:STDOUT: %N.loc9_9.2 => constants.%N.1 -// CHECK:STDOUT: %N.patt.loc9_9.2 => constants.%N.1 -// CHECK:STDOUT: %int.convert_checked.loc9_40.2 => constants.%int.convert_checked.1 -// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.1 +// CHECK:STDOUT: specific @Make(constants.%N.a7a) { +// CHECK:STDOUT: %N.loc9_9.2 => constants.%N.a7a +// CHECK:STDOUT: %N.patt.loc9_9.2 => constants.%N.a7a +// CHECK:STDOUT: %int.convert_checked.loc9_40.2 => constants.%int.convert_checked.84b +// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.b6f // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.b3f // CHECK:STDOUT: %Make.specific_fn.loc9_52.2 => constants.%Make.specific_fn // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(%N.loc9_9.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @MakeFromClass(constants.%N.2) { -// CHECK:STDOUT: %N.loc18_18.2 => constants.%N.2 -// CHECK:STDOUT: %N.patt.loc18_18.2 => constants.%N.2 +// CHECK:STDOUT: specific @MakeFromClass(constants.%N.1a2) { +// CHECK:STDOUT: %N.loc18_18.2 => constants.%N.1a2 +// CHECK:STDOUT: %N.patt.loc18_18.2 => constants.%N.1a2 // CHECK:STDOUT: %ToLiteral.bound.loc18_40.2 => constants.%ToLiteral.bound -// CHECK:STDOUT: %int.convert_checked.loc18_51.2 => constants.%int.convert_checked.2 -// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.2 +// CHECK:STDOUT: %int.convert_checked.loc18_51.2 => constants.%int.convert_checked.519 +// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.5d1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 +// CHECK:STDOUT: %require_complete => constants.%require_complete.02e // CHECK:STDOUT: %MakeFromClass.specific_fn.loc18_63.2 => constants.%MakeFromClass.specific_fn // CHECK:STDOUT: } // CHECK:STDOUT: @@ -993,64 +993,64 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: constants { // CHECK:STDOUT: %Int.type: type = fn_type @Int [template] // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] -// CHECK:STDOUT: %int_64.1: Core.IntLiteral = int_value 64 [template] -// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64.1 [template] +// CHECK:STDOUT: %int_64.fab: Core.IntLiteral = int_value 64 [template] +// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64.fab [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %N.1: %i32.builtin = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.1: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.type.1: type = fn_type @ToLiteral.1 [template] -// CHECK:STDOUT: %ToLiteral.1: %ToLiteral.type.1 = struct_value () [template] -// CHECK:STDOUT: %int.convert_checked.1: init Core.IntLiteral = call %ToLiteral.1(%N.1) [symbolic] -// CHECK:STDOUT: %iN.builtin.1: type = int_type signed, %int.convert_checked.1 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %iN.builtin.1 [symbolic] -// CHECK:STDOUT: %Make.specific_fn.1: = specific_function %Make, @Make(%N.1) [symbolic] +// CHECK:STDOUT: %N.a7a: %i32.builtin = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.8e9: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [template] +// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [template] +// CHECK:STDOUT: %int.convert_checked.84b: init Core.IntLiteral = call %ToLiteral.cf3(%N.a7a) [symbolic] +// CHECK:STDOUT: %iN.builtin.b6f: type = int_type signed, %int.convert_checked.84b [symbolic] +// CHECK:STDOUT: %require_complete.b3f: = require_complete_type %iN.builtin.b6f [symbolic] +// CHECK:STDOUT: %Make.specific_fn.45b: = specific_function %Make, @Make(%N.a7a) [symbolic] // CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [template] // CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [template] -// CHECK:STDOUT: %int_64.2: %i32.builtin = int_value 64 [template] -// CHECK:STDOUT: %Make.specific_fn.2: = specific_function %Make, @Make(%int_64.2) [template] +// CHECK:STDOUT: %int_64.f82: %i32.builtin = int_value 64 [template] +// CHECK:STDOUT: %Make.specific_fn.525: = specific_function %Make, @Make(%int_64.f82) [template] // CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [template] // CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [template] // CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %N.2: %OtherInt = bind_symbolic_name N, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %OtherInt = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %ToLiteral.type.2: type = fn_type @ToLiteral.2 [template] -// CHECK:STDOUT: %ToLiteral.2: %ToLiteral.type.2 = struct_value () [template] -// CHECK:STDOUT: %ToLiteral.bound.1: = bound_method %N.2, %ToLiteral.2 [symbolic] -// CHECK:STDOUT: %int.convert_checked.2: init Core.IntLiteral = call %ToLiteral.bound.1(%N.2) [symbolic] -// CHECK:STDOUT: %iN.builtin.2: type = int_type signed, %int.convert_checked.2 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %iN.builtin.2 [symbolic] -// CHECK:STDOUT: %MakeFromClass.specific_fn.1: = specific_function %MakeFromClass, @MakeFromClass(%N.2) [symbolic] -// CHECK:STDOUT: %ToLiteral.bound.2: = bound_method %int_64.2, %ToLiteral.2 [template] -// CHECK:STDOUT: %MakeFromClass.specific_fn.2: = specific_function %MakeFromClass, @MakeFromClass(%int_64.2) [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i64.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %N.1a2: %OtherInt = bind_symbolic_name N, 0 [symbolic] +// CHECK:STDOUT: %N.patt.71c: %OtherInt = symbolic_binding_pattern N, 0 [symbolic] +// CHECK:STDOUT: %ToLiteral.type.ea8: type = fn_type @ToLiteral.2 [template] +// CHECK:STDOUT: %ToLiteral.5b3: %ToLiteral.type.ea8 = struct_value () [template] +// CHECK:STDOUT: %ToLiteral.bound.e03: = bound_method %N.1a2, %ToLiteral.5b3 [symbolic] +// CHECK:STDOUT: %int.convert_checked.519: init Core.IntLiteral = call %ToLiteral.bound.e03(%N.1a2) [symbolic] +// CHECK:STDOUT: %iN.builtin.5d1: type = int_type signed, %int.convert_checked.519 [symbolic] +// CHECK:STDOUT: %require_complete.02e: = require_complete_type %iN.builtin.5d1 [symbolic] +// CHECK:STDOUT: %MakeFromClass.specific_fn.f22: = specific_function %MakeFromClass, @MakeFromClass(%N.1a2) [symbolic] +// CHECK:STDOUT: %ToLiteral.bound.648: = bound_method %int_64.f82, %ToLiteral.5b3 [template] +// CHECK:STDOUT: %MakeFromClass.specific_fn.b9d: = specific_function %MakeFromClass, @MakeFromClass(%int_64.f82) [template] +// CHECK:STDOUT: %complete_type.4a1: = complete_type_witness %i64.builtin [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//convert_symbolic, IntLiteral, unloaded -// CHECK:STDOUT: %import_ref.2: %Int.type = import_ref Main//convert_symbolic, Int, loaded [template = constants.%Int] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//convert_symbolic, ToLiteral, unloaded -// CHECK:STDOUT: %import_ref.4: %FromLiteral.type = import_ref Main//convert_symbolic, FromLiteral, loaded [template = constants.%FromLiteral] -// CHECK:STDOUT: %import_ref.5: %Make.type = import_ref Main//convert_symbolic, Make, loaded [template = constants.%Make] -// CHECK:STDOUT: %import_ref.6: type = import_ref Main//convert_symbolic, OtherInt, loaded [template = constants.%OtherInt] -// CHECK:STDOUT: %import_ref.7: %MakeFromClass.type = import_ref Main//convert_symbolic, MakeFromClass, loaded [template = constants.%MakeFromClass] -// CHECK:STDOUT: %import_ref.9: = import_ref Main//convert_symbolic, loc14_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.10 = import_ref Main//convert_symbolic, inst129 [no loc], unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Main//convert_symbolic, loc13_45, unloaded +// CHECK:STDOUT: %import_ref.f28 = import_ref Main//convert_symbolic, IntLiteral, unloaded +// CHECK:STDOUT: %import_ref.85d: %Int.type = import_ref Main//convert_symbolic, Int, loaded [template = constants.%Int] +// CHECK:STDOUT: %import_ref.4be = import_ref Main//convert_symbolic, ToLiteral, unloaded +// CHECK:STDOUT: %import_ref.3f7: %FromLiteral.type = import_ref Main//convert_symbolic, FromLiteral, loaded [template = constants.%FromLiteral] +// CHECK:STDOUT: %import_ref.0e9: %Make.type = import_ref Main//convert_symbolic, Make, loaded [template = constants.%Make] +// CHECK:STDOUT: %import_ref.9cf: type = import_ref Main//convert_symbolic, OtherInt, loaded [template = constants.%OtherInt] +// CHECK:STDOUT: %import_ref.87f: %MakeFromClass.type = import_ref Main//convert_symbolic, MakeFromClass, loaded [template = constants.%MakeFromClass] +// CHECK:STDOUT: %import_ref.b03: = import_ref Main//convert_symbolic, loc14_1, loaded [template = constants.%complete_type.f8a] +// CHECK:STDOUT: %import_ref.d11 = import_ref Main//convert_symbolic, inst129 [no loc], unloaded +// CHECK:STDOUT: %import_ref.6ba = import_ref Main//convert_symbolic, loc13_45, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .IntLiteral = imports.%import_ref.1 -// CHECK:STDOUT: .Int = imports.%import_ref.2 -// CHECK:STDOUT: .ToLiteral = imports.%import_ref.3 -// CHECK:STDOUT: .FromLiteral = imports.%import_ref.4 -// CHECK:STDOUT: .Make = imports.%import_ref.5 -// CHECK:STDOUT: .OtherInt = imports.%import_ref.6 -// CHECK:STDOUT: .MakeFromClass = imports.%import_ref.7 +// CHECK:STDOUT: .IntLiteral = imports.%import_ref.f28 +// CHECK:STDOUT: .Int = imports.%import_ref.85d +// CHECK:STDOUT: .ToLiteral = imports.%import_ref.4be +// CHECK:STDOUT: .FromLiteral = imports.%import_ref.3f7 +// CHECK:STDOUT: .Make = imports.%import_ref.0e9 +// CHECK:STDOUT: .OtherInt = imports.%import_ref.9cf +// CHECK:STDOUT: .MakeFromClass = imports.%import_ref.87f // CHECK:STDOUT: .m = %m // CHECK:STDOUT: .n = %n // CHECK:STDOUT: } @@ -1063,119 +1063,119 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: class @OtherInt [from "convert_symbolic.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.10 -// CHECK:STDOUT: .ToLiteral = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.9 +// CHECK:STDOUT: .Self = imports.%import_ref.d11 +// CHECK:STDOUT: .ToLiteral = imports.%import_ref.6ba +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.b03 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%n.param_patt: Core.IntLiteral) -> type = "int.make_type_signed" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(constants.%N.1: %i32.builtin) [from "convert_symbolic.carbon"] { -// CHECK:STDOUT: %N: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.1)] -// CHECK:STDOUT: %N.patt: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.1)] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call constants.%ToLiteral.1(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.1)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.1)] +// CHECK:STDOUT: generic fn @Make(constants.%N.a7a: %i32.builtin) [from "convert_symbolic.carbon"] { +// CHECK:STDOUT: %N: %i32.builtin = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.a7a)] +// CHECK:STDOUT: %N.patt: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.8e9)] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call constants.%ToLiteral.cf3(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.84b)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.b6f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%iN.builtin (%iN.builtin.1) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %Make.specific_fn: = specific_function constants.%Make, @Make(%N) [symbolic = %Make.specific_fn (constants.%Make.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Make.%iN.builtin (%iN.builtin.b6f) [symbolic = %require_complete (constants.%require_complete.b3f)] +// CHECK:STDOUT: %Make.specific_fn: = specific_function constants.%Make, @Make(%N) [symbolic = %Make.specific_fn (constants.%Make.specific_fn.45b)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%N.param_patt: %i32.builtin) -> @Make.%iN.builtin (%iN.builtin.1); +// CHECK:STDOUT: fn(%N.param_patt: %i32.builtin) -> @Make.%iN.builtin (%iN.builtin.b6f); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ToLiteral.1(%n.param_patt: %i32.builtin) -> Core.IntLiteral = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @FromLiteral(%n.param_patt: Core.IntLiteral) -> %i32.builtin = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @MakeFromClass(constants.%N.2: %OtherInt) [from "convert_symbolic.carbon"] { -// CHECK:STDOUT: %N: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.2)] -// CHECK:STDOUT: %N.patt: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.2)] -// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N, constants.%ToLiteral.2 [symbolic = %ToLiteral.bound (constants.%ToLiteral.bound.1)] -// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %ToLiteral.bound(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.2)] -// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.2)] +// CHECK:STDOUT: generic fn @MakeFromClass(constants.%N.1a2: %OtherInt) [from "convert_symbolic.carbon"] { +// CHECK:STDOUT: %N: %OtherInt = bind_symbolic_name N, 0 [symbolic = %N (constants.%N.1a2)] +// CHECK:STDOUT: %N.patt: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt (constants.%N.patt.71c)] +// CHECK:STDOUT: %ToLiteral.bound: = bound_method %N, constants.%ToLiteral.5b3 [symbolic = %ToLiteral.bound (constants.%ToLiteral.bound.e03)] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %ToLiteral.bound(%N) [symbolic = %int.convert_checked (constants.%int.convert_checked.519)] +// CHECK:STDOUT: %iN.builtin: type = int_type signed, %int.convert_checked [symbolic = %iN.builtin (constants.%iN.builtin.5d1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @MakeFromClass.%iN.builtin (%iN.builtin.2) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function constants.%MakeFromClass, @MakeFromClass(%N) [symbolic = %MakeFromClass.specific_fn (constants.%MakeFromClass.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @MakeFromClass.%iN.builtin (%iN.builtin.5d1) [symbolic = %require_complete (constants.%require_complete.02e)] +// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function constants.%MakeFromClass, @MakeFromClass(%N) [symbolic = %MakeFromClass.specific_fn (constants.%MakeFromClass.specific_fn.f22)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%N.param_patt: %OtherInt) -> @MakeFromClass.%iN.builtin (%iN.builtin.2); +// CHECK:STDOUT: fn(%N.param_patt: %OtherInt) -> @MakeFromClass.%iN.builtin (%iN.builtin.5d1); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ToLiteral.2[%self.param_patt: %OtherInt]() -> Core.IntLiteral = "int.convert_checked" [from "convert_symbolic.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%import_ref.5 [template = constants.%Make] -// CHECK:STDOUT: %FromLiteral.ref.loc6: %FromLiteral.type = name_ref FromLiteral, imports.%import_ref.4 [template = constants.%FromLiteral] -// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [template = constants.%int_64.1] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %int.convert_checked.loc6, %.loc6_38.1 [template = constants.%int_64.2] -// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%int_64.2) [template = constants.%Make.specific_fn.2] +// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%import_ref.0e9 [template = constants.%Make] +// CHECK:STDOUT: %FromLiteral.ref.loc6: %FromLiteral.type = name_ref FromLiteral, imports.%import_ref.3f7 [template = constants.%FromLiteral] +// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab] +// CHECK:STDOUT: %int.convert_checked.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [template = constants.%int_64.f82] +// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_64.f82] +// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %int.convert_checked.loc6, %.loc6_38.1 [template = constants.%int_64.f82] +// CHECK:STDOUT: %Make.specific_fn: = specific_function %Make.ref, @Make(constants.%int_64.f82) [template = constants.%Make.specific_fn.525] // CHECK:STDOUT: %Make.call: init %i64.builtin = call %Make.specific_fn() // CHECK:STDOUT: assign file.%m.var, %Make.call -// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, imports.%import_ref.7 [template = constants.%MakeFromClass] -// CHECK:STDOUT: %FromLiteral.ref.loc7: %FromLiteral.type = name_ref FromLiteral, imports.%import_ref.4 [template = constants.%FromLiteral] -// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [template = constants.%int_64.1] -// CHECK:STDOUT: %int.convert_checked.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [template = constants.%int_64.2] -// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, imports.%import_ref.6 [template = constants.%OtherInt] -// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %int.convert_checked.loc7 [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %int.convert_checked.loc7, %.loc7_48.1 [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc7_59.1: %OtherInt = value_of_initializer %.loc7_48.2 [template = constants.%int_64.2] -// CHECK:STDOUT: %.loc7_59.2: %OtherInt = converted %.loc7_48.2, %.loc7_59.1 [template = constants.%int_64.2] -// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%int_64.2) [template = constants.%MakeFromClass.specific_fn.2] +// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, imports.%import_ref.87f [template = constants.%MakeFromClass] +// CHECK:STDOUT: %FromLiteral.ref.loc7: %FromLiteral.type = name_ref FromLiteral, imports.%import_ref.3f7 [template = constants.%FromLiteral] +// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab] +// CHECK:STDOUT: %int.convert_checked.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [template = constants.%int_64.f82] +// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, imports.%import_ref.9cf [template = constants.%OtherInt] +// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %int.convert_checked.loc7 [template = constants.%int_64.f82] +// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %int.convert_checked.loc7, %.loc7_48.1 [template = constants.%int_64.f82] +// CHECK:STDOUT: %.loc7_59.1: %OtherInt = value_of_initializer %.loc7_48.2 [template = constants.%int_64.f82] +// CHECK:STDOUT: %.loc7_59.2: %OtherInt = converted %.loc7_48.2, %.loc7_59.1 [template = constants.%int_64.f82] +// CHECK:STDOUT: %MakeFromClass.specific_fn: = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%int_64.f82) [template = constants.%MakeFromClass.specific_fn.b9d] // CHECK:STDOUT: %MakeFromClass.call: init %i64.builtin = call %MakeFromClass.specific_fn() // CHECK:STDOUT: assign file.%n.var, %MakeFromClass.call // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%N.1) { -// CHECK:STDOUT: %N => constants.%N.1 -// CHECK:STDOUT: %N.patt => constants.%N.1 -// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.1 -// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.1 +// CHECK:STDOUT: specific @Make(constants.%N.a7a) { +// CHECK:STDOUT: %N => constants.%N.a7a +// CHECK:STDOUT: %N.patt => constants.%N.a7a +// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.84b +// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.b6f // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %Make.specific_fn => constants.%Make.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.b3f +// CHECK:STDOUT: %Make.specific_fn => constants.%Make.specific_fn.45b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make(%N) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Make(constants.%int_64.2) { -// CHECK:STDOUT: %N => constants.%int_64.2 -// CHECK:STDOUT: %N.patt => constants.%int_64.2 -// CHECK:STDOUT: %int.convert_checked => constants.%int_64.1 +// CHECK:STDOUT: specific @Make(constants.%int_64.f82) { +// CHECK:STDOUT: %N => constants.%int_64.f82 +// CHECK:STDOUT: %N.patt => constants.%int_64.f82 +// CHECK:STDOUT: %int.convert_checked => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %Make.specific_fn => constants.%Make.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 +// CHECK:STDOUT: %Make.specific_fn => constants.%Make.specific_fn.525 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @MakeFromClass(constants.%N.2) { -// CHECK:STDOUT: %N => constants.%N.2 -// CHECK:STDOUT: %N.patt => constants.%N.2 -// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.1 -// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.2 -// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.2 +// CHECK:STDOUT: specific @MakeFromClass(constants.%N.1a2) { +// CHECK:STDOUT: %N => constants.%N.1a2 +// CHECK:STDOUT: %N.patt => constants.%N.1a2 +// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.e03 +// CHECK:STDOUT: %int.convert_checked => constants.%int.convert_checked.519 +// CHECK:STDOUT: %iN.builtin => constants.%iN.builtin.5d1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %MakeFromClass.specific_fn => constants.%MakeFromClass.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.02e +// CHECK:STDOUT: %MakeFromClass.specific_fn => constants.%MakeFromClass.specific_fn.f22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @MakeFromClass(%N) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @MakeFromClass(constants.%int_64.2) { -// CHECK:STDOUT: %N => constants.%int_64.2 -// CHECK:STDOUT: %N.patt => constants.%int_64.2 -// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.2 -// CHECK:STDOUT: %int.convert_checked => constants.%int_64.1 +// CHECK:STDOUT: specific @MakeFromClass(constants.%int_64.f82) { +// CHECK:STDOUT: %N => constants.%int_64.f82 +// CHECK:STDOUT: %N.patt => constants.%int_64.f82 +// CHECK:STDOUT: %ToLiteral.bound => constants.%ToLiteral.bound.648 +// CHECK:STDOUT: %int.convert_checked => constants.%int_64.fab // CHECK:STDOUT: %iN.builtin => constants.%i64.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %MakeFromClass.specific_fn => constants.%MakeFromClass.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.4a1 +// CHECK:STDOUT: %MakeFromClass.specific_fn => constants.%MakeFromClass.specific_fn.b9d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon b/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon index 244f4527d62a..2aa3acf6f1b7 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon @@ -38,14 +38,14 @@ fn G(c: C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.58f: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.17c: %F.type.58f = struct_value () [template] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] @@ -62,7 +62,7 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -72,7 +72,7 @@ fn G(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %Self.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.58f = fn_decl @F.2 [template = constants.%F.17c] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -118,32 +118,32 @@ fn G(c: C) { // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.9 [template] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.13) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.911 [template] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.799) [template] +// CHECK:STDOUT: %F.type.0c2: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.7a4: %F.type.0c2 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//extend_impl_library, I, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//extend_impl_library, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//extend_impl_library, loc12_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//extend_impl_library, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//extend_impl_library, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7: %F.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//extend_impl_library, F, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref Main//extend_impl_library, loc9_20, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.11: type = import_ref Main//extend_impl_library, loc9_15, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.12: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.492 = import_ref Main//extend_impl_library, I, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//extend_impl_library, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//extend_impl_library, loc12_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//extend_impl_library, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.bd076a.1: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.f8c = import_ref Main//extend_impl_library, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.145: %F.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.a15 = import_ref Main//extend_impl_library, F, unloaded +// CHECK:STDOUT: %import_ref.5d1: = import_ref Main//extend_impl_library, loc9_20, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.0ed: type = import_ref Main//extend_impl_library, loc9_15, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.bd076a.2: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 +// CHECK:STDOUT: .I = imports.%import_ref.492 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -152,39 +152,39 @@ fn G(c: C) { // CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %c.param: %C = value_param runtime_param0 -// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %c: %C = bind_name c, %c.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "extend_impl_library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .F = imports.%import_ref.7 -// CHECK:STDOUT: witness = (imports.%import_ref.8) +// CHECK:STDOUT: .Self = imports.%import_ref.f8c +// CHECK:STDOUT: .F = imports.%import_ref.145 +// CHECK:STDOUT: witness = (imports.%import_ref.a15) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.11 as imports.%import_ref.12 [from "extend_impl_library.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.0ed as imports.%import_ref.bd076a.2 [from "extend_impl_library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.10 +// CHECK:STDOUT: witness = imports.%import_ref.5d1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "extend_impl_library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: extend imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: extend imports.%import_ref.bd076a.1 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%c.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, imports.%import_ref.2 [template = constants.%C] -// CHECK:STDOUT: %F.ref.loc7: %F.assoc_type = name_ref F, imports.%import_ref.7 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc7: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %F.ref.loc7: %F.assoc_type = name_ref F, imports.%import_ref.145 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0.loc7: %F.type.9df = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.7a4] // CHECK:STDOUT: %F.call.loc7: init %empty_tuple.type = call %impl.elem0.loc7() // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %F.ref.loc8: %F.assoc_type = name_ref F, imports.%import_ref.7 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0.loc8: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %F.ref.loc8: %F.assoc_type = name_ref F, imports.%import_ref.145 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0.loc8: %F.type.9df = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.7a4] // CHECK:STDOUT: %F.call.loc8: init %empty_tuple.type = call %impl.elem0.loc8() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon index 4e3c7bf12c79..2ccc0be0e723 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon @@ -104,16 +104,16 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %I.type.2 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (), @impl.1(%T) [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.bc4: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %require_complete.ffb: = require_complete_type %I.type.bc4 [symbolic] +// CHECK:STDOUT: %impl_witness.455: = impl_witness (), @impl.1(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%ptr)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %I.type.3 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (), @impl.2(%T) [symbolic] +// CHECK:STDOUT: %I.type.51f: type = facet_type <@I, @I(%ptr)> [symbolic] +// CHECK:STDOUT: %require_complete.96d: = require_complete_type %I.type.51f [symbolic] +// CHECK:STDOUT: %impl_witness.26c: = impl_witness (), @impl.2(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -122,7 +122,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc5_13.1, runtime_param [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -134,21 +134,21 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %I.ref.loc8: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %I.ref.loc8: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %T.ref.loc8: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.2)] +// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.bc4)] // CHECK:STDOUT: %T.param.loc8: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param.loc8 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.455)] // CHECK:STDOUT: impl_decl @impl.1 [template] { // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %I.ref.loc9: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %I.ref.loc9: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc9 [symbolic = constants.%T] -// CHECK:STDOUT: %I.type.loc9: type = facet_type <@I, @I(constants.%T)> [symbolic = constants.%I.type.2] +// CHECK:STDOUT: %I.type.loc9: type = facet_type <@I, @I(constants.%T)> [symbolic = constants.%I.type.bc4] // CHECK:STDOUT: %T.param.loc9: type = value_param runtime_param // CHECK:STDOUT: %T.loc9: type = bind_symbolic_name T, 0, %T.param.loc9 [symbolic = constants.%T] // CHECK:STDOUT: } @@ -157,14 +157,14 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_14.1, runtime_param [symbolic = %T.patt.loc12_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc12_32.1: type = ptr_type %T [symbolic = %ptr.loc12_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc12_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.3)] +// CHECK:STDOUT: %I.type.loc12_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.51f)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc12_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc12_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (), @impl.2(constants.%T) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (), @impl.2(constants.%T) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.26c)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(%T.loc5_13.1: type) { @@ -172,11 +172,11 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc5_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc5_13.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self.2: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.bc4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -187,9 +187,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.1(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%I.type.loc8_32.2 (%I.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.bc4)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%I.type.loc8_32.2 (%I.type.bc4) [symbolic = %require_complete (constants.%require_complete.ffb)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.455)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -203,9 +203,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc12_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc12_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc12_32.2: type = ptr_type @impl.2.%T.loc12_14.2 (%T) [symbolic = %ptr.loc12_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc12_33.2: type = facet_type <@I, @I(%ptr.loc12_32.2)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%I.type.loc12_33.2 (%I.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc12_14.2) [symbolic = %impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %I.type.loc12_33.2: type = facet_type <@I, @I(%ptr.loc12_32.2)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.51f)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%I.type.loc12_33.2 (%I.type.51f) [symbolic = %require_complete (constants.%require_complete.96d)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc12_14.2) [symbolic = %impl_witness (constants.%impl_witness.26c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -228,7 +228,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self.2 => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -237,9 +237,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.1(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.bc4 +// CHECK:STDOUT: %require_complete => constants.%require_complete.ffb +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.455 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.1.%T.loc8_14.2) {} @@ -251,7 +251,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%ptr // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.51f // CHECK:STDOUT: %Self.2 => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -259,9 +259,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc12_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc12_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc12_32.2 => constants.%ptr -// CHECK:STDOUT: %I.type.loc12_33.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %I.type.loc12_33.2 => constants.%I.type.51f +// CHECK:STDOUT: %require_complete => constants.%require_complete.96d +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.26c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.2.%ptr.loc12_32.2) {} @@ -272,44 +272,44 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.9d1: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %I.type.2 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (), @impl.1(%T) [symbolic] +// CHECK:STDOUT: %require_complete.48b: = require_complete_type %I.type.9d1 [symbolic] +// CHECK:STDOUT: %impl_witness.8fd: = impl_witness (), @impl.1(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%ptr)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %I.type.3 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (), @impl.2(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (), @impl.3(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (), @impl.4(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.5: = impl_witness (), @impl.5(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.6: = impl_witness (), @impl.6(%T) [symbolic] +// CHECK:STDOUT: %I.type.ffc: type = facet_type <@I, @I(%ptr)> [symbolic] +// CHECK:STDOUT: %require_complete.6c6: = require_complete_type %I.type.ffc [symbolic] +// CHECK:STDOUT: %impl_witness.4b1: = impl_witness (), @impl.2(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.cbc10c.1: = impl_witness (), @impl.3(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.cbc10c.2: = impl_witness (), @impl.4(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.aad5cc.1: = impl_witness (), @impl.5(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.aad5cc.2: = impl_witness (), @impl.6(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//import_generic, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: %I.type.1 = import_ref Main//import_generic, I, loaded [template = constants.%I.generic] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//import_generic, loc8_33, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//import_generic, inst31 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//import_generic, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//import_generic, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7: type = import_ref Main//import_generic, loc8_24, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.8: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @impl.1.%I.type (constants.%I.type.2)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//import_generic, loc12_35, unloaded -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//import_generic, loc12_24, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.11: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @impl.2.%I.type (constants.%I.type.3)] +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//import_generic, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.848: %I.type.dac = import_ref Main//import_generic, I, loaded [template = constants.%I.generic] +// CHECK:STDOUT: %import_ref.ea4 = import_ref Main//import_generic, loc8_33, unloaded +// CHECK:STDOUT: %import_ref.9c1 = import_ref Main//import_generic, inst31 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//import_generic, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//import_generic, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3de5b0.1: type = import_ref Main//import_generic, loc8_24, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.c59: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @impl.1.%I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %import_ref.c38 = import_ref Main//import_generic, loc12_35, unloaded +// CHECK:STDOUT: %import_ref.3de5b0.2: type = import_ref Main//import_generic, loc12_24, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.39d: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @impl.2.%I.type (constants.%I.type.ffc)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .I = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .I = imports.%import_ref.848 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import @@ -317,52 +317,52 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.2 [template = constants.%I.generic] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.2)] +// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.9d1)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.cbc10c.1)] // CHECK:STDOUT: impl_decl @impl.4 [template] { // CHECK:STDOUT: %T.patt.loc14_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.2 [template = constants.%I.generic] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T)] -// CHECK:STDOUT: %I.type.loc14_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.2)] +// CHECK:STDOUT: %I.type.loc14_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.9d1)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.cbc10c.2)] // CHECK:STDOUT: impl_decl @impl.5 [template] { // CHECK:STDOUT: %T.patt.loc20_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc20_14.1, runtime_param [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.2 [template = constants.%I.generic] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc20_14.1 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T [symbolic = %ptr.loc20_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc20_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.3)] +// CHECK:STDOUT: %I.type.loc20_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.ffc)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc20: = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.5)] +// CHECK:STDOUT: %impl_witness.loc20: = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.aad5cc.1)] // CHECK:STDOUT: impl_decl @impl.6 [template] { // CHECK:STDOUT: %T.patt.loc26_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc26_14.1, runtime_param [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, imports.%import_ref.2 [template = constants.%I.generic] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%import_ref.848 [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc26_14.1 [symbolic = %T.loc26_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc26_32.1: type = ptr_type %T [symbolic = %ptr.loc26_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc26_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.3)] +// CHECK:STDOUT: %I.type.loc26_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.ffc)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc26_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc26_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc26: = impl_witness (), @impl.6(constants.%T) [symbolic = @impl.6.%impl_witness (constants.%impl_witness.6)] +// CHECK:STDOUT: %impl_witness.loc26: = impl_witness (), @impl.6(constants.%T) [symbolic = @impl.6.%impl_witness (constants.%impl_witness.aad5cc.2)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @I(constants.%T: type) [from "import_generic.carbon"] { @@ -370,12 +370,12 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %Self: %I.type.9d1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.9c1 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -383,15 +383,15 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.1(constants.%T: type) [from "import_generic.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%I.type (%I.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.9d1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%I.type (%I.type.9d1) [symbolic = %require_complete (constants.%require_complete.48b)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T) [symbolic = %impl_witness (constants.%impl_witness.8fd)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.7 as imports.%import_ref.8 { +// CHECK:STDOUT: impl: imports.%import_ref.3de5b0.1 as imports.%import_ref.c59 { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.3 +// CHECK:STDOUT: witness = imports.%import_ref.ea4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -399,24 +399,24 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %ptr: type = ptr_type @impl.2.%T (%T) [symbolic = %ptr (constants.%ptr)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%ptr)> [symbolic = %I.type (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%I.type (%I.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T) [symbolic = %impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%ptr)> [symbolic = %I.type (constants.%I.type.ffc)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%I.type (%I.type.ffc) [symbolic = %require_complete (constants.%require_complete.6c6)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T) [symbolic = %impl_witness (constants.%impl_witness.4b1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.10 as imports.%import_ref.11 { +// CHECK:STDOUT: impl: imports.%import_ref.3de5b0.2 as imports.%import_ref.39d { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.c38 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.3(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.3.%I.type.loc8_32.2 (%I.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %I.type.loc8_32.2: type = facet_type <@I, @I(%T.loc8_14.2)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.9d1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.3.%I.type.loc8_32.2 (%I.type.9d1) [symbolic = %require_complete (constants.%require_complete.48b)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.cbc10c.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %I.type.loc8_32.1; // CHECK:STDOUT: } @@ -424,9 +424,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.4(%T.loc14_14.1: type) { // CHECK:STDOUT: %T.loc14_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc14_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.type.loc14_32.2: type = facet_type <@I, @I(%T.loc14_14.2)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.4.%I.type.loc14_32.2 (%I.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %I.type.loc14_32.2: type = facet_type <@I, @I(%T.loc14_14.2)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.9d1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.4.%I.type.loc14_32.2 (%I.type.9d1) [symbolic = %require_complete (constants.%require_complete.48b)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.cbc10c.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -440,9 +440,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc20_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc20_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc20_32.2: type = ptr_type @impl.5.%T.loc20_14.2 (%T) [symbolic = %ptr.loc20_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc20_33.2: type = facet_type <@I, @I(%ptr.loc20_32.2)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.5.%I.type.loc20_33.2 (%I.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.5(%T.loc20_14.2) [symbolic = %impl_witness (constants.%impl_witness.5)] +// CHECK:STDOUT: %I.type.loc20_33.2: type = facet_type <@I, @I(%ptr.loc20_32.2)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.ffc)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.5.%I.type.loc20_33.2 (%I.type.ffc) [symbolic = %require_complete (constants.%require_complete.6c6)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.5(%T.loc20_14.2) [symbolic = %impl_witness (constants.%impl_witness.aad5cc.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.ref as %I.type.loc20_33.1; // CHECK:STDOUT: } @@ -451,9 +451,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc26_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc26_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc26_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc26_32.2: type = ptr_type @impl.6.%T.loc26_14.2 (%T) [symbolic = %ptr.loc26_32.2 (constants.%ptr)] -// CHECK:STDOUT: %I.type.loc26_33.2: type = facet_type <@I, @I(%ptr.loc26_32.2)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.6.%I.type.loc26_33.2 (%I.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.6(%T.loc26_14.2) [symbolic = %impl_witness (constants.%impl_witness.6)] +// CHECK:STDOUT: %I.type.loc26_33.2: type = facet_type <@I, @I(%ptr.loc26_32.2)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.ffc)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.6.%I.type.loc26_33.2 (%I.type.ffc) [symbolic = %require_complete (constants.%require_complete.6c6)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.6(%T.loc26_14.2) [symbolic = %impl_witness (constants.%impl_witness.aad5cc.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -465,8 +465,8 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "import_generic.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { @@ -474,7 +474,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.9d1 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -483,9 +483,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T -// CHECK:STDOUT: %I.type => constants.%I.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %I.type => constants.%I.type.9d1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.48b +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.8fd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.1.%T) {} @@ -497,7 +497,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt => constants.%ptr // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.3 +// CHECK:STDOUT: %I.type => constants.%I.type.ffc // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -505,9 +505,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr -// CHECK:STDOUT: %I.type => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %I.type => constants.%I.type.ffc +// CHECK:STDOUT: %require_complete => constants.%require_complete.6c6 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.4b1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.2.%ptr) {} @@ -517,9 +517,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.3(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.3 +// CHECK:STDOUT: %I.type.loc8_32.2 => constants.%I.type.9d1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.48b +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.cbc10c.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.3.%T.loc8_14.2) {} @@ -529,9 +529,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.4(constants.%T) { // CHECK:STDOUT: %T.loc14_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc14_14.2 => constants.%T -// CHECK:STDOUT: %I.type.loc14_32.2 => constants.%I.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.4 +// CHECK:STDOUT: %I.type.loc14_32.2 => constants.%I.type.9d1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.48b +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.cbc10c.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.4.%T.loc14_14.2) {} @@ -542,9 +542,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc20_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc20_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_32.2 => constants.%ptr -// CHECK:STDOUT: %I.type.loc20_33.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.5 +// CHECK:STDOUT: %I.type.loc20_33.2 => constants.%I.type.ffc +// CHECK:STDOUT: %require_complete => constants.%require_complete.6c6 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.aad5cc.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.5.%ptr.loc20_32.2) {} @@ -555,9 +555,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc26_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc26_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc26_32.2 => constants.%ptr -// CHECK:STDOUT: %I.type.loc26_33.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.6 +// CHECK:STDOUT: %I.type.loc26_33.2 => constants.%I.type.ffc +// CHECK:STDOUT: %require_complete => constants.%require_complete.6c6 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.aad5cc.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(@impl.6.%ptr.loc26_32.2) {} @@ -572,16 +572,16 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %J.type.1: type = generic_interface_type @J [template] -// CHECK:STDOUT: %J.generic: %J.type.1 = struct_value () [template] -// CHECK:STDOUT: %J.type.2: type = facet_type <@J, @J(%T)> [symbolic] -// CHECK:STDOUT: %Self: %J.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %J.type.2 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (), @impl.1(%T) [symbolic] +// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [template] +// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [template] +// CHECK:STDOUT: %J.type.d4b: type = facet_type <@J, @J(%T)> [symbolic] +// CHECK:STDOUT: %Self: %J.type.d4b = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %require_complete.7f4: = require_complete_type %J.type.d4b [symbolic] +// CHECK:STDOUT: %impl_witness.6f1: = impl_witness (), @impl.1(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %J.type.3: type = facet_type <@J, @J(%ptr)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %J.type.3 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (), @impl.2(%T) [symbolic] +// CHECK:STDOUT: %J.type.a4c: type = facet_type <@J, @J(%ptr)> [symbolic] +// CHECK:STDOUT: %require_complete.664: = require_complete_type %J.type.a4c [symbolic] +// CHECK:STDOUT: %impl_witness.87e: = impl_witness (), @impl.2(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -590,7 +590,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} -// CHECK:STDOUT: %J.decl: %J.type.1 = interface_decl @J [template = constants.%J.generic] { +// CHECK:STDOUT: %J.decl: %J.type.2b8 = interface_decl @J [template = constants.%J.generic] { // CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc5_13.1, runtime_param [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -602,26 +602,26 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_14.1, runtime_param [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, file.%J.decl [template = constants.%J.generic] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_14.1 [symbolic = %T.loc11_14.2 (constants.%T)] -// CHECK:STDOUT: %J.type.loc11_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.2)] +// CHECK:STDOUT: %J.type.loc11_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.d4b)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc11_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.6f1)] // CHECK:STDOUT: impl_decl @impl.2 [template] { // CHECK:STDOUT: %T.patt.loc17_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc17_14.1, runtime_param [symbolic = %T.patt.loc17_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, file.%J.decl [template = constants.%J.generic] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc17_14.1 [symbolic = %T.loc17_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc17_32.1: type = ptr_type %T [symbolic = %ptr.loc17_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc17_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.3)] +// CHECK:STDOUT: %J.type.loc17_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.a4c)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc17_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc17_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (), @impl.2(constants.%T) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (), @impl.2(constants.%T) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.87e)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @J(%T.loc5_13.1: type) { @@ -629,11 +629,11 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T.loc5_13.2)> [symbolic = %J.type (constants.%J.type.2)] -// CHECK:STDOUT: %Self.2: %J.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T.loc5_13.2)> [symbolic = %J.type (constants.%J.type.d4b)] +// CHECK:STDOUT: %Self.2: %J.type.d4b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @J.%J.type (%J.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @J.%J.type (%J.type.d4b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -644,9 +644,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.1(%T.loc11_14.1: type) { // CHECK:STDOUT: %T.loc11_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc11_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %J.type.loc11_32.2: type = facet_type <@J, @J(%T.loc11_14.2)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%J.type.loc11_32.2 (%J.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc11_14.2) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %J.type.loc11_32.2: type = facet_type <@J, @J(%T.loc11_14.2)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.d4b)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%J.type.loc11_32.2 (%J.type.d4b) [symbolic = %require_complete (constants.%require_complete.7f4)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T.loc11_14.2) [symbolic = %impl_witness (constants.%impl_witness.6f1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc11_32.1; // CHECK:STDOUT: } @@ -655,9 +655,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc17_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc17_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc17_32.2: type = ptr_type @impl.2.%T.loc17_14.2 (%T) [symbolic = %ptr.loc17_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc17_33.2: type = facet_type <@J, @J(%ptr.loc17_32.2)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%J.type.loc17_33.2 (%J.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc17_14.2) [symbolic = %impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %J.type.loc17_33.2: type = facet_type <@J, @J(%ptr.loc17_32.2)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.a4c)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%J.type.loc17_33.2 (%J.type.a4c) [symbolic = %require_complete (constants.%require_complete.664)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T.loc17_14.2) [symbolic = %impl_witness (constants.%impl_witness.87e)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc17_33.1; // CHECK:STDOUT: } @@ -675,7 +675,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type => constants.%J.type.2 +// CHECK:STDOUT: %J.type => constants.%J.type.d4b // CHECK:STDOUT: %Self.2 => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -684,9 +684,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.1(constants.%T) { // CHECK:STDOUT: %T.loc11_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc11_14.2 => constants.%T -// CHECK:STDOUT: %J.type.loc11_32.2 => constants.%J.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %J.type.loc11_32.2 => constants.%J.type.d4b +// CHECK:STDOUT: %require_complete => constants.%require_complete.7f4 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.6f1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.1.%T.loc11_14.2) {} @@ -698,7 +698,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc5_13.2 => constants.%ptr // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type => constants.%J.type.3 +// CHECK:STDOUT: %J.type => constants.%J.type.a4c // CHECK:STDOUT: %Self.2 => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -706,9 +706,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc17_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc17_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc17_32.2 => constants.%ptr -// CHECK:STDOUT: %J.type.loc17_33.2 => constants.%J.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %J.type.loc17_33.2 => constants.%J.type.a4c +// CHECK:STDOUT: %require_complete => constants.%require_complete.664 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.87e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.2.%ptr.loc17_32.2) {} @@ -719,42 +719,42 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %J.type.1: type = generic_interface_type @J [template] -// CHECK:STDOUT: %J.generic: %J.type.1 = struct_value () [template] -// CHECK:STDOUT: %J.type.2: type = facet_type <@J, @J(%T)> [symbolic] -// CHECK:STDOUT: %Self: %J.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [template] +// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [template] +// CHECK:STDOUT: %J.type.dab: type = facet_type <@J, @J(%T)> [symbolic] +// CHECK:STDOUT: %Self: %J.type.dab = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %J.type.2 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (), @impl.1(%T) [symbolic] +// CHECK:STDOUT: %require_complete.5ad: = require_complete_type %J.type.dab [symbolic] +// CHECK:STDOUT: %impl_witness.11f: = impl_witness (), @impl.1(%T) [symbolic] // CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %J.type.3: type = facet_type <@J, @J(%ptr)> [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %J.type.3 [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (), @impl.2(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (), @impl.3(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (), @impl.4(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.5: = impl_witness (), @impl.5(%T) [symbolic] -// CHECK:STDOUT: %impl_witness.6: = impl_witness (), @impl.6(%T) [symbolic] +// CHECK:STDOUT: %J.type.919: type = facet_type <@J, @J(%ptr)> [symbolic] +// CHECK:STDOUT: %require_complete.c6c: = require_complete_type %J.type.919 [symbolic] +// CHECK:STDOUT: %impl_witness.e2f: = impl_witness (), @impl.2(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.8e29ed.1: = impl_witness (), @impl.3(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.8e29ed.2: = impl_witness (), @impl.4(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.64a655.1: = impl_witness (), @impl.5(%T) [symbolic] +// CHECK:STDOUT: %impl_witness.64a655.2: = impl_witness (), @impl.6(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//import_generic_decl, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.2: %J.type.1 = import_ref Main//import_generic_decl, J, loaded [template = constants.%J.generic] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//import_generic_decl, inst31 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//import_generic_decl, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//import_generic_decl, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7: type = import_ref Main//import_generic_decl, loc11_24, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.8: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @impl.1.%J.type (constants.%J.type.2)] -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//import_generic_decl, loc17_24, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.11: type = import_ref Main//import_generic_decl, loc17_33, loaded [symbolic = @impl.2.%J.type (constants.%J.type.3)] +// CHECK:STDOUT: %import_ref.275: type = import_ref Main//import_generic_decl, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.51e: %J.type.2b8 = import_ref Main//import_generic_decl, J, loaded [template = constants.%J.generic] +// CHECK:STDOUT: %import_ref.b49 = import_ref Main//import_generic_decl, inst31 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//import_generic_decl, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.cab = import_ref Main//import_generic_decl, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.3b992b.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.bdf: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @impl.1.%J.type (constants.%J.type.dab)] +// CHECK:STDOUT: %import_ref.3b992b.2: type = import_ref Main//import_generic_decl, loc17_24, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.857: type = import_ref Main//import_generic_decl, loc17_33, loaded [symbolic = @impl.2.%J.type (constants.%J.type.919)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .D = imports.%import_ref.1 -// CHECK:STDOUT: .J = imports.%import_ref.2 +// CHECK:STDOUT: .D = imports.%import_ref.275 +// CHECK:STDOUT: .J = imports.%import_ref.51e // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import @@ -762,52 +762,52 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, imports.%import_ref.2 [template = constants.%J.generic] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%import_ref.51e [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)] -// CHECK:STDOUT: %J.type.loc8_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.2)] +// CHECK:STDOUT: %J.type.loc8_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.dab)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %impl_witness.loc8: = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.8e29ed.1)] // CHECK:STDOUT: impl_decl @impl.4 [template] { // CHECK:STDOUT: %T.patt.loc14_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc14_14.1, runtime_param [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, imports.%import_ref.2 [template = constants.%J.generic] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%import_ref.51e [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T)] -// CHECK:STDOUT: %J.type.loc14_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.2)] +// CHECK:STDOUT: %J.type.loc14_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.dab)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.8e29ed.2)] // CHECK:STDOUT: impl_decl @impl.5 [template] { // CHECK:STDOUT: %T.patt.loc20_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc20_14.1, runtime_param [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, imports.%import_ref.2 [template = constants.%J.generic] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%import_ref.51e [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc20_14.1 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T [symbolic = %ptr.loc20_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc20_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.3)] +// CHECK:STDOUT: %J.type.loc20_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.919)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc20: = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.5)] +// CHECK:STDOUT: %impl_witness.loc20: = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.64a655.1)] // CHECK:STDOUT: impl_decl @impl.6 [template] { // CHECK:STDOUT: %T.patt.loc25_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_14.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc25_14.1, runtime_param [symbolic = %T.patt.loc25_14.2 (constants.%T.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.1 [template = constants.%D] -// CHECK:STDOUT: %J.ref: %J.type.1 = name_ref J, imports.%import_ref.2 [template = constants.%J.generic] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] +// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%import_ref.51e [template = constants.%J.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc25_14.1 [symbolic = %T.loc25_14.2 (constants.%T)] // CHECK:STDOUT: %ptr.loc25_32.1: type = ptr_type %T [symbolic = %ptr.loc25_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc25_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc25_33.2 (constants.%J.type.3)] +// CHECK:STDOUT: %J.type.loc25_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc25_33.2 (constants.%J.type.919)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc25_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc25_14.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc25: = impl_witness (), @impl.6(constants.%T) [symbolic = @impl.6.%impl_witness (constants.%impl_witness.6)] +// CHECK:STDOUT: %impl_witness.loc25: = impl_witness (), @impl.6(constants.%T) [symbolic = @impl.6.%impl_witness (constants.%impl_witness.64a655.2)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @J(constants.%T: type) [from "fail_import_generic_decl.carbon"] { @@ -815,12 +815,12 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.2)] -// CHECK:STDOUT: %Self: %J.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.dab)] +// CHECK:STDOUT: %Self: %J.type.dab = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.b49 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -828,30 +828,30 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.1(constants.%T: type) [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] -// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%J.type (%J.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%T)> [symbolic = %J.type (constants.%J.type.dab)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.1.%J.type (%J.type.dab) [symbolic = %require_complete (constants.%require_complete.5ad)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.1(%T) [symbolic = %impl_witness (constants.%impl_witness.11f)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.7 as imports.%import_ref.8; +// CHECK:STDOUT: impl: imports.%import_ref.3b992b.1 as imports.%import_ref.bdf; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.2(constants.%T: type) [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %ptr: type = ptr_type @impl.2.%T (%T) [symbolic = %ptr (constants.%ptr)] -// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%ptr)> [symbolic = %J.type (constants.%J.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%J.type (%J.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T) [symbolic = %impl_witness (constants.%impl_witness.2)] +// CHECK:STDOUT: %J.type: type = facet_type <@J, @J(%ptr)> [symbolic = %J.type (constants.%J.type.919)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.2.%J.type (%J.type.919) [symbolic = %require_complete (constants.%require_complete.c6c)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.2(%T) [symbolic = %impl_witness (constants.%impl_witness.e2f)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.10 as imports.%import_ref.11; +// CHECK:STDOUT: impl: imports.%import_ref.3b992b.2 as imports.%import_ref.857; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.3(%T.loc8_14.1: type) { // CHECK:STDOUT: %T.loc8_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %J.type.loc8_32.2: type = facet_type <@J, @J(%T.loc8_14.2)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.3.%J.type.loc8_32.2 (%J.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.3)] +// CHECK:STDOUT: %J.type.loc8_32.2: type = facet_type <@J, @J(%T.loc8_14.2)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.dab)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.3.%J.type.loc8_32.2 (%J.type.dab) [symbolic = %require_complete (constants.%require_complete.5ad)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.3(%T.loc8_14.2) [symbolic = %impl_witness (constants.%impl_witness.8e29ed.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc8_32.1; // CHECK:STDOUT: } @@ -859,9 +859,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: generic impl @impl.4(%T.loc14_14.1: type) { // CHECK:STDOUT: %T.loc14_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc14_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)] -// CHECK:STDOUT: %J.type.loc14_32.2: type = facet_type <@J, @J(%T.loc14_14.2)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.2)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.4.%J.type.loc14_32.2 (%J.type.2) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.4)] +// CHECK:STDOUT: %J.type.loc14_32.2: type = facet_type <@J, @J(%T.loc14_14.2)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.dab)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.4.%J.type.loc14_32.2 (%J.type.dab) [symbolic = %require_complete (constants.%require_complete.5ad)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.4(%T.loc14_14.2) [symbolic = %impl_witness (constants.%impl_witness.8e29ed.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -875,9 +875,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc20_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc20_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc20_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc20_32.2: type = ptr_type @impl.5.%T.loc20_14.2 (%T) [symbolic = %ptr.loc20_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc20_33.2: type = facet_type <@J, @J(%ptr.loc20_32.2)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.5.%J.type.loc20_33.2 (%J.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.5(%T.loc20_14.2) [symbolic = %impl_witness (constants.%impl_witness.5)] +// CHECK:STDOUT: %J.type.loc20_33.2: type = facet_type <@J, @J(%ptr.loc20_32.2)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.919)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.5.%J.type.loc20_33.2 (%J.type.919) [symbolic = %require_complete (constants.%require_complete.c6c)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.5(%T.loc20_14.2) [symbolic = %impl_witness (constants.%impl_witness.64a655.1)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %D.ref as %J.type.loc20_33.1; // CHECK:STDOUT: } @@ -886,9 +886,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc25_14.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc25_14.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc25_14.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_14.2 (constants.%T.patt)] // CHECK:STDOUT: %ptr.loc25_32.2: type = ptr_type @impl.6.%T.loc25_14.2 (%T) [symbolic = %ptr.loc25_32.2 (constants.%ptr)] -// CHECK:STDOUT: %J.type.loc25_33.2: type = facet_type <@J, @J(%ptr.loc25_32.2)> [symbolic = %J.type.loc25_33.2 (constants.%J.type.3)] -// CHECK:STDOUT: %require_complete: = require_complete_type @impl.6.%J.type.loc25_33.2 (%J.type.3) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.6(%T.loc25_14.2) [symbolic = %impl_witness (constants.%impl_witness.6)] +// CHECK:STDOUT: %J.type.loc25_33.2: type = facet_type <@J, @J(%ptr.loc25_32.2)> [symbolic = %J.type.loc25_33.2 (constants.%J.type.919)] +// CHECK:STDOUT: %require_complete: = require_complete_type @impl.6.%J.type.loc25_33.2 (%J.type.919) [symbolic = %require_complete (constants.%require_complete.c6c)] +// CHECK:STDOUT: %impl_witness: = impl_witness (), @impl.6(%T.loc25_14.2) [symbolic = %impl_witness (constants.%impl_witness.64a655.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -900,8 +900,8 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(constants.%T) { @@ -909,7 +909,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type => constants.%J.type.2 +// CHECK:STDOUT: %J.type => constants.%J.type.dab // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -918,9 +918,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.1(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T -// CHECK:STDOUT: %J.type => constants.%J.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %J.type => constants.%J.type.dab +// CHECK:STDOUT: %require_complete => constants.%require_complete.5ad +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.11f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.1.%T) {} @@ -932,7 +932,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.patt => constants.%ptr // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %J.type => constants.%J.type.3 +// CHECK:STDOUT: %J.type => constants.%J.type.919 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: @@ -940,9 +940,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T // CHECK:STDOUT: %ptr => constants.%ptr -// CHECK:STDOUT: %J.type => constants.%J.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %J.type => constants.%J.type.919 +// CHECK:STDOUT: %require_complete => constants.%require_complete.c6c +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.e2f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.2.%ptr) {} @@ -952,9 +952,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.3(constants.%T) { // CHECK:STDOUT: %T.loc8_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_14.2 => constants.%T -// CHECK:STDOUT: %J.type.loc8_32.2 => constants.%J.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.3 +// CHECK:STDOUT: %J.type.loc8_32.2 => constants.%J.type.dab +// CHECK:STDOUT: %require_complete => constants.%require_complete.5ad +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.8e29ed.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.3.%T.loc8_14.2) {} @@ -964,9 +964,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: specific @impl.4(constants.%T) { // CHECK:STDOUT: %T.loc14_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc14_14.2 => constants.%T -// CHECK:STDOUT: %J.type.loc14_32.2 => constants.%J.type.2 -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.4 +// CHECK:STDOUT: %J.type.loc14_32.2 => constants.%J.type.dab +// CHECK:STDOUT: %require_complete => constants.%require_complete.5ad +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.8e29ed.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.4.%T.loc14_14.2) {} @@ -977,9 +977,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc20_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc20_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc20_32.2 => constants.%ptr -// CHECK:STDOUT: %J.type.loc20_33.2 => constants.%J.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.5 +// CHECK:STDOUT: %J.type.loc20_33.2 => constants.%J.type.919 +// CHECK:STDOUT: %require_complete => constants.%require_complete.c6c +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.64a655.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.5.%ptr.loc20_32.2) {} @@ -990,9 +990,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %T.loc25_14.2 => constants.%T // CHECK:STDOUT: %T.patt.loc25_14.2 => constants.%T // CHECK:STDOUT: %ptr.loc25_32.2 => constants.%ptr -// CHECK:STDOUT: %J.type.loc25_33.2 => constants.%J.type.3 -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.6 +// CHECK:STDOUT: %J.type.loc25_33.2 => constants.%J.type.919 +// CHECK:STDOUT: %require_complete => constants.%require_complete.c6c +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.64a655.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(@impl.6.%ptr.loc25_32.2) {} diff --git a/toolchain/check/testdata/impl/no_prelude/import_self.carbon b/toolchain/check/testdata/impl/no_prelude/import_self.carbon index bf8bd300cca1..66d026083988 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_self.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_self.carbon @@ -105,37 +105,37 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] // CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [template] +// CHECK:STDOUT: %Op.type.16a: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.93e: %Op.type.16a = struct_value () [template] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.188: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.26f: %Op.type.188 = struct_value () [template] // CHECK:STDOUT: %Add.facet: %Add.type = facet_value %empty_tuple.type, %impl_witness [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.1 [template] -// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, imports.%import_ref.5 [template] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type %Add.type, %Op.type.16a [template] +// CHECK:STDOUT: %assoc0: %Op.assoc_type = assoc_entity element0, imports.%import_ref.3bf [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, Add, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//a, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.3: %Op.assoc_type = import_ref Main//a, loc5_41, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.4: %Op.type.1 = import_ref Main//a, Op, loaded [template = constants.%Op.1] +// CHECK:STDOUT: %import_ref.4b5: type = import_ref Main//a, Add, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.72a = import_ref Main//a, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.b57: %Op.assoc_type = import_ref Main//a, loc5_41, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.634: %Op.type.16a = import_ref Main//a, Op, loaded [template = constants.%Op.93e] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Add = imports.%import_ref.1 +// CHECK:STDOUT: .Add = imports.%import_ref.4b5 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.1 [template = constants.%Add.type] +// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.4b5 [template = constants.%Add.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { @@ -167,13 +167,13 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: interface @Add [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 -// CHECK:STDOUT: .Op = imports.%import_ref.3 -// CHECK:STDOUT: witness = (imports.%import_ref.4) +// CHECK:STDOUT: .Self = imports.%import_ref.72a +// CHECK:STDOUT: .Op = imports.%import_ref.b57 +// CHECK:STDOUT: witness = (imports.%import_ref.634) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %.loc6_7.2 as %Add.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.188 = fn_decl @Op.2 [template = constants.%Op.26f] { // CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self // CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %empty_tuple.type = binding_pattern other @@ -215,9 +215,9 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: fn @F(%x.param_patt: %empty_tuple.type, %y.param_patt: %empty_tuple.type) -> %empty_tuple.type { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x -// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.1 [template = constants.%Add.type] -// CHECK:STDOUT: %Op.ref: %Op.assoc_type = name_ref Op, imports.%import_ref.3 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.4b5 [template = constants.%Add.type] +// CHECK:STDOUT: %Op.ref: %Op.assoc_type = name_ref Op, imports.%import_ref.b57 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %Op.type.16a = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.26f] // CHECK:STDOUT: %Op.bound: = bound_method %x.ref, %impl.elem0 // CHECK:STDOUT: %y.ref: %empty_tuple.type = name_ref y, %y // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%x.ref, %y.ref) diff --git a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon index 3f8f48c391e5..7569ecce8dcf 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon @@ -51,13 +51,13 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.478: %F.type.9df = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] +// CHECK:STDOUT: %F.type.7bd: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.3d2: %F.type.7bd = struct_value () [symbolic] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,7 +90,7 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.9df = fn_decl @F.1 [template = constants.%F.478] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -106,11 +106,11 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %impl_witness: = impl_witness (%F.decl), @impl(%T.loc10_14.2) [symbolic = %impl_witness (constants.%impl_witness)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T.loc10_14.2) [symbolic = %F.type (constants.%F.type.7bd)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.7bd) = struct_value () [symbolic = %F (constants.%F.3d2)] // CHECK:STDOUT: // CHECK:STDOUT: impl: %C.loc10_27.1 as %I.ref { -// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.2) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.2)] {} {} +// CHECK:STDOUT: %F.decl: @impl.%F.type (%F.type.7bd) = fn_decl @F.2 [symbolic = @impl.%F (constants.%F.3d2)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -161,8 +161,8 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %impl_witness => constants.%impl_witness // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.7bd +// CHECK:STDOUT: %F => constants.%F.3d2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@impl.%T.loc10_14.2) {} @@ -182,59 +182,59 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %C.df4: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%empty_struct_type) [template] -// CHECK:STDOUT: %C.val: %C.2 = struct_value () [template] +// CHECK:STDOUT: %C.a68: type = class_type @C, @C(%empty_struct_type) [template] +// CHECK:STDOUT: %C.val: %C.a68 = struct_value () [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.8 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (imports.%import_ref.12), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @impl(%T) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (imports.%import_ref.12), @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (imports.%import_ref.13), @impl(%T) [symbolic] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2, @impl(%empty_struct_type) [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %F.specific_fn: = specific_function %F.3, @F.2(%empty_struct_type) [template] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [template] +// CHECK:STDOUT: %F.type.9df: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.9df [template] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, imports.%import_ref.911 [template] +// CHECK:STDOUT: %impl_witness.1c5: = impl_witness (imports.%import_ref.a9f), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.2f0: type = fn_type @F.2, @impl(%T) [symbolic] +// CHECK:STDOUT: %F.263: %F.type.2f0 = struct_value () [symbolic] +// CHECK:STDOUT: %impl_witness.8a8: = impl_witness (imports.%import_ref.a9f), @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %impl_witness.4be: = impl_witness (imports.%import_ref.5d8), @impl(%T) [symbolic] +// CHECK:STDOUT: %F.type.50d: type = fn_type @F.2, @impl(%empty_struct_type) [template] +// CHECK:STDOUT: %F.91e: %F.type.50d = struct_value () [template] +// CHECK:STDOUT: %F.specific_fn: = specific_function %F.91e, @F.2(%empty_struct_type) [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %C.type = import_ref Main//import_generic, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//import_generic, I, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//import_generic, loc4_20, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//import_generic, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//import_generic, inst31 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6: %F.assoc_type = import_ref Main//import_generic, loc7_9, loaded [template = constants.%assoc0] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//import_generic, F, unloaded -// CHECK:STDOUT: %import_ref.9: = import_ref Main//import_generic, loc10_34, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.3)] -// CHECK:STDOUT: %import_ref.10: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @impl.%C (constants.%C.1)] -// CHECK:STDOUT: %import_ref.11: type = import_ref Main//import_generic, loc10_32, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.12: @impl.%F.type (%F.type.2) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @impl.%F (constants.%F.2)] +// CHECK:STDOUT: %import_ref.26e: %C.type = import_ref Main//import_generic, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.9f4: type = import_ref Main//import_generic, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//import_generic, loc4_20, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.495 = import_ref Main//import_generic, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.f8c = import_ref Main//import_generic, inst31 [no loc], unloaded +// CHECK:STDOUT: %import_ref.145: %F.assoc_type = import_ref Main//import_generic, loc7_9, loaded [template = constants.%assoc0] +// CHECK:STDOUT: %import_ref.a15 = import_ref Main//import_generic, F, unloaded +// CHECK:STDOUT: %import_ref.445: = import_ref Main//import_generic, loc10_34, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.4be)] +// CHECK:STDOUT: %import_ref.311: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @impl.%C (constants.%C.df4)] +// CHECK:STDOUT: %import_ref.bd0: type = import_ref Main//import_generic, loc10_32, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.a9f: @impl.%F.type (%F.type.2f0) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @impl.%F (constants.%F.263)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .I = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.26e +// CHECK:STDOUT: .I = imports.%import_ref.9f4 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %c.var: ref %C.2 = var c -// CHECK:STDOUT: %c: ref %C.2 = bind_name c, %c.var -// CHECK:STDOUT: %F.decl: %F.type.4 = fn_decl @F.3 [template = constants.%F.4] { +// CHECK:STDOUT: %c.var: ref %C.a68 = var c +// CHECK:STDOUT: %c: ref %C.a68 = bind_name c, %c.var +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [template = constants.%F.c41] { // CHECK:STDOUT: %return.patt: = return_slot_pattern // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %c.ref: ref %C.2 = name_ref c, file.%c -// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.2 [template = constants.%I.type] -// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.6 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%F.3] +// CHECK:STDOUT: %c.ref: ref %C.a68 = name_ref c, file.%c +// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.9f4 [template = constants.%I.type] +// CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, imports.%import_ref.145 [template = constants.%assoc0] +// CHECK:STDOUT: %impl.elem0: %F.type.9df = impl_witness_access constants.%impl_witness.8a8, element0 [template = constants.%F.91e] // CHECK:STDOUT: %F.specific_fn: = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.specific_fn() // CHECK:STDOUT: %.loc15_19.1: ref %empty_tuple.type = temporary_storage @@ -247,24 +247,24 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "import_generic.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .F = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.f8c +// CHECK:STDOUT: .F = imports.%import_ref.145 +// CHECK:STDOUT: witness = (imports.%import_ref.a15) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl(constants.%T: type) [from "import_generic.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.1)] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.12), @impl(%T) [symbolic = %impl_witness (constants.%impl_witness.1)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.df4)] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.a9f), @impl(%T) [symbolic = %impl_witness (constants.%impl_witness.1c5)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T) [symbolic = %F.type (constants.%F.type.2)] -// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2) = struct_value () [symbolic = %F (constants.%F.2)] +// CHECK:STDOUT: %F.type: type = fn_type @F.2, @impl(%T) [symbolic = %F.type (constants.%F.type.2f0)] +// CHECK:STDOUT: %F: @impl.%F.type (%F.type.2f0) = struct_value () [symbolic = %F (constants.%F.263)] // CHECK:STDOUT: -// CHECK:STDOUT: impl: imports.%import_ref.10 as imports.%import_ref.11 { +// CHECK:STDOUT: impl: imports.%import_ref.311 as imports.%import_ref.bd0 { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.9 +// CHECK:STDOUT: witness = imports.%import_ref.445 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -276,8 +276,8 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.495 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -299,8 +299,8 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc6_17.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc6_17.2: init %C.2 = class_init (), file.%c.var [template = constants.%C.val] -// CHECK:STDOUT: %.loc6_18: init %C.2 = converted %.loc6_17.1, %.loc6_17.2 [template = constants.%C.val] +// CHECK:STDOUT: %.loc6_17.2: init %C.a68 = class_init (), file.%c.var [template = constants.%C.val] +// CHECK:STDOUT: %.loc6_18: init %C.a68 = converted %.loc6_17.1, %.loc6_17.2 [template = constants.%C.val] // CHECK:STDOUT: assign file.%c.var, %.loc6_18 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -322,12 +322,12 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: specific @impl(constants.%T) { // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %T.patt => constants.%T -// CHECK:STDOUT: %C => constants.%C.1 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1 +// CHECK:STDOUT: %C => constants.%C.df4 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.1c5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 +// CHECK:STDOUT: %F.type => constants.%F.type.2f0 +// CHECK:STDOUT: %F => constants.%F.263 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@impl.%T) {} @@ -339,12 +339,12 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: specific @impl(constants.%empty_struct_type) { // CHECK:STDOUT: %T => constants.%empty_struct_type // CHECK:STDOUT: %T.patt => constants.%empty_struct_type -// CHECK:STDOUT: %C => constants.%C.2 -// CHECK:STDOUT: %impl_witness => constants.%impl_witness.2 +// CHECK:STDOUT: %C => constants.%C.a68 +// CHECK:STDOUT: %impl_witness => constants.%impl_witness.8a8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %F.type => constants.%F.type.3 -// CHECK:STDOUT: %F => constants.%F.3 +// CHECK:STDOUT: %F.type => constants.%F.type.50d +// CHECK:STDOUT: %F => constants.%F.91e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%empty_struct_type) { diff --git a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon index e316c0d14868..6ea294fe8b11 100644 --- a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon +++ b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon @@ -83,29 +83,29 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template] +// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Action.generic: %Action.type.1 = struct_value () [template] -// CHECK:STDOUT: %Action.type.2: type = facet_type <@Action, @Action(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.assoc_type.1: type = assoc_entity_type %Action.type.2, %Op.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Op.assoc_type.1 = assoc_entity element0, @Action.%Op.decl [symbolic] +// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template] +// CHECK:STDOUT: %Action.type.55b: type = facet_type <@Action, @Action(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Action.type.55b = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Op.type.7d8: type = fn_type @Op.1, @Action(%T) [symbolic] +// CHECK:STDOUT: %Op.eda: %Op.type.7d8 = struct_value () [symbolic] +// CHECK:STDOUT: %Op.assoc_type.e54: type = assoc_entity_type %Action.type.55b, %Op.type.7d8 [symbolic] +// CHECK:STDOUT: %assoc0.814: %Op.assoc_type.e54 = assoc_entity element0, @Action.%Op.decl [symbolic] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %Action.type.3: type = facet_type <@Action, @Action(%B)> [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.1, @Action(%B) [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type.2: type = assoc_entity_type %Action.type.3, %Op.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Op.assoc_type.2 = assoc_entity element0, @Action.%Op.decl [template] +// CHECK:STDOUT: %Action.type.2f8: type = facet_type <@Action, @Action(%B)> [template] +// CHECK:STDOUT: %Op.type.db2: type = fn_type @Op.1, @Action(%B) [template] +// CHECK:STDOUT: %Op.a26: %Op.type.db2 = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type.390: type = assoc_entity_type %Action.type.2f8, %Op.type.db2 [template] +// CHECK:STDOUT: %assoc0.257: %Op.assoc_type.390 = assoc_entity element0, @Action.%Op.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.3: %Op.type.3 = struct_value () [template] -// CHECK:STDOUT: %Action.facet: %Action.type.2 = facet_value %A, %impl_witness [symbolic] +// CHECK:STDOUT: %Op.type.447: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.aa4: %Op.type.447 = struct_value () [template] +// CHECK:STDOUT: %Action.facet: %Action.type.55b = facet_value %A, %impl_witness [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } @@ -118,7 +118,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Action.decl: %Action.type.1 = interface_decl @Action [template = constants.%Action.generic] { +// CHECK:STDOUT: %Action.decl: %Action.type.29c = interface_decl @Action [template = constants.%Action.generic] { // CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_18.1, runtime_param [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -130,9 +130,9 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %Action.ref: %Action.type.1 = name_ref Action, file.%Action.decl [template = constants.%Action.generic] +// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [template = constants.%Action.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.3] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.2f8] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { @@ -150,17 +150,17 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_18.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T.loc4_18.2)> [symbolic = %Action.type (constants.%Action.type.2)] -// CHECK:STDOUT: %Self.2: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Action(%T.loc4_18.2) [symbolic = %Op.type (constants.%Op.type.1)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.1) = struct_value () [symbolic = %Op (constants.%Op.1)] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.2), @Action.%Op.type (%Op.type.1) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_10.2: @Action.%Op.assoc_type (%Op.assoc_type.1) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_10.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T.loc4_18.2)> [symbolic = %Action.type (constants.%Action.type.55b)] +// CHECK:STDOUT: %Self.2: %Action.type.55b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Action(%T.loc4_18.2) [symbolic = %Op.type (constants.%Op.type.7d8)] +// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.7d8) = struct_value () [symbolic = %Op (constants.%Op.eda)] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.55b), @Action.%Op.type (%Op.type.7d8) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.e54)] +// CHECK:STDOUT: %assoc0.loc5_10.2: @Action.%Op.assoc_type (%Op.assoc_type.e54) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_10.2 (constants.%assoc0.814)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Action.%Action.type (%Action.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Op.decl: @Action.%Op.type (%Op.type.1) = fn_decl @Op.1 [symbolic = @Action.%Op (constants.%Op.1)] {} {} -// CHECK:STDOUT: %assoc0.loc5_10.1: @Action.%Op.assoc_type (%Op.assoc_type.1) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_10.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Self.1: @Action.%Action.type (%Action.type.55b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Op.decl: @Action.%Op.type (%Op.type.7d8) = fn_decl @Op.1 [symbolic = @Action.%Op (constants.%Op.eda)] {} {} +// CHECK:STDOUT: %assoc0.loc5_10.1: @Action.%Op.assoc_type (%Op.assoc_type.e54) = assoc_entity element0, %Op.decl [symbolic = %assoc0.loc5_10.2 (constants.%assoc0.814)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -170,7 +170,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %A.ref as %Action.type { -// CHECK:STDOUT: %Op.decl: %Op.type.3 = fn_decl @Op.2 [template = constants.%Op.3] {} {} +// CHECK:STDOUT: %Op.decl: %Op.type.447 = fn_decl @Op.2 [template = constants.%Op.aa4] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Op = %Op.decl @@ -201,7 +201,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(@Action.%T.loc4_18.1: type, @Action.%Self.1: @Action.%Action.type (%Action.type.2)) { +// CHECK:STDOUT: generic fn @Op.1(@Action.%T.loc4_18.1: type, @Action.%Self.1: @Action.%Action.type (%Action.type.55b)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -214,12 +214,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: fn @F(%a.param_patt: %A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %Action.ref: %Action.type.1 = name_ref Action, file.%Action.decl [template = constants.%Action.generic] +// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [template = constants.%Action.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.3] -// CHECK:STDOUT: %.loc16: %Op.assoc_type.2 = specific_constant @Action.%assoc0.loc5_10.1, @Action(constants.%B) [template = constants.%assoc0.2] -// CHECK:STDOUT: %Op.ref: %Op.assoc_type.2 = name_ref Op, %.loc16 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %Op.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.3] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.2f8] +// CHECK:STDOUT: %.loc16: %Op.assoc_type.390 = specific_constant @Action.%assoc0.loc5_10.1, @Action(constants.%B) [template = constants.%assoc0.257] +// CHECK:STDOUT: %Op.ref: %Op.assoc_type.390 = name_ref Op, %.loc16 [template = constants.%assoc0.257] +// CHECK:STDOUT: %impl.elem0: %Op.type.db2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.aa4] // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -238,12 +238,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type => constants.%Action.type.3 +// CHECK:STDOUT: %Action.type => constants.%Action.type.2f8 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %Op.type => constants.%Op.type.2 -// CHECK:STDOUT: %Op => constants.%Op.2 -// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_10.2 => constants.%assoc0.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.db2 +// CHECK:STDOUT: %Op => constants.%Op.a26 +// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.390 +// CHECK:STDOUT: %assoc0.loc5_10.2 => constants.%assoc0.257 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Op.1(constants.%B, constants.%Action.facet) {} @@ -254,58 +254,58 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template] +// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Action.generic: %Action.type.1 = struct_value () [template] +// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Action.type.2: type = facet_type <@Action, @Action(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Action.type.a6c: type = facet_type <@Action, @Action(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Action.type.a6c = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Action.type.3: type = facet_type <@Action, @Action(%B)> [template] +// CHECK:STDOUT: %Action.type.6ea: type = facet_type <@Action, @Action(%B)> [template] // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.assoc_type.1: type = assoc_entity_type %Action.type.2, %Op.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Op.assoc_type.1 = assoc_entity element0, imports.%import_ref.17 [symbolic] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.1, @Action(%B) [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type.2: type = assoc_entity_type %Action.type.3, %Op.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Op.assoc_type.2 = assoc_entity element0, imports.%import_ref.18 [template] +// CHECK:STDOUT: %Op.type.5ef: type = fn_type @Op.1, @Action(%T) [symbolic] +// CHECK:STDOUT: %Op.1d0: %Op.type.5ef = struct_value () [symbolic] +// CHECK:STDOUT: %Op.assoc_type.2ae: type = assoc_entity_type %Action.type.a6c, %Op.type.5ef [symbolic] +// CHECK:STDOUT: %assoc0.fd2454.1: %Op.assoc_type.2ae = assoc_entity element0, imports.%import_ref.341b2b.1 [symbolic] +// CHECK:STDOUT: %Op.type.217: type = fn_type @Op.1, @Action(%B) [template] +// CHECK:STDOUT: %Op.555: %Op.type.217 = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type.ef2: type = assoc_entity_type %Action.type.6ea, %Op.type.217 [template] +// CHECK:STDOUT: %assoc0.042: %Op.assoc_type.ef2 = assoc_entity element0, imports.%import_ref.341b2b.2 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %assoc0.3: %Op.assoc_type.1 = assoc_entity element0, imports.%import_ref.19 [symbolic] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.20) [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.3: %Op.type.3 = struct_value () [template] +// CHECK:STDOUT: %assoc0.fd2454.2: %Op.assoc_type.2ae = assoc_entity element0, imports.%import_ref.341b2b.3 [symbolic] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.e61) [template] +// CHECK:STDOUT: %Op.type.9b5: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.796: %Op.type.9b5 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Action.type.1 = import_ref Main//action, Action, loaded [template = constants.%Action.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//action, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//action, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//action, C, unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//action, F, unloaded -// CHECK:STDOUT: %import_ref.6: = import_ref Main//action, loc12_21, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.7: = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//action, inst46 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//action, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: @Action.%Op.assoc_type (%Op.assoc_type.1) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//action, Op, unloaded -// CHECK:STDOUT: %import_ref.12: = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.13 = import_ref Main//action, inst41 [no loc], unloaded -// CHECK:STDOUT: %import_ref.14: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.15: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.3] -// CHECK:STDOUT: %import_ref.16 = import_ref Main//action, loc13_11, unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref Main//action, loc5_10, unloaded +// CHECK:STDOUT: %import_ref.e3e: %Action.type.29c = import_ref Main//action, Action, loaded [template = constants.%Action.generic] +// CHECK:STDOUT: %import_ref.8a9: type = import_ref Main//action, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.ba0: type = import_ref Main//action, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.85d = import_ref Main//action, C, unloaded +// CHECK:STDOUT: %import_ref.46e = import_ref Main//action, F, unloaded +// CHECK:STDOUT: %import_ref.a8a: = import_ref Main//action, loc12_21, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.54a = import_ref Main//action, inst46 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ac4 = import_ref Main//action, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.543: @Action.%Op.assoc_type (%Op.assoc_type.2ae) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.fd2454.2)] +// CHECK:STDOUT: %import_ref.4d9 = import_ref Main//action, Op, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.da3 = import_ref Main//action, inst41 [no loc], unloaded +// CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.2b5: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.6ea] +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//action, loc13_11, unloaded +// CHECK:STDOUT: %import_ref.341b2b.1 = import_ref Main//action, loc5_10, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Action = imports.%import_ref.1 -// CHECK:STDOUT: .A = imports.%import_ref.2 -// CHECK:STDOUT: .B = imports.%import_ref.3 -// CHECK:STDOUT: .C = imports.%import_ref.4 -// CHECK:STDOUT: .F = imports.%import_ref.5 +// CHECK:STDOUT: .Action = imports.%import_ref.e3e +// CHECK:STDOUT: .A = imports.%import_ref.8a9 +// CHECK:STDOUT: .B = imports.%import_ref.ba0 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .F = imports.%import_ref.46e // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -315,7 +315,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %A = value_param runtime_param0 -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.8a9 [template = constants.%A] // CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -325,40 +325,40 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.2)] -// CHECK:STDOUT: %Self: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Action(%T) [symbolic = %Op.type (constants.%Op.type.1)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.1) = struct_value () [symbolic = %Op (constants.%Op.1)] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.2), @Action.%Op.type (%Op.type.1) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @Action.%Op.assoc_type (%Op.assoc_type.1) = assoc_entity element0, imports.%import_ref.17 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.a6c)] +// CHECK:STDOUT: %Self: %Action.type.a6c = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op.1, @Action(%T) [symbolic = %Op.type (constants.%Op.type.5ef)] +// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.5ef) = struct_value () [symbolic = %Op (constants.%Op.1d0)] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.a6c), @Action.%Op.type (%Op.type.5ef) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.2ae)] +// CHECK:STDOUT: %assoc0: @Action.%Op.assoc_type (%Op.assoc_type.2ae) = assoc_entity element0, imports.%import_ref.341b2b.1 [symbolic = %assoc0 (constants.%assoc0.fd2454.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .Op = imports.%import_ref.10 -// CHECK:STDOUT: witness = (imports.%import_ref.11) +// CHECK:STDOUT: .Self = imports.%import_ref.ac4 +// CHECK:STDOUT: .Op = imports.%import_ref.543 +// CHECK:STDOUT: witness = (imports.%import_ref.4d9) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.14 as imports.%import_ref.15 [from "action.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.bb2 as imports.%import_ref.2b5 [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = imports.%import_ref.16 -// CHECK:STDOUT: witness = imports.%import_ref.6 +// CHECK:STDOUT: .Op = imports.%import_ref.be6 +// CHECK:STDOUT: witness = imports.%import_ref.a8a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.54a +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.13 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.12 +// CHECK:STDOUT: .Self = imports.%import_ref.da3 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op.1(constants.%T: type, constants.%Self: %Action.type.2) [from "action.carbon"] { +// CHECK:STDOUT: generic fn @Op.1(constants.%T: type, constants.%Self: %Action.type.a6c) [from "action.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -366,12 +366,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: fn @G(%a.param_patt: %A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %Action.ref: %Action.type.1 = name_ref Action, imports.%import_ref.1 [template = constants.%Action.generic] -// CHECK:STDOUT: %B.ref: type = name_ref B, imports.%import_ref.3 [template = constants.%B] -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.3] -// CHECK:STDOUT: %.loc4: %Op.assoc_type.2 = specific_constant imports.%import_ref.10, @Action(constants.%B) [template = constants.%assoc0.2] -// CHECK:STDOUT: %Op.ref: %Op.assoc_type.2 = name_ref Op, %.loc4 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %Op.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.3] +// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%import_ref.e3e [template = constants.%Action.generic] +// CHECK:STDOUT: %B.ref: type = name_ref B, imports.%import_ref.ba0 [template = constants.%B] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.6ea] +// CHECK:STDOUT: %.loc4: %Op.assoc_type.ef2 = specific_constant imports.%import_ref.543, @Action(constants.%B) [template = constants.%assoc0.042] +// CHECK:STDOUT: %Op.ref: %Op.assoc_type.ef2 = name_ref Op, %.loc4 [template = constants.%assoc0.042] +// CHECK:STDOUT: %impl.elem0: %Op.type.217 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.796] // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -388,12 +388,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type => constants.%Action.type.3 +// CHECK:STDOUT: %Action.type => constants.%Action.type.6ea // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Op.type => constants.%Op.type.2 -// CHECK:STDOUT: %Op => constants.%Op.2 -// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.217 +// CHECK:STDOUT: %Op => constants.%Op.555 +// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.ef2 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.042 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Action(%T) {} @@ -406,62 +406,62 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template] -// CHECK:STDOUT: %Action.generic: %Action.type.1 = struct_value () [template] +// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template] +// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Action.type.2: type = facet_type <@Action, @Action(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Action.type.a6c: type = facet_type <@Action, @Action(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Action.type.a6c = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Action.type.3: type = facet_type <@Action, @Action(%B)> [template] +// CHECK:STDOUT: %Action.type.6ea: type = facet_type <@Action, @Action(%B)> [template] // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op, @Action(%T) [symbolic] -// CHECK:STDOUT: %Op.1: %Op.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Op.assoc_type.1: type = assoc_entity_type %Action.type.2, %Op.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Op.assoc_type.1 = assoc_entity element0, imports.%import_ref.17 [symbolic] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op, @Action(%B) [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type.2: type = assoc_entity_type %Action.type.3, %Op.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Op.assoc_type.2 = assoc_entity element0, imports.%import_ref.18 [template] +// CHECK:STDOUT: %Op.type.5ef: type = fn_type @Op, @Action(%T) [symbolic] +// CHECK:STDOUT: %Op.1d0: %Op.type.5ef = struct_value () [symbolic] +// CHECK:STDOUT: %Op.assoc_type.2ae: type = assoc_entity_type %Action.type.a6c, %Op.type.5ef [symbolic] +// CHECK:STDOUT: %assoc0.fd2454.1: %Op.assoc_type.2ae = assoc_entity element0, imports.%import_ref.341b2b.1 [symbolic] +// CHECK:STDOUT: %Op.type.217: type = fn_type @Op, @Action(%B) [template] +// CHECK:STDOUT: %Op.555: %Op.type.217 = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type.ef2: type = assoc_entity_type %Action.type.6ea, %Op.type.217 [template] +// CHECK:STDOUT: %assoc0.042: %Op.assoc_type.ef2 = assoc_entity element0, imports.%import_ref.341b2b.2 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %Action.type.4: type = facet_type <@Action, @Action(%C)> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op, @Action(%C) [template] -// CHECK:STDOUT: %Op.3: %Op.type.3 = struct_value () [template] -// CHECK:STDOUT: %Op.assoc_type.3: type = assoc_entity_type %Action.type.4, %Op.type.3 [template] -// CHECK:STDOUT: %assoc0.3: %Op.assoc_type.3 = assoc_entity element0, imports.%import_ref.17 [template] -// CHECK:STDOUT: %assoc0.4: %Op.assoc_type.1 = assoc_entity element0, imports.%import_ref.21 [symbolic] +// CHECK:STDOUT: %Action.type.216: type = facet_type <@Action, @Action(%C)> [template] +// CHECK:STDOUT: %Op.type.ffb: type = fn_type @Op, @Action(%C) [template] +// CHECK:STDOUT: %Op.466: %Op.type.ffb = struct_value () [template] +// CHECK:STDOUT: %Op.assoc_type.fa3: type = assoc_entity_type %Action.type.216, %Op.type.ffb [template] +// CHECK:STDOUT: %assoc0.599: %Op.assoc_type.fa3 = assoc_entity element0, imports.%import_ref.341b2b.1 [template] +// CHECK:STDOUT: %assoc0.fd2454.2: %Op.assoc_type.2ae = assoc_entity element0, imports.%import_ref.341b2b.3 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Action.type.1 = import_ref Main//action, Action, loaded [template = constants.%Action.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//action, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//action, B, unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//action, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//action, F, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//action, loc12_21, unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//action, inst46 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//action, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.10: @Action.%Op.assoc_type (%Op.assoc_type.1) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.4)] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//action, Op, unloaded -// CHECK:STDOUT: %import_ref.12: = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.13 = import_ref Main//action, inst41 [no loc], unloaded -// CHECK:STDOUT: %import_ref.14: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.15: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.3] -// CHECK:STDOUT: %import_ref.16 = import_ref Main//action, loc13_11, unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref Main//action, loc5_10, unloaded -// CHECK:STDOUT: %import_ref.19: = import_ref Main//action, loc10_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.20 = import_ref Main//action, inst49 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e3e: %Action.type.29c = import_ref Main//action, Action, loaded [template = constants.%Action.generic] +// CHECK:STDOUT: %import_ref.8a9: type = import_ref Main//action, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.874 = import_ref Main//action, B, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//action, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.46e = import_ref Main//action, F, unloaded +// CHECK:STDOUT: %import_ref.440 = import_ref Main//action, loc12_21, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.54a = import_ref Main//action, inst46 [no loc], unloaded +// CHECK:STDOUT: %import_ref.ac4 = import_ref Main//action, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.543: @Action.%Op.assoc_type (%Op.assoc_type.2ae) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.fd2454.2)] +// CHECK:STDOUT: %import_ref.4d9 = import_ref Main//action, Op, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.da3 = import_ref Main//action, inst41 [no loc], unloaded +// CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.2b5: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.6ea] +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//action, loc13_11, unloaded +// CHECK:STDOUT: %import_ref.341b2b.1 = import_ref Main//action, loc5_10, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.3: = import_ref Main//action, loc10_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//action, inst49 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Action = imports.%import_ref.1 -// CHECK:STDOUT: .A = imports.%import_ref.2 -// CHECK:STDOUT: .B = imports.%import_ref.3 -// CHECK:STDOUT: .C = imports.%import_ref.4 -// CHECK:STDOUT: .F = imports.%import_ref.5 +// CHECK:STDOUT: .Action = imports.%import_ref.e3e +// CHECK:STDOUT: .A = imports.%import_ref.8a9 +// CHECK:STDOUT: .B = imports.%import_ref.874 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .F = imports.%import_ref.46e // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -471,7 +471,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %A = value_param runtime_param0 -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.8a9 [template = constants.%A] // CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -481,46 +481,46 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.2)] -// CHECK:STDOUT: %Self: %Action.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Op.type: type = fn_type @Op, @Action(%T) [symbolic = %Op.type (constants.%Op.type.1)] -// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.1) = struct_value () [symbolic = %Op (constants.%Op.1)] -// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.2), @Action.%Op.type (%Op.type.1) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @Action.%Op.assoc_type (%Op.assoc_type.1) = assoc_entity element0, imports.%import_ref.17 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(%T)> [symbolic = %Action.type (constants.%Action.type.a6c)] +// CHECK:STDOUT: %Self: %Action.type.a6c = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Op.type: type = fn_type @Op, @Action(%T) [symbolic = %Op.type (constants.%Op.type.5ef)] +// CHECK:STDOUT: %Op: @Action.%Op.type (%Op.type.5ef) = struct_value () [symbolic = %Op (constants.%Op.1d0)] +// CHECK:STDOUT: %Op.assoc_type: type = assoc_entity_type @Action.%Action.type (%Action.type.a6c), @Action.%Op.type (%Op.type.5ef) [symbolic = %Op.assoc_type (constants.%Op.assoc_type.2ae)] +// CHECK:STDOUT: %assoc0: @Action.%Op.assoc_type (%Op.assoc_type.2ae) = assoc_entity element0, imports.%import_ref.341b2b.1 [symbolic = %assoc0 (constants.%assoc0.fd2454.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: .Op = imports.%import_ref.10 -// CHECK:STDOUT: witness = (imports.%import_ref.11) +// CHECK:STDOUT: .Self = imports.%import_ref.ac4 +// CHECK:STDOUT: .Op = imports.%import_ref.543 +// CHECK:STDOUT: witness = (imports.%import_ref.4d9) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.14 as imports.%import_ref.15 [from "action.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.bb2 as imports.%import_ref.2b5 [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Op = imports.%import_ref.16 -// CHECK:STDOUT: witness = imports.%import_ref.6 +// CHECK:STDOUT: .Op = imports.%import_ref.be6 +// CHECK:STDOUT: witness = imports.%import_ref.440 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.54a +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.13 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.12 +// CHECK:STDOUT: .Self = imports.%import_ref.da3 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "action.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.20 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.19 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Op(constants.%T: type, constants.%Self: %Action.type.2) [from "action.carbon"] { +// CHECK:STDOUT: generic fn @Op(constants.%T: type, constants.%Self: %Action.type.a6c) [from "action.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -528,11 +528,11 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: fn @G(%a.param_patt: %A) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %Action.ref: %Action.type.1 = name_ref Action, imports.%import_ref.1 [template = constants.%Action.generic] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4 [template = constants.%C] -// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%C)> [template = constants.%Action.type.4] -// CHECK:STDOUT: %.loc8: %Op.assoc_type.3 = specific_constant imports.%import_ref.10, @Action(constants.%C) [template = constants.%assoc0.3] -// CHECK:STDOUT: %Op.ref: %Op.assoc_type.3 = name_ref Op, %.loc8 [template = constants.%assoc0.3] +// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%import_ref.e3e [template = constants.%Action.generic] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%C)> [template = constants.%Action.type.216] +// CHECK:STDOUT: %.loc8: %Op.assoc_type.fa3 = specific_constant imports.%import_ref.543, @Action(constants.%C) [template = constants.%assoc0.599] +// CHECK:STDOUT: %Op.ref: %Op.assoc_type.fa3 = name_ref Op, %.loc8 [template = constants.%assoc0.599] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -546,12 +546,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type => constants.%Action.type.3 +// CHECK:STDOUT: %Action.type => constants.%Action.type.6ea // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Op.type => constants.%Op.type.2 -// CHECK:STDOUT: %Op => constants.%Op.2 -// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Op.type => constants.%Op.type.217 +// CHECK:STDOUT: %Op => constants.%Op.555 +// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.ef2 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.042 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Action(%T) {} @@ -563,12 +563,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Action.type => constants.%Action.type.4 +// CHECK:STDOUT: %Action.type => constants.%Action.type.216 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Op.type => constants.%Op.type.3 -// CHECK:STDOUT: %Op => constants.%Op.3 -// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.3 +// CHECK:STDOUT: %Op.type => constants.%Op.type.ffb +// CHECK:STDOUT: %Op => constants.%Op.466 +// CHECK:STDOUT: %Op.assoc_type => constants.%Op.assoc_type.fa3 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.599 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- factory.carbon @@ -576,27 +576,27 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template] -// CHECK:STDOUT: %Factory.generic: %Factory.type.1 = struct_value () [template] -// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Make.type.1: type = fn_type @Make.1, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Make.assoc_type.1: type = assoc_entity_type %Factory.type.2, %Make.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Make.assoc_type.1 = assoc_entity element0, @Factory.%Make.decl [symbolic] +// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template] +// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template] +// CHECK:STDOUT: %Factory.type.eb3: type = facet_type <@Factory, @Factory(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Factory.type.eb3 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Make.type.d00: type = fn_type @Make.1, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Make.daa: %Make.type.d00 = struct_value () [symbolic] +// CHECK:STDOUT: %Make.assoc_type.45d: type = assoc_entity_type %Factory.type.eb3, %Make.type.d00 [symbolic] +// CHECK:STDOUT: %assoc0.462: %Make.assoc_type.45d = assoc_entity element0, @Factory.%Make.decl [symbolic] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %Factory.type.3: type = facet_type <@Factory, @Factory(%B)> [template] -// CHECK:STDOUT: %Make.type.2: type = fn_type @Make.1, @Factory(%B) [template] -// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template] -// CHECK:STDOUT: %Make.assoc_type.2: type = assoc_entity_type %Factory.type.3, %Make.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Make.assoc_type.2 = assoc_entity element0, @Factory.%Make.decl [template] +// CHECK:STDOUT: %Factory.type.4e9: type = facet_type <@Factory, @Factory(%B)> [template] +// CHECK:STDOUT: %Make.type.a70: type = fn_type @Make.1, @Factory(%B) [template] +// CHECK:STDOUT: %Make.643: %Make.type.a70 = struct_value () [template] +// CHECK:STDOUT: %Make.assoc_type.f8d: type = assoc_entity_type %Factory.type.4e9, %Make.type.a70 [template] +// CHECK:STDOUT: %assoc0.b99: %Make.assoc_type.f8d = assoc_entity element0, @Factory.%Make.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Make.decl) [template] -// CHECK:STDOUT: %Make.type.3: type = fn_type @Make.2 [template] -// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template] -// CHECK:STDOUT: %Factory.facet: %Factory.type.2 = facet_value %A, %impl_witness [symbolic] +// CHECK:STDOUT: %Make.type.882: type = fn_type @Make.2 [template] +// CHECK:STDOUT: %Make.e08: %Make.type.882 = struct_value () [template] +// CHECK:STDOUT: %Factory.facet: %Factory.type.eb3 = facet_value %A, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -605,7 +605,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Factory.decl: %Factory.type.1 = interface_decl @Factory [template = constants.%Factory.generic] { +// CHECK:STDOUT: %Factory.decl: %Factory.type.1a8 = interface_decl @Factory [template = constants.%Factory.generic] { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -616,9 +616,9 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %Factory.ref: %Factory.type.1 = name_ref Factory, file.%Factory.decl [template = constants.%Factory.generic] +// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, file.%Factory.decl [template = constants.%Factory.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.3] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.4e9] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Make.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } @@ -628,16 +628,16 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T.loc4_19.2)> [symbolic = %Factory.type (constants.%Factory.type.2)] -// CHECK:STDOUT: %Self.2: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make.1, @Factory(%T.loc4_19.2) [symbolic = %Make.type (constants.%Make.type.1)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.2), @Factory.%Make.type (%Make.type.1) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_17.2: @Factory.%Make.assoc_type (%Make.assoc_type.1) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc5_17.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T.loc4_19.2)> [symbolic = %Factory.type (constants.%Factory.type.eb3)] +// CHECK:STDOUT: %Self.2: %Factory.type.eb3 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make.1, @Factory(%T.loc4_19.2) [symbolic = %Make.type (constants.%Make.type.d00)] +// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.d00) = struct_value () [symbolic = %Make (constants.%Make.daa)] +// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.eb3), @Factory.%Make.type (%Make.type.d00) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.45d)] +// CHECK:STDOUT: %assoc0.loc5_17.2: @Factory.%Make.assoc_type (%Make.assoc_type.45d) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc5_17.2 (constants.%assoc0.462)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Factory.%Factory.type (%Factory.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Make.decl: @Factory.%Make.type (%Make.type.1) = fn_decl @Make.1 [symbolic = @Factory.%Make (constants.%Make.1)] { +// CHECK:STDOUT: %Self.1: @Factory.%Factory.type (%Factory.type.eb3) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Make.decl: @Factory.%Make.type (%Make.type.d00) = fn_decl @Make.1 [symbolic = @Factory.%Make (constants.%Make.daa)] { // CHECK:STDOUT: %return.patt: @Make.1.%T (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Make.1.%T (%T) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -645,7 +645,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %return.param: ref @Make.1.%T (%T) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @Make.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc5_17.1: @Factory.%Make.assoc_type (%Make.assoc_type.1) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc5_17.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc5_17.1: @Factory.%Make.assoc_type (%Make.assoc_type.45d) = assoc_entity element0, %Make.decl [symbolic = %assoc0.loc5_17.2 (constants.%assoc0.462)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -655,7 +655,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %A.ref as %Factory.type { -// CHECK:STDOUT: %Make.decl: %Make.type.3 = fn_decl @Make.2 [template = constants.%Make.3] { +// CHECK:STDOUT: %Make.decl: %Make.type.882 = fn_decl @Make.2 [template = constants.%Make.e08] { // CHECK:STDOUT: %return.patt: %B = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %B = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -685,7 +685,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make.1(@Factory.%T.loc4_19.1: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.2)) { +// CHECK:STDOUT: generic fn @Make.1(@Factory.%T.loc4_19.1: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.eb3)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Make.1.%T (%T); @@ -709,12 +709,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.3 +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.4e9 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %Make.type => constants.%Make.type.2 -// CHECK:STDOUT: %Make => constants.%Make.2 -// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_17.2 => constants.%assoc0.2 +// CHECK:STDOUT: %Make.type => constants.%Make.type.a70 +// CHECK:STDOUT: %Make => constants.%Make.643 +// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.f8d +// CHECK:STDOUT: %assoc0.loc5_17.2 => constants.%assoc0.b99 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Make.1(constants.%B, constants.%Factory.facet) { @@ -727,53 +727,53 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template] -// CHECK:STDOUT: %Factory.generic: %Factory.type.1 = struct_value () [template] +// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template] +// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Factory.type.d2d: type = facet_type <@Factory, @Factory(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Factory.type.d2d = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Factory.type.3: type = facet_type <@Factory, @Factory(%B)> [template] +// CHECK:STDOUT: %Factory.type.91a: type = facet_type <@Factory, @Factory(%B)> [template] // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %Make.type.1: type = fn_type @Make.1, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Make.assoc_type.1: type = assoc_entity_type %Factory.type.2, %Make.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Make.assoc_type.1 = assoc_entity element0, imports.%import_ref.15 [symbolic] -// CHECK:STDOUT: %Make.type.2: type = fn_type @Make.1, @Factory(%B) [template] -// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template] -// CHECK:STDOUT: %Make.assoc_type.2: type = assoc_entity_type %Factory.type.3, %Make.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Make.assoc_type.2 = assoc_entity element0, imports.%import_ref.16 [template] +// CHECK:STDOUT: %Make.type.a5c: type = fn_type @Make.1, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Make.0f0: %Make.type.a5c = struct_value () [symbolic] +// CHECK:STDOUT: %Make.assoc_type.56f: type = assoc_entity_type %Factory.type.d2d, %Make.type.a5c [symbolic] +// CHECK:STDOUT: %assoc0.08b852.1: %Make.assoc_type.56f = assoc_entity element0, imports.%import_ref.930de4.1 [symbolic] +// CHECK:STDOUT: %Make.type.e84: type = fn_type @Make.1, @Factory(%B) [template] +// CHECK:STDOUT: %Make.ea4: %Make.type.e84 = struct_value () [template] +// CHECK:STDOUT: %Make.assoc_type.f24: type = assoc_entity_type %Factory.type.91a, %Make.type.e84 [template] +// CHECK:STDOUT: %assoc0.fe9: %Make.assoc_type.f24 = assoc_entity element0, imports.%import_ref.930de4.2 [template] // CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [template] // CHECK:STDOUT: %MakeB: %MakeB.type = struct_value () [template] -// CHECK:STDOUT: %assoc0.3: %Make.assoc_type.1 = assoc_entity element0, imports.%import_ref.17 [symbolic] -// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.18) [template] -// CHECK:STDOUT: %Make.type.3: type = fn_type @Make.2 [template] -// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template] +// CHECK:STDOUT: %assoc0.08b852.2: %Make.assoc_type.56f = assoc_entity element0, imports.%import_ref.930de4.3 [symbolic] +// CHECK:STDOUT: %impl_witness: = impl_witness (imports.%import_ref.d29) [template] +// CHECK:STDOUT: %Make.type.4c5: type = fn_type @Make.2 [template] +// CHECK:STDOUT: %Make.287: %Make.type.4c5 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Factory.type.1 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//factory, B, loaded [template = constants.%B] -// CHECK:STDOUT: %import_ref.4: = import_ref Main//factory, loc11_22, loaded [template = constants.%impl_witness] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//factory, inst52 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: @Factory.%Make.assoc_type (%Make.assoc_type.1) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//factory, Make, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//factory, inst47 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.13: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.3] -// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, loc12_17, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, loc5_17, unloaded +// CHECK:STDOUT: %import_ref.10c: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic] +// CHECK:STDOUT: %import_ref.8a9: type = import_ref Main//factory, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.ba0: type = import_ref Main//factory, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.8b9: = import_ref Main//factory, loc11_22, loaded [template = constants.%impl_witness] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.54a = import_ref Main//factory, inst52 [no loc], unloaded +// CHECK:STDOUT: %import_ref.c9b = import_ref Main//factory, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2a2: @Factory.%Make.assoc_type (%Make.assoc_type.56f) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.08b852.2)] +// CHECK:STDOUT: %import_ref.133 = import_ref Main//factory, Make, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.da3 = import_ref Main//factory, inst47 [no loc], unloaded +// CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.5ef: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.91a] +// CHECK:STDOUT: %import_ref.044 = import_ref Main//factory, loc12_17, unloaded +// CHECK:STDOUT: %import_ref.930de4.1 = import_ref Main//factory, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Factory = imports.%import_ref.1 -// CHECK:STDOUT: .A = imports.%import_ref.2 -// CHECK:STDOUT: .B = imports.%import_ref.3 +// CHECK:STDOUT: .Factory = imports.%import_ref.10c +// CHECK:STDOUT: .A = imports.%import_ref.8a9 +// CHECK:STDOUT: .B = imports.%import_ref.ba0 // CHECK:STDOUT: .MakeB = %MakeB.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -784,9 +784,9 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %return.patt: %B = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %B = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%import_ref.3 [template = constants.%B] +// CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%import_ref.ba0 [template = constants.%B] // CHECK:STDOUT: %a.param: %A = value_param runtime_param0 -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.8a9 [template = constants.%A] // CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %B = out_param runtime_param1 // CHECK:STDOUT: %return: ref %B = return_slot %return.param @@ -798,40 +798,40 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.2)] -// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make.1, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.1)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.2), @Factory.%Make.type (%Make.type.1) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @Factory.%Make.assoc_type (%Make.assoc_type.1) = assoc_entity element0, imports.%import_ref.15 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.d2d)] +// CHECK:STDOUT: %Self: %Factory.type.d2d = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make.1, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.a5c)] +// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.a5c) = struct_value () [symbolic = %Make (constants.%Make.0f0)] +// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.d2d), @Factory.%Make.type (%Make.type.a5c) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.56f)] +// CHECK:STDOUT: %assoc0: @Factory.%Make.assoc_type (%Make.assoc_type.56f) = assoc_entity element0, imports.%import_ref.930de4.1 [symbolic = %assoc0 (constants.%assoc0.08b852.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .Make = imports.%import_ref.8 -// CHECK:STDOUT: witness = (imports.%import_ref.9) +// CHECK:STDOUT: .Self = imports.%import_ref.c9b +// CHECK:STDOUT: .Make = imports.%import_ref.2a2 +// CHECK:STDOUT: witness = (imports.%import_ref.133) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.12 as imports.%import_ref.13 [from "factory.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.bb2 as imports.%import_ref.5ef [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Make = imports.%import_ref.14 -// CHECK:STDOUT: witness = imports.%import_ref.4 +// CHECK:STDOUT: .Make = imports.%import_ref.044 +// CHECK:STDOUT: witness = imports.%import_ref.8b9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.54a +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.da3 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make.1(constants.%T: type, constants.%Self: %Factory.type.2) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Make.1(constants.%T: type, constants.%Self: %Factory.type.d2d) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Make.1.%T (%T); @@ -840,12 +840,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: fn @MakeB(%a.param_patt: %A) -> %return.param_patt: %B { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %Factory.ref: %Factory.type.1 = name_ref Factory, imports.%import_ref.1 [template = constants.%Factory.generic] -// CHECK:STDOUT: %B.ref.loc5: type = name_ref B, imports.%import_ref.3 [template = constants.%B] -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.3] -// CHECK:STDOUT: %.loc5: %Make.assoc_type.2 = specific_constant imports.%import_ref.8, @Factory(constants.%B) [template = constants.%assoc0.2] -// CHECK:STDOUT: %Make.ref: %Make.assoc_type.2 = name_ref Make, %.loc5 [template = constants.%assoc0.2] -// CHECK:STDOUT: %impl.elem0: %Make.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Make.3] +// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%import_ref.10c [template = constants.%Factory.generic] +// CHECK:STDOUT: %B.ref.loc5: type = name_ref B, imports.%import_ref.ba0 [template = constants.%B] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.91a] +// CHECK:STDOUT: %.loc5: %Make.assoc_type.f24 = specific_constant imports.%import_ref.2a2, @Factory(constants.%B) [template = constants.%assoc0.fe9] +// CHECK:STDOUT: %Make.ref: %Make.assoc_type.f24 = name_ref Make, %.loc5 [template = constants.%assoc0.fe9] +// CHECK:STDOUT: %impl.elem0: %Make.type.e84 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Make.287] // CHECK:STDOUT: %.loc4: ref %B = splice_block %return {} // CHECK:STDOUT: %Make.call: init %B = call %impl.elem0() to %.loc4 // CHECK:STDOUT: return %Make.call to %return @@ -863,12 +863,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.3 +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.91a // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Make.type => constants.%Make.type.2 -// CHECK:STDOUT: %Make => constants.%Make.2 -// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Make.type => constants.%Make.type.e84 +// CHECK:STDOUT: %Make => constants.%Make.ea4 +// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.f24 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.fe9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(%T) {} @@ -883,56 +883,56 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %B: type = class_type @B [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template] -// CHECK:STDOUT: %Factory.generic: %Factory.type.1 = struct_value () [template] +// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template] +// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %Factory.type.2: type = facet_type <@Factory, @Factory(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Factory.type.d2d: type = facet_type <@Factory, @Factory(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Factory.type.d2d = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Factory.type.3: type = facet_type <@Factory, @Factory(%B)> [template] +// CHECK:STDOUT: %Factory.type.91a: type = facet_type <@Factory, @Factory(%B)> [template] // CHECK:STDOUT: %A: type = class_type @A [template] -// CHECK:STDOUT: %Make.type.1: type = fn_type @Make, @Factory(%T) [symbolic] -// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Make.assoc_type.1: type = assoc_entity_type %Factory.type.2, %Make.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Make.assoc_type.1 = assoc_entity element0, imports.%import_ref.15 [symbolic] -// CHECK:STDOUT: %Make.type.2: type = fn_type @Make, @Factory(%B) [template] -// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template] -// CHECK:STDOUT: %Make.assoc_type.2: type = assoc_entity_type %Factory.type.3, %Make.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Make.assoc_type.2 = assoc_entity element0, imports.%import_ref.16 [template] +// CHECK:STDOUT: %Make.type.a5c: type = fn_type @Make, @Factory(%T) [symbolic] +// CHECK:STDOUT: %Make.0f0: %Make.type.a5c = struct_value () [symbolic] +// CHECK:STDOUT: %Make.assoc_type.56f: type = assoc_entity_type %Factory.type.d2d, %Make.type.a5c [symbolic] +// CHECK:STDOUT: %assoc0.08b852.1: %Make.assoc_type.56f = assoc_entity element0, imports.%import_ref.930de4.1 [symbolic] +// CHECK:STDOUT: %Make.type.e84: type = fn_type @Make, @Factory(%B) [template] +// CHECK:STDOUT: %Make.ea4: %Make.type.e84 = struct_value () [template] +// CHECK:STDOUT: %Make.assoc_type.f24: type = assoc_entity_type %Factory.type.91a, %Make.type.e84 [template] +// CHECK:STDOUT: %assoc0.fe9: %Make.assoc_type.f24 = assoc_entity element0, imports.%import_ref.930de4.2 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [template] // CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [template] -// CHECK:STDOUT: %Factory.type.4: type = facet_type <@Factory, @Factory(%C)> [template] -// CHECK:STDOUT: %Make.type.3: type = fn_type @Make, @Factory(%C) [template] -// CHECK:STDOUT: %Make.3: %Make.type.3 = struct_value () [template] -// CHECK:STDOUT: %Make.assoc_type.3: type = assoc_entity_type %Factory.type.4, %Make.type.3 [template] -// CHECK:STDOUT: %assoc0.3: %Make.assoc_type.3 = assoc_entity element0, imports.%import_ref.15 [template] -// CHECK:STDOUT: %assoc0.4: %Make.assoc_type.1 = assoc_entity element0, imports.%import_ref.17 [symbolic] +// CHECK:STDOUT: %Factory.type.f0b: type = facet_type <@Factory, @Factory(%C)> [template] +// CHECK:STDOUT: %Make.type.42c: type = fn_type @Make, @Factory(%C) [template] +// CHECK:STDOUT: %Make.29c: %Make.type.42c = struct_value () [template] +// CHECK:STDOUT: %Make.assoc_type.392: type = assoc_entity_type %Factory.type.f0b, %Make.type.42c [template] +// CHECK:STDOUT: %assoc0.3a7: %Make.assoc_type.392 = assoc_entity element0, imports.%import_ref.930de4.1 [template] +// CHECK:STDOUT: %assoc0.08b852.2: %Make.assoc_type.56f = assoc_entity element0, imports.%import_ref.930de4.3 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %Factory.type.1 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//factory, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//factory, B, unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//factory, loc11_22, unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//factory, inst52 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//factory, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8: @Factory.%Make.assoc_type (%Make.assoc_type.1) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.4)] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//factory, Make, unloaded -// CHECK:STDOUT: %import_ref.10: = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.11 = import_ref Main//factory, inst47 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.13: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.3] -// CHECK:STDOUT: %import_ref.14 = import_ref Main//factory, loc12_17, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//factory, loc5_17, unloaded +// CHECK:STDOUT: %import_ref.10c: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic] +// CHECK:STDOUT: %import_ref.8a9: type = import_ref Main//factory, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.874 = import_ref Main//factory, B, unloaded +// CHECK:STDOUT: %import_ref.826 = import_ref Main//factory, loc11_22, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.54a = import_ref Main//factory, inst52 [no loc], unloaded +// CHECK:STDOUT: %import_ref.c9b = import_ref Main//factory, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2a2: @Factory.%Make.assoc_type (%Make.assoc_type.56f) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.08b852.2)] +// CHECK:STDOUT: %import_ref.133 = import_ref Main//factory, Make, unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.da3 = import_ref Main//factory, inst47 [no loc], unloaded +// CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.5ef: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.91a] +// CHECK:STDOUT: %import_ref.044 = import_ref Main//factory, loc12_17, unloaded +// CHECK:STDOUT: %import_ref.930de4.1 = import_ref Main//factory, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Factory = imports.%import_ref.1 -// CHECK:STDOUT: .A = imports.%import_ref.2 -// CHECK:STDOUT: .B = imports.%import_ref.3 +// CHECK:STDOUT: .Factory = imports.%import_ref.10c +// CHECK:STDOUT: .A = imports.%import_ref.8a9 +// CHECK:STDOUT: .B = imports.%import_ref.874 // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .MakeC = %MakeC.decl // CHECK:STDOUT: } @@ -947,7 +947,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.param: %A = value_param runtime_param0 -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.8a9 [template = constants.%A] // CHECK:STDOUT: %a: %A = bind_name a, %a.param // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1 // CHECK:STDOUT: %return: ref %C = return_slot %return.param @@ -959,37 +959,37 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.2)] -// CHECK:STDOUT: %Self: %Factory.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.1)] -// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.1) = struct_value () [symbolic = %Make (constants.%Make.1)] -// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.2), @Factory.%Make.type (%Make.type.1) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @Factory.%Make.assoc_type (%Make.assoc_type.1) = assoc_entity element0, imports.%import_ref.15 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(%T)> [symbolic = %Factory.type (constants.%Factory.type.d2d)] +// CHECK:STDOUT: %Self: %Factory.type.d2d = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Factory(%T) [symbolic = %Make.type (constants.%Make.type.a5c)] +// CHECK:STDOUT: %Make: @Factory.%Make.type (%Make.type.a5c) = struct_value () [symbolic = %Make (constants.%Make.0f0)] +// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type @Factory.%Factory.type (%Factory.type.d2d), @Factory.%Make.type (%Make.type.a5c) [symbolic = %Make.assoc_type (constants.%Make.assoc_type.56f)] +// CHECK:STDOUT: %assoc0: @Factory.%Make.assoc_type (%Make.assoc_type.56f) = assoc_entity element0, imports.%import_ref.930de4.1 [symbolic = %assoc0 (constants.%assoc0.08b852.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .Make = imports.%import_ref.8 -// CHECK:STDOUT: witness = (imports.%import_ref.9) +// CHECK:STDOUT: .Self = imports.%import_ref.c9b +// CHECK:STDOUT: .Make = imports.%import_ref.2a2 +// CHECK:STDOUT: witness = (imports.%import_ref.133) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.12 as imports.%import_ref.13 [from "factory.carbon"] { +// CHECK:STDOUT: impl @impl: imports.%import_ref.bb2 as imports.%import_ref.5ef [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Make = imports.%import_ref.14 -// CHECK:STDOUT: witness = imports.%import_ref.4 +// CHECK:STDOUT: .Make = imports.%import_ref.044 +// CHECK:STDOUT: witness = imports.%import_ref.826 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.54a +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "factory.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.10 +// CHECK:STDOUT: .Self = imports.%import_ref.da3 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -1000,7 +1000,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(constants.%T: type, constants.%Self: %Factory.type.2) [from "factory.carbon"] { +// CHECK:STDOUT: generic fn @Make(constants.%T: type, constants.%Self: %Factory.type.d2d) [from "factory.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Make.%T (%T); @@ -1009,11 +1009,11 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: fn @MakeC(%a.param_patt: %A) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %Factory.ref: %Factory.type.1 = name_ref Factory, imports.%import_ref.1 [template = constants.%Factory.generic] +// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%import_ref.10c [template = constants.%Factory.generic] // CHECK:STDOUT: %C.ref.loc10: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%C)> [template = constants.%Factory.type.4] -// CHECK:STDOUT: %.loc10: %Make.assoc_type.3 = specific_constant imports.%import_ref.8, @Factory(constants.%C) [template = constants.%assoc0.3] -// CHECK:STDOUT: %Make.ref: %Make.assoc_type.3 = name_ref Make, %.loc10 [template = constants.%assoc0.3] +// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%C)> [template = constants.%Factory.type.f0b] +// CHECK:STDOUT: %.loc10: %Make.assoc_type.392 = specific_constant imports.%import_ref.2a2, @Factory(constants.%C) [template = constants.%assoc0.3a7] +// CHECK:STDOUT: %Make.ref: %Make.assoc_type.392 = name_ref Make, %.loc10 [template = constants.%assoc0.3a7] // CHECK:STDOUT: return to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1027,12 +1027,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%B // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.3 +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.91a // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Make.type => constants.%Make.type.2 -// CHECK:STDOUT: %Make => constants.%Make.2 -// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Make.type => constants.%Make.type.e84 +// CHECK:STDOUT: %Make => constants.%Make.ea4 +// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.f24 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.fe9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Factory(%T) {} @@ -1046,11 +1046,11 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %T.patt => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Factory.type => constants.%Factory.type.4 +// CHECK:STDOUT: %Factory.type => constants.%Factory.type.f0b // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Make.type => constants.%Make.type.3 -// CHECK:STDOUT: %Make => constants.%Make.3 -// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.3 +// CHECK:STDOUT: %Make.type => constants.%Make.type.42c +// CHECK:STDOUT: %Make => constants.%Make.29c +// CHECK:STDOUT: %Make.assoc_type => constants.%Make.assoc_type.392 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.3a7 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/no_definition_in_impl_file.carbon b/toolchain/check/testdata/impl/no_prelude/no_definition_in_impl_file.carbon index 9702b0814d03..b85c7d85d845 100644 --- a/toolchain/check/testdata/impl/no_prelude/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/impl/no_prelude/no_definition_in_impl_file.carbon @@ -140,39 +140,39 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//decl_in_api_definition_in_impl, A, loaded [template = constants.%A.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//decl_in_api_definition_in_impl, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//decl_in_api_definition_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//decl_in_api_definition_in_impl, loc10_12, loaded [template = constants.%A.type] +// CHECK:STDOUT: %import_ref.68d: type = import_ref Main//decl_in_api_definition_in_impl, A, loaded [template = constants.%A.type] +// CHECK:STDOUT: %import_ref.b09 = import_ref Main//decl_in_api_definition_in_impl, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e5c: type = import_ref Main//decl_in_api_definition_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type] +// CHECK:STDOUT: %import_ref.1f0: type = import_ref Main//decl_in_api_definition_in_impl, loc10_12, loaded [template = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.1 +// CHECK:STDOUT: .A = imports.%import_ref.68d // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.1 [template = constants.%A.type] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.68d [template = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc8: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.1 [template = constants.%A.type] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.68d [template = constants.%A.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc14: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A [from "fail_decl_in_api_definition_in_impl.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.b09 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.4 as imports.%import_ref.5 [from "fail_decl_in_api_definition_in_impl.carbon"]; +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.e5c as imports.%import_ref.1f0 [from "fail_decl_in_api_definition_in_impl.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %.loc8_7.2 as %A.ref; // CHECK:STDOUT: @@ -241,15 +241,15 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//decl_only_in_api, B, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//decl_only_in_api, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//decl_only_in_api, loc10_7, loaded [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//decl_only_in_api, loc10_12, loaded [template = constants.%B.type] +// CHECK:STDOUT: %import_ref.dcd = import_ref Main//decl_only_in_api, B, unloaded +// CHECK:STDOUT: %import_ref.a54 = import_ref Main//decl_only_in_api, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e5c: type = import_ref Main//decl_only_in_api, loc10_7, loaded [template = constants.%empty_tuple.type] +// CHECK:STDOUT: %import_ref.cc5: type = import_ref Main//decl_only_in_api, loc10_12, loaded [template = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .B = imports.%import_ref.1 +// CHECK:STDOUT: .B = imports.%import_ref.dcd // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import @@ -257,11 +257,11 @@ impl () as D; // CHECK:STDOUT: // CHECK:STDOUT: interface @B [from "fail_decl_only_in_api.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.a54 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.4 as imports.%import_ref.5 [from "fail_decl_only_in_api.carbon"]; +// CHECK:STDOUT: impl @impl: imports.%import_ref.e5c as imports.%import_ref.cc5 [from "fail_decl_only_in_api.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_in_api_decl_in_impl.carbon // CHECK:STDOUT: @@ -304,33 +304,33 @@ impl () as D; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//decl_in_api_decl_in_impl, C, loaded [template = constants.%C.type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//decl_in_api_decl_in_impl, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//decl_in_api_decl_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//decl_in_api_decl_in_impl, loc10_12, loaded [template = constants.%C.type] +// CHECK:STDOUT: %import_ref.832: type = import_ref Main//decl_in_api_decl_in_impl, C, loaded [template = constants.%C.type] +// CHECK:STDOUT: %import_ref.c73 = import_ref Main//decl_in_api_decl_in_impl, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e5c: type = import_ref Main//decl_in_api_decl_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type] +// CHECK:STDOUT: %import_ref.677: type = import_ref Main//decl_in_api_decl_in_impl, loc10_12, loaded [template = constants.%C.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.832 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C.type] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.832 [template = constants.%C.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @C [from "fail_decl_in_api_decl_in_impl.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.c73 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.4 as imports.%import_ref.5 [from "fail_decl_in_api_decl_in_impl.carbon"]; +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.e5c as imports.%import_ref.677 [from "fail_decl_in_api_decl_in_impl.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %.loc8_7.2 as %C.ref; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon index 64750bfd8c3b..f9ead42eb6d0 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon @@ -28,17 +28,17 @@ class A { // CHECK:STDOUT: %DefaultConstructible.type: type = facet_type <@DefaultConstructible> [template] // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Make.type.1: type = fn_type @Make.1 [template] -// CHECK:STDOUT: %Make.1: %Make.type.1 = struct_value () [template] -// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type %DefaultConstructible.type, %Make.type.1 [template] +// CHECK:STDOUT: %Make.type.040: type = fn_type @Make.1 [template] +// CHECK:STDOUT: %Make.a8e: %Make.type.040 = struct_value () [template] +// CHECK:STDOUT: %Make.assoc_type: type = assoc_entity_type %DefaultConstructible.type, %Make.type.040 [template] // CHECK:STDOUT: %assoc0: %Make.assoc_type = assoc_entity element0, @DefaultConstructible.%Make.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Make.decl) [template] -// CHECK:STDOUT: %Make.type.2: type = fn_type @Make.2 [template] -// CHECK:STDOUT: %Make.2: %Make.type.2 = struct_value () [template] +// CHECK:STDOUT: %Make.type.db7: type = fn_type @Make.2 [template] +// CHECK:STDOUT: %Make.8a3: %Make.type.db7 = struct_value () [template] // CHECK:STDOUT: %DefaultConstructible.facet: %DefaultConstructible.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: } @@ -56,7 +56,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: interface @DefaultConstructible { // CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %Make.decl: %Make.type.1 = fn_decl @Make.1 [template = constants.%Make.1] { +// CHECK:STDOUT: %Make.decl: %Make.type.040 = fn_decl @Make.1 [template = constants.%Make.a8e] { // CHECK:STDOUT: %return.patt: @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -75,7 +75,7 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %DefaultConstructible.ref { -// CHECK:STDOUT: %Make.decl: %Make.type.2 = fn_decl @Make.2 [template = constants.%Make.2] { +// CHECK:STDOUT: %Make.decl: %Make.type.db7 = fn_decl @Make.2 [template = constants.%Make.8a3] { // CHECK:STDOUT: %return.patt: %C = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { diff --git a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon index 284a519636b1..aaf43e7078f3 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon @@ -40,52 +40,52 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %UseSelf.type: type = facet_type <@UseSelf> [template] -// CHECK:STDOUT: %Self.1: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type.1: type = facet_access_type %Self.1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %Self.aee: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type.3e2: type = facet_access_type %Self.aee [symbolic] +// CHECK:STDOUT: %F.type.a69: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %UseSelf.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @UseSelf.%F.decl [template] +// CHECK:STDOUT: %F.e5a: %F.type.a69 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.c96: type = assoc_entity_type %UseSelf.type, %F.type.a69 [template] +// CHECK:STDOUT: %assoc0.8e9: %F.assoc_type.c96 = assoc_entity element0, @UseSelf.%F.decl [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %UseSelf.facet.1: %UseSelf.type = facet_value %C, %impl_witness.1 [template] +// CHECK:STDOUT: %impl_witness.c6f: = impl_witness (@impl.1.%F.decl) [template] +// CHECK:STDOUT: %F.type.261: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.63a: %F.type.261 = struct_value () [template] +// CHECK:STDOUT: %UseSelf.facet.c5b: %UseSelf.type = facet_value %C, %impl_witness.c6f [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.3 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %UseSelf.facet.2: %UseSelf.type = facet_value %D, %impl_witness.2 [template] +// CHECK:STDOUT: %impl_witness.02b: = impl_witness (@impl.2.%F.decl) [template] +// CHECK:STDOUT: %F.type.5ab: type = fn_type @F.3 [template] +// CHECK:STDOUT: %F.d6a: %F.type.5ab = struct_value () [template] +// CHECK:STDOUT: %UseSelf.facet.af5: %UseSelf.type = facet_value %D, %impl_witness.02b [template] // CHECK:STDOUT: %D.val: %D = struct_value () [template] // CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [template] -// CHECK:STDOUT: %Self.2: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type.2: type = facet_access_type %Self.2 [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %Self.as_type.2 [symbolic] -// CHECK:STDOUT: %struct_type.x.y.1: type = struct_type {.x: %Self.as_type.2, .y: %empty_tuple.type} [symbolic] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%ptr.2, %struct_type.x.y.1) [symbolic] -// CHECK:STDOUT: %F.type.4: type = fn_type @F.4 [template] -// CHECK:STDOUT: %F.4: %F.type.4 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %SelfNested.type, %F.type.4 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @SelfNested.%F.decl [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (@impl.3.%F.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %struct_type.x.y.2: type = struct_type {.x: %C, .y: %empty_tuple.type} [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%ptr.3, %struct_type.x.y.2) [template] -// CHECK:STDOUT: %F.type.5: type = fn_type @F.5 [template] -// CHECK:STDOUT: %F.5: %F.type.5 = struct_value () [template] -// CHECK:STDOUT: %SelfNested.facet.1: %SelfNested.type = facet_value %C, %impl_witness.3 [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (@impl.4.%F.decl) [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type %D [template] -// CHECK:STDOUT: %struct_type.x.y.3: type = struct_type {.x: %D, .y: %empty_tuple.type} [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (%ptr.4, %struct_type.x.y.3) [template] -// CHECK:STDOUT: %F.type.6: type = fn_type @F.6 [template] -// CHECK:STDOUT: %F.6: %F.type.6 = struct_value () [template] -// CHECK:STDOUT: %SelfNested.facet.2: %SelfNested.type = facet_value %D, %impl_witness.4 [template] +// CHECK:STDOUT: %Self.36c: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type.966: type = facet_access_type %Self.36c [symbolic] +// CHECK:STDOUT: %ptr.af7: type = ptr_type %Self.as_type.966 [symbolic] +// CHECK:STDOUT: %struct_type.x.y.0dc: type = struct_type {.x: %Self.as_type.966, .y: %empty_tuple.type} [symbolic] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.7e5: type = tuple_type (%ptr.af7, %struct_type.x.y.0dc) [symbolic] +// CHECK:STDOUT: %F.type.f33: type = fn_type @F.4 [template] +// CHECK:STDOUT: %F.04f: %F.type.f33 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.c02: type = assoc_entity_type %SelfNested.type, %F.type.f33 [template] +// CHECK:STDOUT: %assoc0.982: %F.assoc_type.c02 = assoc_entity element0, @SelfNested.%F.decl [template] +// CHECK:STDOUT: %impl_witness.d90: = impl_witness (@impl.3.%F.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %struct_type.x.y.2f0: type = struct_type {.x: %C, .y: %empty_tuple.type} [template] +// CHECK:STDOUT: %tuple.type.a17: type = tuple_type (%ptr.019, %struct_type.x.y.2f0) [template] +// CHECK:STDOUT: %F.type.9b5: type = fn_type @F.5 [template] +// CHECK:STDOUT: %F.c45: %F.type.9b5 = struct_value () [template] +// CHECK:STDOUT: %SelfNested.facet.d94: %SelfNested.type = facet_value %C, %impl_witness.d90 [template] +// CHECK:STDOUT: %impl_witness.55c: = impl_witness (@impl.4.%F.decl) [template] +// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [template] +// CHECK:STDOUT: %struct_type.x.y.527: type = struct_type {.x: %D, .y: %empty_tuple.type} [template] +// CHECK:STDOUT: %tuple.type.a5f: type = tuple_type (%ptr.19c, %struct_type.x.y.527) [template] +// CHECK:STDOUT: %F.type.3cb: type = fn_type @F.6 [template] +// CHECK:STDOUT: %F.3b6: %F.type.3cb = struct_value () [template] +// CHECK:STDOUT: %SelfNested.facet.2f0: %SelfNested.type = facet_value %D, %impl_witness.55c [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -102,56 +102,56 @@ impl D as SelfNested { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [template = constants.%UseSelf.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.c6f] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [template = constants.%UseSelf.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc23: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.02b] // CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [template = constants.%SelfNested.type] {} {} // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc31: = impl_witness (@impl.3.%F.decl) [template = constants.%impl_witness.3] +// CHECK:STDOUT: %impl_witness.loc31: = impl_witness (@impl.3.%F.decl) [template = constants.%impl_witness.d90] // CHECK:STDOUT: impl_decl @impl.4 [template] {} { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] // CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc35: = impl_witness (@impl.4.%F.decl) [template = constants.%impl_witness.4] +// CHECK:STDOUT: %impl_witness.loc35: = impl_witness (@impl.4.%F.decl) [template = constants.%impl_witness.55c] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @UseSelf { -// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] { -// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %x.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param_pattern %x.patt, runtime_param1 -// CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.aee] +// CHECK:STDOUT: %F.decl: %F.type.a69 = fn_decl @F.1 [template = constants.%F.e5a] { +// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %x.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = value_param_pattern %x.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc12_32: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_32: type = facet_access_type %Self.ref.loc12_32 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_32: type = converted %Self.ref.loc12_32, %Self.as_type.loc12_32 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc12_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref.loc12_14 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref.loc12_14, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self.ref.loc12_32: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.aee)] +// CHECK:STDOUT: %Self.as_type.loc12_32: type = facet_access_type %Self.ref.loc12_32 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] +// CHECK:STDOUT: %.loc12_32: type = converted %Self.ref.loc12_32, %Self.as_type.loc12_32 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] +// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = value_param runtime_param0 +// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] { +// CHECK:STDOUT: %Self.ref.loc12_14: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.aee)] +// CHECK:STDOUT: %Self.as_type.loc12_14.2: type = facet_access_type %Self.ref.loc12_14 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] +// CHECK:STDOUT: %.loc12_14.2: type = converted %Self.ref.loc12_14, %Self.as_type.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = bind_name self, %self.param -// CHECK:STDOUT: %x.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = value_param runtime_param1 -// CHECK:STDOUT: %.loc12_23.1: type = splice_block %.loc12_23.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] { -// CHECK:STDOUT: %Self.ref.loc12_23: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_23: type = facet_access_type %Self.ref.loc12_23 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] -// CHECK:STDOUT: %.loc12_23.2: type = converted %Self.ref.loc12_23, %Self.as_type.loc12_23 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = bind_name self, %self.param +// CHECK:STDOUT: %x.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = value_param runtime_param1 +// CHECK:STDOUT: %.loc12_23.1: type = splice_block %.loc12_23.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] { +// CHECK:STDOUT: %Self.ref.loc12_23: %UseSelf.type = name_ref Self, @UseSelf.%Self [symbolic = %Self (constants.%Self.aee)] +// CHECK:STDOUT: %Self.as_type.loc12_23: type = facet_access_type %Self.ref.loc12_23 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] +// CHECK:STDOUT: %.loc12_23.2: type = converted %Self.ref.loc12_23, %Self.as_type.loc12_23 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = bind_name x, %x.param -// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = out_param runtime_param2 -// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1) = return_slot %return.param +// CHECK:STDOUT: %x: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = bind_name x, %x.param +// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = out_param runtime_param2 +// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %F.assoc_type.1 = assoc_entity element0, %F.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %F.assoc_type.c96 = assoc_entity element0, %F.decl [template = constants.%assoc0.8e9] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -160,29 +160,29 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @SelfNested { -// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %F.decl: %F.type.4 = fn_decl @F.4 [template = constants.%F.4] { -// CHECK:STDOUT: %x.patt: @F.4.%tuple.type (%tuple.type.2) = binding_pattern x -// CHECK:STDOUT: %x.param_patt: @F.4.%tuple.type (%tuple.type.2) = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.36c] +// CHECK:STDOUT: %F.decl: %F.type.f33 = fn_decl @F.4 [template = constants.%F.04f] { +// CHECK:STDOUT: %x.patt: @F.4.%tuple.type (%tuple.type.7e5) = binding_pattern x +// CHECK:STDOUT: %x.param_patt: @F.4.%tuple.type (%tuple.type.7e5) = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: @F.4.%tuple.type (%tuple.type.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc28_37.1: type = splice_block %.loc28_37.3 [symbolic = %tuple.type (constants.%tuple.type.2)] { -// CHECK:STDOUT: %Self.ref.loc28_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type.loc28_16.2: type = facet_access_type %Self.ref.loc28_12 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.2)] -// CHECK:STDOUT: %.loc28_16: type = converted %Self.ref.loc28_12, %Self.as_type.loc28_16.2 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.2)] -// CHECK:STDOUT: %ptr.loc28_16.2: type = ptr_type %Self.as_type.2 [symbolic = %ptr.loc28_16.1 (constants.%ptr.2)] -// CHECK:STDOUT: %Self.ref.loc28_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type.loc28_24: type = facet_access_type %Self.ref.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.2)] -// CHECK:STDOUT: %.loc28_24: type = converted %Self.ref.loc28_24, %Self.as_type.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.2)] +// CHECK:STDOUT: %x.param: @F.4.%tuple.type (%tuple.type.7e5) = value_param runtime_param0 +// CHECK:STDOUT: %.loc28_37.1: type = splice_block %.loc28_37.3 [symbolic = %tuple.type (constants.%tuple.type.7e5)] { +// CHECK:STDOUT: %Self.ref.loc28_12: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.36c)] +// CHECK:STDOUT: %Self.as_type.loc28_16.2: type = facet_access_type %Self.ref.loc28_12 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.966)] +// CHECK:STDOUT: %.loc28_16: type = converted %Self.ref.loc28_12, %Self.as_type.loc28_16.2 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.966)] +// CHECK:STDOUT: %ptr.loc28_16.2: type = ptr_type %Self.as_type.966 [symbolic = %ptr.loc28_16.1 (constants.%ptr.af7)] +// CHECK:STDOUT: %Self.ref.loc28_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.36c)] +// CHECK:STDOUT: %Self.as_type.loc28_24: type = facet_access_type %Self.ref.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.966)] +// CHECK:STDOUT: %.loc28_24: type = converted %Self.ref.loc28_24, %Self.as_type.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.966)] // CHECK:STDOUT: %.loc28_35.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc28_35.2: type = converted %.loc28_35.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.x.y.loc28_36.2: type = struct_type {.x: %Self.as_type.2, .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc28_36.1 (constants.%struct_type.x.y.1)] -// CHECK:STDOUT: %.loc28_37.2: %tuple.type.1 = tuple_literal (%ptr.loc28_16.2, %struct_type.x.y.loc28_36.2) -// CHECK:STDOUT: %.loc28_37.3: type = converted %.loc28_37.2, constants.%tuple.type.2 [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %struct_type.x.y.loc28_36.2: type = struct_type {.x: %Self.as_type.966, .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc28_36.1 (constants.%struct_type.x.y.0dc)] +// CHECK:STDOUT: %.loc28_37.2: %tuple.type.24b = tuple_literal (%ptr.loc28_16.2, %struct_type.x.y.loc28_36.2) +// CHECK:STDOUT: %.loc28_37.3: type = converted %.loc28_37.2, constants.%tuple.type.7e5 [symbolic = %tuple.type (constants.%tuple.type.7e5)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: @F.4.%tuple.type (%tuple.type.2) = bind_name x, %x.param +// CHECK:STDOUT: %x: @F.4.%tuple.type (%tuple.type.7e5) = bind_name x, %x.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0: %F.assoc_type.2 = assoc_entity element0, %F.decl [template = constants.%assoc0.2] +// CHECK:STDOUT: %assoc0: %F.assoc_type.c02 = assoc_entity element0, %F.decl [template = constants.%assoc0.982] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -191,7 +191,7 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %UseSelf.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] { +// CHECK:STDOUT: %F.decl: %F.type.261 = fn_decl @F.2 [template = constants.%F.63a] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %x.patt: %C = binding_pattern x @@ -216,7 +216,7 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %D.ref as %UseSelf.ref { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.3 [template = constants.%F.3] { +// CHECK:STDOUT: %F.decl: %F.type.5ab = fn_decl @F.3 [template = constants.%F.d6a] { // CHECK:STDOUT: %self.patt: %D = binding_pattern self // CHECK:STDOUT: %self.param_patt: %D = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %x.patt: %D = binding_pattern x @@ -241,22 +241,22 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.3: %C.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.5 = fn_decl @F.5 [template = constants.%F.5] { -// CHECK:STDOUT: %x.patt: %tuple.type.3 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %tuple.type.3 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.9b5 = fn_decl @F.5 [template = constants.%F.c45] { +// CHECK:STDOUT: %x.patt: %tuple.type.a17 = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %tuple.type.a17 = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %tuple.type.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc32_31.1: type = splice_block %.loc32_31.3 [template = constants.%tuple.type.3] { +// CHECK:STDOUT: %x.param: %tuple.type.a17 = value_param runtime_param0 +// CHECK:STDOUT: %.loc32_31.1: type = splice_block %.loc32_31.3 [template = constants.%tuple.type.a17] { // CHECK:STDOUT: %C.ref.loc32_12: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: %C.ref.loc32_21: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc32_29.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc32_29.2: type = converted %.loc32_29.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %C, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.2] -// CHECK:STDOUT: %.loc32_31.2: %tuple.type.1 = tuple_literal (%ptr, %struct_type.x.y) -// CHECK:STDOUT: %.loc32_31.3: type = converted %.loc32_31.2, constants.%tuple.type.3 [template = constants.%tuple.type.3] +// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %C, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.2f0] +// CHECK:STDOUT: %.loc32_31.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc32_31.3: type = converted %.loc32_31.2, constants.%tuple.type.a17 [template = constants.%tuple.type.a17] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %tuple.type.3 = bind_name x, %x.param +// CHECK:STDOUT: %x: %tuple.type.a17 = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -265,22 +265,22 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.4: %D.ref as %SelfNested.ref { -// CHECK:STDOUT: %F.decl: %F.type.6 = fn_decl @F.6 [template = constants.%F.6] { -// CHECK:STDOUT: %x.patt: %tuple.type.4 = binding_pattern x -// CHECK:STDOUT: %x.param_patt: %tuple.type.4 = value_param_pattern %x.patt, runtime_param0 +// CHECK:STDOUT: %F.decl: %F.type.3cb = fn_decl @F.6 [template = constants.%F.3b6] { +// CHECK:STDOUT: %x.patt: %tuple.type.a5f = binding_pattern x +// CHECK:STDOUT: %x.param_patt: %tuple.type.a5f = value_param_pattern %x.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param: %tuple.type.4 = value_param runtime_param0 -// CHECK:STDOUT: %.loc36_37.1: type = splice_block %.loc36_37.3 [template = constants.%tuple.type.4] { +// CHECK:STDOUT: %x.param: %tuple.type.a5f = value_param runtime_param0 +// CHECK:STDOUT: %.loc36_37.1: type = splice_block %.loc36_37.3 [template = constants.%tuple.type.a5f] { // CHECK:STDOUT: %Self.ref.loc36_12: type = name_ref Self, @impl.4.%D.ref [template = constants.%D] -// CHECK:STDOUT: %ptr: type = ptr_type %D [template = constants.%ptr.4] +// CHECK:STDOUT: %ptr: type = ptr_type %D [template = constants.%ptr.19c] // CHECK:STDOUT: %Self.ref.loc36_24: type = name_ref Self, @impl.4.%D.ref [template = constants.%D] // CHECK:STDOUT: %.loc36_35.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc36_35.2: type = converted %.loc36_35.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.3] -// CHECK:STDOUT: %.loc36_37.2: %tuple.type.1 = tuple_literal (%ptr, %struct_type.x.y) -// CHECK:STDOUT: %.loc36_37.3: type = converted %.loc36_37.2, constants.%tuple.type.4 [template = constants.%tuple.type.4] +// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.527] +// CHECK:STDOUT: %.loc36_37.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y) +// CHECK:STDOUT: %.loc36_37.3: type = converted %.loc36_37.2, constants.%tuple.type.a5f [template = constants.%tuple.type.a5f] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: %tuple.type.4 = bind_name x, %x.param +// CHECK:STDOUT: %x: %tuple.type.a5f = bind_name x, %x.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -305,10 +305,10 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@UseSelf.%Self: %UseSelf.type) { -// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.1)] -// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.1)] +// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.aee)] +// CHECK:STDOUT: %Self.as_type.loc12_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.3e2)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1)](%x.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1)) -> @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.1); +// CHECK:STDOUT: fn[%self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2)](%x.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2)) -> @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.3e2); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2[%self.param_patt: %C](%x.param_patt: %C) -> %return.param_patt: %C { @@ -328,55 +328,55 @@ impl D as SelfNested { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.4(@SelfNested.%Self: %SelfNested.type) { -// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] -// CHECK:STDOUT: %Self.as_type.loc28_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.2)] -// CHECK:STDOUT: %ptr.loc28_16.1: type = ptr_type @F.4.%Self.as_type.loc28_16.1 (%Self.as_type.2) [symbolic = %ptr.loc28_16.1 (constants.%ptr.2)] -// CHECK:STDOUT: %struct_type.x.y.loc28_36.1: type = struct_type {.x: @F.4.%Self.as_type.loc28_16.1 (%Self.as_type.2), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc28_36.1 (constants.%struct_type.x.y.1)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.4.%ptr.loc28_16.1 (%ptr.2), @F.4.%struct_type.x.y.loc28_36.1 (%struct_type.x.y.1)) [symbolic = %tuple.type (constants.%tuple.type.2)] +// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.36c)] +// CHECK:STDOUT: %Self.as_type.loc28_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.966)] +// CHECK:STDOUT: %ptr.loc28_16.1: type = ptr_type @F.4.%Self.as_type.loc28_16.1 (%Self.as_type.966) [symbolic = %ptr.loc28_16.1 (constants.%ptr.af7)] +// CHECK:STDOUT: %struct_type.x.y.loc28_36.1: type = struct_type {.x: @F.4.%Self.as_type.loc28_16.1 (%Self.as_type.966), .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc28_36.1 (constants.%struct_type.x.y.0dc)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (@F.4.%ptr.loc28_16.1 (%ptr.af7), @F.4.%struct_type.x.y.loc28_36.1 (%struct_type.x.y.0dc)) [symbolic = %tuple.type (constants.%tuple.type.7e5)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%x.param_patt: @F.4.%tuple.type (%tuple.type.2)); +// CHECK:STDOUT: fn(%x.param_patt: @F.4.%tuple.type (%tuple.type.7e5)); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.5(%x.param_patt: %tuple.type.3); +// CHECK:STDOUT: fn @F.5(%x.param_patt: %tuple.type.a17); // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.6(%x.param_patt: %tuple.type.4); +// CHECK:STDOUT: fn @F.6(%x.param_patt: %tuple.type.a5f); // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) { -// CHECK:STDOUT: %Self => constants.%Self.1 -// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.1 +// CHECK:STDOUT: specific @F.1(constants.%Self.aee) { +// CHECK:STDOUT: %Self => constants.%Self.aee +// CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%Self.as_type.3e2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%UseSelf.facet.1) { -// CHECK:STDOUT: %Self => constants.%UseSelf.facet.1 +// CHECK:STDOUT: specific @F.1(constants.%UseSelf.facet.c5b) { +// CHECK:STDOUT: %Self => constants.%UseSelf.facet.c5b // CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%UseSelf.facet.2) { -// CHECK:STDOUT: %Self => constants.%UseSelf.facet.2 +// CHECK:STDOUT: specific @F.1(constants.%UseSelf.facet.af5) { +// CHECK:STDOUT: %Self => constants.%UseSelf.facet.af5 // CHECK:STDOUT: %Self.as_type.loc12_14.1 => constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.4(constants.%Self.2) { -// CHECK:STDOUT: %Self => constants.%Self.2 -// CHECK:STDOUT: %Self.as_type.loc28_16.1 => constants.%Self.as_type.2 -// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.2 -// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.1 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.2 +// CHECK:STDOUT: specific @F.4(constants.%Self.36c) { +// CHECK:STDOUT: %Self => constants.%Self.36c +// CHECK:STDOUT: %Self.as_type.loc28_16.1 => constants.%Self.as_type.966 +// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.af7 +// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.0dc +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.7e5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.4(constants.%SelfNested.facet.1) { -// CHECK:STDOUT: %Self => constants.%SelfNested.facet.1 +// CHECK:STDOUT: specific @F.4(constants.%SelfNested.facet.d94) { +// CHECK:STDOUT: %Self => constants.%SelfNested.facet.d94 // CHECK:STDOUT: %Self.as_type.loc28_16.1 => constants.%C -// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.3 -// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.2 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.3 +// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.019 +// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.2f0 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.a17 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.4(constants.%SelfNested.facet.2) { -// CHECK:STDOUT: %Self => constants.%SelfNested.facet.2 +// CHECK:STDOUT: specific @F.4(constants.%SelfNested.facet.2f0) { +// CHECK:STDOUT: %Self => constants.%SelfNested.facet.2f0 // CHECK:STDOUT: %Self.as_type.loc28_16.1 => constants.%D -// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.4 -// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.3 -// CHECK:STDOUT: %tuple.type => constants.%tuple.type.4 +// CHECK:STDOUT: %ptr.loc28_16.1 => constants.%ptr.19c +// CHECK:STDOUT: %struct_type.x.y.loc28_36.1 => constants.%struct_type.x.y.527 +// CHECK:STDOUT: %tuple.type => constants.%tuple.type.a5f // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/redeclaration.carbon b/toolchain/check/testdata/impl/redeclaration.carbon index 81b1aada6cbd..38f883fd50b8 100644 --- a/toolchain/check/testdata/impl/redeclaration.carbon +++ b/toolchain/check/testdata/impl/redeclaration.carbon @@ -28,12 +28,12 @@ impl i32 as I {} // CHECK:STDOUT: %impl_witness: = impl_witness () [template] // CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -80,7 +80,7 @@ impl i32 as I {} // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %I.ref.loc16: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index c309a27a9036..1650c40d89ba 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -20,34 +20,34 @@ var d: i32 = a[b]; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %array_type: type = array_type %int_2, %i32 [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_24.1: Core.IntLiteral = int_value 24 [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_24.e3c: Core.IntLiteral = int_value 24 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_24.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_24.2: %i32 = int_value 24 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.2, %int_24.2) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.c54: = bound_method %int_24.e3c, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.4df: = specific_function %Convert.bound.c54, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_24.6ea: %i32 = int_value 24 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.43d, %int_24.6ea) [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -74,45 +74,45 @@ var d: i32 = a[b]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_24: Core.IntLiteral = int_value 24 [template = constants.%int_24.1] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_24: Core.IntLiteral = int_value 24 [template = constants.%int_24.e3c] // CHECK:STDOUT: %.loc11_26.1: %tuple.type = tuple_literal (%int_12, %int_24) -// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_12, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_12, %int.convert_checked.loc11_26.1 [template = constants.%int_12.2] -// CHECK:STDOUT: %int_0.loc11: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_12, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_12, %int.convert_checked.loc11_26.1 [template = constants.%int_12.43d] +// CHECK:STDOUT: %int_0.loc11: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc11_26.3: ref %i32 = array_index file.%a.var, %int_0.loc11 -// CHECK:STDOUT: %.loc11_26.4: init %i32 = initialize_from %.loc11_26.2 to %.loc11_26.3 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_24, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_24) [template = constants.%int_24.2] -// CHECK:STDOUT: %.loc11_26.5: init %i32 = converted %int_24, %int.convert_checked.loc11_26.2 [template = constants.%int_24.2] -// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc11_26.4: init %i32 = initialize_from %.loc11_26.2 to %.loc11_26.3 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_24, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.c54] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4df] +// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_24) [template = constants.%int_24.6ea] +// CHECK:STDOUT: %.loc11_26.5: init %i32 = converted %int_24, %int.convert_checked.loc11_26.2 [template = constants.%int_24.6ea] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc11_26.6: ref %i32 = array_index file.%a.var, %int_1.loc11 -// CHECK:STDOUT: %.loc11_26.7: init %i32 = initialize_from %.loc11_26.5 to %.loc11_26.6 [template = constants.%int_24.2] +// CHECK:STDOUT: %.loc11_26.7: init %i32 = initialize_from %.loc11_26.5 to %.loc11_26.6 [template = constants.%int_24.6ea] // CHECK:STDOUT: %.loc11_26.8: init %array_type = array_init (%.loc11_26.4, %.loc11_26.7) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_27: init %array_type = converted %.loc11_26.1, %.loc11_26.8 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_27 -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_1.loc12, %impl.elem0.loc12 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_1.loc12) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_1.loc12, %impl.elem0.loc12 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_1.loc12) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12 [template = constants.%int_1.c60] // CHECK:STDOUT: assign file.%b.var, %.loc12 // CHECK:STDOUT: %a.ref.loc13: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_16.2: %i32 = converted %int_0.loc13, %.loc13_16.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_16.1: %i32 = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_16.2: %i32 = converted %int_0.loc13, %.loc13_16.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc13_17.1: ref %i32 = array_index %a.ref.loc13, %.loc13_16.2 // CHECK:STDOUT: %.loc13_17.2: %i32 = bind_value %.loc13_17.1 // CHECK:STDOUT: assign file.%c.var, %.loc13_17.2 diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index 1dd9276ed1aa..c5342d66f6c1 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -33,46 +33,46 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_3.1, %i32 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_3.1ba, %i32 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] // CHECK:STDOUT: %ValueBinding.type: type = fn_type @ValueBinding [template] // CHECK:STDOUT: %ValueBinding: %ValueBinding.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,7 +92,7 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %int_3, %i32 [template = constants.%array_type] // CHECK:STDOUT: %return.param: ref %array_type = out_param runtime_param0 // CHECK:STDOUT: %return: ref %array_type = return_slot %return.param @@ -105,7 +105,7 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: %.loc13: type = splice_block %array_type [template = constants.%array_type] { // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3.loc13: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %int_3.loc13, %i32 [template = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %array_type = bind_name b, %b.param @@ -118,7 +118,7 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: %.loc21: type = splice_block %array_type [template = constants.%array_type] { // CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %int_3.loc21: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3.loc21: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %array_type: type = array_type %int_3.loc21, %i32 [template = constants.%array_type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %array_type = bind_name b, %b.param @@ -131,69 +131,69 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %array_type = var a // CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var -// CHECK:STDOUT: %int_1.loc14_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc14_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc14: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc14_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc14_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc14: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc14_29.1: %tuple.type = tuple_literal (%int_1.loc14_22, %int_2.loc14_25, %int_3.loc14) -// CHECK:STDOUT: %impl.elem0.loc14_29.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_29.1: = bound_method %int_1.loc14_22, %impl.elem0.loc14_29.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_29.1: = specific_function %Convert.bound.loc14_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_29.1: init %i32 = call %Convert.specific_fn.loc14_29.1(%int_1.loc14_22) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_29.2: init %i32 = converted %int_1.loc14_22, %int.convert_checked.loc14_29.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %int_0.loc14: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %impl.elem0.loc14_29.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_29.1: = bound_method %int_1.loc14_22, %impl.elem0.loc14_29.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_29.1: = specific_function %Convert.bound.loc14_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_29.1: init %i32 = call %Convert.specific_fn.loc14_29.1(%int_1.loc14_22) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_29.2: init %i32 = converted %int_1.loc14_22, %int.convert_checked.loc14_29.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %int_0.loc14: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc14_29.3: ref %i32 = array_index %a.var, %int_0.loc14 -// CHECK:STDOUT: %.loc14_29.4: init %i32 = initialize_from %.loc14_29.2 to %.loc14_29.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_29.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_29.2: = bound_method %int_2.loc14_25, %impl.elem0.loc14_29.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_29.2: = specific_function %Convert.bound.loc14_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_29.2: init %i32 = call %Convert.specific_fn.loc14_29.2(%int_2.loc14_25) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_29.5: init %i32 = converted %int_2.loc14_25, %int.convert_checked.loc14_29.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc14_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc14_29.4: init %i32 = initialize_from %.loc14_29.2 to %.loc14_29.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_29.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_29.2: = bound_method %int_2.loc14_25, %impl.elem0.loc14_29.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_29.2: = specific_function %Convert.bound.loc14_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_29.2: init %i32 = call %Convert.specific_fn.loc14_29.2(%int_2.loc14_25) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_29.5: init %i32 = converted %int_2.loc14_25, %int.convert_checked.loc14_29.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc14_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc14_29.6: ref %i32 = array_index %a.var, %int_1.loc14_29 -// CHECK:STDOUT: %.loc14_29.7: init %i32 = initialize_from %.loc14_29.5 to %.loc14_29.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc14_29.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_29.3: = bound_method %int_3.loc14, %impl.elem0.loc14_29.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc14_29.3: = specific_function %Convert.bound.loc14_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc14_29.3: init %i32 = call %Convert.specific_fn.loc14_29.3(%int_3.loc14) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc14_29.8: init %i32 = converted %int_3.loc14, %int.convert_checked.loc14_29.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc14_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc14_29.7: init %i32 = initialize_from %.loc14_29.5 to %.loc14_29.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc14_29.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_29.3: = bound_method %int_3.loc14, %impl.elem0.loc14_29.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc14_29.3: = specific_function %Convert.bound.loc14_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc14_29.3: init %i32 = call %Convert.specific_fn.loc14_29.3(%int_3.loc14) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc14_29.8: init %i32 = converted %int_3.loc14, %int.convert_checked.loc14_29.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc14_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc14_29.9: ref %i32 = array_index %a.var, %int_2.loc14_29 -// CHECK:STDOUT: %.loc14_29.10: init %i32 = initialize_from %.loc14_29.8 to %.loc14_29.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc14_29.10: init %i32 = initialize_from %.loc14_29.8 to %.loc14_29.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc14_29.11: init %array_type = array_init (%.loc14_29.4, %.loc14_29.7, %.loc14_29.10) to %a.var [template = constants.%array] // CHECK:STDOUT: %.loc14_30: init %array_type = converted %.loc14_29.1, %.loc14_29.11 [template = constants.%array] // CHECK:STDOUT: assign %a.var, %.loc14_30 -// CHECK:STDOUT: %pa.var: ref %ptr.2 = var pa -// CHECK:STDOUT: %pa: ref %ptr.2 = bind_name pa, %pa.var +// CHECK:STDOUT: %pa.var: ref %ptr.dc3 = var pa +// CHECK:STDOUT: %pa: ref %ptr.dc3 = bind_name pa, %pa.var // CHECK:STDOUT: %a.ref.loc17: ref %array_type = name_ref a, %a -// CHECK:STDOUT: %int_0.loc17: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc17: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_0.loc17, %impl.elem0.loc17 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_0.loc17) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc17_21.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc17_21.2: %i32 = converted %int_0.loc17, %.loc17_21.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_0.loc17, %impl.elem0.loc17 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_0.loc17) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc17_21.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc17_21.2: %i32 = converted %int_0.loc17, %.loc17_21.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc17_22: ref %i32 = array_index %a.ref.loc17, %.loc17_21.2 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %.loc17_22 +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of %.loc17_22 // CHECK:STDOUT: assign %pa.var, %addr // CHECK:STDOUT: %a.ref.loc18: ref %array_type = name_ref a, %a -// CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc18: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc18: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc18_5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_5: = bound_method %int_0.loc18, %impl.elem0.loc18_5 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc18_5: = specific_function %Convert.bound.loc18_5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc18_5: init %i32 = call %Convert.specific_fn.loc18_5(%int_0.loc18) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc18_5.1: %i32 = value_of_initializer %int.convert_checked.loc18_5 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc18_5.2: %i32 = converted %int_0.loc18, %.loc18_5.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc18_5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_5: = bound_method %int_0.loc18, %impl.elem0.loc18_5 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc18_5: = specific_function %Convert.bound.loc18_5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc18_5: init %i32 = call %Convert.specific_fn.loc18_5(%int_0.loc18) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc18_5.1: %i32 = value_of_initializer %int.convert_checked.loc18_5 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc18_5.2: %i32 = converted %int_0.loc18, %.loc18_5.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc18_6: ref %i32 = array_index %a.ref.loc18, %.loc18_5.2 -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc18_8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_8: = bound_method %int_4, %impl.elem0.loc18_8 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc18_8: = specific_function %Convert.bound.loc18_8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc18_8: init %i32 = call %Convert.specific_fn.loc18_8(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc18_8: init %i32 = converted %int_4, %int.convert_checked.loc18_8 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc18_8: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_8: = bound_method %int_4, %impl.elem0.loc18_8 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc18_8: = specific_function %Convert.bound.loc18_8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc18_8: init %i32 = call %Convert.specific_fn.loc18_8(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc18_8: init %i32 = converted %int_4, %int.convert_checked.loc18_8 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %.loc18_6, %.loc18_8 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -202,74 +202,74 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %array_type = var a // CHECK:STDOUT: %a: ref %array_type = bind_name a, %a.var -// CHECK:STDOUT: %int_1.loc22_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc22_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3.loc22: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc22_22: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc22_25: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3.loc22: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc22_29.1: %tuple.type = tuple_literal (%int_1.loc22_22, %int_2.loc22_25, %int_3.loc22) -// CHECK:STDOUT: %impl.elem0.loc22_29.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22_29.1: = bound_method %int_1.loc22_22, %impl.elem0.loc22_29.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc22_29.1: = specific_function %Convert.bound.loc22_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc22_29.1: init %i32 = call %Convert.specific_fn.loc22_29.1(%int_1.loc22_22) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc22_29.2: init %i32 = converted %int_1.loc22_22, %int.convert_checked.loc22_29.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %impl.elem0.loc22_29.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22_29.1: = bound_method %int_1.loc22_22, %impl.elem0.loc22_29.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc22_29.1: = specific_function %Convert.bound.loc22_29.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc22_29.1: init %i32 = call %Convert.specific_fn.loc22_29.1(%int_1.loc22_22) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc22_29.2: init %i32 = converted %int_1.loc22_22, %int.convert_checked.loc22_29.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc22_29.3: ref %i32 = array_index %a.var, %int_0.loc22 -// CHECK:STDOUT: %.loc22_29.4: init %i32 = initialize_from %.loc22_29.2 to %.loc22_29.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc22_29.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22_29.2: = bound_method %int_2.loc22_25, %impl.elem0.loc22_29.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc22_29.2: = specific_function %Convert.bound.loc22_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc22_29.2: init %i32 = call %Convert.specific_fn.loc22_29.2(%int_2.loc22_25) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc22_29.5: init %i32 = converted %int_2.loc22_25, %int.convert_checked.loc22_29.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %int_1.loc22_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %.loc22_29.4: init %i32 = initialize_from %.loc22_29.2 to %.loc22_29.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc22_29.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22_29.2: = bound_method %int_2.loc22_25, %impl.elem0.loc22_29.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc22_29.2: = specific_function %Convert.bound.loc22_29.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc22_29.2: init %i32 = call %Convert.specific_fn.loc22_29.2(%int_2.loc22_25) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc22_29.5: init %i32 = converted %int_2.loc22_25, %int.convert_checked.loc22_29.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %int_1.loc22_29: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %.loc22_29.6: ref %i32 = array_index %a.var, %int_1.loc22_29 -// CHECK:STDOUT: %.loc22_29.7: init %i32 = initialize_from %.loc22_29.5 to %.loc22_29.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc22_29.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22_29.3: = bound_method %int_3.loc22, %impl.elem0.loc22_29.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc22_29.3: = specific_function %Convert.bound.loc22_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc22_29.3: init %i32 = call %Convert.specific_fn.loc22_29.3(%int_3.loc22) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc22_29.8: init %i32 = converted %int_3.loc22, %int.convert_checked.loc22_29.3 [template = constants.%int_3.2] -// CHECK:STDOUT: %int_2.loc22_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %.loc22_29.7: init %i32 = initialize_from %.loc22_29.5 to %.loc22_29.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc22_29.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22_29.3: = bound_method %int_3.loc22, %impl.elem0.loc22_29.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc22_29.3: = specific_function %Convert.bound.loc22_29.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc22_29.3: init %i32 = call %Convert.specific_fn.loc22_29.3(%int_3.loc22) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc22_29.8: init %i32 = converted %int_3.loc22, %int.convert_checked.loc22_29.3 [template = constants.%int_3.25b] +// CHECK:STDOUT: %int_2.loc22_29: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc22_29.9: ref %i32 = array_index %a.var, %int_2.loc22_29 -// CHECK:STDOUT: %.loc22_29.10: init %i32 = initialize_from %.loc22_29.8 to %.loc22_29.9 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc22_29.10: init %i32 = initialize_from %.loc22_29.8 to %.loc22_29.9 [template = constants.%int_3.25b] // CHECK:STDOUT: %.loc22_29.11: init %array_type = array_init (%.loc22_29.4, %.loc22_29.7, %.loc22_29.10) to %a.var [template = constants.%array] // CHECK:STDOUT: %.loc22_30: init %array_type = converted %.loc22_29.1, %.loc22_29.11 [template = constants.%array] // CHECK:STDOUT: assign %a.var, %.loc22_30 // CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, %a -// CHECK:STDOUT: %int_0.loc26: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc26: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_0.loc26, %impl.elem0.loc26 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_0.loc26) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc26_5.1: %i32 = value_of_initializer %int.convert_checked.loc26 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc26_5.2: %i32 = converted %int_0.loc26, %.loc26_5.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_0.loc26, %impl.elem0.loc26 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_0.loc26) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc26_5.1: %i32 = value_of_initializer %int.convert_checked.loc26 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc26_5.2: %i32 = converted %int_0.loc26, %.loc26_5.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc26_6: ref %i32 = array_index %a.ref, %.loc26_5.2 // CHECK:STDOUT: %b.ref: %array_type = name_ref b, %b -// CHECK:STDOUT: %int_0.loc27: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc27: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc27: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_0.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_0.loc27) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc27_5.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc27_5.2: %i32 = converted %int_0.loc27, %.loc27_5.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_0.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_0.loc27) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc27_5.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc27_5.2: %i32 = converted %int_0.loc27, %.loc27_5.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc27_6.1: ref %array_type = value_as_ref %b.ref // CHECK:STDOUT: %.loc27_6.2: ref %i32 = array_index %.loc27_6.1, %.loc27_5.2 // CHECK:STDOUT: %.loc27_6.3: %i32 = bind_value %.loc27_6.2 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %.loc28_5.1: ref %array_type = temporary_storage // CHECK:STDOUT: %F.call: init %array_type = call %F.ref() to %.loc28_5.1 -// CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc28_5.2: ref %array_type = temporary %.loc28_5.1, %F.call // CHECK:STDOUT: %int_32.loc28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc28: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc28: = bound_method %int_0.loc28, %impl.elem0.loc28 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc28: = specific_function %Convert.bound.loc28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc28: init %i32 = call %Convert.specific_fn.loc28(%int_0.loc28) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc28_7.1: %i32 = value_of_initializer %int.convert_checked.loc28 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc28_7.2: %i32 = converted %int_0.loc28, %.loc28_7.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc28: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc28: = bound_method %int_0.loc28, %impl.elem0.loc28 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc28: = specific_function %Convert.bound.loc28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc28: init %i32 = call %Convert.specific_fn.loc28(%int_0.loc28) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc28_7.1: %i32 = value_of_initializer %int.convert_checked.loc28 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc28_7.2: %i32 = converted %int_0.loc28, %.loc28_7.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc28_8.1: ref %i32 = array_index %.loc28_5.2, %.loc28_7.2 // CHECK:STDOUT: %.loc28_8.2: %i32 = bind_value %.loc28_8.1 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index 5b03e21951a5..73e439a2e3a1 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -26,32 +26,32 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_1.1, %i32 [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %i32 [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.2) [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2147483647.1: Core.IntLiteral = int_value 2147483647 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2147483647.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2147483647.2: %i32 = int_value 2147483647 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.43d) [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2147483647.d89: Core.IntLiteral = int_value 2147483647 [template] +// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2147483647.d89, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.a96: = specific_function %Convert.bound.ef9, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2147483647.2ba: %i32 = int_value 2147483647 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -75,42 +75,42 @@ var c: i32 = a[0x7FFF_FFFF]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] // CHECK:STDOUT: %.loc11_23.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_12, %impl.elem0.loc11 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked.loc11 [template = constants.%int_12.2] +// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_12, %impl.elem0.loc11 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked.loc11 [template = constants.%int_12.43d] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_23.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.2] +// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.43d] // CHECK:STDOUT: %.loc11_23.5: init %array_type = array_init (%.loc11_23.4) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_24: init %array_type = converted %.loc11_23.1, %.loc11_23.5 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_24 // CHECK:STDOUT: %a.ref.loc17: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_1, %impl.elem0.loc17 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_16.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_16.2: %i32 = converted %int_1, %.loc17_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_1, %impl.elem0.loc17 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_16.1: %i32 = value_of_initializer %int.convert_checked.loc17 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_16.2: %i32 = converted %int_1, %.loc17_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc17_17.1: ref %i32 = array_index %a.ref.loc17, %.loc17_16.2 [template = ] // CHECK:STDOUT: %.loc17_17.2: %i32 = bind_value %.loc17_17.1 // CHECK:STDOUT: assign file.%b.var, %.loc17_17.2 // CHECK:STDOUT: %a.ref.loc22: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.1] +// CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647.d89] // CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc22: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc22: = bound_method %int_2147483647, %impl.elem0.loc22 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc22: = specific_function %Convert.bound.loc22, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %Convert.specific_fn.loc22(%int_2147483647) [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %.loc22_16.1: %i32 = value_of_initializer %int.convert_checked.loc22 [template = constants.%int_2147483647.2] -// CHECK:STDOUT: %.loc22_16.2: %i32 = converted %int_2147483647, %.loc22_16.1 [template = constants.%int_2147483647.2] +// CHECK:STDOUT: %impl.elem0.loc22: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc22: = bound_method %int_2147483647, %impl.elem0.loc22 [template = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %Convert.specific_fn.loc22: = specific_function %Convert.bound.loc22, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.a96] +// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %Convert.specific_fn.loc22(%int_2147483647) [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %.loc22_16.1: %i32 = value_of_initializer %int.convert_checked.loc22 [template = constants.%int_2147483647.2ba] +// CHECK:STDOUT: %.loc22_16.2: %i32 = converted %int_2147483647, %.loc22_16.1 [template = constants.%int_2147483647.2ba] // CHECK:STDOUT: %.loc22_27.1: ref %i32 = array_index %a.ref.loc22, %.loc22_16.2 [template = ] // CHECK:STDOUT: %.loc22_27.2: %i32 = bind_value %.loc22_27.1 // CHECK:STDOUT: assign file.%c.var, %.loc22_27.2 diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index 40125a73f4eb..57e6e847f278 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -24,24 +24,24 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %array_type: type = array_type %int_1, %i32 [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.6a3, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.2) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.43d) [template] // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -62,16 +62,16 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] // CHECK:STDOUT: %.loc11_23.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_12, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.43d] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_23.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.2] +// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.43d] // CHECK:STDOUT: %.loc11_23.5: init %array_type = array_init (%.loc11_23.4) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_24: init %array_type = converted %.loc11_23.1, %.loc11_23.5 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_24 diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index 491ce866624d..ae21736113f7 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -19,28 +19,28 @@ var b: i32 = a[1]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array_type: type = array_type %int_1.1, %i32 [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %array_type: type = array_type %int_1.5b8, %i32 [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.2) [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_12.43d) [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -61,29 +61,29 @@ var b: i32 = a[1]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] // CHECK:STDOUT: %.loc11_23.1: %tuple.type = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_12, %impl.elem0.loc11 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked.loc11 [template = constants.%int_12.2] +// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_12, %impl.elem0.loc11 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_23.2: init %i32 = converted %int_12, %int.convert_checked.loc11 [template = constants.%int_12.43d] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_23.3: ref %i32 = array_index file.%a.var, %int_0 -// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.2] +// CHECK:STDOUT: %.loc11_23.4: init %i32 = initialize_from %.loc11_23.2 to %.loc11_23.3 [template = constants.%int_12.43d] // CHECK:STDOUT: %.loc11_23.5: init %array_type = array_init (%.loc11_23.4) to file.%a.var [template = constants.%array] // CHECK:STDOUT: %.loc11_24: init %array_type = converted %.loc11_23.1, %.loc11_23.5 [template = constants.%array] // CHECK:STDOUT: assign file.%a.var, %.loc11_24 // CHECK:STDOUT: %a.ref: ref %array_type = name_ref a, file.%a -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_1, %impl.elem0.loc15 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_16.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_16.2: %i32 = converted %int_1, %.loc15_16.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_1, %impl.elem0.loc15 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_16.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_16.2: %i32 = converted %int_1, %.loc15_16.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc15_17.1: ref %i32 = array_index %a.ref, %.loc15_16.2 [template = ] // CHECK:STDOUT: %.loc15_17.2: %i32 = bind_value %.loc15_17.1 // CHECK:STDOUT: assign file.%b.var, %.loc15_17.2 diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index b010b9b2e7a0..bc235c73b989 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -47,25 +47,25 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -108,83 +108,83 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%b.param_patt: %array_type) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %pb.var: ref %ptr.2 = var pb -// CHECK:STDOUT: %pb: ref %ptr.2 = bind_name pb, %pb.var +// CHECK:STDOUT: %pb.var: ref %ptr.dc3 = var pb +// CHECK:STDOUT: %pb: ref %ptr.dc3 = bind_name pb, %pb.var // CHECK:STDOUT: %b.ref.loc19: %array_type = name_ref b, %b -// CHECK:STDOUT: %int_0.loc19: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc19: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_0.loc19, %impl.elem0.loc19 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_0.loc19) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc19_21.1: %i32 = value_of_initializer %int.convert_checked.loc19 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc19_21.2: %i32 = converted %int_0.loc19, %.loc19_21.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_0.loc19, %impl.elem0.loc19 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_0.loc19) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc19_21.1: %i32 = value_of_initializer %int.convert_checked.loc19 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc19_21.2: %i32 = converted %int_0.loc19, %.loc19_21.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc19_22.1: ref %array_type = value_as_ref %b.ref.loc19 // CHECK:STDOUT: %.loc19_22.2: ref %i32 = array_index %.loc19_22.1, %.loc19_21.2 // CHECK:STDOUT: %.loc19_22.3: %i32 = bind_value %.loc19_22.2 -// CHECK:STDOUT: %addr.loc19: %ptr.2 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc19: %ptr.dc3 = addr_of [template = ] // CHECK:STDOUT: assign %pb.var, %addr.loc19 // CHECK:STDOUT: %b.ref.loc24: %array_type = name_ref b, %b -// CHECK:STDOUT: %int_0.loc24: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc24: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc24_5: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc24_5: = bound_method %int_0.loc24, %impl.elem0.loc24_5 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc24_5: = specific_function %Convert.bound.loc24_5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc24_5: init %i32 = call %Convert.specific_fn.loc24_5(%int_0.loc24) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc24_5.1: %i32 = value_of_initializer %int.convert_checked.loc24_5 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc24_5.2: %i32 = converted %int_0.loc24, %.loc24_5.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc24_5: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc24_5: = bound_method %int_0.loc24, %impl.elem0.loc24_5 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc24_5: = specific_function %Convert.bound.loc24_5, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc24_5: init %i32 = call %Convert.specific_fn.loc24_5(%int_0.loc24) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc24_5.1: %i32 = value_of_initializer %int.convert_checked.loc24_5 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc24_5.2: %i32 = converted %int_0.loc24, %.loc24_5.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc24_6.1: ref %array_type = value_as_ref %b.ref.loc24 // CHECK:STDOUT: %.loc24_6.2: ref %i32 = array_index %.loc24_6.1, %.loc24_5.2 // CHECK:STDOUT: %.loc24_6.3: %i32 = bind_value %.loc24_6.2 -// CHECK:STDOUT: %int_4.loc24: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc24_8: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc24_8: = bound_method %int_4.loc24, %impl.elem0.loc24_8 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc24_8: = specific_function %Convert.bound.loc24_8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc24_8: init %i32 = call %Convert.specific_fn.loc24_8(%int_4.loc24) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc24_8: init %i32 = converted %int_4.loc24, %int.convert_checked.loc24_8 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4.loc24: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc24_8: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc24_8: = bound_method %int_4.loc24, %impl.elem0.loc24_8 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc24_8: = specific_function %Convert.bound.loc24_8, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc24_8: init %i32 = call %Convert.specific_fn.loc24_8(%int_4.loc24) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc24_8: init %i32 = converted %int_4.loc24, %int.convert_checked.loc24_8 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %.loc24_6.3, %.loc24_8 -// CHECK:STDOUT: %pf.var: ref %ptr.2 = var pf -// CHECK:STDOUT: %pf: ref %ptr.2 = bind_name pf, %pf.var +// CHECK:STDOUT: %pf.var: ref %ptr.dc3 = var pf +// CHECK:STDOUT: %pf: ref %ptr.dc3 = bind_name pf, %pf.var // CHECK:STDOUT: %F.ref.loc32: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %.loc32_21.1: ref %array_type = temporary_storage // CHECK:STDOUT: %F.call.loc32: init %array_type = call %F.ref.loc32() to %.loc32_21.1 -// CHECK:STDOUT: %int_0.loc32: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc32: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc32_21.2: ref %array_type = temporary %.loc32_21.1, %F.call.loc32 // CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc32: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc32: = bound_method %int_0.loc32, %impl.elem0.loc32 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc32: = specific_function %Convert.bound.loc32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %Convert.specific_fn.loc32(%int_0.loc32) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc32_23.1: %i32 = value_of_initializer %int.convert_checked.loc32 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc32_23.2: %i32 = converted %int_0.loc32, %.loc32_23.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc32: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc32: = bound_method %int_0.loc32, %impl.elem0.loc32 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc32: = specific_function %Convert.bound.loc32, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %Convert.specific_fn.loc32(%int_0.loc32) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc32_23.1: %i32 = value_of_initializer %int.convert_checked.loc32 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc32_23.2: %i32 = converted %int_0.loc32, %.loc32_23.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc32_24.1: ref %i32 = array_index %.loc32_21.2, %.loc32_23.2 // CHECK:STDOUT: %.loc32_24.2: %i32 = bind_value %.loc32_24.1 -// CHECK:STDOUT: %addr.loc32: %ptr.2 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc32: %ptr.dc3 = addr_of [template = ] // CHECK:STDOUT: assign %pf.var, %addr.loc32 // CHECK:STDOUT: %F.ref.loc36: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %.loc36_5.1: ref %array_type = temporary_storage // CHECK:STDOUT: %F.call.loc36: init %array_type = call %F.ref.loc36() to %.loc36_5.1 -// CHECK:STDOUT: %int_0.loc36: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc36: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %.loc36_5.2: ref %array_type = temporary %.loc36_5.1, %F.call.loc36 // CHECK:STDOUT: %int_32.loc36: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc36: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc36_7: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc36_7: = bound_method %int_0.loc36, %impl.elem0.loc36_7 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc36_7: = specific_function %Convert.bound.loc36_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc36_7: init %i32 = call %Convert.specific_fn.loc36_7(%int_0.loc36) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc36_7.1: %i32 = value_of_initializer %int.convert_checked.loc36_7 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc36_7.2: %i32 = converted %int_0.loc36, %.loc36_7.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %impl.elem0.loc36_7: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc36_7: = bound_method %int_0.loc36, %impl.elem0.loc36_7 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc36_7: = specific_function %Convert.bound.loc36_7, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc36_7: init %i32 = call %Convert.specific_fn.loc36_7(%int_0.loc36) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc36_7.1: %i32 = value_of_initializer %int.convert_checked.loc36_7 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc36_7.2: %i32 = converted %int_0.loc36, %.loc36_7.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc36_8.1: ref %i32 = array_index %.loc36_5.2, %.loc36_7.2 // CHECK:STDOUT: %.loc36_8.2: %i32 = bind_value %.loc36_8.1 -// CHECK:STDOUT: %int_4.loc36: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc36_10: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc36_10: = bound_method %int_4.loc36, %impl.elem0.loc36_10 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc36_10: = specific_function %Convert.bound.loc36_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc36_10: init %i32 = call %Convert.specific_fn.loc36_10(%int_4.loc36) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc36_10: init %i32 = converted %int_4.loc36, %int.convert_checked.loc36_10 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4.loc36: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc36_10: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc36_10: = bound_method %int_4.loc36, %impl.elem0.loc36_10 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc36_10: = specific_function %Convert.bound.loc36_10, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc36_10: init %i32 = call %Convert.specific_fn.loc36_10(%int_4.loc36) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc36_10: init %i32 = converted %int_4.loc36, %int.convert_checked.loc36_10 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %.loc36_8.2, %.loc36_10 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/fail_invalid_base.carbon b/toolchain/check/testdata/index/fail_invalid_base.carbon index 88ebd8100a0d..7fb1414553d3 100644 --- a/toolchain/check/testdata/index/fail_invalid_base.carbon +++ b/toolchain/check/testdata/index/fail_invalid_base.carbon @@ -43,15 +43,15 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1, %int_2) [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1, %int_2) [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .IndexWith = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .IndexWith = %import_ref.76d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,16 +92,16 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: %int_1.loc29: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] -// CHECK:STDOUT: %.loc29_29.1: %struct_type.a.b.1 = struct_literal (%int_1.loc29, %int_2) +// CHECK:STDOUT: %.loc29_29.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc29, %int_2) // CHECK:STDOUT: %int_0.loc29: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.loc29, %int_2) [template = constants.%struct] -// CHECK:STDOUT: %.loc29_29.2: %struct_type.a.b.1 = converted %.loc29_29.1, %struct [template = constants.%struct] +// CHECK:STDOUT: %struct: %struct_type.a.b.cfd = struct_value (%int_1.loc29, %int_2) [template = constants.%struct] +// CHECK:STDOUT: %.loc29_29.2: %struct_type.a.b.cfd = converted %.loc29_29.1, %struct [template = constants.%struct] // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: %int_32.loc34_19: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc34_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc34_28: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc34_28: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.2] +// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.3de] // CHECK:STDOUT: %int_0.loc34: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/index/fail_name_not_found.carbon b/toolchain/check/testdata/index/fail_name_not_found.carbon index 165aeb72a5eb..f82c13586df3 100644 --- a/toolchain/check/testdata/index/fail_name_not_found.carbon +++ b/toolchain/check/testdata/index/fail_name_not_found.carbon @@ -27,7 +27,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/fail_negative_indexing.carbon b/toolchain/check/testdata/index/fail_negative_indexing.carbon index 4d6f82cf46a1..6fcf4d3f39f1 100644 --- a/toolchain/check/testdata/index/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/index/fail_negative_indexing.carbon @@ -22,35 +22,35 @@ var d: i32 = c[-10]; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %array_type: type = array_type %int_2, %i32 [template] -// CHECK:STDOUT: %int_42.1: Core.IntLiteral = int_value 42 [template] +// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_42.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_42.2: %i32 = int_value 42 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.dab: = bound_method %int_42.20e, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.876: = specific_function %Convert.bound.dab, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_42.b93: %i32 = int_value 42 [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_42.2, %int_42.2) [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_42.b93, %int_42.b93) [template] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template] -// CHECK:STDOUT: %Op.type.13: type = fn_type @Op.13 [template] -// CHECK:STDOUT: %impl_witness.21: = impl_witness (imports.%import_ref.254) [template] -// CHECK:STDOUT: %Op.type.14: type = fn_type @Op.14 [template] -// CHECK:STDOUT: %Op.14: %Op.type.14 = struct_value () [template] -// CHECK:STDOUT: %Op.bound: = bound_method %int_10, %Op.14 [template] -// CHECK:STDOUT: %int_-10.1: Core.IntLiteral = int_value -10 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_-10.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_-10.2: %i32 = int_value -10 [template] +// CHECK:STDOUT: %Op.type.4d0: type = fn_type @Op.13 [template] +// CHECK:STDOUT: %impl_witness.6d9: = impl_witness (imports.%import_ref.aaf) [template] +// CHECK:STDOUT: %Op.type.9fe: type = fn_type @Op.14 [template] +// CHECK:STDOUT: %Op.b5b: %Op.type.9fe = struct_value () [template] +// CHECK:STDOUT: %Op.bound: = bound_method %int_10, %Op.b5b [template] +// CHECK:STDOUT: %int_-10.06d: Core.IntLiteral = int_value -10 [template] +// CHECK:STDOUT: %Convert.bound.337: = bound_method %int_-10.06d, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.8f6: = specific_function %Convert.bound.337, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_-10.b8a: %i32 = int_value -10 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Negate = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Negate = %import_ref.a96 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -71,43 +71,43 @@ var d: i32 = c[-10]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_42.loc11_20: Core.IntLiteral = int_value 42 [template = constants.%int_42.1] -// CHECK:STDOUT: %int_42.loc11_24: Core.IntLiteral = int_value 42 [template = constants.%int_42.1] +// CHECK:STDOUT: %int_42.loc11_20: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e] +// CHECK:STDOUT: %int_42.loc11_24: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e] // CHECK:STDOUT: %.loc11_26.1: %tuple.type = tuple_literal (%int_42.loc11_20, %int_42.loc11_24) -// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_42.loc11_20, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_42.loc11_20) [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_42.loc11_20, %int.convert_checked.loc11_26.1 [template = constants.%int_42.2] +// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_42.loc11_20, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.dab] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.876] +// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_42.loc11_20) [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_42.loc11_20, %int.convert_checked.loc11_26.1 [template = constants.%int_42.b93] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc11_26.3: ref %i32 = array_index file.%c.var, %int_0 -// CHECK:STDOUT: %.loc11_26.4: init %i32 = initialize_from %.loc11_26.2 to %.loc11_26.3 [template = constants.%int_42.2] -// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_42.loc11_24, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_42.loc11_24) [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc11_26.5: init %i32 = converted %int_42.loc11_24, %int.convert_checked.loc11_26.2 [template = constants.%int_42.2] +// CHECK:STDOUT: %.loc11_26.4: init %i32 = initialize_from %.loc11_26.2 to %.loc11_26.3 [template = constants.%int_42.b93] +// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_42.loc11_24, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.dab] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.876] +// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_42.loc11_24) [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc11_26.5: init %i32 = converted %int_42.loc11_24, %int.convert_checked.loc11_26.2 [template = constants.%int_42.b93] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %.loc11_26.6: ref %i32 = array_index file.%c.var, %int_1 -// CHECK:STDOUT: %.loc11_26.7: init %i32 = initialize_from %.loc11_26.5 to %.loc11_26.6 [template = constants.%int_42.2] +// CHECK:STDOUT: %.loc11_26.7: init %i32 = initialize_from %.loc11_26.5 to %.loc11_26.6 [template = constants.%int_42.b93] // CHECK:STDOUT: %.loc11_26.8: init %array_type = array_init (%.loc11_26.4, %.loc11_26.7) to file.%c.var [template = constants.%array] // CHECK:STDOUT: %.loc11_27: init %array_type = converted %.loc11_26.1, %.loc11_26.8 [template = constants.%array] // CHECK:STDOUT: assign file.%c.var, %.loc11_27 // CHECK:STDOUT: %c.ref: ref %array_type = name_ref c, file.%c // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10] -// CHECK:STDOUT: %impl.elem0.loc15_16.1: %Op.type.13 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Op.14] +// CHECK:STDOUT: %impl.elem0.loc15_16.1: %Op.type.4d0 = impl_witness_access constants.%impl_witness.6d9, element0 [template = constants.%Op.b5b] // CHECK:STDOUT: %Op.bound: = bound_method %int_10, %impl.elem0.loc15_16.1 [template = constants.%Op.bound] -// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %Op.bound(%int_10) [template = constants.%int_-10.1] +// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %Op.bound(%int_10) [template = constants.%int_-10.06d] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc15_16.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int.snegate, %impl.elem0.loc15_16.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %int.snegate [template = constants.%int_-10.1] -// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %int.snegate, %.loc15_16.1 [template = constants.%int_-10.1] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%.loc15_16.2) [template = constants.%int_-10.2] -// CHECK:STDOUT: %.loc15_16.3: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_-10.2] -// CHECK:STDOUT: %.loc15_16.4: %i32 = converted %int.snegate, %.loc15_16.3 [template = constants.%int_-10.2] +// CHECK:STDOUT: %impl.elem0.loc15_16.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int.snegate, %impl.elem0.loc15_16.2 [template = constants.%Convert.bound.337] +// CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.8f6] +// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %int.snegate [template = constants.%int_-10.06d] +// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %int.snegate, %.loc15_16.1 [template = constants.%int_-10.06d] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%.loc15_16.2) [template = constants.%int_-10.b8a] +// CHECK:STDOUT: %.loc15_16.3: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_-10.b8a] +// CHECK:STDOUT: %.loc15_16.4: %i32 = converted %int.snegate, %.loc15_16.3 [template = constants.%int_-10.b8a] // CHECK:STDOUT: %.loc15_19.1: ref %i32 = array_index %c.ref, %.loc15_16.4 [template = ] // CHECK:STDOUT: %.loc15_19.2: %i32 = bind_value %.loc15_19.1 // CHECK:STDOUT: assign file.%d.var, %.loc15_19.2 diff --git a/toolchain/check/testdata/index/fail_non_tuple_access.carbon b/toolchain/check/testdata/index/fail_non_tuple_access.carbon index 405bf9e24f7c..47e4699c6106 100644 --- a/toolchain/check/testdata/index/fail_non_tuple_access.carbon +++ b/toolchain/check/testdata/index/fail_non_tuple_access.carbon @@ -26,7 +26,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IndexWith = %import_ref.1 +// CHECK:STDOUT: .IndexWith = %import_ref.76d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/assoc_const.carbon b/toolchain/check/testdata/interface/assoc_const.carbon index a4b113eb7d00..4a2dc66974d4 100644 --- a/toolchain/check/testdata/interface/assoc_const.carbon +++ b/toolchain/check/testdata/interface/assoc_const.carbon @@ -18,17 +18,17 @@ interface I { // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, @I.%T [template] +// CHECK:STDOUT: %assoc_type.579: type = assoc_entity_type %I.type, type [template] +// CHECK:STDOUT: %assoc0: %assoc_type.579 = assoc_entity element0, @I.%T [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %I.type, %i32 [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, @I.%N [template] +// CHECK:STDOUT: %assoc_type.b2b: type = assoc_entity_type %I.type, %i32 [template] +// CHECK:STDOUT: %assoc1: %assoc_type.b2b = assoc_entity element1, @I.%N [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -46,9 +46,9 @@ interface I { // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, %T [template = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %assoc_type.579 = assoc_entity element0, %T [template = constants.%assoc0] // CHECK:STDOUT: %N: %i32 = assoc_const_decl N [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, %N [template = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %assoc_type.b2b = assoc_entity element1, %N [template = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon b/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon index 82feeadd1faa..7cfb3d9d633e 100644 --- a/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon +++ b/toolchain/check/testdata/interface/fail_assoc_const_bad_default.carbon @@ -22,15 +22,15 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0.4: %assoc_type = assoc_entity element0, @I.%T [template] +// CHECK:STDOUT: %assoc0.790: %assoc_type = assoc_entity element0, @I.%T [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -46,11 +46,11 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42] // CHECK:STDOUT: %.loc18: type = converted %int_42, [template = ] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.4] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.790] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon index a3f689fcf51f..d1dcbec98efb 100644 --- a/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon +++ b/toolchain/check/testdata/interface/fail_todo_assoc_const_default.carbon @@ -24,29 +24,29 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, @I.%T [template] -// CHECK:STDOUT: %int_42.1: Core.IntLiteral = int_value 42 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %assoc_type.579: type = assoc_entity_type %I.type, type [template] +// CHECK:STDOUT: %assoc0.790: %assoc_type.579 = assoc_entity element0, @I.%T [template] +// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_42.2: %i32 = int_value 42 [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %I.type, %i32 [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, @I.%N [template] +// CHECK:STDOUT: %int_42.b93: %i32 = int_value 42 [template] +// CHECK:STDOUT: %assoc_type.b2b: type = assoc_entity_type %I.type, %i32 [template] +// CHECK:STDOUT: %assoc1: %assoc_type.b2b = assoc_entity element1, @I.%N [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -62,24 +62,24 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %int_32.loc16_27: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc16_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc16_35: %tuple.type.1 = tuple_literal (%i32.loc16_27, %i32.loc16_32) -// CHECK:STDOUT: %.loc16_36: type = converted %.loc16_35, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc16_35: %tuple.type.24b = tuple_literal (%i32.loc16_27, %i32.loc16_32) +// CHECK:STDOUT: %.loc16_36: type = converted %.loc16_35, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, %T [template = constants.%assoc0.1] -// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %assoc0: %assoc_type.579 = assoc_entity element0, %T [template = constants.%assoc0.790] +// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_42, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_42) [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc20_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc20_27.2: %i32 = converted %int_42, %.loc20_27.1 [template = constants.%int_42.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_42) [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc20_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc20_27.2: %i32 = converted %int_42, %.loc20_27.1 [template = constants.%int_42.b93] // CHECK:STDOUT: %N: %i32 = assoc_const_decl N [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, %N [template = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %assoc_type.b2b = assoc_entity element1, %N [template = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon index b3c6f00e3ee9..53463074f605 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_inline.carbon @@ -40,7 +40,7 @@ interface Interface { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon index 57503c1e8f68..5b39e2c2953f 100644 --- a/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon +++ b/toolchain/check/testdata/interface/fail_todo_define_default_fn_out_of_line.carbon @@ -78,15 +78,15 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %Interface.type, %G.type [template] // CHECK:STDOUT: %assoc1: %G.assoc_type = assoc_entity element1, @Interface.%G.decl [template] -// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template] -// CHECK:STDOUT: %.2: %.type.2 = struct_value () [template] +// CHECK:STDOUT: %.type.067ccc.1: type = fn_type @.1 [template] +// CHECK:STDOUT: %.c3ab6d.1: %.type.067ccc.1 = struct_value () [template] +// CHECK:STDOUT: %.type.067ccc.2: type = fn_type @.2 [template] +// CHECK:STDOUT: %.c3ab6d.2: %.type.067ccc.2 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -99,8 +99,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {} -// CHECK:STDOUT: %.decl.loc23: %.type.1 = fn_decl @.1 [template = constants.%.1] {} {} -// CHECK:STDOUT: %.decl.loc31: %.type.2 = fn_decl @.2 [template = constants.%.2] { +// CHECK:STDOUT: %.decl.loc23: %.type.067ccc.1 = fn_decl @.1 [template = constants.%.c3ab6d.1] {} {} +// CHECK:STDOUT: %.decl.loc31: %.type.067ccc.2 = fn_decl @.2 [template = constants.%.c3ab6d.2] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %i32 = binding_pattern b @@ -203,16 +203,16 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %C.1: type = class_type @C [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%Self) [symbolic] +// CHECK:STDOUT: %C.541: type = class_type @C [template] +// CHECK:STDOUT: %C.f73: type = class_type @C, @C(%Self) [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %C.2 [symbolic] +// CHECK:STDOUT: %require_complete.427: = require_complete_type %U [symbolic] +// CHECK:STDOUT: %require_complete.bb9: = require_complete_type %C.f73 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -230,8 +230,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %self.patt: %C.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %C.f73 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.f73 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %U.patt.loc20: type = symbolic_binding_pattern U, 1 [symbolic = constants.%U.patt] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc20, runtime_param [symbolic = constants.%U.patt] // CHECK:STDOUT: %u.patt: %U = binding_pattern u @@ -240,12 +240,12 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %return.param_patt: %U = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc20_49: type = name_ref U, %U.loc20 [symbolic = constants.%U] -// CHECK:STDOUT: %self.param.loc20: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc20_24.1: type = splice_block %Self.ref.loc20 [symbolic = constants.%C.2] { -// CHECK:STDOUT: %.loc20_24.2: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = constants.%C.2] -// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_24.2 [symbolic = constants.%C.2] +// CHECK:STDOUT: %self.param.loc20: %C.f73 = value_param runtime_param0 +// CHECK:STDOUT: %.loc20_24.1: type = splice_block %Self.ref.loc20 [symbolic = constants.%C.f73] { +// CHECK:STDOUT: %.loc20_24.2: type = specific_constant constants.%C.f73, @C(constants.%Self) [symbolic = constants.%C.f73] +// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_24.2 [symbolic = constants.%C.f73] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20: %C.2 = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %self.loc20: %C.f73 = bind_name self, %self.param.loc20 // CHECK:STDOUT: %U.param.loc20: type = value_param runtime_param // CHECK:STDOUT: %U.loc20: type = bind_symbolic_name U, 1, %U.param.loc20 [symbolic = constants.%U] // CHECK:STDOUT: %u.param.loc20: %U = value_param runtime_param1 @@ -258,7 +258,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.1] {} {} +// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.541] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -274,8 +274,8 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %F.decl: @C.%F.type (%F.type) = fn_decl @F [symbolic = @C.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: %C.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %self.patt: %C.f73 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.f73 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %U.patt.loc20: type = symbolic_binding_pattern U, 1 [symbolic = constants.%U.patt] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc20, runtime_param [symbolic = constants.%U.patt] // CHECK:STDOUT: %u.patt: %U = binding_pattern u @@ -284,12 +284,12 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %return.param_patt: %U = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { // CHECK:STDOUT: %U.ref.loc14_41: type = name_ref U, %U.loc14_22.2 [symbolic = %U.loc14_22.1 (constants.%U)] -// CHECK:STDOUT: %self.param.loc14: @F.%C (%C.2) = value_param runtime_param0 -// CHECK:STDOUT: %.loc14_16.1: type = splice_block %Self.ref.loc14 [symbolic = %C (constants.%C.2)] { -// CHECK:STDOUT: %.loc14_16.2: type = specific_constant constants.%C.2, @C(constants.%Self) [symbolic = %C (constants.%C.2)] -// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_16.2 [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %self.param.loc14: @F.%C (%C.f73) = value_param runtime_param0 +// CHECK:STDOUT: %.loc14_16.1: type = splice_block %Self.ref.loc14 [symbolic = %C (constants.%C.f73)] { +// CHECK:STDOUT: %.loc14_16.2: type = specific_constant constants.%C.f73, @C(constants.%Self) [symbolic = %C (constants.%C.f73)] +// CHECK:STDOUT: %Self.ref.loc14: type = name_ref Self, %.loc14_16.2 [symbolic = %C (constants.%C.f73)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc14: @F.%C (%C.2) = bind_name self, %self.param.loc14 +// CHECK:STDOUT: %self.loc14: @F.%C (%C.f73) = bind_name self, %self.param.loc14 // CHECK:STDOUT: %U.param.loc14: type = value_param runtime_param // CHECK:STDOUT: %U.loc14_22.2: type = bind_symbolic_name U, 1, %U.param.loc14 [symbolic = %U.loc14_22.1 (constants.%U)] // CHECK:STDOUT: %u.param.loc14: @F.%U.loc14_22.1 (%U) = value_param runtime_param1 @@ -301,7 +301,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: .Self = constants.%C.f73 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } @@ -309,15 +309,15 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(@Interface.%Self: %Interface.type, %U.loc14_22.2: type) { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C.2)] +// CHECK:STDOUT: %C: type = class_type @C, @C(%Self) [symbolic = %C (constants.%C.f73)] // CHECK:STDOUT: %U.loc14_22.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_22.1 (constants.%U)] // CHECK:STDOUT: %U.patt.loc14: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc14 (constants.%U.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc20_46: = require_complete_type @F.%U.loc14_22.1 (%U) [symbolic = %require_complete.loc20_46 (constants.%require_complete.1)] -// CHECK:STDOUT: %require_complete.loc20_22: = require_complete_type @F.%C (%C.2) [symbolic = %require_complete.loc20_22 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc20_46: = require_complete_type @F.%U.loc14_22.1 (%U) [symbolic = %require_complete.loc20_46 (constants.%require_complete.427)] +// CHECK:STDOUT: %require_complete.loc20_22: = require_complete_type @F.%C (%C.f73) [symbolic = %require_complete.loc20_22 (constants.%require_complete.bb9)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%self.param_patt: %C.2](%U.param_patt: type, %u.param_patt: %U) -> %U { +// CHECK:STDOUT: fn[%self.param_patt: %C.f73](%U.param_patt: type, %u.param_patt: %U) -> %U { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %u.ref: @F.%U.loc14_22.1 (%U) = name_ref u, %u.loc20 // CHECK:STDOUT: return %u.ref @@ -333,7 +333,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%Self, constants.%U) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %C => constants.%C.2 +// CHECK:STDOUT: %C => constants.%C.f73 // CHECK:STDOUT: %U.loc14_22.1 => constants.%U // CHECK:STDOUT: %U.patt.loc14 => constants.%U // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/member_lookup.carbon b/toolchain/check/testdata/interface/member_lookup.carbon index 95e73ffd078e..f8a36889dfc9 100644 --- a/toolchain/check/testdata/interface/member_lookup.carbon +++ b/toolchain/check/testdata/interface/member_lookup.carbon @@ -52,38 +52,38 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Interface.type.1: type = generic_interface_type @Interface [template] -// CHECK:STDOUT: %Interface.generic: %Interface.type.1 = struct_value () [template] -// CHECK:STDOUT: %Interface.type.2: type = facet_type <@Interface, @Interface(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Interface.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %Interface.type.2, %T [symbolic] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, @Interface.%X [symbolic] -// CHECK:STDOUT: %I.1: %Interface.type.2 = bind_symbolic_name I, 1 [symbolic] -// CHECK:STDOUT: %I.patt.1: %Interface.type.2 = symbolic_binding_pattern I, 1 [symbolic] +// CHECK:STDOUT: %Interface.type.e32: type = generic_interface_type @Interface [template] +// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [template] +// CHECK:STDOUT: %Interface.type.090: type = facet_type <@Interface, @Interface(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Interface.type.090 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %assoc_type.d1a: type = assoc_entity_type %Interface.type.090, %T [symbolic] +// CHECK:STDOUT: %assoc0.04b: %assoc_type.d1a = assoc_entity element0, @Interface.%X [symbolic] +// CHECK:STDOUT: %I.b5f: %Interface.type.090 = bind_symbolic_name I, 1 [symbolic] +// CHECK:STDOUT: %I.patt.630: %Interface.type.090 = symbolic_binding_pattern I, 1 [symbolic] // CHECK:STDOUT: %AccessGeneric.type: type = fn_type @AccessGeneric [template] // CHECK:STDOUT: %AccessGeneric: %AccessGeneric.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Interface.type.2 [symbolic] -// CHECK:STDOUT: %I.as_wit.1: = facet_access_witness %I.1 [symbolic] -// CHECK:STDOUT: %impl.elem0.1: %T = impl_witness_access %I.as_wit.1, element0 [symbolic] +// CHECK:STDOUT: %require_complete.ac4: = require_complete_type %Interface.type.090 [symbolic] +// CHECK:STDOUT: %I.as_wit.37f: = facet_access_witness %I.b5f [symbolic] +// CHECK:STDOUT: %impl.elem0.754: %T = impl_witness_access %I.as_wit.37f, element0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Interface.type.3: type = facet_type <@Interface, @Interface(%i32)> [template] -// CHECK:STDOUT: %I.2: %Interface.type.3 = bind_symbolic_name I, 0 [symbolic] -// CHECK:STDOUT: %I.patt.2: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic] +// CHECK:STDOUT: %Interface.type.697: type = facet_type <@Interface, @Interface(%i32)> [template] +// CHECK:STDOUT: %I.abe: %Interface.type.697 = bind_symbolic_name I, 0 [symbolic] +// CHECK:STDOUT: %I.patt.94b: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic] // CHECK:STDOUT: %AccessConcrete.type: type = fn_type @AccessConcrete [template] // CHECK:STDOUT: %AccessConcrete: %AccessConcrete.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %Interface.type.3, %i32 [template] -// CHECK:STDOUT: %assoc0.2: %assoc_type.2 = assoc_entity element0, @Interface.%X [template] -// CHECK:STDOUT: %I.as_wit.2: = facet_access_witness %I.2 [symbolic] -// CHECK:STDOUT: %impl.elem0.2: %i32 = impl_witness_access %I.as_wit.2, element0 [symbolic] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %assoc_type.4df: type = assoc_entity_type %Interface.type.697, %i32 [template] +// CHECK:STDOUT: %assoc0.b47: %assoc_type.4df = assoc_entity element0, @Interface.%X [template] +// CHECK:STDOUT: %I.as_wit.e95: = facet_access_witness %I.abe [symbolic] +// CHECK:STDOUT: %impl.elem0.c5b: %i32 = impl_witness_access %I.as_wit.e95, element0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -97,7 +97,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: .AccessConcrete = %AccessConcrete.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Interface.decl: %Interface.type.1 = interface_decl @Interface [template = constants.%Interface.generic] { +// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [template = constants.%Interface.generic] { // CHECK:STDOUT: %T.patt.loc4_21.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_21.1, runtime_param [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -107,40 +107,40 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %AccessGeneric.decl: %AccessGeneric.type = fn_decl @AccessGeneric [template = constants.%AccessGeneric] { // CHECK:STDOUT: %T.patt.loc8_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_18.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_18.1, runtime_param [symbolic = %T.patt.loc8_18.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.patt.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.1)] -// CHECK:STDOUT: %I.param_patt: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) = value_param_pattern %I.patt.loc8_28.1, runtime_param [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.1)] +// CHECK:STDOUT: %I.patt.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.630)] +// CHECK:STDOUT: %I.param_patt: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) = value_param_pattern %I.patt.loc8_28.1, runtime_param [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.630)] // CHECK:STDOUT: %return.patt: @AccessGeneric.%T.loc8_18.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessGeneric.%T.loc8_18.2 (%T) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_18.1 [symbolic = %T.loc8_18.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_18.2 (constants.%T)] -// CHECK:STDOUT: %I.param: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) = value_param runtime_param -// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_43.1 [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.2)] { -// CHECK:STDOUT: %Interface.ref: %Interface.type.1 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] +// CHECK:STDOUT: %I.param: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) = value_param runtime_param +// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_43.1 [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.090)] { +// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_42: type = name_ref T, %T.loc8_18.1 [symbolic = %T.loc8_18.2 (constants.%T)] -// CHECK:STDOUT: %Interface.type.loc8_43.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.2)] +// CHECK:STDOUT: %Interface.type.loc8_43.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.090)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) = bind_symbolic_name I, 1, %I.param [symbolic = %I.loc8_28.2 (constants.%I.1)] +// CHECK:STDOUT: %I.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) = bind_symbolic_name I, 1, %I.param [symbolic = %I.loc8_28.2 (constants.%I.b5f)] // CHECK:STDOUT: %return.param: ref @AccessGeneric.%T.loc8_18.2 (%T) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @AccessGeneric.%T.loc8_18.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessConcrete.decl: %AccessConcrete.type = fn_decl @AccessConcrete [template = constants.%AccessConcrete] { -// CHECK:STDOUT: %I.patt.loc12_19.1: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.2)] -// CHECK:STDOUT: %I.param_patt: %Interface.type.3 = value_param_pattern %I.patt.loc12_19.1, runtime_param [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.2)] +// CHECK:STDOUT: %I.patt.loc12_19.1: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.94b)] +// CHECK:STDOUT: %I.param_patt: %Interface.type.697 = value_param_pattern %I.patt.loc12_19.1, runtime_param [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.94b)] // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc12_42: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_42: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %I.param: %Interface.type.3 = value_param runtime_param -// CHECK:STDOUT: %.loc12: type = splice_block %Interface.type [template = constants.%Interface.type.3] { -// CHECK:STDOUT: %Interface.ref: %Interface.type.1 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] +// CHECK:STDOUT: %I.param: %Interface.type.697 = value_param runtime_param +// CHECK:STDOUT: %.loc12: type = splice_block %Interface.type [template = constants.%Interface.type.697] { +// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] // CHECK:STDOUT: %int_32.loc12_33: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_33: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.3] +// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.697] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.loc12_19.1: %Interface.type.3 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc12_19.2 (constants.%I.2)] +// CHECK:STDOUT: %I.loc12_19.1: %Interface.type.697 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc12_19.2 (constants.%I.abe)] // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -151,16 +151,16 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(%T.loc4_21.2)> [symbolic = %Interface.type (constants.%Interface.type.2)] -// CHECK:STDOUT: %Self.2: %Interface.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %require_complete: = require_complete_type @Interface.%T.loc4_21.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Interface.%Interface.type (%Interface.type.2), @Interface.%T.loc4_21.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_12.2: @Interface.%assoc_type (%assoc_type.1) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(%T.loc4_21.2)> [symbolic = %Interface.type (constants.%Interface.type.090)] +// CHECK:STDOUT: %Self.2: %Interface.type.090 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Interface.%T.loc4_21.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Interface.%Interface.type (%Interface.type.090), @Interface.%T.loc4_21.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.d1a)] +// CHECK:STDOUT: %assoc0.loc5_12.2: @Interface.%assoc_type (%assoc_type.d1a) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.04b)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.090) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %X: @Interface.%T.loc4_21.2 (%T) = assoc_const_decl X [template] -// CHECK:STDOUT: %assoc0.loc5_12.1: @Interface.%assoc_type (%assoc_type.1) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc5_12.1: @Interface.%assoc_type (%assoc_type.d1a) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.04b)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -169,47 +169,47 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AccessGeneric(%T.loc8_18.1: type, %I.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2)) { +// CHECK:STDOUT: generic fn @AccessGeneric(%T.loc8_18.1: type, %I.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090)) { // CHECK:STDOUT: %T.loc8_18.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_18.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_18.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_18.2 (constants.%T.patt)] -// CHECK:STDOUT: %Interface.type.loc8_43.2: type = facet_type <@Interface, @Interface(%T.loc8_18.2)> [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.2)] -// CHECK:STDOUT: %I.loc8_28.2: %Interface.type.2 = bind_symbolic_name I, 1 [symbolic = %I.loc8_28.2 (constants.%I.1)] -// CHECK:STDOUT: %I.patt.loc8_28.2: %Interface.type.2 = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.1)] +// CHECK:STDOUT: %Interface.type.loc8_43.2: type = facet_type <@Interface, @Interface(%T.loc8_18.2)> [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.090)] +// CHECK:STDOUT: %I.loc8_28.2: %Interface.type.090 = bind_symbolic_name I, 1 [symbolic = %I.loc8_28.2 (constants.%I.b5f)] +// CHECK:STDOUT: %I.patt.loc8_28.2: %Interface.type.090 = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.630)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc9_10: = require_complete_type @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) [symbolic = %require_complete.loc9_10 (constants.%require_complete.2)] -// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2), @AccessGeneric.%T.loc8_18.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.1)] -// CHECK:STDOUT: %assoc0: @AccessGeneric.%assoc_type (%assoc_type.1) = assoc_entity element0, @Interface.%X [symbolic = %assoc0 (constants.%assoc0.1)] -// CHECK:STDOUT: %I.as_wit.loc9_11.2: = facet_access_witness %I.loc8_28.2 [symbolic = %I.as_wit.loc9_11.2 (constants.%I.as_wit.1)] -// CHECK:STDOUT: %impl.elem0.loc9_11.2: @AccessGeneric.%T.loc8_18.2 (%T) = impl_witness_access %I.as_wit.loc9_11.2, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.1)] -// CHECK:STDOUT: %require_complete.loc9_13: = require_complete_type @AccessGeneric.%T.loc8_18.2 (%T) [symbolic = %require_complete.loc9_13 (constants.%require_complete.1)] +// CHECK:STDOUT: %require_complete.loc9_10: = require_complete_type @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) [symbolic = %require_complete.loc9_10 (constants.%require_complete.ac4)] +// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090), @AccessGeneric.%T.loc8_18.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.d1a)] +// CHECK:STDOUT: %assoc0: @AccessGeneric.%assoc_type (%assoc_type.d1a) = assoc_entity element0, @Interface.%X [symbolic = %assoc0 (constants.%assoc0.04b)] +// CHECK:STDOUT: %I.as_wit.loc9_11.2: = facet_access_witness %I.loc8_28.2 [symbolic = %I.as_wit.loc9_11.2 (constants.%I.as_wit.37f)] +// CHECK:STDOUT: %impl.elem0.loc9_11.2: @AccessGeneric.%T.loc8_18.2 (%T) = impl_witness_access %I.as_wit.loc9_11.2, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.754)] +// CHECK:STDOUT: %require_complete.loc9_13: = require_complete_type @AccessGeneric.%T.loc8_18.2 (%T) [symbolic = %require_complete.loc9_13 (constants.%require_complete.db1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%I.param_patt: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2)) -> @AccessGeneric.%T.loc8_18.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%I.param_patt: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090)) -> @AccessGeneric.%T.loc8_18.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %I.ref: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.2) = name_ref I, %I.loc8_28.1 [symbolic = %I.loc8_28.2 (constants.%I.1)] -// CHECK:STDOUT: %.loc9: @AccessGeneric.%assoc_type (%assoc_type.1) = specific_constant @Interface.%assoc0.loc5_12.1, @Interface(constants.%T) [symbolic = %assoc0 (constants.%assoc0.1)] -// CHECK:STDOUT: %X.ref: @AccessGeneric.%assoc_type (%assoc_type.1) = name_ref X, %.loc9 [symbolic = %assoc0 (constants.%assoc0.1)] -// CHECK:STDOUT: %I.as_wit.loc9_11.1: = facet_access_witness %I.ref [symbolic = %I.as_wit.loc9_11.2 (constants.%I.as_wit.1)] -// CHECK:STDOUT: %impl.elem0.loc9_11.1: @AccessGeneric.%T.loc8_18.2 (%T) = impl_witness_access %I.as_wit.loc9_11.1, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.1)] +// CHECK:STDOUT: %I.ref: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.090) = name_ref I, %I.loc8_28.1 [symbolic = %I.loc8_28.2 (constants.%I.b5f)] +// CHECK:STDOUT: %.loc9: @AccessGeneric.%assoc_type (%assoc_type.d1a) = specific_constant @Interface.%assoc0.loc5_12.1, @Interface(constants.%T) [symbolic = %assoc0 (constants.%assoc0.04b)] +// CHECK:STDOUT: %X.ref: @AccessGeneric.%assoc_type (%assoc_type.d1a) = name_ref X, %.loc9 [symbolic = %assoc0 (constants.%assoc0.04b)] +// CHECK:STDOUT: %I.as_wit.loc9_11.1: = facet_access_witness %I.ref [symbolic = %I.as_wit.loc9_11.2 (constants.%I.as_wit.37f)] +// CHECK:STDOUT: %impl.elem0.loc9_11.1: @AccessGeneric.%T.loc8_18.2 (%T) = impl_witness_access %I.as_wit.loc9_11.1, element0 [symbolic = %impl.elem0.loc9_11.2 (constants.%impl.elem0.754)] // CHECK:STDOUT: return %impl.elem0.loc9_11.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AccessConcrete(%I.loc12_19.1: %Interface.type.3) { -// CHECK:STDOUT: %I.loc12_19.2: %Interface.type.3 = bind_symbolic_name I, 0 [symbolic = %I.loc12_19.2 (constants.%I.2)] -// CHECK:STDOUT: %I.patt.loc12_19.2: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.2)] +// CHECK:STDOUT: generic fn @AccessConcrete(%I.loc12_19.1: %Interface.type.697) { +// CHECK:STDOUT: %I.loc12_19.2: %Interface.type.697 = bind_symbolic_name I, 0 [symbolic = %I.loc12_19.2 (constants.%I.abe)] +// CHECK:STDOUT: %I.patt.loc12_19.2: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.94b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.as_wit.loc13_11.2: = facet_access_witness %I.loc12_19.2 [symbolic = %I.as_wit.loc13_11.2 (constants.%I.as_wit.2)] -// CHECK:STDOUT: %impl.elem0.loc13_11.2: %i32 = impl_witness_access %I.as_wit.loc13_11.2, element0 [symbolic = %impl.elem0.loc13_11.2 (constants.%impl.elem0.2)] +// CHECK:STDOUT: %I.as_wit.loc13_11.2: = facet_access_witness %I.loc12_19.2 [symbolic = %I.as_wit.loc13_11.2 (constants.%I.as_wit.e95)] +// CHECK:STDOUT: %impl.elem0.loc13_11.2: %i32 = impl_witness_access %I.as_wit.loc13_11.2, element0 [symbolic = %impl.elem0.loc13_11.2 (constants.%impl.elem0.c5b)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.3) -> %i32 { +// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.697) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %I.ref: %Interface.type.3 = name_ref I, %I.loc12_19.1 [symbolic = %I.loc12_19.2 (constants.%I.2)] -// CHECK:STDOUT: %.loc13: %assoc_type.2 = specific_constant @Interface.%assoc0.loc5_12.1, @Interface(constants.%i32) [template = constants.%assoc0.2] -// CHECK:STDOUT: %X.ref: %assoc_type.2 = name_ref X, %.loc13 [template = constants.%assoc0.2] -// CHECK:STDOUT: %I.as_wit.loc13_11.1: = facet_access_witness %I.ref [symbolic = %I.as_wit.loc13_11.2 (constants.%I.as_wit.2)] -// CHECK:STDOUT: %impl.elem0.loc13_11.1: %i32 = impl_witness_access %I.as_wit.loc13_11.1, element0 [symbolic = %impl.elem0.loc13_11.2 (constants.%impl.elem0.2)] +// CHECK:STDOUT: %I.ref: %Interface.type.697 = name_ref I, %I.loc12_19.1 [symbolic = %I.loc12_19.2 (constants.%I.abe)] +// CHECK:STDOUT: %.loc13: %assoc_type.4df = specific_constant @Interface.%assoc0.loc5_12.1, @Interface(constants.%i32) [template = constants.%assoc0.b47] +// CHECK:STDOUT: %X.ref: %assoc_type.4df = name_ref X, %.loc13 [template = constants.%assoc0.b47] +// CHECK:STDOUT: %I.as_wit.loc13_11.1: = facet_access_witness %I.ref [symbolic = %I.as_wit.loc13_11.2 (constants.%I.as_wit.e95)] +// CHECK:STDOUT: %impl.elem0.loc13_11.1: %i32 = impl_witness_access %I.as_wit.loc13_11.1, element0 [symbolic = %impl.elem0.loc13_11.2 (constants.%impl.elem0.c5b)] // CHECK:STDOUT: return %impl.elem0.loc13_11.1 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -219,21 +219,21 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type => constants.%Interface.type.2 +// CHECK:STDOUT: %Interface.type => constants.%Interface.type.090 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.1 -// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.d1a +// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.04b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Interface(%T.loc4_21.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @AccessGeneric(constants.%T, constants.%I.1) { +// CHECK:STDOUT: specific @AccessGeneric(constants.%T, constants.%I.b5f) { // CHECK:STDOUT: %T.loc8_18.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_18.2 => constants.%T -// CHECK:STDOUT: %Interface.type.loc8_43.2 => constants.%Interface.type.2 -// CHECK:STDOUT: %I.loc8_28.2 => constants.%I.1 -// CHECK:STDOUT: %I.patt.loc8_28.2 => constants.%I.1 +// CHECK:STDOUT: %Interface.type.loc8_43.2 => constants.%Interface.type.090 +// CHECK:STDOUT: %I.loc8_28.2 => constants.%I.b5f +// CHECK:STDOUT: %I.patt.loc8_28.2 => constants.%I.b5f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Interface(@AccessGeneric.%T.loc8_18.2) {} @@ -243,16 +243,16 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type => constants.%Interface.type.3 +// CHECK:STDOUT: %Interface.type => constants.%Interface.type.697 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.4df +// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.b47 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AccessConcrete(constants.%I.2) { -// CHECK:STDOUT: %I.loc12_19.2 => constants.%I.2 -// CHECK:STDOUT: %I.patt.loc12_19.2 => constants.%I.2 +// CHECK:STDOUT: specific @AccessConcrete(constants.%I.abe) { +// CHECK:STDOUT: %I.loc12_19.2 => constants.%I.abe +// CHECK:STDOUT: %I.patt.loc12_19.2 => constants.%I.abe // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_no_member.carbon @@ -260,34 +260,34 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Interface.type.1: type = generic_interface_type @Interface [template] -// CHECK:STDOUT: %Interface.generic: %Interface.type.1 = struct_value () [template] -// CHECK:STDOUT: %Interface.type.2: type = facet_type <@Interface, @Interface(%T)> [symbolic] -// CHECK:STDOUT: %Self: %Interface.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %Interface.type.2, %T [symbolic] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, @Interface.%X [symbolic] -// CHECK:STDOUT: %I.1: %Interface.type.2 = bind_symbolic_name I, 1 [symbolic] -// CHECK:STDOUT: %I.patt.1: %Interface.type.2 = symbolic_binding_pattern I, 1 [symbolic] +// CHECK:STDOUT: %Interface.type.e32: type = generic_interface_type @Interface [template] +// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [template] +// CHECK:STDOUT: %Interface.type.090: type = facet_type <@Interface, @Interface(%T)> [symbolic] +// CHECK:STDOUT: %Self: %Interface.type.090 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %assoc_type.d1a: type = assoc_entity_type %Interface.type.090, %T [symbolic] +// CHECK:STDOUT: %assoc0.04b: %assoc_type.d1a = assoc_entity element0, @Interface.%X [symbolic] +// CHECK:STDOUT: %I.b5f: %Interface.type.090 = bind_symbolic_name I, 1 [symbolic] +// CHECK:STDOUT: %I.patt.630: %Interface.type.090 = symbolic_binding_pattern I, 1 [symbolic] // CHECK:STDOUT: %AccessMissingGeneric.type: type = fn_type @AccessMissingGeneric [template] // CHECK:STDOUT: %AccessMissingGeneric: %AccessMissingGeneric.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Interface.type.2 [symbolic] +// CHECK:STDOUT: %require_complete.ac4: = require_complete_type %Interface.type.090 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Interface.type.3: type = facet_type <@Interface, @Interface(%i32)> [template] -// CHECK:STDOUT: %I.2: %Interface.type.3 = bind_symbolic_name I, 0 [symbolic] -// CHECK:STDOUT: %I.patt.2: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic] +// CHECK:STDOUT: %Interface.type.697: type = facet_type <@Interface, @Interface(%i32)> [template] +// CHECK:STDOUT: %I.abe: %Interface.type.697 = bind_symbolic_name I, 0 [symbolic] +// CHECK:STDOUT: %I.patt.94b: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic] // CHECK:STDOUT: %AccessMissingConcrete.type: type = fn_type @AccessMissingConcrete [template] // CHECK:STDOUT: %AccessMissingConcrete: %AccessMissingConcrete.type = struct_value () [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %Interface.type.3, %i32 [template] -// CHECK:STDOUT: %assoc0.2: %assoc_type.2 = assoc_entity element0, @Interface.%X [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %assoc_type.4df: type = assoc_entity_type %Interface.type.697, %i32 [template] +// CHECK:STDOUT: %assoc0.b47: %assoc_type.4df = assoc_entity element0, @Interface.%X [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -301,7 +301,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: .AccessMissingConcrete = %AccessMissingConcrete.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Interface.decl: %Interface.type.1 = interface_decl @Interface [template = constants.%Interface.generic] { +// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [template = constants.%Interface.generic] { // CHECK:STDOUT: %T.patt.loc4_21.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_21.1, runtime_param [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -311,40 +311,40 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %AccessMissingGeneric.decl: %AccessMissingGeneric.type = fn_decl @AccessMissingGeneric [template = constants.%AccessMissingGeneric] { // CHECK:STDOUT: %T.patt.loc8_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_25.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_25.1, runtime_param [symbolic = %T.patt.loc8_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %I.patt.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.1)] -// CHECK:STDOUT: %I.param_patt: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) = value_param_pattern %I.patt.loc8_35.1, runtime_param [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.1)] +// CHECK:STDOUT: %I.patt.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.630)] +// CHECK:STDOUT: %I.param_patt: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) = value_param_pattern %I.patt.loc8_35.1, runtime_param [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.630)] // CHECK:STDOUT: %return.patt: @AccessMissingGeneric.%T.loc8_25.2 (%T) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @AccessMissingGeneric.%T.loc8_25.2 (%T) = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %T.ref.loc8_56: type = name_ref T, %T.loc8_25.1 [symbolic = %T.loc8_25.2 (constants.%T)] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc8_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_25.2 (constants.%T)] -// CHECK:STDOUT: %I.param: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) = value_param runtime_param -// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_50.1 [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.2)] { -// CHECK:STDOUT: %Interface.ref: %Interface.type.1 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] +// CHECK:STDOUT: %I.param: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) = value_param runtime_param +// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_50.1 [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.090)] { +// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] // CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_25.1 [symbolic = %T.loc8_25.2 (constants.%T)] -// CHECK:STDOUT: %Interface.type.loc8_50.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.2)] +// CHECK:STDOUT: %Interface.type.loc8_50.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.090)] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) = bind_symbolic_name I, 1, %I.param [symbolic = %I.loc8_35.2 (constants.%I.1)] +// CHECK:STDOUT: %I.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) = bind_symbolic_name I, 1, %I.param [symbolic = %I.loc8_35.2 (constants.%I.b5f)] // CHECK:STDOUT: %return.param: ref @AccessMissingGeneric.%T.loc8_25.2 (%T) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @AccessMissingGeneric.%T.loc8_25.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AccessMissingConcrete.decl: %AccessMissingConcrete.type = fn_decl @AccessMissingConcrete [template = constants.%AccessMissingConcrete] { -// CHECK:STDOUT: %I.patt.loc16_26.1: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.2)] -// CHECK:STDOUT: %I.param_patt: %Interface.type.3 = value_param_pattern %I.patt.loc16_26.1, runtime_param [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.2)] +// CHECK:STDOUT: %I.patt.loc16_26.1: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.94b)] +// CHECK:STDOUT: %I.param_patt: %Interface.type.697 = value_param_pattern %I.patt.loc16_26.1, runtime_param [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.94b)] // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc16_49: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %I.param: %Interface.type.3 = value_param runtime_param -// CHECK:STDOUT: %.loc16: type = splice_block %Interface.type [template = constants.%Interface.type.3] { -// CHECK:STDOUT: %Interface.ref: %Interface.type.1 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] +// CHECK:STDOUT: %I.param: %Interface.type.697 = value_param runtime_param +// CHECK:STDOUT: %.loc16: type = splice_block %Interface.type [template = constants.%Interface.type.697] { +// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic] // CHECK:STDOUT: %int_32.loc16_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc16_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.3] +// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.697] // CHECK:STDOUT: } -// CHECK:STDOUT: %I.loc16_26.1: %Interface.type.3 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc16_26.2 (constants.%I.2)] +// CHECK:STDOUT: %I.loc16_26.1: %Interface.type.697 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc16_26.2 (constants.%I.abe)] // CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -355,16 +355,16 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(%T.loc4_21.2)> [symbolic = %Interface.type (constants.%Interface.type.2)] -// CHECK:STDOUT: %Self.2: %Interface.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %require_complete: = require_complete_type @Interface.%T.loc4_21.2 (%T) [symbolic = %require_complete (constants.%require_complete.1)] -// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Interface.%Interface.type (%Interface.type.2), @Interface.%T.loc4_21.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc5_12.2: @Interface.%assoc_type (%assoc_type.1) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(%T.loc4_21.2)> [symbolic = %Interface.type (constants.%Interface.type.090)] +// CHECK:STDOUT: %Self.2: %Interface.type.090 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Interface.%T.loc4_21.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Interface.%Interface.type (%Interface.type.090), @Interface.%T.loc4_21.2 (%T) [symbolic = %assoc_type (constants.%assoc_type.d1a)] +// CHECK:STDOUT: %assoc0.loc5_12.2: @Interface.%assoc_type (%assoc_type.d1a) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.04b)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.090) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %X: @Interface.%T.loc4_21.2 (%T) = assoc_const_decl X [template] -// CHECK:STDOUT: %assoc0.loc5_12.1: @Interface.%assoc_type (%assoc_type.1) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc5_12.1: @Interface.%assoc_type (%assoc_type.d1a) = assoc_entity element0, %X [symbolic = %assoc0.loc5_12.2 (constants.%assoc0.04b)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -373,33 +373,33 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AccessMissingGeneric(%T.loc8_25.1: type, %I.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2)) { +// CHECK:STDOUT: generic fn @AccessMissingGeneric(%T.loc8_25.1: type, %I.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090)) { // CHECK:STDOUT: %T.loc8_25.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_25.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc8_25.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_25.2 (constants.%T.patt)] -// CHECK:STDOUT: %Interface.type.loc8_50.2: type = facet_type <@Interface, @Interface(%T.loc8_25.2)> [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.2)] -// CHECK:STDOUT: %I.loc8_35.2: %Interface.type.2 = bind_symbolic_name I, 1 [symbolic = %I.loc8_35.2 (constants.%I.1)] -// CHECK:STDOUT: %I.patt.loc8_35.2: %Interface.type.2 = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.1)] +// CHECK:STDOUT: %Interface.type.loc8_50.2: type = facet_type <@Interface, @Interface(%T.loc8_25.2)> [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.090)] +// CHECK:STDOUT: %I.loc8_35.2: %Interface.type.090 = bind_symbolic_name I, 1 [symbolic = %I.loc8_35.2 (constants.%I.b5f)] +// CHECK:STDOUT: %I.patt.loc8_35.2: %Interface.type.090 = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.630)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) [symbolic = %require_complete (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) [symbolic = %require_complete (constants.%require_complete.ac4)] // CHECK:STDOUT: -// CHECK:STDOUT: fn[%T.param_patt: type](%I.param_patt: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2)) -> @AccessMissingGeneric.%T.loc8_25.2 (%T) { +// CHECK:STDOUT: fn[%T.param_patt: type](%I.param_patt: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090)) -> @AccessMissingGeneric.%T.loc8_25.2 (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %I.ref: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.2) = name_ref I, %I.loc8_35.1 [symbolic = %I.loc8_35.2 (constants.%I.1)] +// CHECK:STDOUT: %I.ref: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.090) = name_ref I, %I.loc8_35.1 [symbolic = %I.loc8_35.2 (constants.%I.b5f)] // CHECK:STDOUT: %nonesuch.ref: = name_ref nonesuch, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @AccessMissingConcrete(%I.loc16_26.1: %Interface.type.3) { -// CHECK:STDOUT: %I.loc16_26.2: %Interface.type.3 = bind_symbolic_name I, 0 [symbolic = %I.loc16_26.2 (constants.%I.2)] -// CHECK:STDOUT: %I.patt.loc16_26.2: %Interface.type.3 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.2)] +// CHECK:STDOUT: generic fn @AccessMissingConcrete(%I.loc16_26.1: %Interface.type.697) { +// CHECK:STDOUT: %I.loc16_26.2: %Interface.type.697 = bind_symbolic_name I, 0 [symbolic = %I.loc16_26.2 (constants.%I.abe)] +// CHECK:STDOUT: %I.patt.loc16_26.2: %Interface.type.697 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.94b)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.3) -> %i32 { +// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.697) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %I.ref: %Interface.type.3 = name_ref I, %I.loc16_26.1 [symbolic = %I.loc16_26.2 (constants.%I.2)] +// CHECK:STDOUT: %I.ref: %Interface.type.697 = name_ref I, %I.loc16_26.1 [symbolic = %I.loc16_26.2 (constants.%I.abe)] // CHECK:STDOUT: %nonesuch.ref: = name_ref nonesuch, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -410,21 +410,21 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type => constants.%Interface.type.2 +// CHECK:STDOUT: %Interface.type => constants.%Interface.type.090 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %require_complete => constants.%require_complete.1 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.1 -// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.d1a +// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.04b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Interface(%T.loc4_21.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @AccessMissingGeneric(constants.%T, constants.%I.1) { +// CHECK:STDOUT: specific @AccessMissingGeneric(constants.%T, constants.%I.b5f) { // CHECK:STDOUT: %T.loc8_25.2 => constants.%T // CHECK:STDOUT: %T.patt.loc8_25.2 => constants.%T -// CHECK:STDOUT: %Interface.type.loc8_50.2 => constants.%Interface.type.2 -// CHECK:STDOUT: %I.loc8_35.2 => constants.%I.1 -// CHECK:STDOUT: %I.patt.loc8_35.2 => constants.%I.1 +// CHECK:STDOUT: %Interface.type.loc8_50.2 => constants.%Interface.type.090 +// CHECK:STDOUT: %I.loc8_35.2 => constants.%I.b5f +// CHECK:STDOUT: %I.patt.loc8_35.2 => constants.%I.b5f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Interface(@AccessMissingGeneric.%T.loc8_25.2) {} @@ -434,15 +434,15 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 { // CHECK:STDOUT: %T.patt.loc4_21.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Interface.type => constants.%Interface.type.3 +// CHECK:STDOUT: %Interface.type => constants.%Interface.type.697 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.2 -// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.4df +// CHECK:STDOUT: %assoc0.loc5_12.2 => constants.%assoc0.b47 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @AccessMissingConcrete(constants.%I.2) { -// CHECK:STDOUT: %I.loc16_26.2 => constants.%I.2 -// CHECK:STDOUT: %I.patt.loc16_26.2 => constants.%I.2 +// CHECK:STDOUT: specific @AccessMissingConcrete(constants.%I.abe) { +// CHECK:STDOUT: %I.loc16_26.2 => constants.%I.abe +// CHECK:STDOUT: %I.patt.loc16_26.2 => constants.%I.abe // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon b/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon index 6b78eb87f96f..361b21641077 100644 --- a/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/assoc_const_in_generic.carbon @@ -28,31 +28,31 @@ fn H() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.bc4: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 2 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 2 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F, @I(%T) [symbolic] -// CHECK:STDOUT: %F: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %I.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @I.%F.decl [symbolic] +// CHECK:STDOUT: %F.type.c41: type = fn_type @F, @I(%T) [symbolic] +// CHECK:STDOUT: %F: %F.type.c41 = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.b9c: type = assoc_entity_type %I.type.bc4, %F.type.c41 [symbolic] +// CHECK:STDOUT: %assoc0.8ee: %F.assoc_type.b9c = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %I.type.2 [symbolic] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %F.assoc_type.1 [symbolic] +// CHECK:STDOUT: %require_complete.ffb: = require_complete_type %I.type.bc4 [symbolic] +// CHECK:STDOUT: %require_complete.d07: = require_complete_type %F.assoc_type.b9c [symbolic] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %G.specific_fn: = specific_function %G, @G(%empty_struct_type) [template] -// CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%empty_struct_type)> [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %I.type.3 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F, @I(%empty_struct_type) [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %I.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @I.%F.decl [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %F.assoc_type.2 [template] +// CHECK:STDOUT: %I.type.06d: type = facet_type <@I, @I(%empty_struct_type)> [template] +// CHECK:STDOUT: %complete_type.453: = complete_type_witness %I.type.06d [template] +// CHECK:STDOUT: %F.type.15a: type = fn_type @F, @I(%empty_struct_type) [template] +// CHECK:STDOUT: %F.assoc_type.6b9: type = assoc_entity_type %I.type.06d, %F.type.15a [template] +// CHECK:STDOUT: %assoc0.006: %F.assoc_type.6b9 = assoc_entity element0, @I.%F.decl [template] +// CHECK:STDOUT: %complete_type.66e: = complete_type_witness %F.assoc_type.6b9 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,7 +61,7 @@ fn H() { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -83,16 +83,16 @@ fn H() { // CHECK:STDOUT: %T.patt.loc11_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc11_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @I.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc12_22.2: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc12_22.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc11_13.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self.2: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type.c41)] +// CHECK:STDOUT: %F: @I.%F.type (%F.type.c41) = struct_value () [symbolic = %F (constants.%F)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.bc4), @I.%F.type (%F.type.c41) [symbolic = %F.assoc_type (constants.%F.assoc_type.b9c)] +// CHECK:STDOUT: %assoc0.loc12_22.2: @I.%F.assoc_type (%F.assoc_type.b9c) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc12_22.2 (constants.%assoc0.8ee)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.1) = fn_decl @F [symbolic = @I.%F (constants.%F)] { +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.bc4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %F.decl: @I.%F.type (%F.type.c41) = fn_decl @F [symbolic = @I.%F (constants.%F)] { // CHECK:STDOUT: %U.patt.loc12_8.2: type = symbolic_binding_pattern U, 2 [symbolic = %U.patt.loc12_8.1 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc12_8.2, runtime_param [symbolic = %U.patt.loc12_8.1 (constants.%U.patt)] // CHECK:STDOUT: %return.patt: @F.%U.loc12_8.1 (%U) = return_slot_pattern @@ -104,7 +104,7 @@ fn H() { // CHECK:STDOUT: %return.param: ref @F.%U.loc12_8.1 (%U) = out_param runtime_param0 // CHECK:STDOUT: %return: ref @F.%U.loc12_8.1 (%U) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc12_22.1: @I.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc12_22.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc12_22.1: @I.%F.assoc_type (%F.assoc_type.b9c) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc12_22.2 (constants.%assoc0.8ee)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -113,7 +113,7 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%T.loc11_13.1: type, @I.%Self.1: @I.%I.type (%I.type.2), %U.loc12_8.2: type) { +// CHECK:STDOUT: generic fn @F(@I.%T.loc11_13.1: type, @I.%Self.1: @I.%I.type (%I.type.bc4), %U.loc12_8.2: type) { // CHECK:STDOUT: %U.loc12_8.1: type = bind_symbolic_name U, 2 [symbolic = %U.loc12_8.1 (constants.%U)] // CHECK:STDOUT: %U.patt.loc12_8.1: type = symbolic_binding_pattern U, 2 [symbolic = %U.patt.loc12_8.1 (constants.%U.patt)] // CHECK:STDOUT: @@ -125,20 +125,20 @@ fn H() { // CHECK:STDOUT: %T.patt.loc15_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_6.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type.loc19_6.2: type = facet_type <@I, @I(%T.loc15_6.2)> [symbolic = %I.type.loc19_6.2 (constants.%I.type.2)] -// CHECK:STDOUT: %require_complete.loc19_7.1: = require_complete_type @G.%I.type.loc19_6.2 (%I.type.2) [symbolic = %require_complete.loc19_7.1 (constants.%require_complete.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc15_6.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @G.%I.type.loc19_6.2 (%I.type.2), @G.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @G.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.1)] -// CHECK:STDOUT: %require_complete.loc19_7.2: = require_complete_type @G.%F.assoc_type (%F.assoc_type.1) [symbolic = %require_complete.loc19_7.2 (constants.%require_complete.2)] +// CHECK:STDOUT: %I.type.loc19_6.2: type = facet_type <@I, @I(%T.loc15_6.2)> [symbolic = %I.type.loc19_6.2 (constants.%I.type.bc4)] +// CHECK:STDOUT: %require_complete.loc19_7.1: = require_complete_type @G.%I.type.loc19_6.2 (%I.type.bc4) [symbolic = %require_complete.loc19_7.1 (constants.%require_complete.ffb)] +// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc15_6.2) [symbolic = %F.type (constants.%F.type.c41)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @G.%I.type.loc19_6.2 (%I.type.bc4), @G.%F.type (%F.type.c41) [symbolic = %F.assoc_type (constants.%F.assoc_type.b9c)] +// CHECK:STDOUT: %assoc0: @G.%F.assoc_type (%F.assoc_type.b9c) = assoc_entity element0, @I.%F.decl [symbolic = %assoc0 (constants.%assoc0.8ee)] +// CHECK:STDOUT: %require_complete.loc19_7.2: = require_complete_type @G.%F.assoc_type (%F.assoc_type.b9c) [symbolic = %require_complete.loc19_7.2 (constants.%require_complete.d07)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %I.ref: %I.type.1 = name_ref I, file.%I.decl [template = constants.%I.generic] +// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic] // CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] -// CHECK:STDOUT: %I.type.loc19_6.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc19_6.2 (constants.%I.type.2)] -// CHECK:STDOUT: %.loc19: @G.%F.assoc_type (%F.assoc_type.1) = specific_constant @I.%assoc0.loc12_22.1, @I(constants.%T) [symbolic = %assoc0 (constants.%assoc0.1)] -// CHECK:STDOUT: %F.ref: @G.%F.assoc_type (%F.assoc_type.1) = name_ref F, %.loc19 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %I.type.loc19_6.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc19_6.2 (constants.%I.type.bc4)] +// CHECK:STDOUT: %.loc19: @G.%F.assoc_type (%F.assoc_type.b9c) = specific_constant @I.%assoc0.loc12_22.1, @I(constants.%T) [symbolic = %assoc0 (constants.%assoc0.8ee)] +// CHECK:STDOUT: %F.ref: @G.%F.assoc_type (%F.assoc_type.b9c) = name_ref F, %.loc19 [symbolic = %assoc0 (constants.%assoc0.8ee)] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -158,12 +158,12 @@ fn H() { // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.1 +// CHECK:STDOUT: %F.type => constants.%F.type.c41 // CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.1 -// CHECK:STDOUT: %assoc0.loc12_22.2 => constants.%assoc0.1 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.b9c +// CHECK:STDOUT: %assoc0.loc12_22.2 => constants.%assoc0.8ee // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T, constants.%Self, constants.%U) { @@ -185,12 +185,12 @@ fn H() { // CHECK:STDOUT: %T.patt.loc15_6.2 => constants.%empty_struct_type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type.loc19_6.2 => constants.%I.type.3 -// CHECK:STDOUT: %require_complete.loc19_7.1 => constants.%complete_type.1 -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 -// CHECK:STDOUT: %require_complete.loc19_7.2 => constants.%complete_type.2 +// CHECK:STDOUT: %I.type.loc19_6.2 => constants.%I.type.06d +// CHECK:STDOUT: %require_complete.loc19_7.1 => constants.%complete_type.453 +// CHECK:STDOUT: %F.type => constants.%F.type.15a +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.6b9 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.006 +// CHECK:STDOUT: %require_complete.loc19_7.2 => constants.%complete_type.66e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%empty_struct_type) { diff --git a/toolchain/check/testdata/interface/no_prelude/basic.carbon b/toolchain/check/testdata/interface/no_prelude/basic.carbon index 367628ab4d09..05d19bd8ad8b 100644 --- a/toolchain/check/testdata/interface/no_prelude/basic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/basic.carbon @@ -21,9 +21,9 @@ interface ForwardDeclared { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template] -// CHECK:STDOUT: %Self.1: %Empty.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.e1a: %Empty.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template] -// CHECK:STDOUT: %Self.2: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.975: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %ForwardDeclared.type, %F.type [template] @@ -41,7 +41,7 @@ interface ForwardDeclared { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { -// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e1a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -49,7 +49,7 @@ interface ForwardDeclared { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared { -// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.975] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: @@ -64,5 +64,5 @@ interface ForwardDeclared { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.2) {} +// CHECK:STDOUT: specific @F(constants.%Self.975) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon b/toolchain/check/testdata/interface/no_prelude/default_fn.carbon index 24ffce1c4a9f..d246cfae7594 100644 --- a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon +++ b/toolchain/check/testdata/interface/no_prelude/default_fn.carbon @@ -29,14 +29,14 @@ class C { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.type.916: type = fn_type @F.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.1 [template] +// CHECK:STDOUT: %F.61d: %F.type.916 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type.916 [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.a44: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.b0b: %F.type.a44 = struct_value () [template] // CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] @@ -52,7 +52,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.916 = fn_decl @F.1 [template = constants.%F.61d] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -62,7 +62,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %I.ref { -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.a44 = fn_decl @F.2 [template = constants.%F.b0b] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -98,7 +98,7 @@ class C { // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c // CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [template = constants.%I.type] // CHECK:STDOUT: %F.ref: %F.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %impl.elem0: %F.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.2] +// CHECK:STDOUT: %impl.elem0: %F.type.916 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.b0b] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/no_prelude/export_name.carbon b/toolchain/check/testdata/interface/no_prelude/export_name.carbon index ca81fdbaf527..b199820a7acb 100644 --- a/toolchain/check/testdata/interface/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/interface/no_prelude/export_name.carbon @@ -67,8 +67,8 @@ fn UseEmpty(i: I) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, I, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//base, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.9f4: type = import_ref Main//base, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.f8c = import_ref Main//base, inst15 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -76,12 +76,12 @@ fn UseEmpty(i: I) {} // CHECK:STDOUT: .I = %I // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %I: type = export I, imports.%import_ref.1 [template = constants.%I.type] +// CHECK:STDOUT: %I: type = export I, imports.%import_ref.9f4 [template = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.f8c // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: @@ -94,13 +94,13 @@ fn UseEmpty(i: I) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, I, loaded [template = constants.%I.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//export, inst18 [indirect], unloaded +// CHECK:STDOUT: %import_ref.042: type = import_ref Main//export, I, loaded [template = constants.%I.type] +// CHECK:STDOUT: %import_ref.aef = import_ref Main//export, inst18 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .I = imports.%import_ref.1 +// CHECK:STDOUT: .I = imports.%import_ref.042 // CHECK:STDOUT: .UseEmpty = %UseEmpty.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -109,14 +109,14 @@ fn UseEmpty(i: I) {} // CHECK:STDOUT: %i.param_patt: %I.type = value_param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %i.param: %I.type = value_param runtime_param0 -// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.1 [template = constants.%I.type] +// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%import_ref.042 [template = constants.%I.type] // CHECK:STDOUT: %i: %I.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.aef // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_add_member_outside_definition.carbon b/toolchain/check/testdata/interface/no_prelude/fail_add_member_outside_definition.carbon index fb35fe5cfe34..0da6526a9c19 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_add_member_outside_definition.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_add_member_outside_definition.carbon @@ -35,18 +35,18 @@ interface Outer { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] -// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] +// CHECK:STDOUT: %Self.843: %Interface.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.402: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.3e6: %F.type.402 = struct_value () [template] // CHECK:STDOUT: %Outer.type: type = facet_type <@Outer> [template] -// CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Inner.type.1: type = facet_type <@Inner> [template] -// CHECK:STDOUT: %Inner.type.2: type = facet_type <@Inner, @Inner(%Self.2)> [symbolic] -// CHECK:STDOUT: %Self.3: %Inner.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.2) [symbolic] -// CHECK:STDOUT: %.1: %.type = struct_value () [symbolic] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2, @Inner(%Self.2) [symbolic] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [symbolic] +// CHECK:STDOUT: %Self.3ec: %Outer.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Inner.type.9b0: type = facet_type <@Inner> [template] +// CHECK:STDOUT: %Inner.type.fea: type = facet_type <@Inner, @Inner(%Self.3ec)> [symbolic] +// CHECK:STDOUT: %Self.306: %Inner.type.fea = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.3ec) [symbolic] +// CHECK:STDOUT: %.0d1: %.type = struct_value () [symbolic] +// CHECK:STDOUT: %F.type.5e1: type = fn_type @F.2, @Inner(%Self.3ec) [symbolic] +// CHECK:STDOUT: %F.dca: %F.type.5e1 = struct_value () [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -55,12 +55,12 @@ interface Outer { // CHECK:STDOUT: .Outer = %Outer.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %F.decl: %F.type.402 = fn_decl @F.1 [template = constants.%F.3e6] {} {} // CHECK:STDOUT: %Outer.decl: type = interface_decl @Outer [template = constants.%Outer.type] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { -// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.843] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -69,9 +69,9 @@ interface Outer { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Outer { -// CHECK:STDOUT: %Self: %Outer.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] -// CHECK:STDOUT: %Inner.decl: type = interface_decl @Inner [template = constants.%Inner.type.1] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [symbolic = constants.%F.2] {} {} +// CHECK:STDOUT: %Self: %Outer.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3ec] +// CHECK:STDOUT: %Inner.decl: type = interface_decl @Inner [template = constants.%Inner.type.9b0] {} {} +// CHECK:STDOUT: %F.decl: %F.type.5e1 = fn_decl @F.2 [symbolic = constants.%F.dca] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -81,15 +81,15 @@ interface Outer { // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Inner(@Outer.%Self: %Outer.type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%Self.2)> [symbolic = %Inner.type (constants.%Inner.type.2)] -// CHECK:STDOUT: %Self.3: %Inner.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.3)] +// CHECK:STDOUT: %Self.2: %Outer.type = bind_symbolic_name Self, 0 [symbolic = %Self.2 (constants.%Self.3ec)] +// CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%Self.2)> [symbolic = %Inner.type (constants.%Inner.type.fea)] +// CHECK:STDOUT: %Self.3: %Inner.type.fea = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.306)] // CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.2) [symbolic = %.type (constants.%.type)] -// CHECK:STDOUT: %.loc26: @Inner.%.type (%.type) = struct_value () [symbolic = %.loc26 (constants.%.1)] +// CHECK:STDOUT: %.loc26: @Inner.%.type (%.type) = struct_value () [symbolic = %.loc26 (constants.%.0d1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Inner.%Inner.type (%Inner.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.3)] -// CHECK:STDOUT: %.decl: @Inner.%.type (%.type) = fn_decl @.1 [symbolic = @Inner.%.loc26 (constants.%.1)] {} {} +// CHECK:STDOUT: %Self.1: @Inner.%Inner.type (%Inner.type.fea) = bind_symbolic_name Self, 1 [symbolic = %Self.3 (constants.%Self.306)] +// CHECK:STDOUT: %.decl: @Inner.%.type (%.type) = fn_decl @.1 [symbolic = @Inner.%.loc26 (constants.%.0d1)] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -107,30 +107,30 @@ interface Outer { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @.1(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.2)) { +// CHECK:STDOUT: generic fn @.1(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.fea)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.2)) { +// CHECK:STDOUT: generic fn @F.2(@Outer.%Self: %Outer.type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.fea)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.843) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%Self.2) { +// CHECK:STDOUT: specific @Inner(constants.%Self.3ec) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Self.2 => constants.%Self.2 -// CHECK:STDOUT: %Inner.type => constants.%Inner.type.2 -// CHECK:STDOUT: %Self.3 => constants.%Self.3 +// CHECK:STDOUT: %Self.2 => constants.%Self.3ec +// CHECK:STDOUT: %Inner.type => constants.%Inner.type.fea +// CHECK:STDOUT: %Self.3 => constants.%Self.306 // CHECK:STDOUT: %.type => constants.%.type -// CHECK:STDOUT: %.loc26 => constants.%.1 +// CHECK:STDOUT: %.loc26 => constants.%.0d1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%Self.2, constants.%Self.3) {} +// CHECK:STDOUT: specific @.1(constants.%Self.3ec, constants.%Self.306) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Inner(%Self.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.2, constants.%Self.3) {} +// CHECK:STDOUT: specific @F.2(constants.%Self.3ec, constants.%Self.306) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon index 916a4bb1a3db..691a36655887 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_duplicate.carbon @@ -73,9 +73,9 @@ interface Class { } // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] -// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.843: %Interface.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %.type: type = facet_type <@.1> [template] -// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.cac: %.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %.type, %F.type [template] @@ -91,7 +91,7 @@ interface Class { } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { -// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.843] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -99,7 +99,7 @@ interface Class { } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @.1 { -// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.cac] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: @@ -114,16 +114,16 @@ interface Class { } // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.2) {} +// CHECK:STDOUT: specific @F(constants.%Self.cac) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redefine_with_dependents.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] -// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.843: %Interface.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %.type: type = facet_type <@.1> [template] -// CHECK:STDOUT: %Self.2: %.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.2 [symbolic] +// CHECK:STDOUT: %Self.cac: %.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.cac [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %.type, %F.type [template] @@ -139,7 +139,7 @@ interface Class { } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { -// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.843] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -147,14 +147,14 @@ interface Class { } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @.1 { -// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.cac] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc14_14.1: type = splice_block %.loc14_14.2 [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %Self.ref: %.type = name_ref Self, @.1.%Self [symbolic = %Self (constants.%Self.2)] +// CHECK:STDOUT: %Self.ref: %.type = name_ref Self, @.1.%Self [symbolic = %Self (constants.%Self.cac)] // CHECK:STDOUT: %Self.as_type.loc14_14.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc14_14.2: type = converted %Self.ref, %Self.as_type.loc14_14.2 [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -169,14 +169,14 @@ interface Class { } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(@.1.%Self: %.type) { -// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.2)] +// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self.cac)] // CHECK:STDOUT: %Self.as_type.loc14_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @F.%Self.as_type.loc14_14.1 (%Self.as_type)](); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.2) { -// CHECK:STDOUT: %Self => constants.%Self.2 +// CHECK:STDOUT: specific @F(constants.%Self.cac) { +// CHECK:STDOUT: %Self => constants.%Self.cac // CHECK:STDOUT: %Self.as_type.loc14_14.1 => constants.%Self.as_type // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon b/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon index 130131a21a8f..d4884b3e65d3 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_generic_redeclaration.carbon @@ -41,25 +41,25 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NotGeneric.type: type = facet_type <@NotGeneric> [template] -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %T.6ba: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d86: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %.generic.1: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%T.1)> [symbolic] -// CHECK:STDOUT: %Self.1: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [template] +// CHECK:STDOUT: %.type.54b: type = facet_type <@.1, @.1(%T.6ba)> [symbolic] +// CHECK:STDOUT: %Self.475: %.type.54b = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Generic.type: type = generic_interface_type @Generic [template] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template] -// CHECK:STDOUT: %.type.3: type = facet_type <@.2> [template] -// CHECK:STDOUT: %Self.2: %.type.3 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %.type.4ea: type = facet_type <@.2> [template] +// CHECK:STDOUT: %Self.cac: %.type.4ea = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %DifferentParams.type: type = generic_interface_type @DifferentParams [template] // CHECK:STDOUT: %DifferentParams.generic: %DifferentParams.type = struct_value () [template] -// CHECK:STDOUT: %T.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %.type.4: type = generic_interface_type @.3 [template] -// CHECK:STDOUT: %.generic.2: %.type.4 = struct_value () [template] -// CHECK:STDOUT: %.type.5: type = facet_type <@.3, @.3(%T.2)> [symbolic] -// CHECK:STDOUT: %Self.3: %.type.5 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %T.b2a: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.e42: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.3 [template] +// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [template] +// CHECK:STDOUT: %.type.b7e: type = facet_type <@.3, @.3(%T.b2a)> [symbolic] +// CHECK:STDOUT: %Self.a94: %.type.b7e = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -69,53 +69,53 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: .DifferentParams = %DifferentParams.decl // CHECK:STDOUT: } // CHECK:STDOUT: %NotGeneric.decl: type = interface_decl @NotGeneric [template = constants.%NotGeneric.type] {} {} -// CHECK:STDOUT: %.decl.loc19: %.type.1 = interface_decl @.1 [template = constants.%.generic.1] { -// CHECK:STDOUT: %T.patt.loc19_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_22.1, runtime_param [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %.decl.loc19: %.type.abf52e.1 = interface_decl @.1 [template = constants.%.generic.0a9e18.1] { +// CHECK:STDOUT: %T.patt.loc19_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_22.1, runtime_param [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc19_22.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_22.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc19_22.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_22.2 (constants.%T.6ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %Generic.decl: %Generic.type = interface_decl @Generic [template = constants.%Generic.generic] { -// CHECK:STDOUT: %T.patt.loc21_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc21_19.1, runtime_param [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc21_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc21_19.1, runtime_param [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc21_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_19.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc21_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_19.2 (constants.%T.6ba)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc29: type = interface_decl @.2 [template = constants.%.type.3] {} {} +// CHECK:STDOUT: %.decl.loc29: type = interface_decl @.2 [template = constants.%.type.4ea] {} {} // CHECK:STDOUT: %DifferentParams.decl: %DifferentParams.type = interface_decl @DifferentParams [template = constants.%DifferentParams.generic] { -// CHECK:STDOUT: %T.patt.loc31_27.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc31_27.1, runtime_param [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.patt.loc31_27.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc31_27.1, runtime_param [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc31_27.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc31_27.2 (constants.%T.6ba)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc38: %.type.4 = interface_decl @.3 [template = constants.%.generic.2] { -// CHECK:STDOUT: %T.patt.loc38_27.1: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %empty_tuple.type = value_param_pattern %T.patt.loc38_27.1, runtime_param [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %.decl.loc38: %.type.abf52e.2 = interface_decl @.3 [template = constants.%.generic.0a9e18.2] { +// CHECK:STDOUT: %T.patt.loc38_27.1: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.e42)] +// CHECK:STDOUT: %T.param_patt: %empty_tuple.type = value_param_pattern %T.patt.loc38_27.1, runtime_param [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.e42)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: %empty_tuple.type = value_param runtime_param // CHECK:STDOUT: %.loc38_32.1: type = splice_block %.loc38_32.3 [template = constants.%empty_tuple.type] { // CHECK:STDOUT: %.loc38_32.2: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc38_32.3: type = converted %.loc38_32.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc38_27.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc38_27.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc38_27.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc38_27.2 (constants.%T.b2a)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NotGeneric; // CHECK:STDOUT: // CHECK:STDOUT: generic interface @.1(%T.loc19_22.1: type) { -// CHECK:STDOUT: %T.loc19_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_22.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc19_22.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc19_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc19_22.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc19_22.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%T.loc19_22.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%T.loc19_22.2)> [symbolic = %.type (constants.%.type.54b)] +// CHECK:STDOUT: %Self.2: %.type.54b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.475)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.54b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.475)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -124,14 +124,14 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Generic(%T.loc21_19.1: type) { -// CHECK:STDOUT: %T.loc21_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc21_19.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc21_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc21_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc21_19.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc21_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: interface; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @.2 { -// CHECK:STDOUT: %Self: %.type.3 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %.type.4ea = bind_symbolic_name Self, 0 [symbolic = constants.%Self.cac] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -139,22 +139,22 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @DifferentParams(%T.loc31_27.1: type) { -// CHECK:STDOUT: %T.loc31_27.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc31_27.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc31_27.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc31_27.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc31_27.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc31_27.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: interface; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @.3(%T.loc38_27.1: %empty_tuple.type) { -// CHECK:STDOUT: %T.loc38_27.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc38_27.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc38_27.2: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.loc38_27.2: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic = %T.loc38_27.2 (constants.%T.b2a)] +// CHECK:STDOUT: %T.patt.loc38_27.2: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc38_27.2 (constants.%T.patt.e42)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.3, @.3(%T.loc38_27.2)> [symbolic = %.type (constants.%.type.5)] -// CHECK:STDOUT: %Self.2: %.type.5 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] +// CHECK:STDOUT: %.type: type = facet_type <@.3, @.3(%T.loc38_27.2)> [symbolic = %.type (constants.%.type.b7e)] +// CHECK:STDOUT: %Self.2: %.type.b7e = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.a94)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.3.%.type (%.type.5) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] +// CHECK:STDOUT: %Self.1: @.3.%.type (%.type.b7e) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.a94)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -162,26 +162,26 @@ interface DifferentParams(T:! ()) {} // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.1(constants.%T.1) { -// CHECK:STDOUT: %T.loc19_22.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc19_22.2 => constants.%T.1 +// CHECK:STDOUT: specific @.1(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc19_22.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc19_22.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @.1(%T.loc19_22.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @Generic(constants.%T.1) { -// CHECK:STDOUT: %T.loc21_19.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc21_19.2 => constants.%T.1 +// CHECK:STDOUT: specific @Generic(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc21_19.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc21_19.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @DifferentParams(constants.%T.1) { -// CHECK:STDOUT: %T.loc31_27.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc31_27.2 => constants.%T.1 +// CHECK:STDOUT: specific @DifferentParams(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc31_27.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc31_27.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @.3(constants.%T.2) { -// CHECK:STDOUT: %T.loc38_27.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc38_27.2 => constants.%T.2 +// CHECK:STDOUT: specific @.3(constants.%T.b2a) { +// CHECK:STDOUT: %T.loc38_27.2 => constants.%T.b2a +// CHECK:STDOUT: %T.patt.loc38_27.2 => constants.%T.b2a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @.3(%T.loc38_27.2) {} diff --git a/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon b/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon index 1a34b7cf4f26..36a08ea7070c 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_lookup_undefined.carbon @@ -53,8 +53,8 @@ interface BeingDefined { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Undefined.type: type = facet_type <@Undefined> [template] -// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a: type = fn_type @.1 [template] +// CHECK:STDOUT: %.d85: %.type.b6a = struct_value () [template] // CHECK:STDOUT: %Test.type: type = fn_type @Test [template] // CHECK:STDOUT: %Test: %Test.type = struct_value () [template] // CHECK:STDOUT: %BeingDefined.type: type = facet_type <@BeingDefined> [template] @@ -63,8 +63,8 @@ interface BeingDefined { // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: %H.assoc_type: type = assoc_entity_type %BeingDefined.type, %H.type [template] // CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, @BeingDefined.%H.decl [template] -// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template] -// CHECK:STDOUT: %.2: %.type.2 = struct_value () [template] +// CHECK:STDOUT: %.type.bee: type = fn_type @.2 [template] +// CHECK:STDOUT: %.b15: %.type.bee = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -74,7 +74,7 @@ interface BeingDefined { // CHECK:STDOUT: .BeingDefined = %BeingDefined.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Undefined.decl: type = interface_decl @Undefined [template = constants.%Undefined.type] {} {} -// CHECK:STDOUT: %.decl: %.type.1 = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type.b6a = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] {} {} // CHECK:STDOUT: %BeingDefined.decl: type = interface_decl @BeingDefined [template = constants.%BeingDefined.type] {} {} // CHECK:STDOUT: } @@ -93,7 +93,7 @@ interface BeingDefined { // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %H.assoc_type = assoc_entity element0, %H.decl [template = constants.%assoc0] -// CHECK:STDOUT: %.decl: %.type.2 = fn_decl @.2 [template = constants.%.2] {} {} +// CHECK:STDOUT: %.decl: %.type.bee = fn_decl @.2 [template = constants.%.b15] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon b/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon index 0dce1419f903..df32e782c442 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon @@ -39,17 +39,17 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template] -// CHECK:STDOUT: %Self.1: %Interface.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Interface.type, %F.type.1 [template] +// CHECK:STDOUT: %Self.843: %Interface.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %F.type.402: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.3e6: %F.type.402 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Interface.type, %F.type.402 [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @Interface.%F.decl [template] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %Interface.type, type [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, @Interface.%T [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] +// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template] // CHECK:STDOUT: %Different.type: type = facet_type <@Different> [template] -// CHECK:STDOUT: %Self.2: %Different.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.d6a: %Different.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %U: %Different.type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: %Different.type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] @@ -64,7 +64,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {} -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} +// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] {} {} // CHECK:STDOUT: %Different.decl: type = interface_decl @Different [template = constants.%Different.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %U.patt.loc36_6.1: %Different.type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc36_6.2 (constants.%U.patt)] @@ -84,8 +84,8 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Interface { -// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} +// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.843] +// CHECK:STDOUT: %F.decl: %F.type.402 = fn_decl @F.1 [template = constants.%F.3e6] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, %T [template = constants.%assoc1] @@ -98,7 +98,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Different { -// CHECK:STDOUT: %Self: %Different.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %Different.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d6a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -126,7 +126,7 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: fn(%U.param_patt: %Different.type) -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.1) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.843) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @G(constants.%U) { // CHECK:STDOUT: %U.loc36_6.2 => constants.%U diff --git a/toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon b/toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon index a4ec21d675ea..c03e32b3aa41 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_redeclare_member.carbon @@ -29,7 +29,7 @@ interface Interface { // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %Interface.type, %F.type [template] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @Interface.%F.decl [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.c3a: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -43,7 +43,7 @@ interface Interface { // CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0] -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.c3a] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon b/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon index 2b0975629676..ed6614dbb9c2 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon +++ b/toolchain/check/testdata/interface/no_prelude/fail_todo_generic_default_fn.carbon @@ -26,17 +26,17 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %I.type.1: type = generic_interface_type @I [template] -// CHECK:STDOUT: %I.generic: %I.type.1 = struct_value () [template] -// CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template] +// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template] +// CHECK:STDOUT: %I.type.bc4: type = facet_type <@I, @I(%T)> [symbolic] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type.2, %F.type [symbolic] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type.bc4, %F.type [symbolic] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @I.%F.decl [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1, @I(%T) [symbolic] -// CHECK:STDOUT: %.1: %.type = struct_value () [symbolic] +// CHECK:STDOUT: %.ec9: %.type = struct_value () [symbolic] // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -44,14 +44,14 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %I.decl: %I.type.1 = interface_decl @I [template = constants.%I.generic] { +// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] { // CHECK:STDOUT: %T.patt.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_13.1, runtime_param [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [symbolic = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [symbolic = constants.%.ec9] { // CHECK:STDOUT: %self.patt: @.1.%Self.as_type.loc22_24.2 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @.1.%Self.as_type.loc22_24.2 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @.1.%Self.as_type.loc22_24.2 (%Self.as_type) = return_slot_pattern @@ -59,14 +59,14 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc22_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc22_6.2 (constants.%T)] -// CHECK:STDOUT: %.loc22_35.1: @.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc22_35: @.1.%I.type (%I.type.2) = name_ref Self, %.loc22_35.1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc22_35.1: @.1.%I.type (%I.type.bc4) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc22_35: @.1.%I.type (%I.type.bc4) = name_ref Self, %.loc22_35.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc22_35: type = facet_access_type %Self.ref.loc22_35 [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc22_35.2: type = converted %Self.ref.loc22_35, %Self.as_type.loc22_35 [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] // CHECK:STDOUT: %self.param: @.1.%Self.as_type.loc22_24.2 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc22_24.1: type = splice_block %.loc22_24.3 [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc22_24.2: @.1.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc22_24: @.1.%I.type (%I.type.2) = name_ref Self, %.loc22_24.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc22_24.2: @.1.%I.type (%I.type.bc4) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc22_24: @.1.%I.type (%I.type.bc4) = name_ref Self, %.loc22_24.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc22_24.1: type = facet_access_type %Self.ref.loc22_24 [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc22_24.3: type = converted %Self.ref.loc22_24, %Self.as_type.loc22_24.1 [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -81,29 +81,29 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %T.patt.loc11_13.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc11_13.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc11_13.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self.2: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T.loc11_13.2) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @I.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.2), @I.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @I.%I.type (%I.type.bc4), @I.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] // CHECK:STDOUT: %assoc0.loc13_29.2: @I.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc13_29.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.bc4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.decl: @I.%F.type (%F.type) = fn_decl @F [symbolic = @I.%F (constants.%F)] { // CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc13_14.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc13_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @F.%Self.as_type.loc13_14.1 (%Self.as_type) = return_slot_pattern // CHECK:STDOUT: %return.param_patt: @F.%Self.as_type.loc13_14.1 (%Self.as_type) = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc13_25.1: @F.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc13_25: @F.%I.type (%I.type.2) = name_ref Self, %.loc13_25.1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc13_25.1: @F.%I.type (%I.type.bc4) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc13_25: @F.%I.type (%I.type.bc4) = name_ref Self, %.loc13_25.1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc13_25: type = facet_access_type %Self.ref.loc13_25 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc13_25.2: type = converted %Self.ref.loc13_25, %Self.as_type.loc13_25 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %self.param: @F.%Self.as_type.loc13_14.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc13_14.1: type = splice_block %.loc13_14.3 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc13_14.2: @F.%I.type (%I.type.2) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref.loc13_14: @F.%I.type (%I.type.2) = name_ref Self, %.loc13_14.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc13_14.2: @F.%I.type (%I.type.bc4) = specific_constant @I.%Self.1, @I(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref.loc13_14: @F.%I.type (%I.type.bc4) = name_ref Self, %.loc13_14.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc13_14.2: type = facet_access_type %Self.ref.loc13_14 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc13_14.3: type = converted %Self.ref.loc13_14, %Self.as_type.loc13_14.2 [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -120,20 +120,20 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@I.%T.loc11_13.1: type, @I.%Self.1: @I.%I.type (%I.type.2)) { +// CHECK:STDOUT: generic fn @F(@I.%T.loc11_13.1: type, @I.%Self.1: @I.%I.type (%I.type.bc4)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc13_14.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc13_14.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @F.%Self.as_type.loc13_14.1 (%Self.as_type)]() -> @F.%Self.as_type.loc13_14.1 (%Self.as_type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @.1(%T.loc22_6.1: type, @I.%Self.1: @I.%I.type (%I.type.2)) { +// CHECK:STDOUT: generic fn @.1(%T.loc22_6.1: type, @I.%Self.1: @I.%I.type (%I.type.bc4)) { // CHECK:STDOUT: %T.loc22_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc22_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] -// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc22_6.2)> [symbolic = %I.type (constants.%I.type.2)] -// CHECK:STDOUT: %Self: %I.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%T.loc22_6.2)> [symbolic = %I.type (constants.%I.type.bc4)] +// CHECK:STDOUT: %Self: %I.type.bc4 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc22_24.2: type = facet_access_type %Self [symbolic = %Self.as_type.loc22_24.2 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -151,7 +151,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: %T.patt.loc11_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self.2 => constants.%Self // CHECK:STDOUT: %F.type => constants.%F.type // CHECK:STDOUT: %F => constants.%F @@ -161,7 +161,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc13_14.1 => constants.%Self.as_type // CHECK:STDOUT: } @@ -173,7 +173,7 @@ fn I(T:! type).F[self: Self]() -> Self { return self; } // CHECK:STDOUT: specific @.1(constants.%T, constants.%Self) { // CHECK:STDOUT: %T.loc22_6.2 => constants.%T // CHECK:STDOUT: %T.patt => constants.%T -// CHECK:STDOUT: %I.type => constants.%I.type.2 +// CHECK:STDOUT: %I.type => constants.%I.type.bc4 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc22_24.2 => constants.%Self.as_type // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/interface/no_prelude/generic.carbon b/toolchain/check/testdata/interface/no_prelude/generic.carbon index 9ff9625769fc..4ad6a6ef65ff 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic.carbon @@ -61,48 +61,48 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: --- generic.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Simple.type.1: type = generic_interface_type @Simple [template] +// CHECK:STDOUT: %T.6ba: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d86: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %Simple.type.3b3: type = generic_interface_type @Simple [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Simple.generic: %Simple.type.1 = struct_value () [template] -// CHECK:STDOUT: %Simple.type.2: type = facet_type <@Simple, @Simple(%T.1)> [symbolic] -// CHECK:STDOUT: %Self.1: %Simple.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Simple.generic: %Simple.type.3b3 = struct_value () [template] +// CHECK:STDOUT: %Simple.type.276: type = facet_type <@Simple, @Simple(%T.6ba)> [symbolic] +// CHECK:STDOUT: %Self.96d: %Simple.type.276 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %WithAssocFn.type.1: type = generic_interface_type @WithAssocFn [template] -// CHECK:STDOUT: %WithAssocFn.generic: %WithAssocFn.type.1 = struct_value () [template] -// CHECK:STDOUT: %WithAssocFn.type.2: type = facet_type <@WithAssocFn, @WithAssocFn(%T.1)> [symbolic] -// CHECK:STDOUT: %Self.2: %WithAssocFn.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @WithAssocFn(%T.1) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %WithAssocFn.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, @WithAssocFn.%F.decl [symbolic] +// CHECK:STDOUT: %WithAssocFn.type.509: type = generic_interface_type @WithAssocFn [template] +// CHECK:STDOUT: %WithAssocFn.generic: %WithAssocFn.type.509 = struct_value () [template] +// CHECK:STDOUT: %WithAssocFn.type.522: type = facet_type <@WithAssocFn, @WithAssocFn(%T.6ba)> [symbolic] +// CHECK:STDOUT: %Self.5ca: %WithAssocFn.type.522 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %F.type.48d: type = fn_type @F.1, @WithAssocFn(%T.6ba) [symbolic] +// CHECK:STDOUT: %F.689: %F.type.48d = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.b73: type = assoc_entity_type %WithAssocFn.type.522, %F.type.48d [symbolic] +// CHECK:STDOUT: %assoc0.fbc: %F.assoc_type.b73 = assoc_entity element0, @WithAssocFn.%F.decl [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] -// CHECK:STDOUT: %Simple.type.3: type = facet_type <@Simple, @Simple(%C)> [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness () [template] -// CHECK:STDOUT: %WithAssocFn.type.3: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @WithAssocFn(%C) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %WithAssocFn.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, @WithAssocFn.%F.decl [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.2 = facet_value %C, %impl_witness.2 [symbolic] +// CHECK:STDOUT: %Simple.type.c51: type = facet_type <@Simple, @Simple(%C)> [template] +// CHECK:STDOUT: %impl_witness.1bc: = impl_witness () [template] +// CHECK:STDOUT: %WithAssocFn.type.7da: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [template] +// CHECK:STDOUT: %F.type.b97: type = fn_type @F.1, @WithAssocFn(%C) [template] +// CHECK:STDOUT: %F.c17: %F.type.b97 = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.452: type = assoc_entity_type %WithAssocFn.type.7da, %F.type.b97 [template] +// CHECK:STDOUT: %assoc0.a31: %F.assoc_type.452 = assoc_entity element0, @WithAssocFn.%F.decl [template] +// CHECK:STDOUT: %impl_witness.36a: = impl_witness (@impl.2.%F.decl) [template] +// CHECK:STDOUT: %F.type.b3c: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.75c: %F.type.b3c = struct_value () [template] +// CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.522 = facet_value %C, %impl_witness.36a [symbolic] // CHECK:STDOUT: %X.val: %X = struct_value () [template] -// CHECK:STDOUT: %N: %T.1 = bind_symbolic_name N, 1 [symbolic] -// CHECK:STDOUT: %N.patt: %T.1 = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N: %T.6ba = bind_symbolic_name N, 1 [symbolic] +// CHECK:STDOUT: %N.patt: %T.6ba = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %WithImplicitArgs.type: type = generic_interface_type @WithImplicitArgs [template] // CHECK:STDOUT: %WithImplicitArgs.generic: %WithImplicitArgs.type = struct_value () [template] -// CHECK:STDOUT: %T.2: %Simple.type.3 = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %T.ff8: %Simple.type.c51 = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.36e: %Simple.type.c51 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Receive.type: type = fn_type @Receive [template] // CHECK:STDOUT: %Receive: %Receive.type = struct_value () [template] // CHECK:STDOUT: %Pass.type: type = fn_type @Pass [template] // CHECK:STDOUT: %Pass: %Pass.type = struct_value () [template] -// CHECK:STDOUT: %Receive.specific_fn: = specific_function %Receive, @Receive(%T.2) [symbolic] +// CHECK:STDOUT: %Receive.specific_fn: = specific_function %Receive, @Receive(%T.ff8) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -115,70 +115,70 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: .Receive = %Receive.decl // CHECK:STDOUT: .Pass = %Pass.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Simple.decl: %Simple.type.1 = interface_decl @Simple [template = constants.%Simple.generic] { -// CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_18.1, runtime_param [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %Simple.decl: %Simple.type.3b3 = interface_decl @Simple [template = constants.%Simple.generic] { +// CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_18.1, runtime_param [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_18.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_18.2 (constants.%T.6ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {} -// CHECK:STDOUT: %WithAssocFn.decl: %WithAssocFn.type.1 = interface_decl @WithAssocFn [template = constants.%WithAssocFn.generic] { -// CHECK:STDOUT: %T.patt.loc8_23.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_23.1, runtime_param [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %WithAssocFn.decl: %WithAssocFn.type.509 = interface_decl @WithAssocFn [template = constants.%WithAssocFn.generic] { +// CHECK:STDOUT: %T.patt.loc8_23.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_23.1, runtime_param [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc8_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_23.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc8_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_23.2 (constants.%T.6ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %WithImplicitArgs.decl: %WithImplicitArgs.type = interface_decl @WithImplicitArgs [template = constants.%WithImplicitArgs.generic] { -// CHECK:STDOUT: %T.patt.loc22_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc22_28.1, runtime_param [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %N.patt.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] -// CHECK:STDOUT: %N.param_patt: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = value_param_pattern %N.patt.loc22_38.1, runtime_param [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] +// CHECK:STDOUT: %T.patt.loc22_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc22_28.1, runtime_param [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %N.patt.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.6ba) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] +// CHECK:STDOUT: %N.param_patt: @WithImplicitArgs.%T.loc22_28.2 (%T.6ba) = value_param_pattern %N.patt.loc22_38.1, runtime_param [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc22_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc22_28.2 (constants.%T.1)] -// CHECK:STDOUT: %N.param: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = value_param runtime_param -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc22_28.1 [symbolic = %T.loc22_28.2 (constants.%T.1)] -// CHECK:STDOUT: %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.1) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc22_38.2 (constants.%N)] +// CHECK:STDOUT: %T.loc22_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc22_28.2 (constants.%T.6ba)] +// CHECK:STDOUT: %N.param: @WithImplicitArgs.%T.loc22_28.2 (%T.6ba) = value_param runtime_param +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc22_28.1 [symbolic = %T.loc22_28.2 (constants.%T.6ba)] +// CHECK:STDOUT: %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.6ba) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc22_38.2 (constants.%N)] // CHECK:STDOUT: } // CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [template = constants.%Receive] { -// CHECK:STDOUT: %T.patt.loc24_12.1: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %Simple.type.3 = value_param_pattern %T.patt.loc24_12.1, runtime_param [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc24_12.1: %Simple.type.c51 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.36e)] +// CHECK:STDOUT: %T.param_patt: %Simple.type.c51 = value_param_pattern %T.patt.loc24_12.1, runtime_param [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.36e)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.param: %Simple.type.3 = value_param runtime_param -// CHECK:STDOUT: %.loc24: type = splice_block %Simple.type [template = constants.%Simple.type.3] { -// CHECK:STDOUT: %Simple.ref: %Simple.type.1 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] +// CHECK:STDOUT: %T.param: %Simple.type.c51 = value_param runtime_param +// CHECK:STDOUT: %.loc24: type = splice_block %Simple.type [template = constants.%Simple.type.c51] { +// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.3] +// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.c51] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc24_12.1: %Simple.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc24_12.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc24_12.1: %Simple.type.c51 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc24_12.2 (constants.%T.ff8)] // CHECK:STDOUT: } // CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [template = constants.%Pass] { -// CHECK:STDOUT: %T.patt.loc25_9.1: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %Simple.type.3 = value_param_pattern %T.patt.loc25_9.1, runtime_param [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc25_9.1: %Simple.type.c51 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.36e)] +// CHECK:STDOUT: %T.param_patt: %Simple.type.c51 = value_param_pattern %T.patt.loc25_9.1, runtime_param [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.36e)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.param: %Simple.type.3 = value_param runtime_param -// CHECK:STDOUT: %.loc25: type = splice_block %Simple.type [template = constants.%Simple.type.3] { -// CHECK:STDOUT: %Simple.ref: %Simple.type.1 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] +// CHECK:STDOUT: %T.param: %Simple.type.c51 = value_param runtime_param +// CHECK:STDOUT: %.loc25: type = splice_block %Simple.type [template = constants.%Simple.type.c51] { +// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.3] +// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.c51] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc25_9.1: %Simple.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc25_9.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc25_9.1: %Simple.type.c51 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc25_9.2 (constants.%T.ff8)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Simple(%T.loc4_18.1: type) { -// CHECK:STDOUT: %T.loc4_18.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_18.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_18.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc4_18.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_18.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc4_18.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(%T.loc4_18.2)> [symbolic = %Simple.type (constants.%Simple.type.2)] -// CHECK:STDOUT: %Self.2: %Simple.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(%T.loc4_18.2)> [symbolic = %Simple.type (constants.%Simple.type.276)] +// CHECK:STDOUT: %Self.2: %Simple.type.276 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.96d)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Simple.%Simple.type (%Simple.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Self.1: @Simple.%Simple.type (%Simple.type.276) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.96d)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -187,20 +187,20 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @WithAssocFn(%T.loc8_23.1: type) { -// CHECK:STDOUT: %T.loc8_23.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_23.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc8_23.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc8_23.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc8_23.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc8_23.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(%T.loc8_23.2)> [symbolic = %WithAssocFn.type (constants.%WithAssocFn.type.2)] -// CHECK:STDOUT: %Self.2: %WithAssocFn.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @WithAssocFn(%T.loc8_23.2) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @WithAssocFn.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2), @WithAssocFn.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc10_14.2: @WithAssocFn.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(%T.loc8_23.2)> [symbolic = %WithAssocFn.type (constants.%WithAssocFn.type.522)] +// CHECK:STDOUT: %Self.2: %WithAssocFn.type.522 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.5ca)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @WithAssocFn(%T.loc8_23.2) [symbolic = %F.type (constants.%F.type.48d)] +// CHECK:STDOUT: %F: @WithAssocFn.%F.type (%F.type.48d) = struct_value () [symbolic = %F (constants.%F.689)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.522), @WithAssocFn.%F.type (%F.type.48d) [symbolic = %F.assoc_type (constants.%F.assoc_type.b73)] +// CHECK:STDOUT: %assoc0.loc10_14.2: @WithAssocFn.%F.assoc_type (%F.assoc_type.b73) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fbc)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] -// CHECK:STDOUT: %F.decl: @WithAssocFn.%F.type (%F.type.1) = fn_decl @F.1 [symbolic = @WithAssocFn.%F (constants.%F.1)] { +// CHECK:STDOUT: %Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.522) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.5ca)] +// CHECK:STDOUT: %F.decl: @WithAssocFn.%F.type (%F.type.48d) = fn_decl @F.1 [symbolic = @WithAssocFn.%F (constants.%F.689)] { // CHECK:STDOUT: %return.patt: %X = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %X = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -208,7 +208,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %return.param: ref %X = out_param runtime_param0 // CHECK:STDOUT: %return: ref %X = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc10_14.1: @WithAssocFn.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc10_14.1: @WithAssocFn.%F.assoc_type (%F.assoc_type.b73) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc10_14.2 (constants.%assoc0.fbc)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -217,11 +217,11 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic interface @WithImplicitArgs(%T.loc22_28.1: type, %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.1)) { -// CHECK:STDOUT: %T.loc22_28.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc22_28.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc22_28.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %N.loc22_38.2: %T.1 = bind_symbolic_name N, 1 [symbolic = %N.loc22_38.2 (constants.%N)] -// CHECK:STDOUT: %N.patt.loc22_38.2: %T.1 = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] +// CHECK:STDOUT: generic interface @WithImplicitArgs(%T.loc22_28.1: type, %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.6ba)) { +// CHECK:STDOUT: %T.loc22_28.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc22_28.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc22_28.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %N.loc22_38.2: %T.6ba = bind_symbolic_name N, 1 [symbolic = %N.loc22_38.2 (constants.%N)] +// CHECK:STDOUT: %N.patt.loc22_38.2: %T.6ba = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)] // CHECK:STDOUT: // CHECK:STDOUT: interface; // CHECK:STDOUT: } @@ -232,7 +232,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %Self.ref as %WithAssocFn.type { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.2 [template = constants.%F.3] { +// CHECK:STDOUT: %F.decl: %F.type.b3c = fn_decl @F.2 [template = constants.%F.75c] { // CHECK:STDOUT: %return.patt: %X = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %X = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -257,18 +257,18 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %Simple.ref: %Simple.type.1 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] +// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.3] +// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.c51] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc14: = impl_witness () [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc14: = impl_witness () [template = constants.%impl_witness.1bc] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C] -// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.1 = name_ref WithAssocFn, file.%WithAssocFn.decl [template = constants.%WithAssocFn.generic] +// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.509 = name_ref WithAssocFn, file.%WithAssocFn.decl [template = constants.%WithAssocFn.generic] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [template = constants.%WithAssocFn.type.3] +// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [template = constants.%WithAssocFn.type.7da] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.36a] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -276,7 +276,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@WithAssocFn.%T.loc8_23.1: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2)) { +// CHECK:STDOUT: generic fn @F.1(@WithAssocFn.%T.loc8_23.1: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.522)) { // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %X; // CHECK:STDOUT: } @@ -289,48 +289,48 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: return %.loc17_16 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Receive(%T.loc24_12.1: %Simple.type.3) { -// CHECK:STDOUT: %T.loc24_12.2: %Simple.type.3 = bind_symbolic_name T, 0 [symbolic = %T.loc24_12.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc24_12.2: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.2)] +// CHECK:STDOUT: generic fn @Receive(%T.loc24_12.1: %Simple.type.c51) { +// CHECK:STDOUT: %T.loc24_12.2: %Simple.type.c51 = bind_symbolic_name T, 0 [symbolic = %T.loc24_12.2 (constants.%T.ff8)] +// CHECK:STDOUT: %T.patt.loc24_12.2: %Simple.type.c51 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.36e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.3) { +// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.c51) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Pass(%T.loc25_9.1: %Simple.type.3) { -// CHECK:STDOUT: %T.loc25_9.2: %Simple.type.3 = bind_symbolic_name T, 0 [symbolic = %T.loc25_9.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc25_9.2: %Simple.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.2)] +// CHECK:STDOUT: generic fn @Pass(%T.loc25_9.1: %Simple.type.c51) { +// CHECK:STDOUT: %T.loc25_9.2: %Simple.type.c51 = bind_symbolic_name T, 0 [symbolic = %T.loc25_9.2 (constants.%T.ff8)] +// CHECK:STDOUT: %T.patt.loc25_9.2: %Simple.type.c51 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.36e)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Receive.specific_fn.loc26_3.2: = specific_function constants.%Receive, @Receive(%T.loc25_9.2) [symbolic = %Receive.specific_fn.loc26_3.2 (constants.%Receive.specific_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.3) { +// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.c51) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [template = constants.%Receive] -// CHECK:STDOUT: %T.ref: %Simple.type.3 = name_ref T, %T.loc25_9.1 [symbolic = %T.loc25_9.2 (constants.%T.2)] -// CHECK:STDOUT: %Receive.specific_fn.loc26_3.1: = specific_function %Receive.ref, @Receive(constants.%T.2) [symbolic = %Receive.specific_fn.loc26_3.2 (constants.%Receive.specific_fn)] +// CHECK:STDOUT: %T.ref: %Simple.type.c51 = name_ref T, %T.loc25_9.1 [symbolic = %T.loc25_9.2 (constants.%T.ff8)] +// CHECK:STDOUT: %Receive.specific_fn.loc26_3.1: = specific_function %Receive.ref, @Receive(constants.%T.ff8) [symbolic = %Receive.specific_fn.loc26_3.2 (constants.%Receive.specific_fn)] // CHECK:STDOUT: %Receive.call: init %empty_tuple.type = call %Receive.specific_fn.loc26_3.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Simple(constants.%T.1) { -// CHECK:STDOUT: %T.loc4_18.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%T.1 +// CHECK:STDOUT: specific @Simple(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc4_18.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Simple(%T.loc4_18.2) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @WithAssocFn(constants.%T.1) { -// CHECK:STDOUT: %T.loc8_23.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc8_23.2 => constants.%T.1 +// CHECK:STDOUT: specific @WithAssocFn(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc8_23.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc8_23.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T.1, constants.%Self.2) {} +// CHECK:STDOUT: specific @F.1(constants.%T.6ba, constants.%Self.5ca) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @WithAssocFn(%T.loc8_23.2) {} // CHECK:STDOUT: @@ -339,8 +339,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc4_18.2 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Simple.type => constants.%Simple.type.3 -// CHECK:STDOUT: %Self.2 => constants.%Self.1 +// CHECK:STDOUT: %Simple.type => constants.%Simple.type.c51 +// CHECK:STDOUT: %Self.2 => constants.%Self.96d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @WithAssocFn(constants.%C) { @@ -348,33 +348,33 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc8_23.2 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %WithAssocFn.type => constants.%WithAssocFn.type.3 -// CHECK:STDOUT: %Self.2 => constants.%Self.2 -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc10_14.2 => constants.%assoc0.2 +// CHECK:STDOUT: %WithAssocFn.type => constants.%WithAssocFn.type.7da +// CHECK:STDOUT: %Self.2 => constants.%Self.5ca +// CHECK:STDOUT: %F.type => constants.%F.type.b97 +// CHECK:STDOUT: %F => constants.%F.c17 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.452 +// CHECK:STDOUT: %assoc0.loc10_14.2 => constants.%assoc0.a31 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%C, constants.%WithAssocFn.facet) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @WithImplicitArgs(constants.%T.1, constants.%N) { -// CHECK:STDOUT: %T.loc22_28.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc22_28.2 => constants.%T.1 +// CHECK:STDOUT: specific @WithImplicitArgs(constants.%T.6ba, constants.%N) { +// CHECK:STDOUT: %T.loc22_28.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc22_28.2 => constants.%T.6ba // CHECK:STDOUT: %N.loc22_38.2 => constants.%N // CHECK:STDOUT: %N.patt.loc22_38.2 => constants.%N // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Receive(constants.%T.2) { -// CHECK:STDOUT: %T.loc24_12.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc24_12.2 => constants.%T.2 +// CHECK:STDOUT: specific @Receive(constants.%T.ff8) { +// CHECK:STDOUT: %T.loc24_12.2 => constants.%T.ff8 +// CHECK:STDOUT: %T.patt.loc24_12.2 => constants.%T.ff8 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Pass(constants.%T.2) { -// CHECK:STDOUT: %T.loc25_9.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc25_9.2 => constants.%T.2 +// CHECK:STDOUT: specific @Pass(constants.%T.ff8) { +// CHECK:STDOUT: %T.loc25_9.2 => constants.%T.ff8 +// CHECK:STDOUT: %T.patt.loc25_9.2 => constants.%T.ff8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Receive(@Pass.%T.loc25_9.2) {} @@ -382,24 +382,24 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: --- fail_mismatched_args.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.1: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.1: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Generic.type.1: type = generic_interface_type @Generic [template] -// CHECK:STDOUT: %Generic.generic: %Generic.type.1 = struct_value () [template] -// CHECK:STDOUT: %Generic.type.2: type = facet_type <@Generic, @Generic(%T.1)> [symbolic] -// CHECK:STDOUT: %Self: %Generic.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %T.6ba: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.d86: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %Generic.type.c21: type = generic_interface_type @Generic [template] +// CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [template] +// CHECK:STDOUT: %Generic.type.6ba: type = facet_type <@Generic, @Generic(%T.6ba)> [symbolic] +// CHECK:STDOUT: %Self: %Generic.type.6ba = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %A: type = class_type @A [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %B: type = class_type @B [template] -// CHECK:STDOUT: %Generic.type.3: type = facet_type <@Generic, @Generic(%A)> [template] -// CHECK:STDOUT: %T.2: %Generic.type.3 = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.2: %Generic.type.3 = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %Generic.type.ad8: type = facet_type <@Generic, @Generic(%A)> [template] +// CHECK:STDOUT: %T.c30: %Generic.type.ad8 = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.3a6: %Generic.type.ad8 = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %Generic.type.4: type = facet_type <@Generic, @Generic(%B)> [template] -// CHECK:STDOUT: %T.3: %Generic.type.4 = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt.3: %Generic.type.4 = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %Generic.type.6bf: type = facet_type <@Generic, @Generic(%B)> [template] +// CHECK:STDOUT: %T.79f: %Generic.type.6bf = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt.fd1: %Generic.type.6bf = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: } @@ -412,51 +412,51 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %Generic.decl: %Generic.type.1 = interface_decl @Generic [template = constants.%Generic.generic] { -// CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.1)] -// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %Generic.decl: %Generic.type.c21 = interface_decl @Generic [template = constants.%Generic.generic] { +// CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.d86)] +// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.d86)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param -// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T.1)] +// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T.6ba)] // CHECK:STDOUT: } // CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {} // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %T.patt.loc9_6.1: %Generic.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.2)] -// CHECK:STDOUT: %T.param_patt: %Generic.type.3 = value_param_pattern %T.patt.loc9_6.1, runtime_param [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.2)] +// CHECK:STDOUT: %T.patt.loc9_6.1: %Generic.type.ad8 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.3a6)] +// CHECK:STDOUT: %T.param_patt: %Generic.type.ad8 = value_param_pattern %T.patt.loc9_6.1, runtime_param [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.3a6)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.param: %Generic.type.3 = value_param runtime_param -// CHECK:STDOUT: %.loc9: type = splice_block %Generic.type [template = constants.%Generic.type.3] { -// CHECK:STDOUT: %Generic.ref: %Generic.type.1 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic] +// CHECK:STDOUT: %T.param: %Generic.type.ad8 = value_param runtime_param +// CHECK:STDOUT: %.loc9: type = splice_block %Generic.type [template = constants.%Generic.type.ad8] { +// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic] // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A] -// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%A)> [template = constants.%Generic.type.3] +// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%A)> [template = constants.%Generic.type.ad8] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc9_6.1: %Generic.type.3 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_6.2 (constants.%T.2)] +// CHECK:STDOUT: %T.loc9_6.1: %Generic.type.ad8 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_6.2 (constants.%T.c30)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %T.patt.loc10_6.1: %Generic.type.4 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.3)] -// CHECK:STDOUT: %T.param_patt: %Generic.type.4 = value_param_pattern %T.patt.loc10_6.1, runtime_param [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.3)] +// CHECK:STDOUT: %T.patt.loc10_6.1: %Generic.type.6bf = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.fd1)] +// CHECK:STDOUT: %T.param_patt: %Generic.type.6bf = value_param_pattern %T.patt.loc10_6.1, runtime_param [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.fd1)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.param: %Generic.type.4 = value_param runtime_param -// CHECK:STDOUT: %.loc10: type = splice_block %Generic.type [template = constants.%Generic.type.4] { -// CHECK:STDOUT: %Generic.ref: %Generic.type.1 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic] +// CHECK:STDOUT: %T.param: %Generic.type.6bf = value_param runtime_param +// CHECK:STDOUT: %.loc10: type = splice_block %Generic.type [template = constants.%Generic.type.6bf] { +// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic] // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B] -// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%B)> [template = constants.%Generic.type.4] +// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%B)> [template = constants.%Generic.type.6bf] // CHECK:STDOUT: } -// CHECK:STDOUT: %T.loc10_6.1: %Generic.type.4 = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T.3)] +// CHECK:STDOUT: %T.loc10_6.1: %Generic.type.6bf = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T.79f)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Generic(%T.loc4_19.1: type) { -// CHECK:STDOUT: %T.loc4_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_19.2 (constants.%T.1)] -// CHECK:STDOUT: %T.patt.loc4_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.1)] +// CHECK:STDOUT: %T.loc4_19.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_19.2 (constants.%T.6ba)] +// CHECK:STDOUT: %T.patt.loc4_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.d86)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%T.loc4_19.2)> [symbolic = %Generic.type (constants.%Generic.type.2)] -// CHECK:STDOUT: %Self.2: %Generic.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%T.loc4_19.2)> [symbolic = %Generic.type (constants.%Generic.type.6ba)] +// CHECK:STDOUT: %Self.2: %Generic.type.6ba = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.6ba) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -480,31 +480,31 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc9_6.1: %Generic.type.3) { -// CHECK:STDOUT: %T.loc9_6.2: %Generic.type.3 = bind_symbolic_name T, 0 [symbolic = %T.loc9_6.2 (constants.%T.2)] -// CHECK:STDOUT: %T.patt.loc9_6.2: %Generic.type.3 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.2)] +// CHECK:STDOUT: generic fn @F(%T.loc9_6.1: %Generic.type.ad8) { +// CHECK:STDOUT: %T.loc9_6.2: %Generic.type.ad8 = bind_symbolic_name T, 0 [symbolic = %T.loc9_6.2 (constants.%T.c30)] +// CHECK:STDOUT: %T.patt.loc9_6.2: %Generic.type.ad8 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.3a6)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: %Generic.type.3); +// CHECK:STDOUT: fn(%T.param_patt: %Generic.type.ad8); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @G(%T.loc10_6.1: %Generic.type.4) { -// CHECK:STDOUT: %T.loc10_6.2: %Generic.type.4 = bind_symbolic_name T, 0 [symbolic = %T.loc10_6.2 (constants.%T.3)] -// CHECK:STDOUT: %T.patt.loc10_6.2: %Generic.type.4 = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.3)] +// CHECK:STDOUT: generic fn @G(%T.loc10_6.1: %Generic.type.6bf) { +// CHECK:STDOUT: %T.loc10_6.2: %Generic.type.6bf = bind_symbolic_name T, 0 [symbolic = %T.loc10_6.2 (constants.%T.79f)] +// CHECK:STDOUT: %T.patt.loc10_6.2: %Generic.type.6bf = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.fd1)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: %Generic.type.4) { +// CHECK:STDOUT: fn(%T.param_patt: %Generic.type.6bf) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %T.ref: %Generic.type.4 = name_ref T, %T.loc10_6.1 [symbolic = %T.loc10_6.2 (constants.%T.3)] -// CHECK:STDOUT: %.loc18: %Generic.type.3 = converted %T.ref, [template = ] +// CHECK:STDOUT: %T.ref: %Generic.type.6bf = name_ref T, %T.loc10_6.1 [symbolic = %T.loc10_6.2 (constants.%T.79f)] +// CHECK:STDOUT: %.loc18: %Generic.type.ad8 = converted %T.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Generic(constants.%T.1) { -// CHECK:STDOUT: %T.loc4_19.2 => constants.%T.1 -// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T.1 +// CHECK:STDOUT: specific @Generic(constants.%T.6ba) { +// CHECK:STDOUT: %T.loc4_19.2 => constants.%T.6ba +// CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%T.6ba // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(%T.loc4_19.2) {} @@ -514,9 +514,9 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.2) { -// CHECK:STDOUT: %T.loc9_6.2 => constants.%T.2 -// CHECK:STDOUT: %T.patt.loc9_6.2 => constants.%T.2 +// CHECK:STDOUT: specific @F(constants.%T.c30) { +// CHECK:STDOUT: %T.loc9_6.2 => constants.%T.c30 +// CHECK:STDOUT: %T.patt.loc9_6.2 => constants.%T.c30 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%B) { @@ -524,8 +524,8 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %T.patt.loc4_19.2 => constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%T.3) { -// CHECK:STDOUT: %T.loc10_6.2 => constants.%T.3 -// CHECK:STDOUT: %T.patt.loc10_6.2 => constants.%T.3 +// CHECK:STDOUT: specific @G(constants.%T.79f) { +// CHECK:STDOUT: %T.loc10_6.2 => constants.%T.79f +// CHECK:STDOUT: %T.patt.loc10_6.2 => constants.%T.79f // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon index 0a716bbffcb7..22103559f504 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon @@ -32,13 +32,13 @@ impl C as AddWith(C) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template] -// CHECK:STDOUT: %AddWith.generic: %AddWith.type.1 = struct_value () [template] -// CHECK:STDOUT: %AddWith.type.2: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] -// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %AddWith.type.b35: type = generic_interface_type @AddWith [template] +// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [template] +// CHECK:STDOUT: %AddWith.type.c52: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] +// CHECK:STDOUT: %Self: %AddWith.type.c52 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %AddWith.type.2, %F.type [symbolic] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %AddWith.type.c52, %F.type [symbolic] // CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, @AddWith.%F.decl [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -46,7 +46,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .AddWith = %AddWith.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %AddWith.decl: %AddWith.type.1 = interface_decl @AddWith [template = constants.%AddWith.generic] { +// CHECK:STDOUT: %AddWith.decl: %AddWith.type.b35 = interface_decl @AddWith [template = constants.%AddWith.generic] { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_19.1, runtime_param [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -60,15 +60,15 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.patt.loc4_19.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T.loc4_19.2)> [symbolic = %AddWith.type (constants.%AddWith.type.2)] -// CHECK:STDOUT: %Self.2: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T.loc4_19.2)> [symbolic = %AddWith.type (constants.%AddWith.type.c52)] +// CHECK:STDOUT: %Self.2: %AddWith.type.c52 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T.loc4_19.2) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @AddWith.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.c52), @AddWith.%F.type (%F.type) [symbolic = %F.assoc_type (constants.%F.assoc_type)] // CHECK:STDOUT: %assoc0.loc5_9.2: @AddWith.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @AddWith.%AddWith.type (%AddWith.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @AddWith.%AddWith.type (%AddWith.type.c52) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %F.decl: @AddWith.%F.type (%F.type) = fn_decl @F [symbolic = @AddWith.%F (constants.%F)] {} {} // CHECK:STDOUT: %assoc0.loc5_9.1: @AddWith.%F.assoc_type (%F.assoc_type) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc5_9.2 (constants.%assoc0)] // CHECK:STDOUT: @@ -79,7 +79,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@AddWith.%T.loc4_19.1: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.2)) { +// CHECK:STDOUT: generic fn @F(@AddWith.%T.loc4_19.1: type, @AddWith.%Self.1: @AddWith.%AddWith.type (%AddWith.type.c52)) { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -99,47 +99,47 @@ impl C as AddWith(C) { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %AddWith.type.1: type = generic_interface_type @AddWith [template] -// CHECK:STDOUT: %AddWith.generic: %AddWith.type.1 = struct_value () [template] +// CHECK:STDOUT: %AddWith.type.b35: type = generic_interface_type @AddWith [template] +// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %AddWith.type.2: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] -// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %AddWith.type.b2d: type = facet_type <@AddWith, @AddWith(%T)> [symbolic] +// CHECK:STDOUT: %Self: %AddWith.type.b2d = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @AddWith(%T) [symbolic] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %AddWith.type.2, %F.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type.1 = assoc_entity element0, imports.%import_ref.5 [symbolic] -// CHECK:STDOUT: %AddWith.type.3: type = facet_type <@AddWith, @AddWith(%C)> [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.1, @AddWith(%C) [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %AddWith.type.3, %F.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %F.assoc_type.2 = assoc_entity element0, imports.%import_ref.5 [template] +// CHECK:STDOUT: %F.type.deb: type = fn_type @F.1, @AddWith(%T) [symbolic] +// CHECK:STDOUT: %F.57a: %F.type.deb = struct_value () [symbolic] +// CHECK:STDOUT: %F.assoc_type.cbf: type = assoc_entity_type %AddWith.type.b2d, %F.type.deb [symbolic] +// CHECK:STDOUT: %assoc0.816: %F.assoc_type.cbf = assoc_entity element0, imports.%import_ref.91c [symbolic] +// CHECK:STDOUT: %AddWith.type.32b: type = facet_type <@AddWith, @AddWith(%C)> [template] +// CHECK:STDOUT: %F.type.47b: type = fn_type @F.1, @AddWith(%C) [template] +// CHECK:STDOUT: %F.000: %F.type.47b = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.13c: type = assoc_entity_type %AddWith.type.32b, %F.type.47b [template] +// CHECK:STDOUT: %assoc0.d29: %F.assoc_type.13c = assoc_entity element0, imports.%import_ref.91c [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template] -// CHECK:STDOUT: %F.type.3: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.3: %F.type.3 = struct_value () [template] -// CHECK:STDOUT: %AddWith.facet: %AddWith.type.2 = facet_value %C, %impl_witness [symbolic] +// CHECK:STDOUT: %F.type.744: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.780: %F.type.744 = struct_value () [template] +// CHECK:STDOUT: %AddWith.facet: %AddWith.type.b2d = facet_value %C, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %AddWith.type.1 = import_ref Main//a, AddWith, loaded [template = constants.%AddWith.generic] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//a, inst26 [no loc], unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//a, loc5_9, unloaded -// CHECK:STDOUT: %import_ref.4: @AddWith.%F.type (%F.type.1) = import_ref Main//a, F, loaded [symbolic = @AddWith.%F (constants.%F.1)] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, loc5_9, unloaded +// CHECK:STDOUT: %import_ref.7c5: %AddWith.type.b35 = import_ref Main//a, AddWith, loaded [template = constants.%AddWith.generic] +// CHECK:STDOUT: %import_ref.648 = import_ref Main//a, inst26 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8a8 = import_ref Main//a, loc5_9, unloaded +// CHECK:STDOUT: %import_ref.70f: @AddWith.%F.type (%F.type.deb) = import_ref Main//a, F, loaded [symbolic = @AddWith.%F (constants.%F.57a)] +// CHECK:STDOUT: %import_ref.91c = import_ref Main//a, loc5_9, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .AddWith = imports.%import_ref.1 +// CHECK:STDOUT: .AddWith = imports.%import_ref.7c5 // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %C.ref.loc7_6: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %AddWith.ref: %AddWith.type.1 = name_ref AddWith, imports.%import_ref.1 [template = constants.%AddWith.generic] +// CHECK:STDOUT: %AddWith.ref: %AddWith.type.b35 = name_ref AddWith, imports.%import_ref.7c5 [template = constants.%AddWith.generic] // CHECK:STDOUT: %C.ref.loc7_19: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [template = constants.%AddWith.type.3] +// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [template = constants.%AddWith.type.32b] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%F.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } @@ -149,23 +149,23 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.2)] -// CHECK:STDOUT: %Self: %AddWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @AddWith(%T) [symbolic = %F.type (constants.%F.type.1)] -// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type.1) = struct_value () [symbolic = %F (constants.%F.1)] -// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.2), @AddWith.%F.type (%F.type.1) [symbolic = %F.assoc_type (constants.%F.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @AddWith.%F.assoc_type (%F.assoc_type.1) = assoc_entity element0, imports.%import_ref.5 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(%T)> [symbolic = %AddWith.type (constants.%AddWith.type.b2d)] +// CHECK:STDOUT: %Self: %AddWith.type.b2d = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @AddWith(%T) [symbolic = %F.type (constants.%F.type.deb)] +// CHECK:STDOUT: %F: @AddWith.%F.type (%F.type.deb) = struct_value () [symbolic = %F (constants.%F.57a)] +// CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type @AddWith.%AddWith.type (%AddWith.type.b2d), @AddWith.%F.type (%F.type.deb) [symbolic = %F.assoc_type (constants.%F.assoc_type.cbf)] +// CHECK:STDOUT: %assoc0: @AddWith.%F.assoc_type (%F.assoc_type.cbf) = assoc_entity element0, imports.%import_ref.91c [symbolic = %assoc0 (constants.%assoc0.816)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 -// CHECK:STDOUT: .F = imports.%import_ref.3 -// CHECK:STDOUT: witness = (imports.%import_ref.4) +// CHECK:STDOUT: .Self = imports.%import_ref.648 +// CHECK:STDOUT: .F = imports.%import_ref.8a8 +// CHECK:STDOUT: witness = (imports.%import_ref.70f) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref.loc7_6 as %AddWith.type { -// CHECK:STDOUT: %F.decl: %F.type.3 = fn_decl @F.2 [template = constants.%F.3] {} {} +// CHECK:STDOUT: %F.decl: %F.type.744 = fn_decl @F.2 [template = constants.%F.780] {} {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .F = %F.decl @@ -180,7 +180,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %AddWith.type.2) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %AddWith.type.b2d) [from "a.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } @@ -204,12 +204,12 @@ impl C as AddWith(C) { // CHECK:STDOUT: %T.patt => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.3 +// CHECK:STDOUT: %AddWith.type => constants.%AddWith.type.32b // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %F.type => constants.%F.type.2 -// CHECK:STDOUT: %F => constants.%F.2 -// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %F.type => constants.%F.type.47b +// CHECK:STDOUT: %F => constants.%F.000 +// CHECK:STDOUT: %F.assoc_type => constants.%F.assoc_type.13c +// CHECK:STDOUT: %assoc0 => constants.%assoc0.d29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%C, constants.%AddWith.facet) {} diff --git a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon index fc55808cd16e..faf8a5cf6408 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon @@ -51,38 +51,38 @@ interface A(T: type) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %NotGenericNoParams.type: type = facet_type <@NotGenericNoParams> [template] -// CHECK:STDOUT: %Self.1: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %NotGenericButParams.type.1: type = generic_interface_type @NotGenericButParams [template] -// CHECK:STDOUT: %NotGenericButParams.generic: %NotGenericButParams.type.1 = struct_value () [template] -// CHECK:STDOUT: %NotGenericButParams.type.2: type = facet_type <@NotGenericButParams> [template] -// CHECK:STDOUT: %Self.2: %NotGenericButParams.type.2 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.d20: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %NotGenericButParams.type.f26: type = generic_interface_type @NotGenericButParams [template] +// CHECK:STDOUT: %NotGenericButParams.generic: %NotGenericButParams.type.f26 = struct_value () [template] +// CHECK:STDOUT: %NotGenericButParams.type.014: type = facet_type <@NotGenericButParams> [template] +// CHECK:STDOUT: %Self.68e: %NotGenericButParams.type.014 = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %GenericAndParams.type.1: type = generic_interface_type @GenericAndParams.1 [template] -// CHECK:STDOUT: %GenericAndParams.generic.1: %GenericAndParams.type.1 = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.type.2: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%T)> [symbolic] -// CHECK:STDOUT: %Self.3: %GenericAndParams.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %GenericAndParams.type.cde: type = generic_interface_type @GenericAndParams.1 [template] +// CHECK:STDOUT: %GenericAndParams.generic.827: %GenericAndParams.type.cde = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.type.74e: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%T)> [symbolic] +// CHECK:STDOUT: %Self.d71: %GenericAndParams.type.74e = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%T) [symbolic] -// CHECK:STDOUT: %GenericNoParams.type.1: type = facet_type <@GenericNoParams> [template] -// CHECK:STDOUT: %GenericNoParams.type.2: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic] -// CHECK:STDOUT: %Self.4: %GenericNoParams.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %C.37e: type = class_type @C, @C(%T) [symbolic] +// CHECK:STDOUT: %GenericNoParams.type.835: type = facet_type <@GenericNoParams> [template] +// CHECK:STDOUT: %GenericNoParams.type.37b: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic] +// CHECK:STDOUT: %Self.b46: %GenericNoParams.type.37b = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %GenericAndParams.type.3: type = generic_interface_type @GenericAndParams.2, @C(%T) [symbolic] -// CHECK:STDOUT: %GenericAndParams.generic.2: %GenericAndParams.type.3 = struct_value () [symbolic] -// CHECK:STDOUT: %GenericAndParams.type.4: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%T, %U)> [symbolic] -// CHECK:STDOUT: %Self.5: %GenericAndParams.type.4 = bind_symbolic_name Self, 2 [symbolic] +// CHECK:STDOUT: %GenericAndParams.type.2dc: type = generic_interface_type @GenericAndParams.2, @C(%T) [symbolic] +// CHECK:STDOUT: %GenericAndParams.generic.102: %GenericAndParams.type.2dc = struct_value () [symbolic] +// CHECK:STDOUT: %GenericAndParams.type.171: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%T, %U)> [symbolic] +// CHECK:STDOUT: %Self.7ac: %GenericAndParams.type.171 = bind_symbolic_name Self, 2 [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: %impl_witness: = impl_witness () [template] -// CHECK:STDOUT: %GenericAndParams.type.5: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%X)> [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%X) [template] -// CHECK:STDOUT: %GenericAndParams.type.6: type = generic_interface_type @GenericAndParams.2, @C(%X) [template] -// CHECK:STDOUT: %GenericAndParams.generic.3: %GenericAndParams.type.6 = struct_value () [template] -// CHECK:STDOUT: %GenericAndParams.type.7: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%X, %X)> [template] +// CHECK:STDOUT: %GenericAndParams.type.d45: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%X)> [template] +// CHECK:STDOUT: %C.f9e: type = class_type @C, @C(%X) [template] +// CHECK:STDOUT: %GenericAndParams.type.e61: type = generic_interface_type @GenericAndParams.2, @C(%X) [template] +// CHECK:STDOUT: %GenericAndParams.generic.0a6: %GenericAndParams.type.e61 = struct_value () [template] +// CHECK:STDOUT: %GenericAndParams.type.43c: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%X, %X)> [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -94,8 +94,8 @@ interface A(T: type) {} // CHECK:STDOUT: .X = %X.decl // CHECK:STDOUT: } // CHECK:STDOUT: %NotGenericNoParams.decl: type = interface_decl @NotGenericNoParams [template = constants.%NotGenericNoParams.type] {} {} -// CHECK:STDOUT: %NotGenericButParams.decl: %NotGenericButParams.type.1 = interface_decl @NotGenericButParams [template = constants.%NotGenericButParams.generic] {} {} -// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.1 = interface_decl @GenericAndParams.1 [template = constants.%GenericAndParams.generic.1] { +// CHECK:STDOUT: %NotGenericButParams.decl: %NotGenericButParams.type.f26 = interface_decl @NotGenericButParams [template = constants.%NotGenericButParams.generic] {} {} +// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.cde = interface_decl @GenericAndParams.1 [template = constants.%GenericAndParams.generic.827] { // CHECK:STDOUT: %T.patt.loc6_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_28.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_28.1, runtime_param [symbolic = %T.patt.loc6_28.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -117,40 +117,40 @@ interface A(T: type) {} // CHECK:STDOUT: %impl_witness.loc14: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.1 = name_ref NotGenericButParams, file.%NotGenericButParams.decl [template = constants.%NotGenericButParams.generic] -// CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [template = constants.%NotGenericButParams.type.2] +// CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.f26 = name_ref NotGenericButParams, file.%NotGenericButParams.decl [template = constants.%NotGenericButParams.generic] +// CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [template = constants.%NotGenericButParams.type.014] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc15: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %X.ref.loc16_6: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.1 = name_ref GenericAndParams, file.%GenericAndParams.decl [template = constants.%GenericAndParams.generic.1] +// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.cde = name_ref GenericAndParams, file.%GenericAndParams.decl [template = constants.%GenericAndParams.generic.827] // CHECK:STDOUT: %X.ref.loc16_28: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(constants.%X)> [template = constants.%GenericAndParams.type.5] +// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(constants.%X)> [template = constants.%GenericAndParams.type.d45] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc16: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: impl_decl @impl.4 [template] {} { // CHECK:STDOUT: %X.ref.loc17_6: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %X.ref.loc17_13: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.2] -// CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, @C.%GenericNoParams.decl [template = constants.%GenericNoParams.type.1] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.f9e] +// CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, @C.%GenericNoParams.decl [template = constants.%GenericNoParams.type.835] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc17: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: impl_decl @impl.5 [template] {} { // CHECK:STDOUT: %X.ref.loc18_6: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] // CHECK:STDOUT: %X.ref.loc18_13: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.2] -// CHECK:STDOUT: %.loc18: %GenericAndParams.type.6 = specific_constant @C.%GenericAndParams.decl, @C(constants.%X) [template = constants.%GenericAndParams.generic.3] -// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.6 = name_ref GenericAndParams, %.loc18 [template = constants.%GenericAndParams.generic.3] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.f9e] +// CHECK:STDOUT: %.loc18: %GenericAndParams.type.e61 = specific_constant @C.%GenericAndParams.decl, @C(constants.%X) [template = constants.%GenericAndParams.generic.0a6] +// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.e61 = name_ref GenericAndParams, %.loc18 [template = constants.%GenericAndParams.generic.0a6] // CHECK:STDOUT: %X.ref.loc18_33: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(constants.%X, constants.%X)> [template = constants.%GenericAndParams.type.7] +// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(constants.%X, constants.%X)> [template = constants.%GenericAndParams.type.43c] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness.loc18: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NotGenericNoParams { -// CHECK:STDOUT: %Self: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d20] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -158,7 +158,7 @@ interface A(T: type) {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @NotGenericButParams { -// CHECK:STDOUT: %Self: %NotGenericButParams.type.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %NotGenericButParams.type.014 = bind_symbolic_name Self, 0 [symbolic = constants.%Self.68e] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -170,11 +170,11 @@ interface A(T: type) {} // CHECK:STDOUT: %T.patt.loc6_28.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_28.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%T.loc6_28.2)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.2)] -// CHECK:STDOUT: %Self.2: %GenericAndParams.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] +// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%T.loc6_28.2)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.74e)] +// CHECK:STDOUT: %Self.2: %GenericAndParams.type.74e = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.d71)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @GenericAndParams.1.%GenericAndParams.type (%GenericAndParams.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3)] +// CHECK:STDOUT: %Self.1: @GenericAndParams.1.%GenericAndParams.type (%GenericAndParams.type.74e) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.d71)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -185,11 +185,11 @@ interface A(T: type) {} // CHECK:STDOUT: generic interface @GenericNoParams(@C.%T.loc8_9.1: type) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %GenericNoParams.type: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic = %GenericNoParams.type (constants.%GenericNoParams.type.2)] -// CHECK:STDOUT: %Self.2: %GenericNoParams.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.4)] +// CHECK:STDOUT: %GenericNoParams.type: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic = %GenericNoParams.type (constants.%GenericNoParams.type.37b)] +// CHECK:STDOUT: %Self.2: %GenericNoParams.type.37b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.b46)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @GenericNoParams.%GenericNoParams.type (%GenericNoParams.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.4)] +// CHECK:STDOUT: %Self.1: @GenericNoParams.%GenericNoParams.type (%GenericNoParams.type.37b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.b46)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -203,11 +203,11 @@ interface A(T: type) {} // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%T, %U.loc10_30.2)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.4)] -// CHECK:STDOUT: %Self.2: %GenericAndParams.type.4 = bind_symbolic_name Self, 2 [symbolic = %Self.2 (constants.%Self.5)] +// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%T, %U.loc10_30.2)> [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.171)] +// CHECK:STDOUT: %Self.2: %GenericAndParams.type.171 = bind_symbolic_name Self, 2 [symbolic = %Self.2 (constants.%Self.7ac)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @GenericAndParams.2.%GenericAndParams.type (%GenericAndParams.type.4) = bind_symbolic_name Self, 2 [symbolic = %Self.2 (constants.%Self.5)] +// CHECK:STDOUT: %Self.1: @GenericAndParams.2.%GenericAndParams.type (%GenericAndParams.type.171) = bind_symbolic_name Self, 2 [symbolic = %Self.2 (constants.%Self.7ac)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -245,12 +245,12 @@ interface A(T: type) {} // CHECK:STDOUT: %T.patt.loc8_9.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type: type = generic_interface_type @GenericAndParams.2, @C(%T.loc8_9.2) [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.3)] -// CHECK:STDOUT: %GenericAndParams.generic: @C.%GenericAndParams.type (%GenericAndParams.type.3) = struct_value () [symbolic = %GenericAndParams.generic (constants.%GenericAndParams.generic.2)] +// CHECK:STDOUT: %GenericAndParams.type: type = generic_interface_type @GenericAndParams.2, @C(%T.loc8_9.2) [symbolic = %GenericAndParams.type (constants.%GenericAndParams.type.2dc)] +// CHECK:STDOUT: %GenericAndParams.generic: @C.%GenericAndParams.type (%GenericAndParams.type.2dc) = struct_value () [symbolic = %GenericAndParams.generic (constants.%GenericAndParams.generic.102)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %GenericNoParams.decl: type = interface_decl @GenericNoParams [template = constants.%GenericNoParams.type.1] {} {} -// CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.3) = interface_decl @GenericAndParams.2 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.2)] { +// CHECK:STDOUT: %GenericNoParams.decl: type = interface_decl @GenericNoParams [template = constants.%GenericNoParams.type.835] {} {} +// CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.2dc) = interface_decl @GenericAndParams.2 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.102)] { // CHECK:STDOUT: %U.patt.loc10_30.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)] // CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc10_30.1, runtime_param [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)] // CHECK:STDOUT: } { @@ -260,7 +260,7 @@ interface A(T: type) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.37e // CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl // CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl // CHECK:STDOUT: complete_type_witness = %complete_type @@ -305,8 +305,8 @@ interface A(T: type) {} // CHECK:STDOUT: %T.patt.loc6_28.2 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.5 -// CHECK:STDOUT: %Self.2 => constants.%Self.3 +// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.d45 +// CHECK:STDOUT: %Self.2 => constants.%Self.d71 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%X) { @@ -314,8 +314,8 @@ interface A(T: type) {} // CHECK:STDOUT: %T.patt.loc8_9.2 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.6 -// CHECK:STDOUT: %GenericAndParams.generic => constants.%GenericAndParams.generic.3 +// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.e61 +// CHECK:STDOUT: %GenericAndParams.generic => constants.%GenericAndParams.generic.0a6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.2(constants.%X, constants.%X) { @@ -324,28 +324,28 @@ interface A(T: type) {} // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %T => constants.%X -// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.7 -// CHECK:STDOUT: %Self.2 => constants.%Self.5 +// CHECK:STDOUT: %GenericAndParams.type => constants.%GenericAndParams.type.43c +// CHECK:STDOUT: %Self.2 => constants.%Self.7ac // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_non_generic_implicit_params.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template] -// CHECK:STDOUT: %A.generic: %A.type.1 = struct_value () [template] -// CHECK:STDOUT: %A.type.2: type = facet_type <@A> [template] -// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [template] +// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [template] +// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [template] +// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %A.decl: %A.type.1 = interface_decl @A [template = constants.%A.generic] {} {} +// CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [template = constants.%A.generic] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { -// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self] +// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic = constants.%Self] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -355,21 +355,21 @@ interface A(T: type) {} // CHECK:STDOUT: --- fail_non_generic_params.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.type.1: type = generic_interface_type @A [template] -// CHECK:STDOUT: %A.generic: %A.type.1 = struct_value () [template] -// CHECK:STDOUT: %A.type.2: type = facet_type <@A> [template] -// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [template] +// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [template] +// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [template] +// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %A.decl: %A.type.1 = interface_decl @A [template = constants.%A.generic] {} {} +// CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [template = constants.%A.generic] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { -// CHECK:STDOUT: %Self: %A.type.2 = bind_symbolic_name Self, 0 [symbolic = constants.%Self] +// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic = constants.%Self] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self diff --git a/toolchain/check/testdata/interface/no_prelude/import.carbon b/toolchain/check/testdata/interface/no_prelude/import.carbon index 1aeb233cd7ba..19d9b96aa14e 100644 --- a/toolchain/check/testdata/interface/no_prelude/import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import.carbon @@ -52,24 +52,24 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template] -// CHECK:STDOUT: %Self.1: %Empty.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.e1a: %Empty.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [template] -// CHECK:STDOUT: %Self.2: %Basic.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %Basic.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, @Basic.%T [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.1: %F.type.1 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %Basic.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc1.1: %F.assoc_type.1 = assoc_entity element1, @Basic.%F.decl [template] +// CHECK:STDOUT: %Self.09c: %Basic.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %assoc_type.6af: type = assoc_entity_type %Basic.type, type [template] +// CHECK:STDOUT: %assoc0.d6f: %assoc_type.6af = assoc_entity element0, @Basic.%T [template] +// CHECK:STDOUT: %F.type.def: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.415: %F.type.def = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.4b0: type = assoc_entity_type %Basic.type, %F.type.def [template] +// CHECK:STDOUT: %assoc1.ffc: %F.assoc_type.4b0 = assoc_entity element1, @Basic.%F.decl [template] // CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template] -// CHECK:STDOUT: %Self.3: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %ForwardDeclared.type, type [template] -// CHECK:STDOUT: %assoc0.2: %assoc_type.2 = assoc_entity element0, @ForwardDeclared.%T [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.2: %F.type.2 = struct_value () [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template] -// CHECK:STDOUT: %assoc1.2: %F.assoc_type.2 = assoc_entity element1, @ForwardDeclared.%F.decl [template] -// CHECK:STDOUT: %struct_type.f.1: type = struct_type {.f: %ForwardDeclared.type} [template] +// CHECK:STDOUT: %Self.975: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %assoc_type.3e8: type = assoc_entity_type %ForwardDeclared.type, type [template] +// CHECK:STDOUT: %assoc0.bef: %assoc_type.3e8 = assoc_entity element0, @ForwardDeclared.%T [template] +// CHECK:STDOUT: %F.type.a8f: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.ef7: %F.type.a8f = struct_value () [template] +// CHECK:STDOUT: %F.assoc_type.cf5: type = assoc_entity_type %ForwardDeclared.type, %F.type.a8f [template] +// CHECK:STDOUT: %assoc1.763: %F.assoc_type.cf5 = assoc_entity element1, @ForwardDeclared.%F.decl [template] +// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -82,12 +82,12 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {} // CHECK:STDOUT: %Basic.decl: type = interface_decl @Basic [template = constants.%Basic.type] {} {} // CHECK:STDOUT: %ForwardDeclared.decl: type = interface_decl @ForwardDeclared [template = constants.%ForwardDeclared.type] {} {} -// CHECK:STDOUT: %f_ref.var: ref %struct_type.f.1 = var f_ref -// CHECK:STDOUT: %f_ref: ref %struct_type.f.1 = bind_name f_ref, %f_ref.var +// CHECK:STDOUT: %f_ref.var: ref %struct_type.f.2f5 = var f_ref +// CHECK:STDOUT: %f_ref: ref %struct_type.f.2f5 = bind_name f_ref, %f_ref.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { -// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e1a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -95,11 +95,11 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Basic { -// CHECK:STDOUT: %Self: %Basic.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %Basic.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.09c] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, %T [template = constants.%assoc0.1] -// CHECK:STDOUT: %F.decl: %F.type.1 = fn_decl @F.1 [template = constants.%F.1] {} {} -// CHECK:STDOUT: %assoc1: %F.assoc_type.1 = assoc_entity element1, %F.decl [template = constants.%assoc1.1] +// CHECK:STDOUT: %assoc0: %assoc_type.6af = assoc_entity element0, %T [template = constants.%assoc0.d6f] +// CHECK:STDOUT: %F.decl: %F.type.def = fn_decl @F.1 [template = constants.%F.415] {} {} +// CHECK:STDOUT: %assoc1: %F.assoc_type.4b0 = assoc_entity element1, %F.decl [template = constants.%assoc1.ffc] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -109,11 +109,11 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared { -// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3] +// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.975] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type.2 = assoc_entity element0, %T [template = constants.%assoc0.2] -// CHECK:STDOUT: %F.decl: %F.type.2 = fn_decl @F.2 [template = constants.%F.2] {} {} -// CHECK:STDOUT: %assoc1: %F.assoc_type.2 = assoc_entity element1, %F.decl [template = constants.%assoc1.2] +// CHECK:STDOUT: %assoc0: %assoc_type.3e8 = assoc_entity element0, %T [template = constants.%assoc0.bef] +// CHECK:STDOUT: %F.decl: %F.type.a8f = fn_decl @F.2 [template = constants.%F.ef7] {} {} +// CHECK:STDOUT: %assoc1: %F.assoc_type.cf5 = assoc_entity element1, %F.decl [template = constants.%assoc1.763] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -132,9 +132,9 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.09c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.3) {} +// CHECK:STDOUT: specific @F.2(constants.%Self.975) {} // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: @@ -143,51 +143,51 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template] // CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template] // CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [template] -// CHECK:STDOUT: %Self.2: %Basic.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.09c: %Basic.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %UseBasic.type: type = fn_type @UseBasic [template] // CHECK:STDOUT: %UseBasic: %UseBasic.type = struct_value () [template] // CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template] -// CHECK:STDOUT: %Self.3: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.975: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %UseForwardDeclared.type: type = fn_type @UseForwardDeclared [template] // CHECK:STDOUT: %UseForwardDeclared: %UseForwardDeclared.type = struct_value () [template] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %Basic.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, imports.%import_ref.16 [template] -// CHECK:STDOUT: %F.type.1: type = fn_type @F.1 [template] -// CHECK:STDOUT: %F.assoc_type.1: type = assoc_entity_type %Basic.type, %F.type.1 [template] -// CHECK:STDOUT: %assoc1.1: %F.assoc_type.1 = assoc_entity element1, imports.%import_ref.17 [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %ForwardDeclared.type, type [template] -// CHECK:STDOUT: %assoc0.2: %assoc_type.2 = assoc_entity element0, imports.%import_ref.18 [template] -// CHECK:STDOUT: %F.type.2: type = fn_type @F.2 [template] -// CHECK:STDOUT: %F.assoc_type.2: type = assoc_entity_type %ForwardDeclared.type, %F.type.2 [template] -// CHECK:STDOUT: %assoc1.2: %F.assoc_type.2 = assoc_entity element1, imports.%import_ref.19 [template] +// CHECK:STDOUT: %assoc_type.6af: type = assoc_entity_type %Basic.type, type [template] +// CHECK:STDOUT: %assoc0.1d6: %assoc_type.6af = assoc_entity element0, imports.%import_ref.ef4597.1 [template] +// CHECK:STDOUT: %F.type.def: type = fn_type @F.1 [template] +// CHECK:STDOUT: %F.assoc_type.4b0: type = assoc_entity_type %Basic.type, %F.type.def [template] +// CHECK:STDOUT: %assoc1.51a: %F.assoc_type.4b0 = assoc_entity element1, imports.%import_ref.9c3 [template] +// CHECK:STDOUT: %assoc_type.3e8: type = assoc_entity_type %ForwardDeclared.type, type [template] +// CHECK:STDOUT: %assoc0.910: %assoc_type.3e8 = assoc_entity element0, imports.%import_ref.ef4597.2 [template] +// CHECK:STDOUT: %F.type.a8f: type = fn_type @F.2 [template] +// CHECK:STDOUT: %F.assoc_type.cf5: type = assoc_entity_type %ForwardDeclared.type, %F.type.a8f [template] +// CHECK:STDOUT: %assoc1.975: %F.assoc_type.cf5 = assoc_entity element1, imports.%import_ref.9d1 [template] // CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [template] -// CHECK:STDOUT: %struct_type.f.1: type = struct_type {.f: %ForwardDeclared.type} [template] +// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//a, Empty, loaded [template = constants.%Empty.type] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//a, Basic, loaded [template = constants.%Basic.type] -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//a, ForwardDeclared, loaded [template = constants.%ForwardDeclared.type] -// CHECK:STDOUT: %import_ref.4: ref %struct_type.f.1 = import_ref Main//a, f_ref, loaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//a, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//a, inst19 [no loc], unloaded -// CHECK:STDOUT: %import_ref.7: %assoc_type.1 = import_ref Main//a, loc8_15, loaded [template = constants.%assoc0.1] -// CHECK:STDOUT: %import_ref.8: %F.assoc_type.1 = import_ref Main//a, loc9_9, loaded [template = constants.%assoc1.1] -// CHECK:STDOUT: %import_ref.9 = import_ref Main//a, T, unloaded -// CHECK:STDOUT: %import_ref.10 = import_ref Main//a, F, unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Main//a, inst34 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: %assoc_type.2 = import_ref Main//a, loc16_15, loaded [template = constants.%assoc0.2] -// CHECK:STDOUT: %import_ref.13: %F.assoc_type.2 = import_ref Main//a, loc17_9, loaded [template = constants.%assoc1.2] -// CHECK:STDOUT: %import_ref.14 = import_ref Main//a, T, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//a, F, unloaded +// CHECK:STDOUT: %import_ref.db6: type = import_ref Main//a, Empty, loaded [template = constants.%Empty.type] +// CHECK:STDOUT: %import_ref.73d: type = import_ref Main//a, Basic, loaded [template = constants.%Basic.type] +// CHECK:STDOUT: %import_ref.1f1: type = import_ref Main//a, ForwardDeclared, loaded [template = constants.%ForwardDeclared.type] +// CHECK:STDOUT: %import_ref.2ac: ref %struct_type.f.2f5 = import_ref Main//a, f_ref, loaded +// CHECK:STDOUT: %import_ref.77a = import_ref Main//a, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.5e6 = import_ref Main//a, inst19 [no loc], unloaded +// CHECK:STDOUT: %import_ref.42e: %assoc_type.6af = import_ref Main//a, loc8_15, loaded [template = constants.%assoc0.1d6] +// CHECK:STDOUT: %import_ref.52d: %F.assoc_type.4b0 = import_ref Main//a, loc9_9, loaded [template = constants.%assoc1.51a] +// CHECK:STDOUT: %import_ref.08d600.1 = import_ref Main//a, T, unloaded +// CHECK:STDOUT: %import_ref.b85 = import_ref Main//a, F, unloaded +// CHECK:STDOUT: %import_ref.566 = import_ref Main//a, inst34 [no loc], unloaded +// CHECK:STDOUT: %import_ref.95f: %assoc_type.3e8 = import_ref Main//a, loc16_15, loaded [template = constants.%assoc0.910] +// CHECK:STDOUT: %import_ref.1d4: %F.assoc_type.cf5 = import_ref Main//a, loc17_9, loaded [template = constants.%assoc1.975] +// CHECK:STDOUT: %import_ref.08d600.2 = import_ref Main//a, T, unloaded +// CHECK:STDOUT: %import_ref.c2e = import_ref Main//a, F, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Empty = imports.%import_ref.1 -// CHECK:STDOUT: .Basic = imports.%import_ref.2 -// CHECK:STDOUT: .ForwardDeclared = imports.%import_ref.3 -// CHECK:STDOUT: .f_ref = imports.%import_ref.4 +// CHECK:STDOUT: .Empty = imports.%import_ref.db6 +// CHECK:STDOUT: .Basic = imports.%import_ref.73d +// CHECK:STDOUT: .ForwardDeclared = imports.%import_ref.1f1 +// CHECK:STDOUT: .f_ref = imports.%import_ref.2ac // CHECK:STDOUT: .UseEmpty = %UseEmpty.decl // CHECK:STDOUT: .UseBasic = %UseBasic.decl // CHECK:STDOUT: .UseForwardDeclared = %UseForwardDeclared.decl @@ -203,7 +203,7 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %e.param_patt: %Empty.type = value_param_pattern %e.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %e.param: %Empty.type = value_param runtime_param0 -// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%import_ref.1 [template = constants.%Empty.type] +// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%import_ref.db6 [template = constants.%Empty.type] // CHECK:STDOUT: %e: %Empty.type = bind_name e, %e.param // CHECK:STDOUT: } // CHECK:STDOUT: %UseBasic.decl: %UseBasic.type = fn_decl @UseBasic [template = constants.%UseBasic] { @@ -211,7 +211,7 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %e.param_patt: %Basic.type = value_param_pattern %e.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %e.param: %Basic.type = value_param runtime_param0 -// CHECK:STDOUT: %Basic.ref: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type] +// CHECK:STDOUT: %Basic.ref: type = name_ref Basic, imports.%import_ref.73d [template = constants.%Basic.type] // CHECK:STDOUT: %e: %Basic.type = bind_name e, %e.param // CHECK:STDOUT: } // CHECK:STDOUT: %UseForwardDeclared.decl: %UseForwardDeclared.type = fn_decl @UseForwardDeclared [template = constants.%UseForwardDeclared] { @@ -219,45 +219,45 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: %f.param_patt: %ForwardDeclared.type = value_param_pattern %f.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %f.param: %ForwardDeclared.type = value_param runtime_param0 -// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type] +// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, imports.%import_ref.1f1 [template = constants.%ForwardDeclared.type] // CHECK:STDOUT: %f: %ForwardDeclared.type = bind_name f, %f.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type] -// CHECK:STDOUT: %T.ref.loc10: %assoc_type.1 = name_ref T, imports.%import_ref.7 [template = constants.%assoc0.1] -// CHECK:STDOUT: %UseBasicT: %assoc_type.1 = bind_alias UseBasicT, imports.%import_ref.7 [template = constants.%assoc0.1] -// CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, imports.%import_ref.2 [template = constants.%Basic.type] -// CHECK:STDOUT: %F.ref.loc11: %F.assoc_type.1 = name_ref F, imports.%import_ref.8 [template = constants.%assoc1.1] -// CHECK:STDOUT: %UseBasicF: %F.assoc_type.1 = bind_alias UseBasicF, imports.%import_ref.8 [template = constants.%assoc1.1] -// CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type] -// CHECK:STDOUT: %T.ref.loc13: %assoc_type.2 = name_ref T, imports.%import_ref.12 [template = constants.%assoc0.2] -// CHECK:STDOUT: %UseForwardDeclaredT: %assoc_type.2 = bind_alias UseForwardDeclaredT, imports.%import_ref.12 [template = constants.%assoc0.2] -// CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, imports.%import_ref.3 [template = constants.%ForwardDeclared.type] -// CHECK:STDOUT: %F.ref.loc14: %F.assoc_type.2 = name_ref F, imports.%import_ref.13 [template = constants.%assoc1.2] -// CHECK:STDOUT: %UseForwardDeclaredF: %F.assoc_type.2 = bind_alias UseForwardDeclaredF, imports.%import_ref.13 [template = constants.%assoc1.2] +// CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%import_ref.73d [template = constants.%Basic.type] +// CHECK:STDOUT: %T.ref.loc10: %assoc_type.6af = name_ref T, imports.%import_ref.42e [template = constants.%assoc0.1d6] +// CHECK:STDOUT: %UseBasicT: %assoc_type.6af = bind_alias UseBasicT, imports.%import_ref.42e [template = constants.%assoc0.1d6] +// CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, imports.%import_ref.73d [template = constants.%Basic.type] +// CHECK:STDOUT: %F.ref.loc11: %F.assoc_type.4b0 = name_ref F, imports.%import_ref.52d [template = constants.%assoc1.51a] +// CHECK:STDOUT: %UseBasicF: %F.assoc_type.4b0 = bind_alias UseBasicF, imports.%import_ref.52d [template = constants.%assoc1.51a] +// CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, imports.%import_ref.1f1 [template = constants.%ForwardDeclared.type] +// CHECK:STDOUT: %T.ref.loc13: %assoc_type.3e8 = name_ref T, imports.%import_ref.95f [template = constants.%assoc0.910] +// CHECK:STDOUT: %UseForwardDeclaredT: %assoc_type.3e8 = bind_alias UseForwardDeclaredT, imports.%import_ref.95f [template = constants.%assoc0.910] +// CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, imports.%import_ref.1f1 [template = constants.%ForwardDeclared.type] +// CHECK:STDOUT: %F.ref.loc14: %F.assoc_type.cf5 = name_ref F, imports.%import_ref.1d4 [template = constants.%assoc1.975] +// CHECK:STDOUT: %UseForwardDeclaredF: %F.assoc_type.cf5 = bind_alias UseForwardDeclaredF, imports.%import_ref.1d4 [template = constants.%assoc1.975] // CHECK:STDOUT: %f.var: ref %ptr = var f // CHECK:STDOUT: %f: ref %ptr = bind_name f, %f.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.77a // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Basic [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: .T = imports.%import_ref.7 -// CHECK:STDOUT: .F = imports.%import_ref.8 -// CHECK:STDOUT: witness = (imports.%import_ref.9, imports.%import_ref.10) +// CHECK:STDOUT: .Self = imports.%import_ref.5e6 +// CHECK:STDOUT: .T = imports.%import_ref.42e +// CHECK:STDOUT: .F = imports.%import_ref.52d +// CHECK:STDOUT: witness = (imports.%import_ref.08d600.1, imports.%import_ref.b85) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardDeclared [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: .T = imports.%import_ref.12 -// CHECK:STDOUT: .F = imports.%import_ref.13 -// CHECK:STDOUT: witness = (imports.%import_ref.14, imports.%import_ref.15) +// CHECK:STDOUT: .Self = imports.%import_ref.566 +// CHECK:STDOUT: .T = imports.%import_ref.95f +// CHECK:STDOUT: .F = imports.%import_ref.1d4 +// CHECK:STDOUT: witness = (imports.%import_ref.08d600.2, imports.%import_ref.c2e) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @UseEmpty(%e.param_patt: %Empty.type) { @@ -275,26 +275,26 @@ var f: ForwardDeclared* = &f_ref.f; // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(constants.%Self.2: %Basic.type) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @F.1(constants.%Self.09c: %Basic.type) [from "a.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(constants.%Self.3: %ForwardDeclared.type) [from "a.carbon"] { +// CHECK:STDOUT: generic fn @F.2(constants.%Self.975: %ForwardDeclared.type) [from "a.carbon"] { // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %f_ref.ref: ref %struct_type.f.1 = name_ref f_ref, imports.%import_ref.4 +// CHECK:STDOUT: %f_ref.ref: ref %struct_type.f.2f5 = name_ref f_ref, imports.%import_ref.2ac // CHECK:STDOUT: %.loc16: ref %ForwardDeclared.type = struct_access %f_ref.ref, element0 // CHECK:STDOUT: %addr: %ptr = addr_of %.loc16 // CHECK:STDOUT: assign file.%f.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%Self.2) {} +// CHECK:STDOUT: specific @F.1(constants.%Self.09c) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%Self.3) {} +// CHECK:STDOUT: specific @F.2(constants.%Self.975) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/import_access.carbon b/toolchain/check/testdata/interface/no_prelude/import_access.carbon index 3ec6c5006267..dfb40b61b04d 100644 --- a/toolchain/check/testdata/interface/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import_access.carbon @@ -200,13 +200,13 @@ private interface Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Test//def, Def, loaded [template = constants.%Def.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Test//def, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.72e: type = import_ref Test//def, Def, loaded [template = constants.%Def.type] +// CHECK:STDOUT: %import_ref.8da = import_ref Test//def, inst15 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Def [private] = imports.%import_ref.1 +// CHECK:STDOUT: .Def [private] = imports.%import_ref.72e // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Test.import = import Test @@ -216,14 +216,14 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: %Def.type = value_param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %i.param: %Def.type = value_param runtime_param0 -// CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%import_ref.1 [template = constants.%Def.type] +// CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%import_ref.72e [template = constants.%Def.type] // CHECK:STDOUT: %i: %Def.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Def [from "def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.8da // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: @@ -305,13 +305,13 @@ private interface Redecl {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [template = constants.%ForwardWithDef.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Test//forward_with_def, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.c44: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [template = constants.%ForwardWithDef.type] +// CHECK:STDOUT: %import_ref.2f8 = import_ref Test//forward_with_def, inst16 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .ForwardWithDef [private] = imports.%import_ref.1 +// CHECK:STDOUT: .ForwardWithDef [private] = imports.%import_ref.c44 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Test.import = import Test @@ -321,14 +321,14 @@ private interface Redecl {} // CHECK:STDOUT: %i.param_patt: %ForwardWithDef.type = value_param_pattern %i.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %i.param: %ForwardWithDef.type = value_param runtime_param0 -// CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%import_ref.1 [template = constants.%ForwardWithDef.type] +// CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%import_ref.c44 [template = constants.%ForwardWithDef.type] // CHECK:STDOUT: %i: %ForwardWithDef.type = bind_name i, %i.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @ForwardWithDef [from "forward_with_def.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2f8 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/import_interface_decl.carbon b/toolchain/check/testdata/interface/no_prelude/import_interface_decl.carbon index 03ede708a267..7ac5e21dc609 100644 --- a/toolchain/check/testdata/interface/no_prelude/import_interface_decl.carbon +++ b/toolchain/check/testdata/interface/no_prelude/import_interface_decl.carbon @@ -95,15 +95,15 @@ impl library "[[@TEST_NAME]]"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//b, B, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//b, inst15 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: type = import_ref Main//b, loc6_7, loaded [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Main//b, loc6_12, loaded [template = constants.%B.type] +// CHECK:STDOUT: %import_ref.dcd = import_ref Main//b, B, unloaded +// CHECK:STDOUT: %import_ref.a54 = import_ref Main//b, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.e5c: type = import_ref Main//b, loc6_7, loaded [template = constants.%empty_tuple.type] +// CHECK:STDOUT: %import_ref.cc5: type = import_ref Main//b, loc6_12, loaded [template = constants.%B.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .B = imports.%import_ref.1 +// CHECK:STDOUT: .B = imports.%import_ref.dcd // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc1_6.1 = import // CHECK:STDOUT: %default.import.loc1_6.2 = import @@ -111,9 +111,9 @@ impl library "[[@TEST_NAME]]"; // CHECK:STDOUT: // CHECK:STDOUT: interface @B [from "fail_b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.a54 // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl: imports.%import_ref.4 as imports.%import_ref.5 [from "fail_b.carbon"]; +// CHECK:STDOUT: impl @impl: imports.%import_ref.e5c as imports.%import_ref.cc5 [from "fail_b.carbon"]; // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon index 9d8d996ae399..52e4faaaa4dc 100644 --- a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon @@ -193,14 +193,14 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic] // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] -// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template] -// CHECK:STDOUT: %Foo.generic: %Foo.type.1 = struct_value () [template] -// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic] -// CHECK:STDOUT: %Self.1: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %Bar.type.1: type = generic_interface_type @Bar [template] -// CHECK:STDOUT: %Bar.generic: %Bar.type.1 = struct_value () [template] -// CHECK:STDOUT: %Bar.type.2: type = facet_type <@Bar, @Bar(%a)> [symbolic] -// CHECK:STDOUT: %Self.2: %Bar.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template] +// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template] +// CHECK:STDOUT: %Foo.type.f3b: type = facet_type <@Foo, @Foo(%a)> [symbolic] +// CHECK:STDOUT: %Self.77c: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Bar.type.982: type = generic_interface_type @Bar [template] +// CHECK:STDOUT: %Bar.generic: %Bar.type.982 = struct_value () [template] +// CHECK:STDOUT: %Bar.type.95f: type = facet_type <@Bar, @Bar(%a)> [symbolic] +// CHECK:STDOUT: %Self.809: %Bar.type.95f = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -213,7 +213,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C] // CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C] -// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -221,7 +221,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -229,7 +229,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %a.param.loc8 [symbolic = constants.%a] // CHECK:STDOUT: } -// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type.1 = interface_decl @Bar [template = constants.%Bar.generic] { +// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type.982 = interface_decl @Bar [template = constants.%Bar.generic] { // CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc10_15.1, runtime_param [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -237,7 +237,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C] // CHECK:STDOUT: %a.loc10_15.1: %C = bind_symbolic_name a, 0, %a.param.loc10 [symbolic = %a.loc10_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type.1 = interface_decl @Bar [template = constants.%Bar.generic] { +// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type.982 = interface_decl @Bar [template = constants.%Bar.generic] { // CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc10_15.1, runtime_param [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -252,11 +252,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc7_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc7_15.2)> [symbolic = %Foo.type (constants.%Foo.type.2)] -// CHECK:STDOUT: %Self.2: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc7_15.2)> [symbolic = %Foo.type (constants.%Foo.type.f3b)] +// CHECK:STDOUT: %Self.2: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.77c)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.f3b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.77c)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -269,11 +269,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc10_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Bar.type: type = facet_type <@Bar, @Bar(%a.loc10_15.2)> [symbolic = %Bar.type (constants.%Bar.type.2)] -// CHECK:STDOUT: %Self.2: %Bar.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] +// CHECK:STDOUT: %Bar.type: type = facet_type <@Bar, @Bar(%a.loc10_15.2)> [symbolic = %Bar.type (constants.%Bar.type.95f)] +// CHECK:STDOUT: %Self.2: %Bar.type.95f = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.809)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Bar.%Bar.type (%Bar.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] +// CHECK:STDOUT: %Self.1: @Bar.%Bar.type (%Bar.type.95f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.809)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -311,10 +311,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic] // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] -// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template] -// CHECK:STDOUT: %Foo.generic: %Foo.type.1 = struct_value () [template] -// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic] -// CHECK:STDOUT: %Self: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template] +// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template] +// CHECK:STDOUT: %Foo.type.f3b: type = facet_type <@Foo, @Foo(%a)> [symbolic] +// CHECK:STDOUT: %Self: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -323,7 +323,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: .Foo = %Foo.decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc6_21.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_21.1, runtime_param [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -331,7 +331,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc6_21.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_21.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc6_21.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_21.1, runtime_param [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -346,11 +346,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_21.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc6_21.2)> [symbolic = %Foo.type (constants.%Foo.type.2)] -// CHECK:STDOUT: %Self.2: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc6_21.2)> [symbolic = %Foo.type (constants.%Foo.type.f3b)] +// CHECK:STDOUT: %Self.2: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.f3b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -383,10 +383,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.c1d: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self: %.type.c1d = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -403,7 +403,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %a.patt.loc14_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc14_15.1, runtime_param [symbolic = %a.patt.loc14_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -425,11 +425,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc14_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc14_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc14_15.2)> [symbolic = %.type (constants.%.type.c1d)] +// CHECK:STDOUT: %Self.2: %.type.c1d = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.c1d) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -465,10 +465,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic] // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] -// CHECK:STDOUT: %Foo.type.1: type = generic_interface_type @Foo [template] -// CHECK:STDOUT: %Foo.generic: %Foo.type.1 = struct_value () [template] -// CHECK:STDOUT: %Foo.type.2: type = facet_type <@Foo, @Foo(%a)> [symbolic] -// CHECK:STDOUT: %Self: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template] +// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template] +// CHECK:STDOUT: %Foo.type.f3b: type = facet_type <@Foo, @Foo(%a)> [symbolic] +// CHECK:STDOUT: %Self: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -477,7 +477,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: .Foo = %Foo.decl.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -485,7 +485,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.1 = interface_decl @Foo [template = constants.%Foo.generic] { +// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] { // CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -500,11 +500,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc6_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc6_15.2)> [symbolic = %Foo.type (constants.%Foo.type.2)] -// CHECK:STDOUT: %Self.2: %Foo.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Foo.type: type = facet_type <@Foo, @Foo(%a.loc6_15.2)> [symbolic = %Foo.type (constants.%Foo.type.f3b)] +// CHECK:STDOUT: %Self.2: %Foo.type.f3b = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Foo.%Foo.type (%Foo.type.f3b) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -611,50 +611,50 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic.1: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self.1: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [template] +// CHECK:STDOUT: %.type.688: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self.30c: %.type.688 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template] // CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [template] -// CHECK:STDOUT: %.type.3: type = generic_interface_type @.2 [template] -// CHECK:STDOUT: %.generic.2: %.type.3 = struct_value () [template] -// CHECK:STDOUT: %.type.4: type = facet_type <@.2, @.2(%a)> [symbolic] -// CHECK:STDOUT: %Self.2: %.type.4 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.2 [template] +// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [template] +// CHECK:STDOUT: %.type.d20: type = facet_type <@.2, @.2(%a)> [symbolic] +// CHECK:STDOUT: %Self.e73: %.type.d20 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//two_file, D, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: %Foo.type = import_ref Main//two_file, Foo, loaded [template = constants.%Foo.generic] -// CHECK:STDOUT: %import_ref.4: %Bar.type = import_ref Main//two_file, Bar, loaded [template = constants.%Bar.generic] -// CHECK:STDOUT: %import_ref.5: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.930: type = import_ref Main//two_file, D, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.2ee: %Foo.type = import_ref Main//two_file, Foo, loaded [template = constants.%Foo.generic] +// CHECK:STDOUT: %import_ref.620: %Bar.type = import_ref Main//two_file, Bar, loaded [template = constants.%Bar.generic] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 -// CHECK:STDOUT: .Foo = imports.%import_ref.3 -// CHECK:STDOUT: .Bar = imports.%import_ref.4 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .D = imports.%import_ref.930 +// CHECK:STDOUT: .Foo = imports.%import_ref.2ee +// CHECK:STDOUT: .Bar = imports.%import_ref.620 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %.decl.loc12: %.type.1 = interface_decl @.1 [template = constants.%.generic.1] { +// CHECK:STDOUT: %.decl.loc12: %.type.abf52e.1 = interface_decl @.1 [template = constants.%.generic.0a9e18.1] { // CHECK:STDOUT: %a.patt.loc12_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc12_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc12_15.1, runtime_param [symbolic = %a.patt.loc12_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: %a.loc12_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc12_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl.loc21: %.type.3 = interface_decl @.2 [template = constants.%.generic.2] { +// CHECK:STDOUT: %.decl.loc21: %.type.abf52e.2 = interface_decl @.2 [template = constants.%.generic.0a9e18.2] { // CHECK:STDOUT: %a.patt.loc21_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc21_15.1, runtime_param [symbolic = %a.patt.loc21_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %C = value_param runtime_param -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.930 [template = constants.%C] // CHECK:STDOUT: %a.loc21_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc21_15.2 (constants.%a)] // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -671,11 +671,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc12_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc12_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc12_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc12_15.2)> [symbolic = %.type (constants.%.type.688)] +// CHECK:STDOUT: %Self.2: %.type.688 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.30c)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.1)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.688) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.30c)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -695,11 +695,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc21_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.2, @.2(%a.loc21_15.2)> [symbolic = %.type (constants.%.type.4)] -// CHECK:STDOUT: %Self.2: %.type.4 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] +// CHECK:STDOUT: %.type: type = facet_type <@.2, @.2(%a.loc21_15.2)> [symbolic = %.type (constants.%.type.d20)] +// CHECK:STDOUT: %Self.2: %.type.d20 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.e73)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.2.%.type (%.type.4) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.2)] +// CHECK:STDOUT: %Self.1: @.2.%.type (%.type.d20) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.e73)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -709,8 +709,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -749,10 +749,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] // CHECK:STDOUT: %b: %C = bind_symbolic_name b, 0 [symbolic] // CHECK:STDOUT: %b.patt: %C = symbolic_binding_pattern b, 0 [symbolic] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%b)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.6ba: type = facet_type <@.1, @.1(%b)> [symbolic] +// CHECK:STDOUT: %Self: %.type.6ba = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -772,7 +772,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %b.patt.loc15_15.1: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)] // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt.loc15_15.1, runtime_param [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)] // CHECK:STDOUT: } { @@ -794,11 +794,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %b.patt.loc15_15.2: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%b.loc15_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%b.loc15_15.2)> [symbolic = %.type (constants.%.type.6ba)] +// CHECK:STDOUT: %Self.2: %.type.6ba = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.6ba) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -836,10 +836,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.262: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self: %.type.262 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -859,7 +859,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -881,11 +881,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc15_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc15_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc15_15.2)> [symbolic = %.type (constants.%.type.262)] +// CHECK:STDOUT: %Self.2: %.type.262 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.262) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -923,10 +923,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.262: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self: %.type.262 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -946,7 +946,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -968,11 +968,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc15_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc15_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc15_15.2)> [symbolic = %.type (constants.%.type.262)] +// CHECK:STDOUT: %Self.2: %.type.262 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.262) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -1058,30 +1058,30 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.bc9: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self: %.type.bc9 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: %Foo.type = import_ref Main//alias_two_file, Foo, loaded [template = constants.%Foo.generic] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.2ee: %Foo.type = import_ref Main//alias_two_file, Foo, loaded [template = constants.%Foo.generic] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .Foo = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.0ac +// CHECK:STDOUT: .Foo = imports.%import_ref.2ee // CHECK:STDOUT: .D = %D // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import // CHECK:STDOUT: %default.import.loc2_6.2 = import -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %D: type = bind_alias D, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %a.patt.loc17_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc17_15.1, runtime_param [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -1103,11 +1103,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc17_15.2: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc17_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc17_15.2)> [symbolic = %.type (constants.%.type.bc9)] +// CHECK:STDOUT: %Self.2: %.type.bc9 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.bc9) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -1117,8 +1117,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1144,10 +1144,10 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt: %const = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] -// CHECK:STDOUT: %.type.1: type = generic_interface_type @.1 [template] -// CHECK:STDOUT: %.generic: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = facet_type <@.1, @.1(%a)> [symbolic] -// CHECK:STDOUT: %Self: %.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template] +// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template] +// CHECK:STDOUT: %.type.baa: type = facet_type <@.1, @.1(%a)> [symbolic] +// CHECK:STDOUT: %Self: %.type.baa = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1167,7 +1167,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: } // CHECK:STDOUT: %a.loc6_15.1: %const = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)] // CHECK:STDOUT: } -// CHECK:STDOUT: %.decl: %.type.1 = interface_decl @.1 [template = constants.%.generic] { +// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] { // CHECK:STDOUT: %a.patt.loc17_15.1: %const = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: %a.param_patt: %const = value_param_pattern %a.patt.loc17_15.1, runtime_param [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: } { @@ -1193,11 +1193,11 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %a.patt.loc17_15.2: %const = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc17_15.2)> [symbolic = %.type (constants.%.type.2)] -// CHECK:STDOUT: %Self.2: %.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %.type: type = facet_type <@.1, @.1(%a.loc17_15.2)> [symbolic = %.type (constants.%.type.baa)] +// CHECK:STDOUT: %Self.2: %.type.baa = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @.1.%.type (%.type.baa) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 diff --git a/toolchain/check/testdata/interface/todo_define_not_default.carbon b/toolchain/check/testdata/interface/todo_define_not_default.carbon index c7098d6f2fd7..dcdd2fba8d54 100644 --- a/toolchain/check/testdata/interface/todo_define_not_default.carbon +++ b/toolchain/check/testdata/interface/todo_define_not_default.carbon @@ -23,37 +23,37 @@ interface I { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type [template] -// CHECK:STDOUT: %assoc0.1: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] +// CHECK:STDOUT: %assoc0.389: %F.assoc_type = assoc_entity element0, @I.%F.decl [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %G.assoc_type: type = assoc_entity_type %I.type, %G.type [template] // CHECK:STDOUT: %assoc1: %G.assoc_type = assoc_entity element1, @I.%G.decl [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc2: %assoc_type.1 = assoc_entity element2, @I.%T [template] -// CHECK:STDOUT: %int_42.1: Core.IntLiteral = int_value 42 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %assoc_type.579: type = assoc_entity_type %I.type, type [template] +// CHECK:STDOUT: %assoc2: %assoc_type.579 = assoc_entity element2, @I.%T [template] +// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_42.20e, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_42.2: %i32 = int_value 42 [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %I.type, %i32 [template] -// CHECK:STDOUT: %assoc3: %assoc_type.2 = assoc_entity element3, @I.%N [template] +// CHECK:STDOUT: %int_42.b93: %i32 = int_value 42 [template] +// CHECK:STDOUT: %assoc_type.b2b: type = assoc_entity_type %I.type, %i32 [template] +// CHECK:STDOUT: %assoc3: %assoc_type.b2b = assoc_entity element3, @I.%N [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -69,9 +69,9 @@ interface I { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} -// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %F.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.389] // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { // CHECK:STDOUT: %a.patt: %i32 = binding_pattern a // CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0 @@ -102,19 +102,19 @@ interface I { // CHECK:STDOUT: %i32.loc18_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc18_24: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc18_24: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc18_27: %tuple.type.1 = tuple_literal (%i32.loc18_19, %i32.loc18_24) -// CHECK:STDOUT: %.loc18_28: type = converted %.loc18_27, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc18_27: %tuple.type.24b = tuple_literal (%i32.loc18_19, %i32.loc18_24) +// CHECK:STDOUT: %.loc18_28: type = converted %.loc18_27, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc2: %assoc_type.1 = assoc_entity element2, %T [template = constants.%assoc2] -// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %assoc2: %assoc_type.579 = assoc_entity element2, %T [template = constants.%assoc2] +// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_42, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_42) [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc19_19.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.2] -// CHECK:STDOUT: %.loc19_19.2: %i32 = converted %int_42, %.loc19_19.1 [template = constants.%int_42.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_42) [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc19_19.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.b93] +// CHECK:STDOUT: %.loc19_19.2: %i32 = converted %int_42, %.loc19_19.1 [template = constants.%int_42.b93] // CHECK:STDOUT: %N: %i32 = assoc_const_decl N [template] -// CHECK:STDOUT: %assoc3: %assoc_type.2 = assoc_entity element3, %N [template = constants.%assoc3] +// CHECK:STDOUT: %assoc3: %assoc_type.b2b = assoc_entity element3, %N [template = constants.%assoc3] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -140,7 +140,7 @@ interface I { // CHECK:STDOUT: fn(%a.param_patt: %i32, %b.param_patt: %i32) -> %i32 = "int.sadd"; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.1) {} +// CHECK:STDOUT: specific @F(constants.%Self.fb7) {} // CHECK:STDOUT: -// CHECK:STDOUT: specific @G(constants.%Self.1) {} +// CHECK:STDOUT: specific @G(constants.%Self.fb7) {} // CHECK:STDOUT: diff --git a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon index 9c5dacccb6a7..639ac43c4fe4 100644 --- a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon @@ -18,24 +18,24 @@ fn A() { if (true) { var n: i32 = 1; } if (true) { var n: i32 = 2; } } // CHECK:STDOUT: %true: bool = bool_literal true [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -58,12 +58,12 @@ fn A() { if (true) { var n: i32 = 1; } if (true) { var n: i32 = 2; } } // CHECK:STDOUT: !if.then.loc11_18: // CHECK:STDOUT: %n.var.loc11_26: ref %i32 = var n // CHECK:STDOUT: %n.loc11_26: ref %i32 = bind_name n, %n.var.loc11_26 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc11_36: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_36: = bound_method %int_1, %impl.elem0.loc11_36 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_36: = specific_function %Convert.bound.loc11_36, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_36: init %i32 = call %Convert.specific_fn.loc11_36(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_36: init %i32 = converted %int_1, %int.convert_checked.loc11_36 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc11_36: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_36: = bound_method %int_1, %impl.elem0.loc11_36 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_36: = specific_function %Convert.bound.loc11_36, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_36: init %i32 = call %Convert.specific_fn.loc11_36(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_36: init %i32 = converted %int_1, %int.convert_checked.loc11_36 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %n.var.loc11_26, %.loc11_36 // CHECK:STDOUT: br !if.else.loc11_18 // CHECK:STDOUT: @@ -74,12 +74,12 @@ fn A() { if (true) { var n: i32 = 1; } if (true) { var n: i32 = 2; } } // CHECK:STDOUT: !if.then.loc11_48: // CHECK:STDOUT: %n.var.loc11_56: ref %i32 = var n // CHECK:STDOUT: %n.loc11_56: ref %i32 = bind_name n, %n.var.loc11_56 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc11_66: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_66: = bound_method %int_2, %impl.elem0.loc11_66 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_66: = specific_function %Convert.bound.loc11_66, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_66: init %i32 = call %Convert.specific_fn.loc11_66(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_66: init %i32 = converted %int_2, %int.convert_checked.loc11_66 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc11_66: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_66: = bound_method %int_2, %impl.elem0.loc11_66 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_66: = specific_function %Convert.bound.loc11_66, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_66: init %i32 = call %Convert.specific_fn.loc11_66(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_66: init %i32 = converted %int_2, %int.convert_checked.loc11_66 [template = constants.%int_2.166] // CHECK:STDOUT: assign %n.var.loc11_56, %.loc11_66 // CHECK:STDOUT: br !if.else.loc11_48 // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index 4ed69b143b4e..368d6f546112 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -282,21 +282,21 @@ impl i32 as Empty { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%empty_tuple.type) [template] -// CHECK:STDOUT: %b: %tuple.type.1 = bind_symbolic_name b, 0 [symbolic] -// CHECK:STDOUT: %b.patt: %tuple.type.1 = symbolic_binding_pattern b, 0 [symbolic] +// CHECK:STDOUT: %tuple.type.9fb: type = tuple_type (%empty_tuple.type) [template] +// CHECK:STDOUT: %b: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic] +// CHECK:STDOUT: %b.patt: %tuple.type.9fb = symbolic_binding_pattern b, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.2 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [template] +// CHECK:STDOUT: %tuple.type.2d5: type = tuple_type (%empty_tuple.type, %empty_tuple.type, %empty_tuple.type) [template] +// CHECK:STDOUT: %tuple.7e4: %tuple.type.2d5 = tuple_value (%empty_tuple, %empty_tuple, %empty_tuple) [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.3 = tuple_value (%empty_tuple, %empty_tuple) [template] -// CHECK:STDOUT: %c: %tuple.type.3 = bind_symbolic_name c, 1 [symbolic] -// CHECK:STDOUT: %tuple.elem0.1: %empty_tuple.type = tuple_access %b, element0 [symbolic] -// CHECK:STDOUT: %tuple.3: %tuple.type.1 = tuple_value (%empty_tuple) [template] -// CHECK:STDOUT: %tuple.elem0.2: %empty_tuple.type = tuple_access %c, element0 [symbolic] +// CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [template] +// CHECK:STDOUT: %tuple.d8f: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [template] +// CHECK:STDOUT: %c: %tuple.type.bcd = bind_symbolic_name c, 1 [symbolic] +// CHECK:STDOUT: %tuple.elem0.98f: %empty_tuple.type = tuple_access %b, element0 [symbolic] +// CHECK:STDOUT: %tuple.f41: %tuple.type.9fb = tuple_value (%empty_tuple) [template] +// CHECK:STDOUT: %tuple.elem0.11f: %empty_tuple.type = tuple_access %c, element0 [symbolic] // CHECK:STDOUT: %tuple.elem1: %empty_tuple.type = tuple_access %c, element1 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -322,31 +322,31 @@ impl i32 as Empty { // CHECK:STDOUT: %.loc9_18: %empty_tuple.type = converted %.loc9_17, %empty_tuple.loc9 [template = constants.%empty_tuple] // CHECK:STDOUT: %a: %empty_tuple.type = bind_name a, %.loc9_18 // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %b.patt.loc10_8.2: %tuple.type.1 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] -// CHECK:STDOUT: %b.param_patt: %tuple.type.1 = value_param_pattern %b.patt.loc10_8.2, runtime_param [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] +// CHECK:STDOUT: %b.patt.loc10_8.2: %tuple.type.9fb = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] +// CHECK:STDOUT: %b.param_patt: %tuple.type.9fb = value_param_pattern %b.patt.loc10_8.2, runtime_param [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param: %tuple.type.1 = value_param runtime_param -// CHECK:STDOUT: %.loc10_16.1: type = splice_block %.loc10_16.4 [template = constants.%tuple.type.1] { +// CHECK:STDOUT: %b.param: %tuple.type.9fb = value_param runtime_param +// CHECK:STDOUT: %.loc10_16.1: type = splice_block %.loc10_16.4 [template = constants.%tuple.type.9fb] { // CHECK:STDOUT: %.loc10_14: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc10_16.2: %tuple.type.1 = tuple_literal (%.loc10_14) +// CHECK:STDOUT: %.loc10_16.2: %tuple.type.9fb = tuple_literal (%.loc10_14) // CHECK:STDOUT: %.loc10_16.3: type = converted %.loc10_14, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc10_16.4: type = converted %.loc10_16.2, constants.%tuple.type.1 [template = constants.%tuple.type.1] +// CHECK:STDOUT: %.loc10_16.4: type = converted %.loc10_16.2, constants.%tuple.type.9fb [template = constants.%tuple.type.9fb] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc10_8.2: %tuple.type.1 = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc10_8.1 (constants.%b)] +// CHECK:STDOUT: %b.loc10_8.2: %tuple.type.9fb = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc10_8.1 (constants.%b)] // CHECK:STDOUT: } // CHECK:STDOUT: %.loc22_28: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc22_32: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc22_36: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_37.1: %tuple.type.2 = tuple_literal (%.loc22_28, %.loc22_32, %.loc22_36) +// CHECK:STDOUT: %.loc22_37.1: %tuple.type.2d5 = tuple_literal (%.loc22_28, %.loc22_32, %.loc22_36) // CHECK:STDOUT: %empty_tuple.loc22_28: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_37.2: %empty_tuple.type = converted %.loc22_28, %empty_tuple.loc22_28 [template = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc22_32: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_37.3: %empty_tuple.type = converted %.loc22_32, %empty_tuple.loc22_32 [template = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc22_36: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc22_37.4: %empty_tuple.type = converted %.loc22_36, %empty_tuple.loc22_36 [template = constants.%empty_tuple] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc22_37.2, %.loc22_37.3, %.loc22_37.4) [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc22_38: %tuple.type.2 = converted %.loc22_37.1, %tuple [template = constants.%tuple.1] -// CHECK:STDOUT: %d: %tuple.type.2 = bind_name d, %.loc22_38 +// CHECK:STDOUT: %tuple: %tuple.type.2d5 = tuple_value (%.loc22_37.2, %.loc22_37.3, %.loc22_37.4) [template = constants.%tuple.7e4] +// CHECK:STDOUT: %.loc22_38: %tuple.type.2d5 = converted %.loc22_37.1, %tuple [template = constants.%tuple.7e4] +// CHECK:STDOUT: %d: %tuple.type.2d5 = bind_name d, %.loc22_38 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -357,48 +357,48 @@ impl i32 as Empty { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%b.loc10_8.2: %tuple.type.1) { -// CHECK:STDOUT: %b.loc10_8.1: %tuple.type.1 = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.1 (constants.%b)] -// CHECK:STDOUT: %b.patt.loc10_8.1: %tuple.type.1 = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] +// CHECK:STDOUT: generic fn @F(%b.loc10_8.2: %tuple.type.9fb) { +// CHECK:STDOUT: %b.loc10_8.1: %tuple.type.9fb = bind_symbolic_name b, 0 [symbolic = %b.loc10_8.1 (constants.%b)] +// CHECK:STDOUT: %b.patt.loc10_8.1: %tuple.type.9fb = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc10_8.1 (constants.%b.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %c.loc11_9.2: %tuple.type.3 = bind_symbolic_name c, 1 [symbolic = %c.loc11_9.2 (constants.%c)] -// CHECK:STDOUT: %tuple.elem0.loc14_21.3: %empty_tuple.type = tuple_access %b.loc10_8.1, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.1)] -// CHECK:STDOUT: %tuple.elem0.loc15_24.3: %empty_tuple.type = tuple_access %c.loc11_9.2, element0 [symbolic = %tuple.elem0.loc15_24.3 (constants.%tuple.elem0.2)] +// CHECK:STDOUT: %c.loc11_9.2: %tuple.type.bcd = bind_symbolic_name c, 1 [symbolic = %c.loc11_9.2 (constants.%c)] +// CHECK:STDOUT: %tuple.elem0.loc14_21.3: %empty_tuple.type = tuple_access %b.loc10_8.1, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.98f)] +// CHECK:STDOUT: %tuple.elem0.loc15_24.3: %empty_tuple.type = tuple_access %c.loc11_9.2, element0 [symbolic = %tuple.elem0.loc15_24.3 (constants.%tuple.elem0.11f)] // CHECK:STDOUT: %tuple.elem1.loc15_24.3: %empty_tuple.type = tuple_access %c.loc11_9.2, element1 [symbolic = %tuple.elem1.loc15_24.3 (constants.%tuple.elem1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%b.param_patt: %tuple.type.1) { +// CHECK:STDOUT: fn(%b.param_patt: %tuple.type.9fb) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc11_26: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_30: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_31.1: %tuple.type.3 = tuple_literal (%.loc11_26, %.loc11_30) +// CHECK:STDOUT: %.loc11_31.1: %tuple.type.bcd = tuple_literal (%.loc11_26, %.loc11_30) // CHECK:STDOUT: %empty_tuple.loc11_26: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_31.2: %empty_tuple.type = converted %.loc11_26, %empty_tuple.loc11_26 [template = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc11_30: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc11_31.3: %empty_tuple.type = converted %.loc11_30, %empty_tuple.loc11_30 [template = constants.%empty_tuple] -// CHECK:STDOUT: %tuple: %tuple.type.3 = tuple_value (%.loc11_31.2, %.loc11_31.3) [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc11_32: %tuple.type.3 = converted %.loc11_31.1, %tuple [template = constants.%tuple.2] -// CHECK:STDOUT: %c.loc11_9.1: %tuple.type.3 = bind_symbolic_name c, 1, %.loc11_32 [symbolic = %c.loc11_9.2 (constants.%c)] +// CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%.loc11_31.2, %.loc11_31.3) [template = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc11_32: %tuple.type.bcd = converted %.loc11_31.1, %tuple [template = constants.%tuple.d8f] +// CHECK:STDOUT: %c.loc11_9.1: %tuple.type.bcd = bind_symbolic_name c, 1, %.loc11_32 [symbolic = %c.loc11_9.2 (constants.%c)] // CHECK:STDOUT: %a1.var: ref %empty_tuple.type = var a1 // CHECK:STDOUT: %a1: ref %empty_tuple.type = bind_name a1, %a1.var // CHECK:STDOUT: %a.ref: %empty_tuple.type = name_ref a, @C.%a // CHECK:STDOUT: %.loc13_18: init %empty_tuple.type = tuple_init () to %a1.var [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc13_19: init %empty_tuple.type = converted %a.ref, %.loc13_18 [template = constants.%empty_tuple] // CHECK:STDOUT: assign %a1.var, %.loc13_19 -// CHECK:STDOUT: %b1.var: ref %tuple.type.1 = var b1 -// CHECK:STDOUT: %b1: ref %tuple.type.1 = bind_name b1, %b1.var -// CHECK:STDOUT: %b.ref: %tuple.type.1 = name_ref b, %b.loc10_8.2 [symbolic = %b.loc10_8.1 (constants.%b)] -// CHECK:STDOUT: %tuple.elem0.loc14_21.1: %empty_tuple.type = tuple_access %b.ref, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.1)] +// CHECK:STDOUT: %b1.var: ref %tuple.type.9fb = var b1 +// CHECK:STDOUT: %b1: ref %tuple.type.9fb = bind_name b1, %b1.var +// CHECK:STDOUT: %b.ref: %tuple.type.9fb = name_ref b, %b.loc10_8.2 [symbolic = %b.loc10_8.1 (constants.%b)] +// CHECK:STDOUT: %tuple.elem0.loc14_21.1: %empty_tuple.type = tuple_access %b.ref, element0 [symbolic = %tuple.elem0.loc14_21.3 (constants.%tuple.elem0.98f)] // CHECK:STDOUT: %tuple.elem0.loc14_21.2: ref %empty_tuple.type = tuple_access %b1.var, element0 // CHECK:STDOUT: %.loc14_21.1: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc14_21.2 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc14_21.2: init %empty_tuple.type = converted %tuple.elem0.loc14_21.1, %.loc14_21.1 [template = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_21.3: init %tuple.type.1 = tuple_init (%.loc14_21.2) to %b1.var [template = constants.%tuple.3] -// CHECK:STDOUT: %.loc14_22: init %tuple.type.1 = converted %b.ref, %.loc14_21.3 [template = constants.%tuple.3] +// CHECK:STDOUT: %.loc14_21.3: init %tuple.type.9fb = tuple_init (%.loc14_21.2) to %b1.var [template = constants.%tuple.f41] +// CHECK:STDOUT: %.loc14_22: init %tuple.type.9fb = converted %b.ref, %.loc14_21.3 [template = constants.%tuple.f41] // CHECK:STDOUT: assign %b1.var, %.loc14_22 -// CHECK:STDOUT: %c1.var: ref %tuple.type.3 = var c1 -// CHECK:STDOUT: %c1: ref %tuple.type.3 = bind_name c1, %c1.var -// CHECK:STDOUT: %c.ref: %tuple.type.3 = name_ref c, %c.loc11_9.1 [symbolic = %c.loc11_9.2 (constants.%c)] -// CHECK:STDOUT: %tuple.elem0.loc15_24.1: %empty_tuple.type = tuple_access %c.ref, element0 [symbolic = %tuple.elem0.loc15_24.3 (constants.%tuple.elem0.2)] +// CHECK:STDOUT: %c1.var: ref %tuple.type.bcd = var c1 +// CHECK:STDOUT: %c1: ref %tuple.type.bcd = bind_name c1, %c1.var +// CHECK:STDOUT: %c.ref: %tuple.type.bcd = name_ref c, %c.loc11_9.1 [symbolic = %c.loc11_9.2 (constants.%c)] +// CHECK:STDOUT: %tuple.elem0.loc15_24.1: %empty_tuple.type = tuple_access %c.ref, element0 [symbolic = %tuple.elem0.loc15_24.3 (constants.%tuple.elem0.11f)] // CHECK:STDOUT: %tuple.elem0.loc15_24.2: ref %empty_tuple.type = tuple_access %c1.var, element0 // CHECK:STDOUT: %.loc15_24.1: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc15_24.2 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_24.2: init %empty_tuple.type = converted %tuple.elem0.loc15_24.1, %.loc15_24.1 [template = constants.%empty_tuple] @@ -406,12 +406,12 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple.elem1.loc15_24.2: ref %empty_tuple.type = tuple_access %c1.var, element1 // CHECK:STDOUT: %.loc15_24.3: init %empty_tuple.type = tuple_init () to %tuple.elem1.loc15_24.2 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_24.4: init %empty_tuple.type = converted %tuple.elem1.loc15_24.1, %.loc15_24.3 [template = constants.%empty_tuple] -// CHECK:STDOUT: %.loc15_24.5: init %tuple.type.3 = tuple_init (%.loc15_24.2, %.loc15_24.4) to %c1.var [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc15_25: init %tuple.type.3 = converted %c.ref, %.loc15_24.5 [template = constants.%tuple.2] +// CHECK:STDOUT: %.loc15_24.5: init %tuple.type.bcd = tuple_init (%.loc15_24.2, %.loc15_24.4) to %c1.var [template = constants.%tuple.d8f] +// CHECK:STDOUT: %.loc15_25: init %tuple.type.bcd = converted %c.ref, %.loc15_24.5 [template = constants.%tuple.d8f] // CHECK:STDOUT: assign %c1.var, %.loc15_25 -// CHECK:STDOUT: %d1.var: ref %tuple.type.2 = var d1 -// CHECK:STDOUT: %d1: ref %tuple.type.2 = bind_name d1, %d1.var -// CHECK:STDOUT: %d.ref: %tuple.type.2 = name_ref d, @C.%d +// CHECK:STDOUT: %d1.var: ref %tuple.type.2d5 = var d1 +// CHECK:STDOUT: %d1: ref %tuple.type.2d5 = bind_name d1, %d1.var +// CHECK:STDOUT: %d.ref: %tuple.type.2d5 = name_ref d, @C.%d // CHECK:STDOUT: %tuple.elem0.loc16_28.1: %empty_tuple.type = tuple_access %d.ref, element0 // CHECK:STDOUT: %tuple.elem0.loc16_28.2: ref %empty_tuple.type = tuple_access %d1.var, element0 // CHECK:STDOUT: %.loc16_28.1: init %empty_tuple.type = tuple_init () to %tuple.elem0.loc16_28.2 [template = constants.%empty_tuple] @@ -424,8 +424,8 @@ impl i32 as Empty { // CHECK:STDOUT: %tuple.elem2.loc16_28.2: ref %empty_tuple.type = tuple_access %d1.var, element2 // CHECK:STDOUT: %.loc16_28.5: init %empty_tuple.type = tuple_init () to %tuple.elem2.loc16_28.2 [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc16_28.6: init %empty_tuple.type = converted %tuple.elem2.loc16_28.1, %.loc16_28.5 [template = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_28.7: init %tuple.type.2 = tuple_init (%.loc16_28.2, %.loc16_28.4, %.loc16_28.6) to %d1.var [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc16_29: init %tuple.type.2 = converted %d.ref, %.loc16_28.7 [template = constants.%tuple.1] +// CHECK:STDOUT: %.loc16_28.7: init %tuple.type.2d5 = tuple_init (%.loc16_28.2, %.loc16_28.4, %.loc16_28.6) to %d1.var [template = constants.%tuple.7e4] +// CHECK:STDOUT: %.loc16_29: init %tuple.type.2d5 = converted %d.ref, %.loc16_28.7 [template = constants.%tuple.7e4] // CHECK:STDOUT: assign %d1.var, %.loc16_29 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -499,21 +499,21 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -538,13 +538,13 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc5_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc5_21.2: %i32 = converted %int_0, %.loc5_21.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc5_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc5_21.2: %i32 = converted %int_0, %.loc5_21.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0, %.loc5_21.2 [symbolic = constants.%Zero] // CHECK:STDOUT: %Zero.ref: %i32 = name_ref Zero, %Zero [symbolic = constants.%Zero] // CHECK:STDOUT: return %Zero.ref @@ -558,25 +558,25 @@ impl i32 as Empty { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0 [symbolic] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -605,25 +605,25 @@ impl i32 as Empty { // CHECK:STDOUT: if %true br !if.then else br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.then: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc6: = bound_method %int_0, %impl.elem0.loc6 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc6: = specific_function %Convert.bound.loc6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_23.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_23.2: %i32 = converted %int_0, %.loc6_23.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc6: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc6: = bound_method %int_0, %impl.elem0.loc6 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc6: = specific_function %Convert.bound.loc6, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %Convert.specific_fn.loc6(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_23.1: %i32 = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_23.2: %i32 = converted %int_0, %.loc6_23.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Zero: %i32 = bind_symbolic_name Zero, 0, %.loc6_23.2 [symbolic = constants.%Zero] // CHECK:STDOUT: %Zero.ref: %i32 = name_ref Zero, %Zero [symbolic = constants.%Zero] // CHECK:STDOUT: return %Zero.ref // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc9: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9: = bound_method %int_1, %impl.elem0.loc9 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc9: = specific_function %Convert.bound.loc9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %Convert.specific_fn.loc9(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_11.1: %i32 = value_of_initializer %int.convert_checked.loc9 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_11.2: %i32 = converted %int_1, %.loc9_11.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9: = bound_method %int_1, %impl.elem0.loc9 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc9: = specific_function %Convert.bound.loc9, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %Convert.specific_fn.loc9(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_11.1: %i32 = value_of_initializer %int.convert_checked.loc9 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_11.2: %i32 = converted %int_1, %.loc9_11.1 [template = constants.%int_1.c60] // CHECK:STDOUT: return %.loc9_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -631,11 +631,11 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type = assoc_entity element0, @I.%T [template] +// CHECK:STDOUT: %assoc0.790: %assoc_type = assoc_entity element0, @I.%T [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %F.assoc_type: type = assoc_entity_type %I.type, %F.type [template] @@ -644,8 +644,8 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -661,16 +661,16 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.790] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { // CHECK:STDOUT: %return.patt: = return_slot_pattern // CHECK:STDOUT: %return.param_patt: = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: %assoc_type = name_ref T, @I.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %T.ref: %assoc_type = name_ref T, @I.%assoc0 [template = constants.%assoc0.790] // CHECK:STDOUT: %.loc13: type = converted %T.ref, [template = ] // CHECK:STDOUT: %return.param: ref = out_param runtime_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param @@ -689,7 +689,7 @@ impl i32 as Empty { // CHECK:STDOUT: fn() -> ; // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%Self.1) {} +// CHECK:STDOUT: specific @F(constants.%Self.fb7) {} // CHECK:STDOUT: // CHECK:STDOUT: --- fail_return_in_class.carbon // CHECK:STDOUT: @@ -700,12 +700,12 @@ impl i32 as Empty { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -732,7 +732,7 @@ impl i32 as Empty { // CHECK:STDOUT: %return.param: ref = out_param runtime_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%I @@ -754,7 +754,7 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -791,24 +791,24 @@ impl i32 as Empty { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template] -// CHECK:STDOUT: %Self.1: %Empty.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.e1a: %Empty.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.20: = impl_witness (imports.%import_ref.14), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %impl_witness.1bc: = impl_witness () [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -826,11 +826,11 @@ impl i32 as Empty { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness.1bc] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @Empty { -// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e1a] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -838,13 +838,13 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %Empty.ref { -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.20, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc10_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc10_21.2: %i32 = converted %int_0, %.loc10_21.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc10_21.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc10_21.2: %i32 = converted %int_0, %.loc10_21.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %Zero: %i32 = bind_name Zero, %.loc10_21.2 // CHECK:STDOUT: // CHECK:STDOUT: !members: diff --git a/toolchain/check/testdata/let/convert.carbon b/toolchain/check/testdata/let/convert.carbon index 1eb9a8d4dda6..c98ee0460d2c 100644 --- a/toolchain/check/testdata/let/convert.carbon +++ b/toolchain/check/testdata/let/convert.carbon @@ -22,31 +22,31 @@ fn F() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32, %i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2, %int_3.2) [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %tuple: %tuple.type.dc6 = tuple_value (%int_1.c60, %int_2.166, %int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -71,48 +71,48 @@ fn F() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %tuple.type.2 = var v -// CHECK:STDOUT: %v: ref %tuple.type.2 = bind_name v, %v.var -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc12_36.1: %tuple.type.3 = tuple_literal (%int_1.loc12, %int_2, %int_3) -// CHECK:STDOUT: %impl.elem0.loc12_36.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_36.1: = bound_method %int_1.loc12, %impl.elem0.loc12_36.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12_36.1: = specific_function %Convert.bound.loc12_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12_36.1: init %i32 = call %Convert.specific_fn.loc12_36.1(%int_1.loc12) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_36.2: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12_36.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %v.var: ref %tuple.type.dc6 = var v +// CHECK:STDOUT: %v: ref %tuple.type.dc6 = bind_name v, %v.var +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc12_36.1: %tuple.type.37f = tuple_literal (%int_1.loc12, %int_2, %int_3) +// CHECK:STDOUT: %impl.elem0.loc12_36.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_36.1: = bound_method %int_1.loc12, %impl.elem0.loc12_36.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc12_36.1: = specific_function %Convert.bound.loc12_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc12_36.1: init %i32 = call %Convert.specific_fn.loc12_36.1(%int_1.loc12) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_36.2: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12_36.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc12: ref %i32 = tuple_access %v.var, element0 -// CHECK:STDOUT: %.loc12_36.3: init %i32 = initialize_from %.loc12_36.2 to %tuple.elem0.loc12 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc12_36.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_36.2: = bound_method %int_2, %impl.elem0.loc12_36.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc12_36.2: = specific_function %Convert.bound.loc12_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc12_36.2: init %i32 = call %Convert.specific_fn.loc12_36.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_36.4: init %i32 = converted %int_2, %int.convert_checked.loc12_36.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc12_36.3: init %i32 = initialize_from %.loc12_36.2 to %tuple.elem0.loc12 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc12_36.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_36.2: = bound_method %int_2, %impl.elem0.loc12_36.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc12_36.2: = specific_function %Convert.bound.loc12_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc12_36.2: init %i32 = call %Convert.specific_fn.loc12_36.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_36.4: init %i32 = converted %int_2, %int.convert_checked.loc12_36.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc12: ref %i32 = tuple_access %v.var, element1 -// CHECK:STDOUT: %.loc12_36.5: init %i32 = initialize_from %.loc12_36.4 to %tuple.elem1.loc12 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc12_36.3: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_36.3: = bound_method %int_3, %impl.elem0.loc12_36.3 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc12_36.3: = specific_function %Convert.bound.loc12_36.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc12_36.3: init %i32 = call %Convert.specific_fn.loc12_36.3(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_36.6: init %i32 = converted %int_3, %int.convert_checked.loc12_36.3 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc12_36.5: init %i32 = initialize_from %.loc12_36.4 to %tuple.elem1.loc12 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc12_36.3: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_36.3: = bound_method %int_3, %impl.elem0.loc12_36.3 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc12_36.3: = specific_function %Convert.bound.loc12_36.3, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc12_36.3: init %i32 = call %Convert.specific_fn.loc12_36.3(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_36.6: init %i32 = converted %int_3, %int.convert_checked.loc12_36.3 [template = constants.%int_3.25b] // CHECK:STDOUT: %tuple.elem2.loc12: ref %i32 = tuple_access %v.var, element2 -// CHECK:STDOUT: %.loc12_36.7: init %i32 = initialize_from %.loc12_36.6 to %tuple.elem2.loc12 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_36.8: init %tuple.type.2 = tuple_init (%.loc12_36.3, %.loc12_36.5, %.loc12_36.7) to %v.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc12_37: init %tuple.type.2 = converted %.loc12_36.1, %.loc12_36.8 [template = constants.%tuple] +// CHECK:STDOUT: %.loc12_36.7: init %i32 = initialize_from %.loc12_36.6 to %tuple.elem2.loc12 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_36.8: init %tuple.type.dc6 = tuple_init (%.loc12_36.3, %.loc12_36.5, %.loc12_36.7) to %v.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc12_37: init %tuple.type.dc6 = converted %.loc12_36.1, %.loc12_36.8 [template = constants.%tuple] // CHECK:STDOUT: assign %v.var, %.loc12_37 -// CHECK:STDOUT: %v.ref: ref %tuple.type.2 = name_ref v, %v +// CHECK:STDOUT: %v.ref: ref %tuple.type.dc6 = name_ref v, %v // CHECK:STDOUT: %tuple.elem0.loc14: ref %i32 = tuple_access %v.ref, element0 // CHECK:STDOUT: %.loc14_28.1: %i32 = bind_value %tuple.elem0.loc14 // CHECK:STDOUT: %tuple.elem1.loc14: ref %i32 = tuple_access %v.ref, element1 // CHECK:STDOUT: %.loc14_28.2: %i32 = bind_value %tuple.elem1.loc14 // CHECK:STDOUT: %tuple.elem2.loc14: ref %i32 = tuple_access %v.ref, element2 // CHECK:STDOUT: %.loc14_28.3: %i32 = bind_value %tuple.elem2.loc14 -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc14_28.1, %.loc14_28.2, %.loc14_28.3) -// CHECK:STDOUT: %.loc14_29: %tuple.type.2 = converted %v.ref, %tuple -// CHECK:STDOUT: %w: %tuple.type.2 = bind_name w, %.loc14_29 -// CHECK:STDOUT: %w.ref: %tuple.type.2 = name_ref w, %w -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %tuple: %tuple.type.dc6 = tuple_value (%.loc14_28.1, %.loc14_28.2, %.loc14_28.3) +// CHECK:STDOUT: %.loc14_29: %tuple.type.dc6 = converted %v.ref, %tuple +// CHECK:STDOUT: %w: %tuple.type.dc6 = bind_name w, %.loc14_29 +// CHECK:STDOUT: %w.ref: %tuple.type.dc6 = name_ref w, %w +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc15: %i32 = tuple_access %w.ref, element1 // CHECK:STDOUT: return %tuple.elem1.loc15 // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_duplicate_decl.carbon b/toolchain/check/testdata/let/fail_duplicate_decl.carbon index 60627b237ee1..c4db424ed269 100644 --- a/toolchain/check/testdata/let/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/let/fail_duplicate_decl.carbon @@ -26,24 +26,24 @@ fn F() { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -60,21 +60,21 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_1, %impl.elem0.loc12 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_17.1: %i32 = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_17.2: %i32 = converted %int_1, %.loc12_17.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_1, %impl.elem0.loc12 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_17.1: %i32 = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_17.2: %i32 = converted %int_1, %.loc12_17.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %a.loc12: %i32 = bind_name a, %.loc12_17.2 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_17.1: %i32 = value_of_initializer %int.convert_checked.loc19 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_17.2: %i32 = converted %int_2, %.loc19_17.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc19: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19: = bound_method %int_2, %impl.elem0.loc19 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc19: = specific_function %Convert.bound.loc19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc19: init %i32 = call %Convert.specific_fn.loc19(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_17.1: %i32 = value_of_initializer %int.convert_checked.loc19 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_17.2: %i32 = converted %int_2, %.loc19_17.1 [template = constants.%int_2.166] // CHECK:STDOUT: %a.loc19: %i32 = bind_name a, %.loc19_17.2 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_generic.carbon b/toolchain/check/testdata/let/fail_generic.carbon index 4e137a2e6bcf..caf51d1ee36d 100644 --- a/toolchain/check/testdata/let/fail_generic.carbon +++ b/toolchain/check/testdata/let/fail_generic.carbon @@ -41,8 +41,8 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_generic_import.carbon b/toolchain/check/testdata/let/fail_generic_import.carbon index 570174feb61e..bed980befac9 100644 --- a/toolchain/check/testdata/let/fail_generic_import.carbon +++ b/toolchain/check/testdata/let/fail_generic_import.carbon @@ -37,7 +37,7 @@ let a: T = 0; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_missing_value.carbon b/toolchain/check/testdata/let/fail_missing_value.carbon index 37c0df7b31f7..b06b5490a628 100644 --- a/toolchain/check/testdata/let/fail_missing_value.carbon +++ b/toolchain/check/testdata/let/fail_missing_value.carbon @@ -32,7 +32,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_modifiers.carbon b/toolchain/check/testdata/let/fail_modifiers.carbon index f358ff20069f..2c4059070098 100644 --- a/toolchain/check/testdata/let/fail_modifiers.carbon +++ b/toolchain/check/testdata/let/fail_modifiers.carbon @@ -88,20 +88,20 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -124,69 +124,69 @@ protected protected let i: i32 = 1; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc15: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc15: = bound_method %int_1.loc15, %impl.elem0.loc15 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc15: = specific_function %Convert.bound.loc15, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1.loc15) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_1.loc15, %.loc15_25.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32 = call %Convert.specific_fn.loc15(%int_1.loc15) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_1.loc15, %.loc15_25.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %b: %i32 = bind_name b, %.loc15_25.2 -// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc21: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_1.loc21, %impl.elem0.loc21 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_1.loc21) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc21_23.1: %i32 = value_of_initializer %int.convert_checked.loc21 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc21_23.2: %i32 = converted %int_1.loc21, %.loc21_23.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_1.loc21) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc21_23.1: %i32 = value_of_initializer %int.convert_checked.loc21 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc21_23.2: %i32 = converted %int_1.loc21, %.loc21_23.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %c: %i32 = bind_name c, %.loc21_23.2 -// CHECK:STDOUT: %int_1.loc27: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc27: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_1.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_1.loc27) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc27_21.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc27_21.2: %i32 = converted %int_1.loc27, %.loc27_21.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_1.loc27) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc27_21.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc27_21.2: %i32 = converted %int_1.loc27, %.loc27_21.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %d: %i32 = bind_name d, %.loc27_21.2 -// CHECK:STDOUT: %int_1.loc33: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc33: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc33: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc33: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc33: = bound_method %int_1.loc33, %impl.elem0.loc33 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc33: = specific_function %Convert.bound.loc33, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %Convert.specific_fn.loc33(%int_1.loc33) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc33_23.1: %i32 = value_of_initializer %int.convert_checked.loc33 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc33_23.2: %i32 = converted %int_1.loc33, %.loc33_23.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %Convert.specific_fn.loc33(%int_1.loc33) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc33_23.1: %i32 = value_of_initializer %int.convert_checked.loc33 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc33_23.2: %i32 = converted %int_1.loc33, %.loc33_23.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %e: %i32 = bind_name e, %.loc33_23.2 -// CHECK:STDOUT: %int_1.loc46: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc46: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc46: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc46: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc46: = bound_method %int_1.loc46, %impl.elem0.loc46 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc46: = specific_function %Convert.bound.loc46, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc46: init %i32 = call %Convert.specific_fn.loc46(%int_1.loc46) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc46_29.1: %i32 = value_of_initializer %int.convert_checked.loc46 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc46_29.2: %i32 = converted %int_1.loc46, %.loc46_29.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc46: init %i32 = call %Convert.specific_fn.loc46(%int_1.loc46) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc46_29.1: %i32 = value_of_initializer %int.convert_checked.loc46 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc46_29.2: %i32 = converted %int_1.loc46, %.loc46_29.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %f: %i32 = bind_name f, %.loc46_29.2 -// CHECK:STDOUT: %int_1.loc59: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc59: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc59: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc59: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc59: = bound_method %int_1.loc59, %impl.elem0.loc59 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc59: = specific_function %Convert.bound.loc59, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc59: init %i32 = call %Convert.specific_fn.loc59(%int_1.loc59) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc59_31.1: %i32 = value_of_initializer %int.convert_checked.loc59 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc59_31.2: %i32 = converted %int_1.loc59, %.loc59_31.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc59: init %i32 = call %Convert.specific_fn.loc59(%int_1.loc59) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc59_31.1: %i32 = value_of_initializer %int.convert_checked.loc59 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc59_31.2: %i32 = converted %int_1.loc59, %.loc59_31.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %g: %i32 = bind_name g, %.loc59_31.2 -// CHECK:STDOUT: %int_1.loc72: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc72: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc72: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc72: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc72: = bound_method %int_1.loc72, %impl.elem0.loc72 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc72: = specific_function %Convert.bound.loc72, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc72: init %i32 = call %Convert.specific_fn.loc72(%int_1.loc72) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc72_33.1: %i32 = value_of_initializer %int.convert_checked.loc72 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc72_33.2: %i32 = converted %int_1.loc72, %.loc72_33.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc72: init %i32 = call %Convert.specific_fn.loc72(%int_1.loc72) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc72_33.1: %i32 = value_of_initializer %int.convert_checked.loc72 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc72_33.2: %i32 = converted %int_1.loc72, %.loc72_33.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %h: %i32 = bind_name h, %.loc72_33.2 -// CHECK:STDOUT: %int_1.loc84: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc84: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1.loc84: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc84: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc84: = bound_method %int_1.loc84, %impl.elem0.loc84 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc84: = specific_function %Convert.bound.loc84, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc84: init %i32 = call %Convert.specific_fn.loc84(%int_1.loc84) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc84_35.1: %i32 = value_of_initializer %int.convert_checked.loc84 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc84_35.2: %i32 = converted %int_1.loc84, %.loc84_35.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked.loc84: init %i32 = call %Convert.specific_fn.loc84(%int_1.loc84) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc84_35.1: %i32 = value_of_initializer %int.convert_checked.loc84 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc84_35.2: %i32 = converted %int_1.loc84, %.loc84_35.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %i: %i32 = bind_name i, %.loc84_35.2 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/fail_use_in_init.carbon b/toolchain/check/testdata/let/fail_use_in_init.carbon index 8ca2389e6c37..694286c0df50 100644 --- a/toolchain/check/testdata/let/fail_use_in_init.carbon +++ b/toolchain/check/testdata/let/fail_use_in_init.carbon @@ -26,7 +26,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/generic.carbon b/toolchain/check/testdata/let/generic.carbon index 75a249c00c07..62fbb0dadc29 100644 --- a/toolchain/check/testdata/let/generic.carbon +++ b/toolchain/check/testdata/let/generic.carbon @@ -27,7 +27,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/generic_import.carbon b/toolchain/check/testdata/let/generic_import.carbon index 5002c499c983..6d1b4b35e407 100644 --- a/toolchain/check/testdata/let/generic_import.carbon +++ b/toolchain/check/testdata/let/generic_import.carbon @@ -41,7 +41,7 @@ var b: T = *a; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index 5750525495e9..6d42d47506ac 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -17,22 +17,22 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -64,13 +64,13 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_15.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_15.2: %i32 = converted %int_1, %.loc11_15.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_15.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_15.2: %i32 = converted %int_1, %.loc11_15.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %n: %i32 = bind_name n, %.loc11_15.2 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/local.carbon b/toolchain/check/testdata/let/local.carbon index 5f2c0dae3c09..c7d73530a65a 100644 --- a/toolchain/check/testdata/let/local.carbon +++ b/toolchain/check/testdata/let/local.carbon @@ -24,7 +24,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/let/shadowed_decl.carbon b/toolchain/check/testdata/let/shadowed_decl.carbon index d4ae1680f101..a26ed2d6a209 100644 --- a/toolchain/check/testdata/let/shadowed_decl.carbon +++ b/toolchain/check/testdata/let/shadowed_decl.carbon @@ -21,20 +21,20 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -67,13 +67,13 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_17.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_17.2: %i32 = converted %int_1, %.loc12_17.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_17.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_17.2: %i32 = converted %int_1, %.loc12_17.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %a.loc12: %i32 = bind_name a, %.loc12_17.2 // CHECK:STDOUT: %a.ref: %i32 = name_ref a, %a.loc12 // CHECK:STDOUT: return %a.ref diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index 0d99dd9023ae..901b72813b68 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -47,24 +47,24 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Implicit//default, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.d58: = import_ref Implicit//default, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { // CHECK:STDOUT: .A = file.%A.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -94,13 +94,13 @@ var a: i32 = NS.A(); // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_28.2: %i32 = converted %int_0, %.loc4_28.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_28.2: %i32 = converted %int_0, %.loc4_28.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc4_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index ab466e81d6db..b92cace3f0cc 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -27,14 +27,14 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %A.type: type = fn_type @A [template] // CHECK:STDOUT: %A: %A.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] // CHECK:STDOUT: %D.type: type = fn_type @D [template] @@ -43,8 +43,8 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -99,13 +99,13 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc15_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc15_28.2: %i32 = converted %int_0, %.loc15_28.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc15_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc15_28.2: %i32 = converted %int_0, %.loc15_28.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc15_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon b/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon index e5d9693c7424..cfcc03cc77b6 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon @@ -68,10 +68,10 @@ fn NS(); // CHECK:STDOUT: --- fail_conflict.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %.type.1: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type.1 = struct_value () [template] -// CHECK:STDOUT: %.type.2: type = fn_type @.2 [template] -// CHECK:STDOUT: %.2: %.type.2 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.1: type = fn_type @.1 [template] +// CHECK:STDOUT: %.d852be.1: %.type.b6a92a.1 = struct_value () [template] +// CHECK:STDOUT: %.type.b6a92a.2: type = fn_type @.2 [template] +// CHECK:STDOUT: %.d852be.2: %.type.b6a92a.2 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -91,9 +91,9 @@ fn NS(); // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %NS.loc8: = namespace [template] {} -// CHECK:STDOUT: %.decl.loc18: %.type.1 = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl.loc18: %.type.b6a92a.1 = fn_decl @.1 [template = constants.%.d852be.1] {} {} // CHECK:STDOUT: %NS.loc22: = namespace [template] {} -// CHECK:STDOUT: %.decl.loc31: %.type.2 = fn_decl @.2 [template = constants.%.2] {} {} +// CHECK:STDOUT: %.decl.loc31: %.type.b6a92a.2 = fn_decl @.2 [template = constants.%.d852be.2] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @.1(); diff --git a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon index 9e5df72064b0..9e7a5ac9ae1c 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon @@ -53,7 +53,7 @@ fn NS.Foo(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: } @@ -76,7 +76,7 @@ fn NS.Foo(); // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon index d5197d93a95c..835b13a61a6a 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon @@ -70,7 +70,7 @@ fn NS.Foo(); // CHECK:STDOUT: %NS.type: type = fn_type @NS [template] // CHECK:STDOUT: %NS: %NS.type = struct_value () [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -89,7 +89,7 @@ fn NS.Foo(); // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %.loc14: = namespace [template] {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @NS() [from "fn.carbon"]; diff --git a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon index 48b4b6fab892..9bfa9ca75a9b 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon @@ -105,9 +105,9 @@ fn NS.Bar() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Example//namespace, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .Foo = %import_ref.2 +// CHECK:STDOUT: %import_ref.d58: = import_ref Example//namespace, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .Foo = %import_ref.2a0 // CHECK:STDOUT: .Bar = file.%Bar.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { diff --git a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon index 68d103eea18e..ad75ab9ce89b 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon @@ -105,9 +105,9 @@ fn NS.Bar() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.2: = import_ref Example//namespace, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .Foo = %import_ref.3 +// CHECK:STDOUT: %import_ref.d58: = import_ref Example//namespace, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .Foo = %import_ref.2a0 // CHECK:STDOUT: .Bar = file.%Bar.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index 1ee8fb11c5d1..b3a8ead06dd3 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -27,21 +27,21 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -57,7 +57,7 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %NS: = namespace [template] {} // CHECK:STDOUT: %NS.ref: = name_ref NS, %NS [template = %NS] // CHECK:STDOUT: %ns: = bind_alias ns, %NS [template = %NS] -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { @@ -70,13 +70,13 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: // CHECK:STDOUT: fn @.1() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc22_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc22_28.2: %i32 = converted %int_0, %.loc22_28.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc22_28.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc22_28.2: %i32 = converted %int_0, %.loc22_28.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc22_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_params.carbon b/toolchain/check/testdata/namespace/fail_params.carbon index 5f22c1cfa315..d20cefe97987 100644 --- a/toolchain/check/testdata/namespace/fail_params.carbon +++ b/toolchain/check/testdata/namespace/fail_params.carbon @@ -48,12 +48,12 @@ fn D(T:! type).F() {} // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,7 +86,7 @@ fn D(T:! type).F() {} // CHECK:STDOUT: %x: %T = bind_name x, %x.param // CHECK:STDOUT: %C: = namespace [template] {} // CHECK:STDOUT: %D: = namespace [template] {} -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} { +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc39_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc39_6.2 (constants.%T)] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon index 993d4271e4d7..d471f4042a52 100644 --- a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon +++ b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon @@ -18,7 +18,7 @@ fn Foo.Baz() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %.type: type = fn_type @.1 [template] -// CHECK:STDOUT: %.1: %.type = struct_value () [template] +// CHECK:STDOUT: %.d85: %.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -33,7 +33,7 @@ fn Foo.Baz() { // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.1] {} {} +// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d85] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @.1() { diff --git a/toolchain/check/testdata/namespace/function.carbon b/toolchain/check/testdata/namespace/function.carbon index 2a1f30197116..a38a7451081b 100644 --- a/toolchain/check/testdata/namespace/function.carbon +++ b/toolchain/check/testdata/namespace/function.carbon @@ -24,11 +24,11 @@ fn Bar() { // CHECK:STDOUT: --- function.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %Baz.type.1: type = fn_type @Baz.1 [template] +// CHECK:STDOUT: %Baz.type.03f: type = fn_type @Baz.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Baz.1: %Baz.type.1 = struct_value () [template] -// CHECK:STDOUT: %Baz.type.2: type = fn_type @Baz.2 [template] -// CHECK:STDOUT: %Baz.2: %Baz.type.2 = struct_value () [template] +// CHECK:STDOUT: %Baz.5ea: %Baz.type.03f = struct_value () [template] +// CHECK:STDOUT: %Baz.type.898: type = fn_type @Baz.2 [template] +// CHECK:STDOUT: %Baz.eb4: %Baz.type.898 = struct_value () [template] // CHECK:STDOUT: %Bar.type: type = fn_type @Bar [template] // CHECK:STDOUT: %Bar: %Bar.type = struct_value () [template] // CHECK:STDOUT: } @@ -51,8 +51,8 @@ fn Bar() { // CHECK:STDOUT: %Foo: = namespace [template] { // CHECK:STDOUT: .Baz = %Baz.decl.loc17 // CHECK:STDOUT: } -// CHECK:STDOUT: %Baz.decl.loc14: %Baz.type.1 = fn_decl @Baz.1 [template = constants.%Baz.1] {} {} -// CHECK:STDOUT: %Baz.decl.loc17: %Baz.type.2 = fn_decl @Baz.2 [template = constants.%Baz.2] {} {} +// CHECK:STDOUT: %Baz.decl.loc14: %Baz.type.03f = fn_decl @Baz.1 [template = constants.%Baz.5ea] {} {} +// CHECK:STDOUT: %Baz.decl.loc17: %Baz.type.898 = fn_decl @Baz.2 [template = constants.%Baz.eb4] {} {} // CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [template = constants.%Bar] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -69,7 +69,7 @@ fn Bar() { // CHECK:STDOUT: fn @Bar() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref: = name_ref Foo, file.%Foo [template = file.%Foo] -// CHECK:STDOUT: %Baz.ref: %Baz.type.2 = name_ref Baz, file.%Baz.decl.loc17 [template = constants.%Baz.2] +// CHECK:STDOUT: %Baz.ref: %Baz.type.898 = name_ref Baz, file.%Baz.decl.loc17 [template = constants.%Baz.eb4] // CHECK:STDOUT: %Baz.call: init %empty_tuple.type = call %Baz.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/imported.carbon b/toolchain/check/testdata/namespace/imported.carbon index 8449fac6ba80..18bfbcbf277e 100644 --- a/toolchain/check/testdata/namespace/imported.carbon +++ b/toolchain/check/testdata/namespace/imported.carbon @@ -76,17 +76,17 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Implicit//default, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .A = %import_ref.2 +// CHECK:STDOUT: %import_ref.d58: = import_ref Implicit//default, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .A = %import_ref.5d2 // CHECK:STDOUT: .ChildNS = %ChildNS // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %A.type = import_ref Implicit//default, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3: = import_ref Implicit//default, ChildNS, loaded -// CHECK:STDOUT: %ChildNS: = namespace %import_ref.3, [template] { -// CHECK:STDOUT: .B = %import_ref.4 +// CHECK:STDOUT: %import_ref.5d2: %A.type = import_ref Implicit//default, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.e9d: = import_ref Implicit//default, ChildNS, loaded +// CHECK:STDOUT: %ChildNS: = namespace %import_ref.e9d, [template] { +// CHECK:STDOUT: .B = %import_ref.f00 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: %B.type = import_ref Implicit//default, B, loaded [template = constants.%B] +// CHECK:STDOUT: %import_ref.f00: %B.type = import_ref Implicit//default, B, loaded [template = constants.%B] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -122,23 +122,23 @@ var package_b: () = package.NS.ChildNS.B(); // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NS.ref.loc4: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %A.ref.loc4: %A.type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref.loc4: %A.type = name_ref A, imports.%import_ref.5d2 [template = constants.%A] // CHECK:STDOUT: %A.call.loc4: init %empty_tuple.type = call %A.ref.loc4() // CHECK:STDOUT: assign file.%a.var, %A.call.loc4 // CHECK:STDOUT: %NS.ref.loc5: = name_ref NS, imports.%NS [template = imports.%NS] // CHECK:STDOUT: %ChildNS.ref.loc5: = name_ref ChildNS, imports.%ChildNS [template = imports.%ChildNS] -// CHECK:STDOUT: %B.ref.loc5: %B.type = name_ref B, imports.%import_ref.4 [template = constants.%B] +// CHECK:STDOUT: %B.ref.loc5: %B.type = name_ref B, imports.%import_ref.f00 [template = constants.%B] // CHECK:STDOUT: %B.call.loc5: init %empty_tuple.type = call %B.ref.loc5() // CHECK:STDOUT: assign file.%b.var, %B.call.loc5 // CHECK:STDOUT: %package.ref.loc7: = name_ref package, package [template = package] // CHECK:STDOUT: %NS.ref.loc7: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %A.ref.loc7: %A.type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref.loc7: %A.type = name_ref A, imports.%import_ref.5d2 [template = constants.%A] // CHECK:STDOUT: %A.call.loc7: init %empty_tuple.type = call %A.ref.loc7() // CHECK:STDOUT: assign file.%package_a.var, %A.call.loc7 // CHECK:STDOUT: %package.ref.loc8: = name_ref package, package [template = package] // CHECK:STDOUT: %NS.ref.loc8: = name_ref NS, imports.%NS [template = imports.%NS] // CHECK:STDOUT: %ChildNS.ref.loc8: = name_ref ChildNS, imports.%ChildNS [template = imports.%ChildNS] -// CHECK:STDOUT: %B.ref.loc8: %B.type = name_ref B, imports.%import_ref.4 [template = constants.%B] +// CHECK:STDOUT: %B.ref.loc8: %B.type = name_ref B, imports.%import_ref.f00 [template = constants.%B] // CHECK:STDOUT: %B.call.loc8: init %empty_tuple.type = call %B.ref.loc8() // CHECK:STDOUT: assign file.%package_b.var, %B.call.loc8 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/namespace/imported_indirect.carbon b/toolchain/check/testdata/namespace/imported_indirect.carbon index 62c0309a6a61..74204d03c04d 100644 --- a/toolchain/check/testdata/namespace/imported_indirect.carbon +++ b/toolchain/check/testdata/namespace/imported_indirect.carbon @@ -123,12 +123,12 @@ fn G() { Same.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Same//a, A, loaded -// CHECK:STDOUT: %A: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .C = %import_ref.2 +// CHECK:STDOUT: %import_ref.7e6: = import_ref Same//a, A, loaded +// CHECK:STDOUT: %A: = namespace %import_ref.7e6, [template] { +// CHECK:STDOUT: .C = %import_ref.857 // CHECK:STDOUT: .B = file.%B // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: type = import_ref Same//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.857: type = import_ref Same//a, C, loaded [template = constants.%C] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -149,7 +149,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: = name_ref A, imports.%A [template = imports.%A] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.2 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.857 [template = constants.%C] // CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0 // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } @@ -162,11 +162,11 @@ fn G() { Same.F(); } // CHECK:STDOUT: --- c.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Same//b, A, loaded -// CHECK:STDOUT: %A: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.de6: = import_ref Same//b, A, loaded +// CHECK:STDOUT: %A: = namespace %import_ref.de6, [template] { // CHECK:STDOUT: .B = %B // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3 = import_ref Same//b, F, unloaded +// CHECK:STDOUT: %import_ref.f8e = import_ref Same//b, F, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -176,7 +176,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .A = imports.%A -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .F = imports.%import_ref.f8e // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core @@ -192,8 +192,8 @@ fn G() { Same.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Same//c, A, loaded -// CHECK:STDOUT: %A: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.bb7: = import_ref Same//c, A, loaded +// CHECK:STDOUT: %A: = namespace %import_ref.bb7, [template] { // CHECK:STDOUT: .B = %B // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { @@ -226,19 +226,19 @@ fn G() { Same.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Same//d, A, loaded -// CHECK:STDOUT: %A: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.b75: = import_ref Same//d, A, loaded +// CHECK:STDOUT: %A: = namespace %import_ref.b75, [template] { // CHECK:STDOUT: .B = %B // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Same//d, B, loaded -// CHECK:STDOUT: %B: = namespace %import_ref.2, [template] { +// CHECK:STDOUT: %import_ref.153: = import_ref Same//d, B, loaded +// CHECK:STDOUT: %B: = namespace %import_ref.153, [template] { // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Same//d, C, loaded -// CHECK:STDOUT: %C: = namespace %import_ref.3, [template] { -// CHECK:STDOUT: .D = %import_ref.4 +// CHECK:STDOUT: %import_ref.cee: = import_ref Same//d, C, loaded +// CHECK:STDOUT: %C: = namespace %import_ref.cee, [template] { +// CHECK:STDOUT: .D = %import_ref.49e // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: %D.type = import_ref Same//d, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.49e: %D.type = import_ref Same//d, D, loaded [template = constants.%D] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -264,7 +264,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: %A.ref: = name_ref A, imports.%A [template = imports.%A] // CHECK:STDOUT: %B.ref: = name_ref B, imports.%B [template = imports.%B] // CHECK:STDOUT: %C.ref: = name_ref C, imports.%C [template = imports.%C] -// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.4 [template = constants.%D] +// CHECK:STDOUT: %D.ref: %D.type = name_ref D, imports.%import_ref.49e [template = constants.%D] // CHECK:STDOUT: %D.call: init %empty_tuple.type = call %D.ref() // CHECK:STDOUT: assign file.%e.var, %D.call // CHECK:STDOUT: return @@ -281,11 +281,11 @@ fn G() { Same.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Same//b, A, loaded -// CHECK:STDOUT: %A: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.de6: = import_ref Same//b, A, loaded +// CHECK:STDOUT: %A: = namespace %import_ref.de6, [template] { // CHECK:STDOUT: .B = %B // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: %F.type = import_ref Same//b, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.44d: %F.type = import_ref Same//b, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -295,7 +295,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .A = imports.%A -// CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: .F = imports.%import_ref.44d // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } @@ -308,7 +308,7 @@ fn G() { Same.F(); } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.3 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.44d [template = constants.%F] // CHECK:STDOUT: %F.call: init = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/merging.carbon b/toolchain/check/testdata/namespace/merging.carbon index 51495f244f9e..f236dbfe48b9 100644 --- a/toolchain/check/testdata/namespace/merging.carbon +++ b/toolchain/check/testdata/namespace/merging.carbon @@ -138,16 +138,16 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Example//a, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .A = %import_ref.2 -// CHECK:STDOUT: .B1 = %import_ref.3 -// CHECK:STDOUT: .B2 = %import_ref.4 +// CHECK:STDOUT: %import_ref.d58: = import_ref Example//a, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .A = %import_ref.5d2 +// CHECK:STDOUT: .B1 = %import_ref.436 +// CHECK:STDOUT: .B2 = %import_ref.fde // CHECK:STDOUT: .C = file.%C.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %A.type = import_ref Example//a, A, loaded [template = constants.%A] -// CHECK:STDOUT: %import_ref.3: %B1.type = import_ref Example//b, B1, loaded [template = constants.%B1] -// CHECK:STDOUT: %import_ref.4: %B2.type = import_ref Example//b, B2, loaded [template = constants.%B2] +// CHECK:STDOUT: %import_ref.5d2: %A.type = import_ref Example//a, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.436: %B1.type = import_ref Example//b, B1, loaded [template = constants.%B1] +// CHECK:STDOUT: %import_ref.fde: %B2.type = import_ref Example//b, B2, loaded [template = constants.%B2] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -163,9 +163,9 @@ fn Run() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %NS: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.2 -// CHECK:STDOUT: .B1 = imports.%import_ref.3 -// CHECK:STDOUT: .B2 = imports.%import_ref.4 +// CHECK:STDOUT: .A = imports.%import_ref.5d2 +// CHECK:STDOUT: .B1 = imports.%import_ref.436 +// CHECK:STDOUT: .B2 = imports.%import_ref.fde // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: %C.type = fn_decl @C [template = constants.%C] {} {} @@ -180,13 +180,13 @@ fn Run() { // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %NS.ref.loc12: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: %A.type = name_ref A, imports.%import_ref.5d2 [template = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref() // CHECK:STDOUT: %NS.ref.loc13: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %B1.ref: %B1.type = name_ref B1, imports.%import_ref.3 [template = constants.%B1] +// CHECK:STDOUT: %B1.ref: %B1.type = name_ref B1, imports.%import_ref.436 [template = constants.%B1] // CHECK:STDOUT: %B1.call: init %empty_tuple.type = call %B1.ref() // CHECK:STDOUT: %NS.ref.loc14: = name_ref NS, imports.%NS [template = imports.%NS] -// CHECK:STDOUT: %B2.ref: %B2.type = name_ref B2, imports.%import_ref.4 [template = constants.%B2] +// CHECK:STDOUT: %B2.ref: %B2.type = name_ref B2, imports.%import_ref.fde [template = constants.%B2] // CHECK:STDOUT: %B2.call: init %empty_tuple.type = call %B2.ref() // CHECK:STDOUT: %NS.ref.loc15: = name_ref NS, imports.%NS [template = imports.%NS] // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C] diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 22d0c698705b..70e8cdbc72fb 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -89,18 +89,18 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Other//a, NS1, loaded -// CHECK:STDOUT: %NS1: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .A = %import_ref.2 +// CHECK:STDOUT: %import_ref.503: = import_ref Other//a, NS1, loaded +// CHECK:STDOUT: %NS1: = namespace %import_ref.503, [template] { +// CHECK:STDOUT: .A = %import_ref.ca7 // CHECK:STDOUT: .B = file.%B.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: type = import_ref Other//a, A, loaded [template = constants.%A] +// CHECK:STDOUT: %import_ref.ca7: type = import_ref Other//a, A, loaded [template = constants.%A] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Other//a, loc5_14, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Other//a, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Other//a, loc5_14, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.ca8 = import_ref Other//a, inst17 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -112,7 +112,7 @@ fn Run() { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %NS1: = namespace [template] { -// CHECK:STDOUT: .A = imports.%import_ref.2 +// CHECK:STDOUT: .A = imports.%import_ref.ca7 // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {} @@ -121,7 +121,7 @@ fn Run() { // CHECK:STDOUT: %return.param_patt: %A = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %NS1.ref: = name_ref NS1, imports.%NS1 [template = imports.%NS1] -// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.2 [template = constants.%A] +// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%import_ref.ca7 [template = constants.%A] // CHECK:STDOUT: %return.param: ref %A = out_param runtime_param0 // CHECK:STDOUT: %return: ref %A = return_slot %return.param // CHECK:STDOUT: } @@ -137,8 +137,8 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.ca8 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param_patt: %A { @@ -167,14 +167,14 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .F = %import_ref.1 +// CHECK:STDOUT: .F = %import_ref.097 // CHECK:STDOUT: .NS1 = %NS1 // CHECK:STDOUT: import Other//b // CHECK:STDOUT: import Other//a // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//b, F, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.2: = import_ref Other//b, inst28 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//b, inst29 [indirect], unloaded +// CHECK:STDOUT: %import_ref.097: %F.type = import_ref Other//b, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.8db: = import_ref Other//b, inst28 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.bbd = import_ref Other//b, inst29 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -190,14 +190,14 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "b.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.bbd +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Other.ref.loc7: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F.ref.loc7: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref.loc7: %F.type = name_ref F, imports.%import_ref.097 [template = constants.%F] // CHECK:STDOUT: %.loc7_11.1: ref %A = temporary_storage // CHECK:STDOUT: %F.call.loc7: init %A = call %F.ref.loc7() to %.loc7_11.1 // CHECK:STDOUT: %.loc7_11.2: ref %A = temporary %.loc7_11.1, %F.call.loc7 @@ -205,7 +205,7 @@ fn Run() { // CHECK:STDOUT: %a: ref %A = bind_name a, %a.var // CHECK:STDOUT: %a.ref: ref %A = name_ref a, %a // CHECK:STDOUT: %Other.ref.loc13: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F.ref.loc13: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref.loc13: %F.type = name_ref F, imports.%import_ref.097 [template = constants.%F] // CHECK:STDOUT: %.loc13: ref %A = splice_block %a.ref {} // CHECK:STDOUT: %F.call.loc13: init %A = call %F.ref.loc13() to %.loc13 // CHECK:STDOUT: assign %a.ref, %F.call.loc13 diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 22a5ea9cb6f6..ac043cfffbc1 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -30,30 +30,30 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: --- shadow.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.type.1: type = fn_type @A.1 [template] +// CHECK:STDOUT: %A.type.00d: type = fn_type @A.1 [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %A.1: %A.type.1 = struct_value () [template] -// CHECK:STDOUT: %A.type.2: type = fn_type @A.2 [template] -// CHECK:STDOUT: %A.2: %A.type.2 = struct_value () [template] +// CHECK:STDOUT: %A.1db: %A.type.00d = struct_value () [template] +// CHECK:STDOUT: %A.type.0e8: type = fn_type @A.2 [template] +// CHECK:STDOUT: %A.281: %A.type.0e8 = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %B.type: type = fn_type @B [template] // CHECK:STDOUT: %B: %B.type = struct_value () [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -66,12 +66,12 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: .N = %N // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc11: %A.type.1 = fn_decl @A.1 [template = constants.%A.1] {} {} +// CHECK:STDOUT: %A.decl.loc11: %A.type.00d = fn_decl @A.1 [template = constants.%A.1db] {} {} // CHECK:STDOUT: %N: = namespace [template] { // CHECK:STDOUT: .A = %A.decl.loc14 // CHECK:STDOUT: .M = %M // CHECK:STDOUT: } -// CHECK:STDOUT: %A.decl.loc14: %A.type.2 = fn_decl @A.2 [template = constants.%A.2] {} {} +// CHECK:STDOUT: %A.decl.loc14: %A.type.0e8 = fn_decl @A.2 [template = constants.%A.281] {} {} // CHECK:STDOUT: %M: = namespace [template] { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } @@ -92,7 +92,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref.loc20: %A.type.2 = name_ref A, file.%A.decl.loc14 [template = constants.%A.2] +// CHECK:STDOUT: %A.ref.loc20: %A.type.0e8 = name_ref A, file.%A.decl.loc14 [template = constants.%A.281] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref.loc20() // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] // CHECK:STDOUT: if %true br !if.then else br !if.else @@ -100,25 +100,25 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: !if.then: // CHECK:STDOUT: %A.var: ref %i32 = var A // CHECK:STDOUT: %A: ref %i32 = bind_name A, %A.var -// CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc22: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0.loc22: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc22: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc22: = bound_method %int_0.loc22, %impl.elem0.loc22 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc22: = specific_function %Convert.bound.loc22, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %Convert.specific_fn.loc22(%int_0.loc22) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc22: init %i32 = converted %int_0.loc22, %int.convert_checked.loc22 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %Convert.specific_fn.loc22(%int_0.loc22) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc22: init %i32 = converted %int_0.loc22, %int.convert_checked.loc22 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %A.var, %.loc22 // CHECK:STDOUT: %A.ref.loc25: ref %i32 = name_ref A, %A // CHECK:STDOUT: %.loc25: %i32 = bind_value %A.ref.loc25 // CHECK:STDOUT: return %.loc25 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_0.loc27: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0.loc27: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc27: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc27: = bound_method %int_0.loc27, %impl.elem0.loc27 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc27: = specific_function %Convert.bound.loc27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_0.loc27) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc27_11.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc27_11.2: %i32 = converted %int_0.loc27, %.loc27_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked.loc27: init %i32 = call %Convert.specific_fn.loc27(%int_0.loc27) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc27_11.1: %i32 = value_of_initializer %int.convert_checked.loc27 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc27_11.2: %i32 = converted %int_0.loc27, %.loc27_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc27_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/builtin/assignment.carbon b/toolchain/check/testdata/operators/builtin/assignment.carbon index 47ca549a7cbb..00d7c4777cac 100644 --- a/toolchain/check/testdata/operators/builtin/assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/assignment.carbon @@ -33,57 +33,57 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %int_9.1: Core.IntLiteral = int_value 9 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_9.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_9.2: %i32 = int_value 9 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %int_9.988: Core.IntLiteral = int_value 9 [template] +// CHECK:STDOUT: %Convert.bound.cc8: = bound_method %int_9.988, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b8b: = specific_function %Convert.bound.cc8, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_9.82c: %i32 = int_value 9 [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.6: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.6: = specific_function %Convert.bound.6, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %i32 [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.bound.7: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.7: = specific_function %Convert.bound.7, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_10.1: Core.IntLiteral = int_value 10 [template] -// CHECK:STDOUT: %Convert.bound.8: = bound_method %int_10.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.8: = specific_function %Convert.bound.8, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_10.2: %i32 = int_value 10 [template] +// CHECK:STDOUT: %int_10.64f: Core.IntLiteral = int_value 10 [template] +// CHECK:STDOUT: %Convert.bound.d24: = bound_method %int_10.64f, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.970: = specific_function %Convert.bound.d24, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_10.55a: %i32 = int_value 10 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -102,140 +102,140 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %i32 = var a // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_12, %impl.elem0.loc12 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_12, %int.convert_checked.loc12 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_12, %impl.elem0.loc12 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_12, %int.convert_checked.loc12 [template = constants.%int_12.43d] // CHECK:STDOUT: assign %a.var, %.loc12 // CHECK:STDOUT: %a.ref.loc13: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.1] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_9, %impl.elem0.loc13 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_9) [template = constants.%int_9.2] -// CHECK:STDOUT: %.loc13: init %i32 = converted %int_9, %int.convert_checked.loc13 [template = constants.%int_9.2] +// CHECK:STDOUT: %int_9: Core.IntLiteral = int_value 9 [template = constants.%int_9.988] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_9, %impl.elem0.loc13 [template = constants.%Convert.bound.cc8] +// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b8b] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_9) [template = constants.%int_9.82c] +// CHECK:STDOUT: %.loc13: init %i32 = converted %int_9, %int.convert_checked.loc13 [template = constants.%int_9.82c] // CHECK:STDOUT: assign %a.ref.loc13, %.loc13 -// CHECK:STDOUT: %b.var: ref %tuple.type.2 = var b -// CHECK:STDOUT: %b: ref %tuple.type.2 = bind_name b, %b.var -// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc15_28.1: %tuple.type.3 = tuple_literal (%int_1.loc15, %int_2.loc15) -// CHECK:STDOUT: %impl.elem0.loc15_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_28.1: = bound_method %int_1.loc15, %impl.elem0.loc15_28.1 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc15_28.1: = specific_function %Convert.bound.loc15_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc15_28.1: init %i32 = call %Convert.specific_fn.loc15_28.1(%int_1.loc15) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_1.loc15, %int.convert_checked.loc15_28.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %b.var: ref %tuple.type.471 = var b +// CHECK:STDOUT: %b: ref %tuple.type.471 = bind_name b, %b.var +// CHECK:STDOUT: %int_1.loc15: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc15: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc15_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc15, %int_2.loc15) +// CHECK:STDOUT: %impl.elem0.loc15_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_28.1: = bound_method %int_1.loc15, %impl.elem0.loc15_28.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc15_28.1: = specific_function %Convert.bound.loc15_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc15_28.1: init %i32 = call %Convert.specific_fn.loc15_28.1(%int_1.loc15) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc15_28.2: init %i32 = converted %int_1.loc15, %int.convert_checked.loc15_28.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc15: ref %i32 = tuple_access %b.var, element0 -// CHECK:STDOUT: %.loc15_28.3: init %i32 = initialize_from %.loc15_28.2 to %tuple.elem0.loc15 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc15_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc15_28.2: = bound_method %int_2.loc15, %impl.elem0.loc15_28.2 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc15_28.2: = specific_function %Convert.bound.loc15_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc15_28.2: init %i32 = call %Convert.specific_fn.loc15_28.2(%int_2.loc15) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_28.4: init %i32 = converted %int_2.loc15, %int.convert_checked.loc15_28.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc15_28.3: init %i32 = initialize_from %.loc15_28.2 to %tuple.elem0.loc15 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc15_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc15_28.2: = bound_method %int_2.loc15, %impl.elem0.loc15_28.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc15_28.2: = specific_function %Convert.bound.loc15_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc15_28.2: init %i32 = call %Convert.specific_fn.loc15_28.2(%int_2.loc15) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_28.4: init %i32 = converted %int_2.loc15, %int.convert_checked.loc15_28.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc15: ref %i32 = tuple_access %b.var, element1 -// CHECK:STDOUT: %.loc15_28.5: init %i32 = initialize_from %.loc15_28.4 to %tuple.elem1.loc15 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc15_28.6: init %tuple.type.2 = tuple_init (%.loc15_28.3, %.loc15_28.5) to %b.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc15_29: init %tuple.type.2 = converted %.loc15_28.1, %.loc15_28.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc15_28.5: init %i32 = initialize_from %.loc15_28.4 to %tuple.elem1.loc15 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc15_28.6: init %tuple.type.471 = tuple_init (%.loc15_28.3, %.loc15_28.5) to %b.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc15_29: init %tuple.type.471 = converted %.loc15_28.1, %.loc15_28.6 [template = constants.%tuple] // CHECK:STDOUT: assign %b.var, %.loc15_29 -// CHECK:STDOUT: %b.ref.loc16: ref %tuple.type.2 = name_ref b, %b +// CHECK:STDOUT: %b.ref.loc16: ref %tuple.type.471 = name_ref b, %b // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc16: ref %i32 = tuple_access %b.ref.loc16, element0 -// CHECK:STDOUT: %int_3.loc16: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_3.loc16, %impl.elem0.loc16 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_3.loc16) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc16: init %i32 = converted %int_3.loc16, %int.convert_checked.loc16 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3.loc16: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_3.loc16, %impl.elem0.loc16 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_3.loc16) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc16: init %i32 = converted %int_3.loc16, %int.convert_checked.loc16 [template = constants.%int_3.25b] // CHECK:STDOUT: assign %tuple.elem0.loc16, %.loc16 -// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.2 = name_ref b, %b -// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.471 = name_ref b, %b +// CHECK:STDOUT: %int_1.loc17: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc17: ref %i32 = tuple_access %b.ref.loc17, element1 -// CHECK:STDOUT: %int_4.loc17: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_4.loc17, %impl.elem0.loc17 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.6] -// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_4.loc17) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc17: init %i32 = converted %int_4.loc17, %int.convert_checked.loc17 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4.loc17: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc17: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17: = bound_method %int_4.loc17, %impl.elem0.loc17 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc17: = specific_function %Convert.bound.loc17, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc17: init %i32 = call %Convert.specific_fn.loc17(%int_4.loc17) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc17: init %i32 = converted %int_4.loc17, %int.convert_checked.loc17 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %tuple.elem1.loc17, %.loc17 -// CHECK:STDOUT: %c.var: ref %struct_type.a.b.1 = var c -// CHECK:STDOUT: %c: ref %struct_type.a.b.1 = bind_name c, %c.var -// CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc19: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc19_46.1: %struct_type.a.b.2 = struct_literal (%int_1.loc19, %int_2.loc19) -// CHECK:STDOUT: %impl.elem0.loc19_46.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19_46.1: = bound_method %int_1.loc19, %impl.elem0.loc19_46.1 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc19_46.1: = specific_function %Convert.bound.loc19_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc19_46.1: init %i32 = call %Convert.specific_fn.loc19_46.1(%int_1.loc19) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc19_46.2: init %i32 = converted %int_1.loc19, %int.convert_checked.loc19_46.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %c.var: ref %struct_type.a.b.3de = var c +// CHECK:STDOUT: %c: ref %struct_type.a.b.3de = bind_name c, %c.var +// CHECK:STDOUT: %int_1.loc19: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc19: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc19_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc19, %int_2.loc19) +// CHECK:STDOUT: %impl.elem0.loc19_46.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19_46.1: = bound_method %int_1.loc19, %impl.elem0.loc19_46.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc19_46.1: = specific_function %Convert.bound.loc19_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc19_46.1: init %i32 = call %Convert.specific_fn.loc19_46.1(%int_1.loc19) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc19_46.2: init %i32 = converted %int_1.loc19, %int.convert_checked.loc19_46.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc19_46.3: ref %i32 = struct_access %c.var, element0 -// CHECK:STDOUT: %.loc19_46.4: init %i32 = initialize_from %.loc19_46.2 to %.loc19_46.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc19_46.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc19_46.2: = bound_method %int_2.loc19, %impl.elem0.loc19_46.2 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc19_46.2: = specific_function %Convert.bound.loc19_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc19_46.2: init %i32 = call %Convert.specific_fn.loc19_46.2(%int_2.loc19) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_46.5: init %i32 = converted %int_2.loc19, %int.convert_checked.loc19_46.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc19_46.4: init %i32 = initialize_from %.loc19_46.2 to %.loc19_46.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc19_46.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc19_46.2: = bound_method %int_2.loc19, %impl.elem0.loc19_46.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc19_46.2: = specific_function %Convert.bound.loc19_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc19_46.2: init %i32 = call %Convert.specific_fn.loc19_46.2(%int_2.loc19) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_46.5: init %i32 = converted %int_2.loc19, %int.convert_checked.loc19_46.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc19_46.6: ref %i32 = struct_access %c.var, element1 -// CHECK:STDOUT: %.loc19_46.7: init %i32 = initialize_from %.loc19_46.5 to %.loc19_46.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc19_46.8: init %struct_type.a.b.1 = struct_init (%.loc19_46.4, %.loc19_46.7) to %c.var [template = constants.%struct] -// CHECK:STDOUT: %.loc19_47: init %struct_type.a.b.1 = converted %.loc19_46.1, %.loc19_46.8 [template = constants.%struct] +// CHECK:STDOUT: %.loc19_46.7: init %i32 = initialize_from %.loc19_46.5 to %.loc19_46.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc19_46.8: init %struct_type.a.b.3de = struct_init (%.loc19_46.4, %.loc19_46.7) to %c.var [template = constants.%struct] +// CHECK:STDOUT: %.loc19_47: init %struct_type.a.b.3de = converted %.loc19_46.1, %.loc19_46.8 [template = constants.%struct] // CHECK:STDOUT: assign %c.var, %.loc19_47 -// CHECK:STDOUT: %c.ref.loc20: ref %struct_type.a.b.1 = name_ref c, %c +// CHECK:STDOUT: %c.ref.loc20: ref %struct_type.a.b.3de = name_ref c, %c // CHECK:STDOUT: %.loc20_4: ref %i32 = struct_access %c.ref.loc20, element0 -// CHECK:STDOUT: %int_3.loc20: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0.loc20: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc20: = bound_method %int_3.loc20, %impl.elem0.loc20 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc20: = specific_function %Convert.bound.loc20, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %Convert.specific_fn.loc20(%int_3.loc20) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc20_7: init %i32 = converted %int_3.loc20, %int.convert_checked.loc20 [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3.loc20: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc20: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc20: = bound_method %int_3.loc20, %impl.elem0.loc20 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc20: = specific_function %Convert.bound.loc20, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc20: init %i32 = call %Convert.specific_fn.loc20(%int_3.loc20) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc20_7: init %i32 = converted %int_3.loc20, %int.convert_checked.loc20 [template = constants.%int_3.25b] // CHECK:STDOUT: assign %.loc20_4, %.loc20_7 -// CHECK:STDOUT: %c.ref.loc21: ref %struct_type.a.b.1 = name_ref c, %c +// CHECK:STDOUT: %c.ref.loc21: ref %struct_type.a.b.3de = name_ref c, %c // CHECK:STDOUT: %.loc21_4: ref %i32 = struct_access %c.ref.loc21, element1 -// CHECK:STDOUT: %int_4.loc21: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_4.loc21, %impl.elem0.loc21 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.6] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_4.loc21) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc21_7: init %i32 = converted %int_4.loc21, %int.convert_checked.loc21 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4.loc21: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_4.loc21, %impl.elem0.loc21 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_4.loc21) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc21_7: init %i32 = converted %int_4.loc21, %int.convert_checked.loc21 [template = constants.%int_4.2ec] // CHECK:STDOUT: assign %.loc21_4, %.loc21_7 -// CHECK:STDOUT: %p.var: ref %ptr.3 = var p -// CHECK:STDOUT: %p: ref %ptr.3 = bind_name p, %p.var +// CHECK:STDOUT: %p.var: ref %ptr.dc3 = var p +// CHECK:STDOUT: %p: ref %ptr.dc3 = bind_name p, %p.var // CHECK:STDOUT: %a.ref.loc23: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr.loc23: %ptr.3 = addr_of %a.ref.loc23 +// CHECK:STDOUT: %addr.loc23: %ptr.dc3 = addr_of %a.ref.loc23 // CHECK:STDOUT: assign %p.var, %addr.loc23 -// CHECK:STDOUT: %p.ref.loc24: ref %ptr.3 = name_ref p, %p -// CHECK:STDOUT: %.loc24_4: %ptr.3 = bind_value %p.ref.loc24 +// CHECK:STDOUT: %p.ref.loc24: ref %ptr.dc3 = name_ref p, %p +// CHECK:STDOUT: %.loc24_4: %ptr.dc3 = bind_value %p.ref.loc24 // CHECK:STDOUT: %.loc24_3: ref %i32 = deref %.loc24_4 -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0.loc24: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc24: = bound_method %int_5, %impl.elem0.loc24 [template = constants.%Convert.bound.7] -// CHECK:STDOUT: %Convert.specific_fn.loc24: = specific_function %Convert.bound.loc24, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.7] -// CHECK:STDOUT: %int.convert_checked.loc24: init %i32 = call %Convert.specific_fn.loc24(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc24_6: init %i32 = converted %int_5, %int.convert_checked.loc24 [template = constants.%int_5.2] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc24: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc24: = bound_method %int_5, %impl.elem0.loc24 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn.loc24: = specific_function %Convert.bound.loc24, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked.loc24: init %i32 = call %Convert.specific_fn.loc24(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc24_6: init %i32 = converted %int_5, %int.convert_checked.loc24 [template = constants.%int_5.70b] // CHECK:STDOUT: assign %.loc24_3, %.loc24_6 // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] // CHECK:STDOUT: if %true br !if.expr.then else br !if.expr.else // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then: -// CHECK:STDOUT: %p.ref.loc26: ref %ptr.3 = name_ref p, %p -// CHECK:STDOUT: %.loc26_18: %ptr.3 = bind_value %p.ref.loc26 +// CHECK:STDOUT: %p.ref.loc26: ref %ptr.dc3 = name_ref p, %p +// CHECK:STDOUT: %.loc26_18: %ptr.dc3 = bind_value %p.ref.loc26 // CHECK:STDOUT: br !if.expr.result(%.loc26_18) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else: // CHECK:STDOUT: %a.ref.loc26: ref %i32 = name_ref a, %a -// CHECK:STDOUT: %addr.loc26: %ptr.3 = addr_of %a.ref.loc26 +// CHECK:STDOUT: %addr.loc26: %ptr.dc3 = addr_of %a.ref.loc26 // CHECK:STDOUT: br !if.expr.result(%addr.loc26) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result: -// CHECK:STDOUT: %.loc26_5: %ptr.3 = block_arg !if.expr.result +// CHECK:STDOUT: %.loc26_5: %ptr.dc3 = block_arg !if.expr.result // CHECK:STDOUT: %.loc26_3: ref %i32 = deref %.loc26_5 -// CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10.1] -// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_10, %impl.elem0.loc26 [template = constants.%Convert.bound.8] -// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.8] -// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_10) [template = constants.%int_10.2] -// CHECK:STDOUT: %.loc26_29: init %i32 = converted %int_10, %int.convert_checked.loc26 [template = constants.%int_10.2] +// CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10.64f] +// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_10, %impl.elem0.loc26 [template = constants.%Convert.bound.d24] +// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.970] +// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_10) [template = constants.%int_10.55a] +// CHECK:STDOUT: %.loc26_29: init %i32 = converted %int_10, %int.convert_checked.loc26 [template = constants.%int_10.55a] // CHECK:STDOUT: assign %.loc26_3, %.loc26_29 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon index 26008f35433f..b34adde44183 100644 --- a/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_and_or_not_in_function.carbon @@ -79,9 +79,9 @@ var or_val: bool = true or true; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .Float = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Float = %import_ref.20b // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon index f0a4e0d62cac..9d7477a04540 100644 --- a/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_assignment_to_non_assignable.carbon @@ -65,47 +65,47 @@ fn Main() { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.1 = tuple_value (%int_3.1, %int_4) [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.1 = tuple_value (%int_1.1, %int_2.1) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple.3: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %tuple.302: %tuple.type.f94 = tuple_value (%int_3.1ba, %int_4) [template] +// CHECK:STDOUT: %tuple.ad8: %tuple.type.f94 = tuple_value (%int_1.5b8, %int_2.ecc) [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple.58e: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: Core.IntLiteral, .y: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct.1: %struct_type.x.y = struct_value (%int_3.1, %int_4) [template] -// CHECK:STDOUT: %struct.2: %struct_type.x.y = struct_value (%int_1.1, %int_2.1) [template] +// CHECK:STDOUT: %struct.a0d: %struct_type.x.y = struct_value (%int_3.1ba, %int_4) [template] +// CHECK:STDOUT: %struct.004: %struct_type.x.y = struct_value (%int_1.5b8, %int_2.ecc) [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_10.1: Core.IntLiteral = int_value 10 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_10.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_10.2: %i32 = int_value 10 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_10.64f: Core.IntLiteral = int_value 10 [template] +// CHECK:STDOUT: %Convert.bound.d24: = bound_method %int_10.64f, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.970: = specific_function %Convert.bound.d24, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_10.55a: %i32 = int_value 10 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -134,123 +134,123 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: assign %int_1.loc18, %int_2.loc18 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_1.loc23, %impl.elem0.loc23 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_1.loc23) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc23: init %i32 = converted %int_1.loc23, %int.convert_checked.loc23 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc23: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_1.loc23, %impl.elem0.loc23 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_1.loc23) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc23: init %i32 = converted %int_1.loc23, %int.convert_checked.loc23 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %F.call, %.loc23 -// CHECK:STDOUT: %int_1.loc28: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc28: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc28_8.1: %tuple.type.1 = tuple_literal (%int_1.loc28, %int_2.loc28) -// CHECK:STDOUT: %int_3.loc28: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_1.loc28: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc28: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc28_8.1: %tuple.type.f94 = tuple_literal (%int_1.loc28, %int_2.loc28) +// CHECK:STDOUT: %int_3.loc28: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %int_4.loc28: Core.IntLiteral = int_value 4 [template = constants.%int_4] -// CHECK:STDOUT: %.loc28_17.1: %tuple.type.1 = tuple_literal (%int_3.loc28, %int_4.loc28) +// CHECK:STDOUT: %.loc28_17.1: %tuple.type.f94 = tuple_literal (%int_3.loc28, %int_4.loc28) // CHECK:STDOUT: %tuple.elem0.loc28: Core.IntLiteral = tuple_access %.loc28_8.1, element0 -// CHECK:STDOUT: %.loc28_17.2: init Core.IntLiteral = initialize_from %int_3.loc28 to %tuple.elem0.loc28 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc28_17.2: init Core.IntLiteral = initialize_from %int_3.loc28 to %tuple.elem0.loc28 [template = constants.%int_3.1ba] // CHECK:STDOUT: %tuple.elem1.loc28: Core.IntLiteral = tuple_access %.loc28_8.1, element1 // CHECK:STDOUT: %.loc28_17.3: init Core.IntLiteral = initialize_from %int_4.loc28 to %tuple.elem1.loc28 [template = constants.%int_4] -// CHECK:STDOUT: %.loc28_17.4: init %tuple.type.1 = tuple_init (%.loc28_17.2, %.loc28_17.3) to %.loc28_8.1 [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc28_10: init %tuple.type.1 = converted %.loc28_17.1, %.loc28_17.4 [template = constants.%tuple.1] +// CHECK:STDOUT: %.loc28_17.4: init %tuple.type.f94 = tuple_init (%.loc28_17.2, %.loc28_17.3) to %.loc28_8.1 [template = constants.%tuple.302] +// CHECK:STDOUT: %.loc28_10: init %tuple.type.f94 = converted %.loc28_17.1, %.loc28_17.4 [template = constants.%tuple.302] // CHECK:STDOUT: assign %.loc28_8.1, %.loc28_10 -// CHECK:STDOUT: %tuple.loc28: %tuple.type.1 = tuple_value (%int_1.loc28, %int_2.loc28) [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc28_8.2: %tuple.type.1 = converted %.loc28_8.1, %tuple.loc28 [template = constants.%tuple.2] +// CHECK:STDOUT: %tuple.loc28: %tuple.type.f94 = tuple_value (%int_1.loc28, %int_2.loc28) [template = constants.%tuple.ad8] +// CHECK:STDOUT: %.loc28_8.2: %tuple.type.f94 = converted %.loc28_8.1, %tuple.loc28 [template = constants.%tuple.ad8] // CHECK:STDOUT: %n.var: ref %i32 = var n // CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_0, %impl.elem0.loc29 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc29: init %i32 = converted %int_0, %int.convert_checked.loc29 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc29: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc29: = bound_method %int_0, %impl.elem0.loc29 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc29: = specific_function %Convert.bound.loc29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc29: init %i32 = call %Convert.specific_fn.loc29(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc29: init %i32 = converted %int_0, %int.convert_checked.loc29 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %n.var, %.loc29 // CHECK:STDOUT: %n.ref.loc34_4: ref %i32 = name_ref n, %n // CHECK:STDOUT: %n.ref.loc34_7: ref %i32 = name_ref n, %n -// CHECK:STDOUT: %.loc34_8.1: %tuple.type.2 = tuple_literal (%n.ref.loc34_4, %n.ref.loc34_7) -// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc34: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc34_17.1: %tuple.type.1 = tuple_literal (%int_1.loc34, %int_2.loc34) -// CHECK:STDOUT: %impl.elem0.loc34_17.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc34_17.1: = bound_method %int_1.loc34, %impl.elem0.loc34_17.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc34_17.1: = specific_function %Convert.bound.loc34_17.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc34_17.1: init %i32 = call %Convert.specific_fn.loc34_17.1(%int_1.loc34) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc34_17.2: init %i32 = converted %int_1.loc34, %int.convert_checked.loc34_17.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %.loc34_8.1: %tuple.type.471 = tuple_literal (%n.ref.loc34_4, %n.ref.loc34_7) +// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc34: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc34_17.1: %tuple.type.f94 = tuple_literal (%int_1.loc34, %int_2.loc34) +// CHECK:STDOUT: %impl.elem0.loc34_17.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc34_17.1: = bound_method %int_1.loc34, %impl.elem0.loc34_17.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc34_17.1: = specific_function %Convert.bound.loc34_17.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc34_17.1: init %i32 = call %Convert.specific_fn.loc34_17.1(%int_1.loc34) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc34_17.2: init %i32 = converted %int_1.loc34, %int.convert_checked.loc34_17.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc34: %i32 = tuple_access %.loc34_8.1, element0 -// CHECK:STDOUT: %.loc34_17.3: init %i32 = initialize_from %.loc34_17.2 to %tuple.elem0.loc34 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc34_17.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc34_17.2: = bound_method %int_2.loc34, %impl.elem0.loc34_17.2 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc34_17.2: = specific_function %Convert.bound.loc34_17.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc34_17.2: init %i32 = call %Convert.specific_fn.loc34_17.2(%int_2.loc34) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc34_17.4: init %i32 = converted %int_2.loc34, %int.convert_checked.loc34_17.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc34_17.3: init %i32 = initialize_from %.loc34_17.2 to %tuple.elem0.loc34 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc34_17.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc34_17.2: = bound_method %int_2.loc34, %impl.elem0.loc34_17.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc34_17.2: = specific_function %Convert.bound.loc34_17.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc34_17.2: init %i32 = call %Convert.specific_fn.loc34_17.2(%int_2.loc34) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc34_17.4: init %i32 = converted %int_2.loc34, %int.convert_checked.loc34_17.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc34: %i32 = tuple_access %.loc34_8.1, element1 -// CHECK:STDOUT: %.loc34_17.5: init %i32 = initialize_from %.loc34_17.4 to %tuple.elem1.loc34 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc34_17.6: init %tuple.type.2 = tuple_init (%.loc34_17.3, %.loc34_17.5) to %.loc34_8.1 [template = constants.%tuple.3] -// CHECK:STDOUT: %.loc34_10: init %tuple.type.2 = converted %.loc34_17.1, %.loc34_17.6 [template = constants.%tuple.3] +// CHECK:STDOUT: %.loc34_17.5: init %i32 = initialize_from %.loc34_17.4 to %tuple.elem1.loc34 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc34_17.6: init %tuple.type.471 = tuple_init (%.loc34_17.3, %.loc34_17.5) to %.loc34_8.1 [template = constants.%tuple.58e] +// CHECK:STDOUT: %.loc34_10: init %tuple.type.471 = converted %.loc34_17.1, %.loc34_17.6 [template = constants.%tuple.58e] // CHECK:STDOUT: assign %.loc34_8.1, %.loc34_10 // CHECK:STDOUT: %.loc34_4: %i32 = bind_value %n.ref.loc34_4 // CHECK:STDOUT: %.loc34_7: %i32 = bind_value %n.ref.loc34_7 -// CHECK:STDOUT: %tuple.loc34: %tuple.type.2 = tuple_value (%.loc34_4, %.loc34_7) -// CHECK:STDOUT: %.loc34_8.2: %tuple.type.2 = converted %.loc34_8.1, %tuple.loc34 +// CHECK:STDOUT: %tuple.loc34: %tuple.type.471 = tuple_value (%.loc34_4, %.loc34_7) +// CHECK:STDOUT: %.loc34_8.2: %tuple.type.471 = converted %.loc34_8.1, %tuple.loc34 // CHECK:STDOUT: %int_32.loc39_3: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc39_3: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc39_9: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc39_9: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.dc3] // CHECK:STDOUT: assign %i32.loc39_3, %ptr -// CHECK:STDOUT: %int_1.loc44: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc44: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_1.loc44: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc44: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %.loc44_18.1: %struct_type.x.y = struct_literal (%int_1.loc44, %int_2.loc44) -// CHECK:STDOUT: %int_3.loc44: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] +// CHECK:STDOUT: %int_3.loc44: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] // CHECK:STDOUT: %int_4.loc44: Core.IntLiteral = int_value 4 [template = constants.%int_4] // CHECK:STDOUT: %.loc44_37.1: %struct_type.x.y = struct_literal (%int_3.loc44, %int_4.loc44) // CHECK:STDOUT: %.loc44_37.2: Core.IntLiteral = struct_access %.loc44_18.1, element0 -// CHECK:STDOUT: %.loc44_37.3: init Core.IntLiteral = initialize_from %int_3.loc44 to %.loc44_37.2 [template = constants.%int_3.1] +// CHECK:STDOUT: %.loc44_37.3: init Core.IntLiteral = initialize_from %int_3.loc44 to %.loc44_37.2 [template = constants.%int_3.1ba] // CHECK:STDOUT: %.loc44_37.4: Core.IntLiteral = struct_access %.loc44_18.1, element1 // CHECK:STDOUT: %.loc44_37.5: init Core.IntLiteral = initialize_from %int_4.loc44 to %.loc44_37.4 [template = constants.%int_4] -// CHECK:STDOUT: %.loc44_37.6: init %struct_type.x.y = struct_init (%.loc44_37.3, %.loc44_37.5) to %.loc44_18.1 [template = constants.%struct.1] -// CHECK:STDOUT: %.loc44_20: init %struct_type.x.y = converted %.loc44_37.1, %.loc44_37.6 [template = constants.%struct.1] +// CHECK:STDOUT: %.loc44_37.6: init %struct_type.x.y = struct_init (%.loc44_37.3, %.loc44_37.5) to %.loc44_18.1 [template = constants.%struct.a0d] +// CHECK:STDOUT: %.loc44_20: init %struct_type.x.y = converted %.loc44_37.1, %.loc44_37.6 [template = constants.%struct.a0d] // CHECK:STDOUT: assign %.loc44_18.1, %.loc44_20 -// CHECK:STDOUT: %struct: %struct_type.x.y = struct_value (%int_1.loc44, %int_2.loc44) [template = constants.%struct.2] -// CHECK:STDOUT: %.loc44_18.2: %struct_type.x.y = converted %.loc44_18.1, %struct [template = constants.%struct.2] +// CHECK:STDOUT: %struct: %struct_type.x.y = struct_value (%int_1.loc44, %int_2.loc44) [template = constants.%struct.004] +// CHECK:STDOUT: %.loc44_18.2: %struct_type.x.y = converted %.loc44_18.1, %struct [template = constants.%struct.004] // CHECK:STDOUT: %true.loc49: bool = bool_literal true [template = constants.%true] // CHECK:STDOUT: if %true.loc49 br !if.expr.then.loc49 else br !if.expr.else.loc49 // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.then.loc49: -// CHECK:STDOUT: %int_1.loc49: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1.loc49: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc49: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc49_12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc49_12: = bound_method %int_1.loc49, %impl.elem0.loc49_12 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc49_12: = specific_function %Convert.bound.loc49_12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc49_12: init %i32 = call %Convert.specific_fn.loc49_12(%int_1.loc49) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc49_12.1: %i32 = value_of_initializer %int.convert_checked.loc49_12 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc49_12.2: %i32 = converted %int_1.loc49, %.loc49_12.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %impl.elem0.loc49_12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc49_12: = bound_method %int_1.loc49, %impl.elem0.loc49_12 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc49_12: = specific_function %Convert.bound.loc49_12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc49_12: init %i32 = call %Convert.specific_fn.loc49_12(%int_1.loc49) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc49_12.1: %i32 = value_of_initializer %int.convert_checked.loc49_12 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc49_12.2: %i32 = converted %int_1.loc49, %.loc49_12.1 [template = constants.%int_1.c60] // CHECK:STDOUT: br !if.expr.result.loc49(%.loc49_12.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.else.loc49: -// CHECK:STDOUT: %int_2.loc49: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0.loc49_19: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc49_19: = bound_method %int_2.loc49, %impl.elem0.loc49_19 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc49_19: = specific_function %Convert.bound.loc49_19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc49_19: init %i32 = call %Convert.specific_fn.loc49_19(%int_2.loc49) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc49_19.1: %i32 = value_of_initializer %int.convert_checked.loc49_19 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc49_19.2: %i32 = converted %int_2.loc49, %.loc49_19.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2.loc49: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc49_19: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc49_19: = bound_method %int_2.loc49, %impl.elem0.loc49_19 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc49_19: = specific_function %Convert.bound.loc49_19, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc49_19: init %i32 = call %Convert.specific_fn.loc49_19(%int_2.loc49) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc49_19.1: %i32 = value_of_initializer %int.convert_checked.loc49_19 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc49_19.2: %i32 = converted %int_2.loc49, %.loc49_19.1 [template = constants.%int_2.166] // CHECK:STDOUT: br !if.expr.result.loc49(%.loc49_19.2) // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result.loc49: -// CHECK:STDOUT: %.loc49_4: %i32 = block_arg !if.expr.result.loc49 [template = constants.%int_1.2] -// CHECK:STDOUT: %int_3.loc49: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0.loc49_27: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc49_27: = bound_method %int_3.loc49, %impl.elem0.loc49_27 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc49_27: = specific_function %Convert.bound.loc49_27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc49_27: init %i32 = call %Convert.specific_fn.loc49_27(%int_3.loc49) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc49_27: init %i32 = converted %int_3.loc49, %int.convert_checked.loc49_27 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc49_4: %i32 = block_arg !if.expr.result.loc49 [template = constants.%int_1.c60] +// CHECK:STDOUT: %int_3.loc49: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc49_27: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc49_27: = bound_method %int_3.loc49, %impl.elem0.loc49_27 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc49_27: = specific_function %Convert.bound.loc49_27, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc49_27: init %i32 = call %Convert.specific_fn.loc49_27(%int_3.loc49) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc49_27: init %i32 = converted %int_3.loc49, %int.convert_checked.loc49_27 [template = constants.%int_3.25b] // CHECK:STDOUT: assign %.loc49_4, %.loc49_27 // CHECK:STDOUT: %a.var: ref %i32 = var a // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var @@ -269,12 +269,12 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: !if.expr.result.loc56: // CHECK:STDOUT: %.loc56_4: %i32 = block_arg !if.expr.result.loc56 -// CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10.1] -// CHECK:STDOUT: %impl.elem0.loc56: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc56: = bound_method %int_10, %impl.elem0.loc56 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc56: = specific_function %Convert.bound.loc56, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc56: init %i32 = call %Convert.specific_fn.loc56(%int_10) [template = constants.%int_10.2] -// CHECK:STDOUT: %.loc56_27: init %i32 = converted %int_10, %int.convert_checked.loc56 [template = constants.%int_10.2] +// CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10.64f] +// CHECK:STDOUT: %impl.elem0.loc56: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc56: = bound_method %int_10, %impl.elem0.loc56 [template = constants.%Convert.bound.d24] +// CHECK:STDOUT: %Convert.specific_fn.loc56: = specific_function %Convert.bound.loc56, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.970] +// CHECK:STDOUT: %int.convert_checked.loc56: init %i32 = call %Convert.specific_fn.loc56(%int_10) [template = constants.%int_10.55a] +// CHECK:STDOUT: %.loc56_27: init %i32 = converted %int_10, %int.convert_checked.loc56 [template = constants.%int_10.55a] // CHECK:STDOUT: assign %.loc56_4, %.loc56_27 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon index 127bc6067878..922d6d620914 100644 --- a/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_redundant_compound_access.carbon @@ -30,26 +30,26 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,13 +76,13 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_0, %.loc11_25.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_25.2: %i32 = converted %int_0, %.loc11_25.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc11_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -90,12 +90,12 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %i32 = var a // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc14: init %i32 = converted %int_3, %int.convert_checked [template = constants.%int_3.2] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc14: init %i32 = converted %int_3, %int.convert_checked [template = constants.%int_3.25b] // CHECK:STDOUT: assign %a.var, %.loc14 // CHECK:STDOUT: %a.ref.loc19_3: ref %i32 = name_ref a, %a // CHECK:STDOUT: %a.ref.loc19_7: ref %i32 = name_ref a, %a diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon index a62abe86e1b3..2453f89b5728 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch.carbon @@ -28,8 +28,8 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon index 7147f5402052..457d1f969f23 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_assignment.carbon @@ -26,21 +26,21 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1, %Convert.10 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1ba, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] // CHECK:STDOUT: %float: f64 = float_literal 5.6000000000000005 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -59,12 +59,12 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.var: ref %i32 = var a // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_3, %int.convert_checked [template = constants.%int_3.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_3, %int.convert_checked [template = constants.%int_3.25b] // CHECK:STDOUT: assign %a.var, %.loc12 // CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, %a // CHECK:STDOUT: %float: f64 = float_literal 5.6000000000000005 [template = constants.%float] diff --git a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon index 0ab32ccf824a..499d1dba1220 100644 --- a/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_type_mismatch_once.carbon @@ -32,8 +32,8 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Add = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Add = %import_ref.4b5 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon index 4b7c3eb7e193..30b5750bb9f1 100644 --- a/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon +++ b/toolchain/check/testdata/operators/builtin/fail_unimplemented_op.carbon @@ -28,8 +28,8 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Add = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Add = %import_ref.4b5 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index fa436f806396..5b25f44e3773 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.88c: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.603: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.6dd: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.ec5: %Op.type.6dd = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %AddAssign.type: type = facet_type <@AddAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.374: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.b09: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.e24: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.f0f: %Op.type.e24 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Add = %import_ref.1 -// CHECK:STDOUT: .AddAssign = %import_ref.5 +// CHECK:STDOUT: .Add = %import_ref.4b5 +// CHECK:STDOUT: .AddAssign = %import_ref.48d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Add, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.4b5: type = import_ref Core//prelude/operators/arithmetic, Add, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.48d: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.1 [template = constants.%Add.type] +// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.4b5 [template = constants.%Add.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.603] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.5 [template = constants.%AddAssign.type] +// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.48d [template = constants.%AddAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.b09] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Add.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.6dd = fn_decl @Op.2 [template = constants.%Op.ec5] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %AddAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.e24 = fn_decl @Op.4 [template = constants.%Op.f0f] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.88c = impl_witness_access constants.%impl_witness.603, element0 [template = constants.%Op.ec5] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.374 = impl_witness_access constants.%impl_witness.b09, element0 [template = constants.%Op.f0f] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index 70dff3b8d6e0..897a187c557c 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %BitAnd.type: type = facet_type <@BitAnd> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.fce: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.3bd: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.157: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.e2c: %Op.type.157 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %BitAndAssign.type: type = facet_type <@BitAndAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.160: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.862: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.608: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.477: %Op.type.608 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .BitAnd = %import_ref.1 -// CHECK:STDOUT: .BitAndAssign = %import_ref.5 +// CHECK:STDOUT: .BitAnd = %import_ref.45c +// CHECK:STDOUT: .BitAndAssign = %import_ref.fab // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, BitAnd, loaded [template = constants.%BitAnd.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, BitAndAssign, loaded [template = constants.%BitAndAssign.type] +// CHECK:STDOUT: %import_ref.45c: type = import_ref Core//prelude/operators/bitwise, BitAnd, loaded [template = constants.%BitAnd.type] +// CHECK:STDOUT: %import_ref.fab: type = import_ref Core//prelude/operators/bitwise, BitAndAssign, loaded [template = constants.%BitAndAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitAnd.ref: type = name_ref BitAnd, imports.%import_ref.1 [template = constants.%BitAnd.type] +// CHECK:STDOUT: %BitAnd.ref: type = name_ref BitAnd, imports.%import_ref.45c [template = constants.%BitAnd.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.3bd] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitAndAssign.ref: type = name_ref BitAndAssign, imports.%import_ref.5 [template = constants.%BitAndAssign.type] +// CHECK:STDOUT: %BitAndAssign.ref: type = name_ref BitAndAssign, imports.%import_ref.fab [template = constants.%BitAndAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.862] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %BitAnd.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.157 = fn_decl @Op.2 [template = constants.%Op.e2c] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %BitAndAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.608 = fn_decl @Op.4 [template = constants.%Op.477] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.fce = impl_witness_access constants.%impl_witness.3bd, element0 [template = constants.%Op.e2c] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.160 = impl_witness_access constants.%impl_witness.862, element0 [template = constants.%Op.477] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index 1ec5372b950f..28c4ddf7a63e 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -31,10 +31,10 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %BitComplement.type: type = facet_type <@BitComplement> [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.408: type = fn_type @Op.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.fa6: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.ecf: %Op.type.fa6 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] @@ -42,11 +42,11 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .BitComplement = %import_ref.1 +// CHECK:STDOUT: .BitComplement = %import_ref.7f8 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, BitComplement, loaded [template = constants.%BitComplement.type] +// CHECK:STDOUT: %import_ref.7f8: type = import_ref Core//prelude/operators/bitwise, BitComplement, loaded [template = constants.%BitComplement.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,7 +60,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitComplement.ref: type = name_ref BitComplement, imports.%import_ref.1 [template = constants.%BitComplement.type] +// CHECK:STDOUT: %BitComplement.ref: type = name_ref BitComplement, imports.%import_ref.7f8 [template = constants.%BitComplement.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { @@ -79,7 +79,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %BitComplement.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.fa6 = fn_decl @Op.2 [template = constants.%Op.ecf] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern @@ -117,7 +117,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.408 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.ecf] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc23: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref) to %.loc23 diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index 682754b8a940..4e6b4ef2e2a3 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %BitOr.type: type = facet_type <@BitOr> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.933: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.cad: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.875: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.35d: %Op.type.875 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %BitOrAssign.type: type = facet_type <@BitOrAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.27c: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.2d6: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.d3b: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.93e: %Op.type.d3b = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .BitOr = %import_ref.1 -// CHECK:STDOUT: .BitOrAssign = %import_ref.5 +// CHECK:STDOUT: .BitOr = %import_ref.6fc +// CHECK:STDOUT: .BitOrAssign = %import_ref.fed // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, BitOr, loaded [template = constants.%BitOr.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, BitOrAssign, loaded [template = constants.%BitOrAssign.type] +// CHECK:STDOUT: %import_ref.6fc: type = import_ref Core//prelude/operators/bitwise, BitOr, loaded [template = constants.%BitOr.type] +// CHECK:STDOUT: %import_ref.fed: type = import_ref Core//prelude/operators/bitwise, BitOrAssign, loaded [template = constants.%BitOrAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitOr.ref: type = name_ref BitOr, imports.%import_ref.1 [template = constants.%BitOr.type] +// CHECK:STDOUT: %BitOr.ref: type = name_ref BitOr, imports.%import_ref.6fc [template = constants.%BitOr.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.cad] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitOrAssign.ref: type = name_ref BitOrAssign, imports.%import_ref.5 [template = constants.%BitOrAssign.type] +// CHECK:STDOUT: %BitOrAssign.ref: type = name_ref BitOrAssign, imports.%import_ref.fed [template = constants.%BitOrAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2d6] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %BitOr.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.875 = fn_decl @Op.2 [template = constants.%Op.35d] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %BitOrAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.d3b = fn_decl @Op.4 [template = constants.%Op.93e] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.933 = impl_witness_access constants.%impl_witness.cad, element0 [template = constants.%Op.35d] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.27c = impl_witness_access constants.%impl_witness.2d6, element0 [template = constants.%Op.93e] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index f85503a3d5ce..a85c6f4f0003 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %BitXor.type: type = facet_type <@BitXor> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.e5e: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.8a1: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.bba: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.6c5: %Op.type.bba = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %BitXorAssign.type: type = facet_type <@BitXorAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.0c9: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.7ad: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.b9b: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.622: %Op.type.b9b = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .BitXor = %import_ref.1 -// CHECK:STDOUT: .BitXorAssign = %import_ref.5 +// CHECK:STDOUT: .BitXor = %import_ref.ebe +// CHECK:STDOUT: .BitXorAssign = %import_ref.a51 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, BitXor, loaded [template = constants.%BitXor.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, BitXorAssign, loaded [template = constants.%BitXorAssign.type] +// CHECK:STDOUT: %import_ref.ebe: type = import_ref Core//prelude/operators/bitwise, BitXor, loaded [template = constants.%BitXor.type] +// CHECK:STDOUT: %import_ref.a51: type = import_ref Core//prelude/operators/bitwise, BitXorAssign, loaded [template = constants.%BitXorAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitXor.ref: type = name_ref BitXor, imports.%import_ref.1 [template = constants.%BitXor.type] +// CHECK:STDOUT: %BitXor.ref: type = name_ref BitXor, imports.%import_ref.ebe [template = constants.%BitXor.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.8a1] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %BitXorAssign.ref: type = name_ref BitXorAssign, imports.%import_ref.5 [template = constants.%BitXorAssign.type] +// CHECK:STDOUT: %BitXorAssign.ref: type = name_ref BitXorAssign, imports.%import_ref.a51 [template = constants.%BitXorAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.7ad] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %BitXor.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.bba = fn_decl @Op.2 [template = constants.%Op.6c5] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %BitXorAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.b9b = fn_decl @Op.4 [template = constants.%Op.622] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.e5e = impl_witness_access constants.%impl_witness.8a1, element0 [template = constants.%Op.6c5] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.0c9 = impl_witness_access constants.%impl_witness.7ad, element0 [template = constants.%Op.622] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index b9933733a45f..5d56e258c3e8 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -31,11 +31,11 @@ fn TestOp() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Dec.type: type = facet_type <@Dec> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.b37: type = fn_type @Op.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.921: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.053: %Op.type.921 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] @@ -43,11 +43,11 @@ fn TestOp() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Dec = %import_ref.1 +// CHECK:STDOUT: .Dec = %import_ref.c7b // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Dec, loaded [template = constants.%Dec.type] +// CHECK:STDOUT: %import_ref.c7b: type = import_ref Core//prelude/operators/arithmetic, Dec, loaded [template = constants.%Dec.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,24 +61,24 @@ fn TestOp() { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Dec.ref: type = name_ref Dec, imports.%import_ref.1 [template = constants.%Dec.type] +// CHECK:STDOUT: %Dec.ref: type = name_ref Dec, imports.%import_ref.c7b [template = constants.%Dec.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Dec.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.921 = fn_decl @Op.2 [template = constants.%Op.053] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc18_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc18_21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc18_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.2 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -94,7 +94,7 @@ fn TestOp() { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.2](); +// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp() { // CHECK:STDOUT: !entry: @@ -105,9 +105,9 @@ fn TestOp() { // CHECK:STDOUT: %.loc22_16: init %C = converted %.loc22_15.1, %.loc22_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc22_16 // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.b37 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.053] // CHECK:STDOUT: %Op.bound: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %c.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index c9d4e6f84c33..97d252f12018 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Div.type: type = facet_type <@Div> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.96a: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.7ea: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.4a4: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.740: %Op.type.4a4 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %DivAssign.type: type = facet_type <@DivAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.1c7: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.33c: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.5ac: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.378: %Op.type.5ac = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Div = %import_ref.1 -// CHECK:STDOUT: .DivAssign = %import_ref.5 +// CHECK:STDOUT: .Div = %import_ref.f0c +// CHECK:STDOUT: .DivAssign = %import_ref.227 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Div, loaded [template = constants.%Div.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, DivAssign, loaded [template = constants.%DivAssign.type] +// CHECK:STDOUT: %import_ref.f0c: type = import_ref Core//prelude/operators/arithmetic, Div, loaded [template = constants.%Div.type] +// CHECK:STDOUT: %import_ref.227: type = import_ref Core//prelude/operators/arithmetic, DivAssign, loaded [template = constants.%DivAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Div.ref: type = name_ref Div, imports.%import_ref.1 [template = constants.%Div.type] +// CHECK:STDOUT: %Div.ref: type = name_ref Div, imports.%import_ref.f0c [template = constants.%Div.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.7ea] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %DivAssign.ref: type = name_ref DivAssign, imports.%import_ref.5 [template = constants.%DivAssign.type] +// CHECK:STDOUT: %DivAssign.ref: type = name_ref DivAssign, imports.%import_ref.227 [template = constants.%DivAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.33c] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Div.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.4a4 = fn_decl @Op.2 [template = constants.%Op.740] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %DivAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.5ac = fn_decl @Op.4 [template = constants.%Op.378] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.96a = impl_witness_access constants.%impl_witness.7ea, element0 [template = constants.%Op.740] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.1c7 = impl_witness_access constants.%impl_witness.33c, element0 [template = constants.%Op.378] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index f4bf03c0f68a..6c6b35005fd0 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -89,15 +89,15 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Eq.type: type = facet_type <@Eq> [template] -// CHECK:STDOUT: %Equal.type.1: type = fn_type @Equal.1 [template] -// CHECK:STDOUT: %NotEqual.type.1: type = fn_type @NotEqual.1 [template] +// CHECK:STDOUT: %Equal.type.91b: type = fn_type @Equal.1 [template] +// CHECK:STDOUT: %NotEqual.type.d35: type = fn_type @NotEqual.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Equal.decl, @impl.1.%NotEqual.decl) [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %Equal.type.2: type = fn_type @Equal.2 [template] -// CHECK:STDOUT: %Equal.2: %Equal.type.2 = struct_value () [template] -// CHECK:STDOUT: %NotEqual.type.2: type = fn_type @NotEqual.2 [template] -// CHECK:STDOUT: %NotEqual.2: %NotEqual.type.2 = struct_value () [template] +// CHECK:STDOUT: %Equal.type.e09: type = fn_type @Equal.2 [template] +// CHECK:STDOUT: %Equal.960: %Equal.type.e09 = struct_value () [template] +// CHECK:STDOUT: %NotEqual.type.3bf: type = fn_type @NotEqual.2 [template] +// CHECK:STDOUT: %NotEqual.ba6: %NotEqual.type.3bf = struct_value () [template] // CHECK:STDOUT: %TestEqual.type: type = fn_type @TestEqual [template] // CHECK:STDOUT: %TestEqual: %TestEqual.type = struct_value () [template] // CHECK:STDOUT: %TestNotEqual.type: type = fn_type @TestNotEqual [template] @@ -106,12 +106,12 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Eq = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.7 +// CHECK:STDOUT: .Eq = %import_ref.32e +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, Eq, loaded [template = constants.%Eq.type] +// CHECK:STDOUT: %import_ref.32e: type = import_ref Core//prelude/operators/comparison, Eq, loaded [template = constants.%Eq.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -126,7 +126,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, imports.%import_ref.1 [template = constants.%Eq.type] +// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, imports.%import_ref.32e [template = constants.%Eq.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Equal.decl, @impl.1.%NotEqual.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestEqual.decl: %TestEqual.type = fn_decl @TestEqual [template = constants.%TestEqual] { @@ -172,7 +172,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Eq.ref { -// CHECK:STDOUT: %Equal.decl: %Equal.type.2 = fn_decl @Equal.2 [template = constants.%Equal.2] { +// CHECK:STDOUT: %Equal.decl: %Equal.type.e09 = fn_decl @Equal.2 [template = constants.%Equal.960] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -192,7 +192,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.2 = fn_decl @NotEqual.2 [template = constants.%NotEqual.2] { +// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.3bf = fn_decl @NotEqual.2 [template = constants.%NotEqual.ba6] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -235,7 +235,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Equal.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Equal.2] +// CHECK:STDOUT: %impl.elem0: %Equal.type.91b = impl_witness_access constants.%impl_witness, element0 [template = constants.%Equal.960] // CHECK:STDOUT: %Equal.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %Equal.call: init bool = call %Equal.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc12_16.1: bool = value_of_initializer %Equal.call @@ -247,7 +247,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %NotEqual.type.1 = impl_witness_access constants.%impl_witness, element1 [template = constants.%NotEqual.2] +// CHECK:STDOUT: %impl.elem1: %NotEqual.type.d35 = impl_witness_access constants.%impl_witness, element1 [template = constants.%NotEqual.ba6] // CHECK:STDOUT: %NotEqual.bound: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: %NotEqual.call: init bool = call %NotEqual.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc16_16.1: bool = value_of_initializer %NotEqual.call @@ -271,8 +271,8 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Eq = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Eq = %import_ref.32e // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -359,14 +359,14 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %Eq.type: type = facet_type <@Eq> [template] -// CHECK:STDOUT: %Equal.type.1: type = fn_type @Equal.1 [template] +// CHECK:STDOUT: %Equal.type.91b: type = fn_type @Equal.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Equal.decl, @impl.1.%NotEqual.decl) [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %Equal.type.2: type = fn_type @Equal.2 [template] -// CHECK:STDOUT: %Equal.2: %Equal.type.2 = struct_value () [template] -// CHECK:STDOUT: %NotEqual.type.2: type = fn_type @NotEqual.2 [template] -// CHECK:STDOUT: %NotEqual.2: %NotEqual.type.2 = struct_value () [template] +// CHECK:STDOUT: %Equal.type.e09: type = fn_type @Equal.2 [template] +// CHECK:STDOUT: %Equal.960: %Equal.type.e09 = struct_value () [template] +// CHECK:STDOUT: %NotEqual.type.3bf: type = fn_type @NotEqual.2 [template] +// CHECK:STDOUT: %NotEqual.ba6: %NotEqual.type.3bf = struct_value () [template] // CHECK:STDOUT: %TestRhsBad.type: type = fn_type @TestRhsBad [template] // CHECK:STDOUT: %TestRhsBad: %TestRhsBad.type = struct_value () [template] // CHECK:STDOUT: %TestLhsBad.type: type = fn_type @TestLhsBad [template] @@ -375,13 +375,13 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Eq = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.7 -// CHECK:STDOUT: .ImplicitAs = %import_ref.27 +// CHECK:STDOUT: .Eq = %import_ref.32e +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, Eq, loaded [template = constants.%Eq.type] +// CHECK:STDOUT: %import_ref.32e: type = import_ref Core//prelude/operators/comparison, Eq, loaded [template = constants.%Eq.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -398,7 +398,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, imports.%import_ref.1 [template = constants.%Eq.type] +// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, imports.%import_ref.32e [template = constants.%Eq.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Equal.decl, @impl.1.%NotEqual.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestRhsBad.decl: %TestRhsBad.type = fn_decl @TestRhsBad [template = constants.%TestRhsBad] { @@ -444,7 +444,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Eq.ref { -// CHECK:STDOUT: %Equal.decl: %Equal.type.2 = fn_decl @Equal.2 [template = constants.%Equal.2] { +// CHECK:STDOUT: %Equal.decl: %Equal.type.e09 = fn_decl @Equal.2 [template = constants.%Equal.960] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -464,7 +464,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.2 = fn_decl @NotEqual.2 [template = constants.%NotEqual.2] { +// CHECK:STDOUT: %NotEqual.decl: %NotEqual.type.3bf = fn_decl @NotEqual.2 [template = constants.%NotEqual.ba6] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -515,7 +515,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %D = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Equal.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Equal.2] +// CHECK:STDOUT: %impl.elem0: %Equal.type.91b = impl_witness_access constants.%impl_witness, element0 [template = constants.%Equal.960] // CHECK:STDOUT: %Equal.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc23_15: %C = converted %b.ref, [template = ] // CHECK:STDOUT: %Equal.call: init bool = call %Equal.bound(%a.ref, ) diff --git a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon index 529c1053474b..8aa0f7853a60 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -48,16 +48,16 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.4c0: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.9de: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.d99: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.a92: %Op.type.d99 = struct_value () [template] // CHECK:STDOUT: %AddAssign.type: type = facet_type <@AddAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.374: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.b09: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.e24: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.f0f: %Op.type.e24 = struct_value () [template] // CHECK:STDOUT: %TestIncNonRef.type: type = fn_type @TestIncNonRef [template] // CHECK:STDOUT: %TestIncNonRef: %TestIncNonRef.type = struct_value () [template] // CHECK:STDOUT: %TestAddAssignNonRef.type: type = fn_type @TestAddAssignNonRef [template] @@ -66,13 +66,13 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Inc = %import_ref.1 -// CHECK:STDOUT: .AddAssign = %import_ref.5 +// CHECK:STDOUT: .Inc = %import_ref.ce2 +// CHECK:STDOUT: .AddAssign = %import_ref.48d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [template = constants.%Inc.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.ce2: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [template = constants.%Inc.type] +// CHECK:STDOUT: %import_ref.48d: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -87,15 +87,15 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%import_ref.1 [template = constants.%Inc.type] +// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%import_ref.ce2 [template = constants.%Inc.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.9de] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.5 [template = constants.%AddAssign.type] +// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.48d [template = constants.%AddAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc18: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.b09] // CHECK:STDOUT: %TestIncNonRef.decl: %TestIncNonRef.type = fn_decl @TestIncNonRef [template = constants.%TestIncNonRef] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -120,17 +120,17 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Inc.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.d99 = fn_decl @Op.2 [template = constants.%Op.a92] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc16_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc16_21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc16_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.2 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -139,19 +139,19 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %AddAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.e24 = fn_decl @Op.4 [template = constants.%Op.f0f] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc19_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc19_21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc19_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc19_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.2 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc19_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -170,14 +170,14 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.2](); +// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.2](%other.param_patt: %C); +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C); // CHECK:STDOUT: // CHECK:STDOUT: fn @TestIncNonRef(%a.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.4c0 = impl_witness_access constants.%impl_witness.9de, element0 [template = constants.%Op.a92] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound() // CHECK:STDOUT: return @@ -187,7 +187,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.374 = impl_witness_access constants.%impl_witness.b09, element0 [template = constants.%Op.f0f] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(, %b.ref) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/operators/overloaded/fail_error_recovery.carbon b/toolchain/check/testdata/operators/overloaded/fail_error_recovery.carbon index d169bdd8047a..cbdbf29ff459 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_error_recovery.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_error_recovery.carbon @@ -32,20 +32,20 @@ fn G(n: i32) { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.88c: type = fn_type @Op.1 [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %impl_witness.23: = impl_witness (imports.%import_ref.98), @impl.13(%int_32) [template] -// CHECK:STDOUT: %Op.type.14: type = fn_type @Op.2, @impl.13(%int_32) [template] -// CHECK:STDOUT: %Op.14: %Op.type.14 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.a03: = impl_witness (imports.%import_ref.c16), @impl.13(%int_32) [template] +// CHECK:STDOUT: %Op.type.16e: type = fn_type @Op.2, @impl.13(%int_32) [template] +// CHECK:STDOUT: %Op.ceb: %Op.type.16e = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Add = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.6 +// CHECK:STDOUT: .Add = %import_ref.4b5 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,7 +76,7 @@ fn G(n: i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %undeclared.ref: = name_ref undeclared, [template = ] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access , element0 [template = ] +// CHECK:STDOUT: %impl.elem0: %Op.type.88c = impl_witness_access , element0 [template = ] // CHECK:STDOUT: %Op.bound: = bound_method %undeclared.ref, %impl.elem0 [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -85,7 +85,7 @@ fn G(n: i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %undeclared.ref: = name_ref undeclared, [template = ] -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.23, element0 [template = constants.%Op.14] +// CHECK:STDOUT: %impl.elem0: %Op.type.88c = impl_witness_access constants.%impl_witness.a03, element0 [template = constants.%Op.ceb] // CHECK:STDOUT: %Op.bound: = bound_method %n.ref, %impl.elem0 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index 482830033435..5daaf4febb72 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -58,10 +58,10 @@ fn TestRef(b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Negate = %import_ref.1 -// CHECK:STDOUT: .Add = %import_ref.39 -// CHECK:STDOUT: .AddAssign = %import_ref.41 -// CHECK:STDOUT: .Inc = %import_ref.46 +// CHECK:STDOUT: .Negate = %import_ref.a96 +// CHECK:STDOUT: .Add = %import_ref.4b5 +// CHECK:STDOUT: .AddAssign = %import_ref.48d +// CHECK:STDOUT: .Inc = %import_ref.ce2 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon index 3225ceee44bb..bf54adb52633 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl_for_arg.carbon @@ -57,16 +57,16 @@ fn TestAssign(b: D) { // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.88c: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.603: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.6dd: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.ec5: %Op.type.6dd = struct_value () [template] // CHECK:STDOUT: %AddAssign.type: type = facet_type <@AddAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.374: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.b09: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.e24: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.f0f: %Op.type.e24 = struct_value () [template] // CHECK:STDOUT: %Test.type: type = fn_type @Test [template] // CHECK:STDOUT: %Test: %Test.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -76,14 +76,14 @@ fn TestAssign(b: D) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Add = %import_ref.1 -// CHECK:STDOUT: .AddAssign = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.43 +// CHECK:STDOUT: .Add = %import_ref.4b5 +// CHECK:STDOUT: .AddAssign = %import_ref.48d +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Add, loaded [template = constants.%Add.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] +// CHECK:STDOUT: %import_ref.4b5: type = import_ref Core//prelude/operators/arithmetic, Add, loaded [template = constants.%Add.type] +// CHECK:STDOUT: %import_ref.48d: type = import_ref Core//prelude/operators/arithmetic, AddAssign, loaded [template = constants.%AddAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -100,15 +100,15 @@ fn TestAssign(b: D) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.1 [template = constants.%Add.type] +// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%import_ref.4b5 [template = constants.%Add.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.603] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.5 [template = constants.%AddAssign.type] +// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, imports.%import_ref.48d [template = constants.%AddAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.b09] // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -138,7 +138,7 @@ fn TestAssign(b: D) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Add.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.6dd = fn_decl @Op.2 [template = constants.%Op.ec5] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -163,19 +163,19 @@ fn TestAssign(b: D) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %AddAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.e24 = fn_decl @Op.4 [template = constants.%Op.f0f] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc20_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc20_21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc20_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc20_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.2 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc20_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -204,13 +204,13 @@ fn TestAssign(b: D) { // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %C; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.2](%other.param_patt: %C); +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C); // CHECK:STDOUT: // CHECK:STDOUT: fn @Test(%a.param_patt: %C, %b.param_patt: %D) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %D = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.88c = impl_witness_access constants.%impl_witness.603, element0 [template = constants.%Op.ec5] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc23: ref %C = splice_block %return {} // CHECK:STDOUT: %.loc34: %C = converted %b.ref, [template = ] @@ -228,9 +228,9 @@ fn TestAssign(b: D) { // CHECK:STDOUT: assign %a.var, %.loc38_16 // CHECK:STDOUT: %a.ref: ref %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %D = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.374 = impl_witness_access constants.%impl_witness.b09, element0 [template = constants.%Op.f0f] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %a.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %a.ref // CHECK:STDOUT: %.loc48: %C = converted %b.ref, [template = ] // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, ) // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index b3c9cc684662..e718085cadf6 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -39,22 +39,22 @@ fn Test() { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %i32.builtin [template] +// CHECK:STDOUT: %complete_type.f8a: = complete_type_witness %i32.builtin [template] // CHECK:STDOUT: %X.elem: type = unbound_element_type %X, %i32 [template] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.n [template] -// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.1 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%X)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%X) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2 [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] +// CHECK:STDOUT: %complete_type.9b7: = complete_type_witness %struct_type.n [template] +// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [template] +// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.type.e31: type = facet_type <@ImplicitAs, @ImplicitAs(%X)> [template] +// CHECK:STDOUT: %Convert.type.c7d: type = fn_type @Convert.1, @ImplicitAs(%X) [template] +// CHECK:STDOUT: %impl_witness.766: = impl_witness (@impl.1.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.4fa: type = fn_type @Convert.2 [template] +// CHECK:STDOUT: %Convert.7cd: %Convert.type.4fa = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.type.912: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.8f0: = impl_witness (@impl.2.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.02e: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.7a7: %Convert.type.02e = struct_value () [template] // CHECK:STDOUT: %Sink_i32.type: type = fn_type @Sink_i32 [template] // CHECK:STDOUT: %Sink_i32: %Sink_i32.type = struct_value () [template] // CHECK:STDOUT: %Sink_X.type: type = fn_type @Sink_X [template] @@ -63,22 +63,22 @@ fn Test() { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Source.type: type = fn_type @Source [template] // CHECK:STDOUT: %Source: %Source.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %T [symbolic] -// CHECK:STDOUT: %Source.specific_fn.1: = specific_function %Source, @Source(%T) [symbolic] +// CHECK:STDOUT: %require_complete.db1: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Source.specific_fn.7e6: = specific_function %Source, @Source(%T) [symbolic] // CHECK:STDOUT: %Test.type: type = fn_type @Test [template] // CHECK:STDOUT: %Test: %Test.type = struct_value () [template] -// CHECK:STDOUT: %Source.specific_fn.2: = specific_function %Source, @Source(%X) [template] -// CHECK:STDOUT: %Source.specific_fn.3: = specific_function %Source, @Source(%i32) [template] +// CHECK:STDOUT: %Source.specific_fn.8f0: = specific_function %Source, @Source(%X) [template] +// CHECK:STDOUT: %Source.specific_fn.76e: = specific_function %Source, @Source(%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %ImplicitAs.type.1 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %import_ref.a69: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -96,20 +96,20 @@ fn Test() { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.5 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.a69 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%X)> [template = constants.%ImplicitAs.type.3] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%X)> [template = constants.%ImplicitAs.type.e31] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Convert.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.1.%Convert.decl) [template = constants.%impl_witness.766] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.5 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.a69 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32)> [template = constants.%ImplicitAs.type.912] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc19: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.8f0] // CHECK:STDOUT: %Sink_i32.decl: %Sink_i32.type = fn_decl @Sink_i32 [template = constants.%Sink_i32] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 @@ -145,7 +145,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %i32 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.3 = fn_decl @Convert.2 [template = constants.%Convert.3] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.4fa = fn_decl @Convert.2 [template = constants.%Convert.7cd] { // CHECK:STDOUT: %self.patt: %i32 = binding_pattern self // CHECK:STDOUT: %self.param_patt: %i32 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %X = return_slot_pattern @@ -168,7 +168,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %X.ref as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.5 = fn_decl @Convert.3 [template = constants.%Convert.5] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.02e = fn_decl @Convert.3 [template = constants.%Convert.7a7] { // CHECK:STDOUT: %self.patt: %X = binding_pattern self // CHECK:STDOUT: %self.param_patt: %X = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -190,7 +190,7 @@ fn Test() { // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: %.loc12: %X.elem = field_decl n, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.9b7] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X @@ -227,14 +227,14 @@ fn Test() { // CHECK:STDOUT: %T.patt.loc27_11.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc27_11.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type @Source.%T.loc27_11.2 (%T) [symbolic = %require_complete (constants.%require_complete.2)] -// CHECK:STDOUT: %Source.specific_fn.loc27_35.2: = specific_function constants.%Source, @Source(%T.loc27_11.2) [symbolic = %Source.specific_fn.loc27_35.2 (constants.%Source.specific_fn.1)] +// CHECK:STDOUT: %require_complete: = require_complete_type @Source.%T.loc27_11.2 (%T) [symbolic = %require_complete (constants.%require_complete.db1)] +// CHECK:STDOUT: %Source.specific_fn.loc27_35.2: = specific_function constants.%Source, @Source(%T.loc27_11.2) [symbolic = %Source.specific_fn.loc27_35.2 (constants.%Source.specific_fn.7e6)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%T.param_patt: type) -> @Source.%T.loc27_11.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Source.ref: %Source.type = name_ref Source, file.%Source.decl [template = constants.%Source] // CHECK:STDOUT: %T.ref.loc27_42: type = name_ref T, %T.loc27_11.1 [symbolic = %T.loc27_11.2 (constants.%T)] -// CHECK:STDOUT: %Source.specific_fn.loc27_35.1: = specific_function %Source.ref, @Source(constants.%T) [symbolic = %Source.specific_fn.loc27_35.2 (constants.%Source.specific_fn.1)] +// CHECK:STDOUT: %Source.specific_fn.loc27_35.1: = specific_function %Source.ref, @Source(constants.%T) [symbolic = %Source.specific_fn.loc27_35.2 (constants.%Source.specific_fn.7e6)] // CHECK:STDOUT: %Source.call: init @Source.%T.loc27_11.2 (%T) = call %Source.specific_fn.loc27_35.1() // CHECK:STDOUT: %.loc27_44.1: @Source.%T.loc27_11.2 (%T) = value_of_initializer %Source.call // CHECK:STDOUT: %.loc27_44.2: @Source.%T.loc27_11.2 (%T) = converted %Source.call, %.loc27_44.1 @@ -247,10 +247,10 @@ fn Test() { // CHECK:STDOUT: %Sink_i32.ref: %Sink_i32.type = name_ref Sink_i32, file.%Sink_i32.decl [template = constants.%Sink_i32] // CHECK:STDOUT: %Source.ref.loc30: %Source.type = name_ref Source, file.%Source.decl [template = constants.%Source] // CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X] -// CHECK:STDOUT: %Source.specific_fn.loc30: = specific_function %Source.ref.loc30, @Source(constants.%X) [template = constants.%Source.specific_fn.2] +// CHECK:STDOUT: %Source.specific_fn.loc30: = specific_function %Source.ref.loc30, @Source(constants.%X) [template = constants.%Source.specific_fn.8f0] // CHECK:STDOUT: %.loc30_20.1: ref %X = temporary_storage // CHECK:STDOUT: %Source.call.loc30: init %X = call %Source.specific_fn.loc30() to %.loc30_20.1 -// CHECK:STDOUT: %impl.elem0.loc30: %Convert.type.4 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Convert.5] +// CHECK:STDOUT: %impl.elem0.loc30: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.8f0, element0 [template = constants.%Convert.7a7] // CHECK:STDOUT: %Convert.bound.loc30: = bound_method %Source.call.loc30, %impl.elem0.loc30 // CHECK:STDOUT: %.loc30_20.2: ref %X = temporary %.loc30_20.1, %Source.call.loc30 // CHECK:STDOUT: %.loc30_20.3: %X = bind_value %.loc30_20.2 @@ -262,9 +262,9 @@ fn Test() { // CHECK:STDOUT: %Source.ref.loc31: %Source.type = name_ref Source, file.%Source.decl [template = constants.%Source] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Source.specific_fn.loc31: = specific_function %Source.ref.loc31, @Source(constants.%i32) [template = constants.%Source.specific_fn.3] +// CHECK:STDOUT: %Source.specific_fn.loc31: = specific_function %Source.ref.loc31, @Source(constants.%i32) [template = constants.%Source.specific_fn.76e] // CHECK:STDOUT: %Source.call.loc31: init %i32 = call %Source.specific_fn.loc31() -// CHECK:STDOUT: %impl.elem0.loc31: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] +// CHECK:STDOUT: %impl.elem0.loc31: %Convert.type.c7d = impl_witness_access constants.%impl_witness.766, element0 [template = constants.%Convert.7cd] // CHECK:STDOUT: %Convert.bound.loc31: = bound_method %Source.call.loc31, %impl.elem0.loc31 // CHECK:STDOUT: %.loc31_20.1: ref %X = temporary_storage // CHECK:STDOUT: %.loc31_20.2: %i32 = value_of_initializer %Source.call.loc31 @@ -282,8 +282,8 @@ fn Test() { // CHECK:STDOUT: %T.patt.loc27_11.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%require_complete.2 -// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.1 +// CHECK:STDOUT: %require_complete => constants.%require_complete.db1 +// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.7e6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Source(%T.loc27_11.2) {} @@ -293,8 +293,8 @@ fn Test() { // CHECK:STDOUT: %T.patt.loc27_11.2 => constants.%X // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.3 -// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.2 +// CHECK:STDOUT: %require_complete => constants.%complete_type.9b7 +// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.8f0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Source(constants.%i32) { @@ -302,7 +302,7 @@ fn Test() { // CHECK:STDOUT: %T.patt.loc27_11.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete => constants.%complete_type.2 -// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.3 +// CHECK:STDOUT: %require_complete => constants.%complete_type.f8a +// CHECK:STDOUT: %Source.specific_fn.loc27_35.2 => constants.%Source.specific_fn.76e // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index 320ab4ecac44..84df4c9a26bd 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -31,11 +31,11 @@ fn TestOp() { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Inc.type: type = facet_type <@Inc> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.4c0: type = fn_type @Op.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.d99: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.a92: %Op.type.d99 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] @@ -43,11 +43,11 @@ fn TestOp() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Inc = %import_ref.1 +// CHECK:STDOUT: .Inc = %import_ref.ce2 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [template = constants.%Inc.type] +// CHECK:STDOUT: %import_ref.ce2: type = import_ref Core//prelude/operators/arithmetic, Inc, loaded [template = constants.%Inc.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -61,24 +61,24 @@ fn TestOp() { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%import_ref.1 [template = constants.%Inc.type] +// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, imports.%import_ref.ce2 [template = constants.%Inc.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Inc.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { -// CHECK:STDOUT: %self.patt: %ptr.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.d99 = fn_decl @Op.2 [template = constants.%Op.a92] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc18_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc18_21: type = splice_block %ptr [template = constants.%ptr.2] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc18_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.2 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -94,7 +94,7 @@ fn TestOp() { // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.2](); +// CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); // CHECK:STDOUT: // CHECK:STDOUT: fn @TestOp() { // CHECK:STDOUT: !entry: @@ -105,9 +105,9 @@ fn TestOp() { // CHECK:STDOUT: %.loc22_16: init %C = converted %.loc22_15.1, %.loc22_15.2 [template = constants.%C.val] // CHECK:STDOUT: assign %c.var, %.loc22_16 // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.4c0 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.a92] // CHECK:STDOUT: %Op.bound: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.2 = addr_of %c.ref +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %c.ref // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 9b5a370bc6d7..39b87ef684e0 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -82,27 +82,27 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %ElementType.1: type = class_type @ElementType [template] -// CHECK:STDOUT: %SubscriptType.1: type = class_type @SubscriptType [template] -// CHECK:STDOUT: %IndexWith.type.1: type = generic_interface_type @IndexWith [template] -// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.1 = struct_value () [template] -// CHECK:STDOUT: %IndexWith.type.3: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.1, %ElementType.1)> [template] -// CHECK:STDOUT: %At.type.2: type = fn_type @At.1, @IndexWith(%SubscriptType.1, %ElementType.1) [template] +// CHECK:STDOUT: %ElementType.e6b: type = class_type @ElementType [template] +// CHECK:STDOUT: %SubscriptType.8ee: type = class_type @SubscriptType [template] +// CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [template] +// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [template] +// CHECK:STDOUT: %IndexWith.type.2d3: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.8ee, %ElementType.e6b)> [template] +// CHECK:STDOUT: %At.type.38e: type = fn_type @At.1, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template] -// CHECK:STDOUT: %At.type.3: type = fn_type @At.2 [template] -// CHECK:STDOUT: %At.3: %At.type.3 = struct_value () [template] -// CHECK:STDOUT: %ElementType.val: %ElementType.1 = struct_value () [template] -// CHECK:STDOUT: %SubscriptType.val: %SubscriptType.1 = struct_value () [template] +// CHECK:STDOUT: %At.type.afe: type = fn_type @At.2 [template] +// CHECK:STDOUT: %At.9bf: %At.type.afe = struct_value () [template] +// CHECK:STDOUT: %ElementType.val: %ElementType.e6b = struct_value () [template] +// CHECK:STDOUT: %SubscriptType.val: %SubscriptType.8ee = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IndexWith = %import_ref.1 +// CHECK:STDOUT: .IndexWith = %import_ref.76d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IndexWith.type.1 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %import_ref.76d: %IndexWith.type.504 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -117,37 +117,37 @@ let x: i32 = c[0]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [template = constants.%ElementType.1] {} {} -// CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [template = constants.%SubscriptType.1] {} {} +// CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [template = constants.%ElementType.e6b] {} {} +// CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [template = constants.%SubscriptType.8ee] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.1 = name_ref IndexWith, imports.%import_ref.1 [template = constants.%IndexWith.generic] -// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.1] -// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.1] -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.1, constants.%ElementType.1)> [template = constants.%IndexWith.type.3] +// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%import_ref.76d [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.8ee] +// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.e6b] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.8ee, constants.%ElementType.e6b)> [template = constants.%IndexWith.type.2d3] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.3 = fn_decl @At.2 [template = constants.%At.3] { +// CHECK:STDOUT: %At.decl: %At.type.afe = fn_decl @At.2 [template = constants.%At.9bf] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %subscript.patt: %SubscriptType.1 = binding_pattern subscript -// CHECK:STDOUT: %subscript.param_patt: %SubscriptType.1 = value_param_pattern %subscript.patt, runtime_param1 -// CHECK:STDOUT: %return.patt: %ElementType.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ElementType.1 = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %subscript.patt: %SubscriptType.8ee = binding_pattern subscript +// CHECK:STDOUT: %subscript.param_patt: %SubscriptType.8ee = value_param_pattern %subscript.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %ElementType.e6b = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ElementType.e6b = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.1] +// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.e6b] // CHECK:STDOUT: %self.param: %C = value_param runtime_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%C.ref [template = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param -// CHECK:STDOUT: %subscript.param: %SubscriptType.1 = value_param runtime_param1 -// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.1] -// CHECK:STDOUT: %subscript: %SubscriptType.1 = bind_name subscript, %subscript.param -// CHECK:STDOUT: %return.param: ref %ElementType.1 = out_param runtime_param2 -// CHECK:STDOUT: %return: ref %ElementType.1 = return_slot %return.param +// CHECK:STDOUT: %subscript.param: %SubscriptType.8ee = value_param runtime_param1 +// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.8ee] +// CHECK:STDOUT: %subscript: %SubscriptType.8ee = bind_name subscript, %subscript.param +// CHECK:STDOUT: %return.param: ref %ElementType.e6b = out_param runtime_param2 +// CHECK:STDOUT: %return: ref %ElementType.e6b = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -167,7 +167,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%ElementType.1 +// CHECK:STDOUT: .Self = constants.%ElementType.e6b // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -175,27 +175,27 @@ let x: i32 = c[0]; // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%SubscriptType.1 +// CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.1) -> %return.param_patt: %ElementType.1 { +// CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.8ee) -> %return.param_patt: %ElementType.e6b { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_13.2: init %ElementType.1 = class_init (), %return [template = constants.%ElementType.val] -// CHECK:STDOUT: %.loc10_14: init %ElementType.1 = converted %.loc10_13.1, %.loc10_13.2 [template = constants.%ElementType.val] +// CHECK:STDOUT: %.loc10_13.2: init %ElementType.e6b = class_init (), %return [template = constants.%ElementType.val] +// CHECK:STDOUT: %.loc10_14: init %ElementType.e6b = converted %.loc10_13.1, %.loc10_13.2 [template = constants.%ElementType.val] // CHECK:STDOUT: return %.loc10_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc14_25.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc14_25.2: ref %SubscriptType.1 = temporary_storage -// CHECK:STDOUT: %.loc14_25.3: init %SubscriptType.1 = class_init (), %.loc14_25.2 [template = constants.%SubscriptType.val] -// CHECK:STDOUT: %.loc14_25.4: ref %SubscriptType.1 = temporary %.loc14_25.2, %.loc14_25.3 -// CHECK:STDOUT: %.loc14_26.1: ref %SubscriptType.1 = converted %.loc14_25.1, %.loc14_25.4 -// CHECK:STDOUT: %.loc14_26.2: %SubscriptType.1 = bind_value %.loc14_26.1 -// CHECK:STDOUT: %s: %SubscriptType.1 = bind_name s, %.loc14_26.2 +// CHECK:STDOUT: %.loc14_25.2: ref %SubscriptType.8ee = temporary_storage +// CHECK:STDOUT: %.loc14_25.3: init %SubscriptType.8ee = class_init (), %.loc14_25.2 [template = constants.%SubscriptType.val] +// CHECK:STDOUT: %.loc14_25.4: ref %SubscriptType.8ee = temporary %.loc14_25.2, %.loc14_25.3 +// CHECK:STDOUT: %.loc14_26.1: ref %SubscriptType.8ee = converted %.loc14_25.1, %.loc14_25.4 +// CHECK:STDOUT: %.loc14_26.2: %SubscriptType.8ee = bind_value %.loc14_26.1 +// CHECK:STDOUT: %s: %SubscriptType.8ee = bind_name s, %.loc14_26.2 // CHECK:STDOUT: %.loc15_13.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc15_13.2: ref %C = temporary_storage // CHECK:STDOUT: %.loc15_13.3: init %C = class_init (), %.loc15_13.2 [template = constants.%C.val] @@ -204,14 +204,14 @@ let x: i32 = c[0]; // CHECK:STDOUT: %.loc15_14.2: %C = bind_value %.loc15_14.1 // CHECK:STDOUT: %c: %C = bind_name c, %.loc15_14.2 // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %s.ref: %SubscriptType.1 = name_ref s, %s -// CHECK:STDOUT: %impl.elem0: %At.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.3] +// CHECK:STDOUT: %s.ref: %SubscriptType.8ee = name_ref s, %s +// CHECK:STDOUT: %impl.elem0: %At.type.38e = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.9bf] // CHECK:STDOUT: %At.bound: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %.loc16_25.1: ref %ElementType.1 = temporary_storage -// CHECK:STDOUT: %At.call: init %ElementType.1 = call %At.bound(%c.ref, %s.ref) to %.loc16_25.1 -// CHECK:STDOUT: %.loc16_25.2: ref %ElementType.1 = temporary %.loc16_25.1, %At.call -// CHECK:STDOUT: %.loc16_25.3: %ElementType.1 = bind_value %.loc16_25.2 -// CHECK:STDOUT: %x: %ElementType.1 = bind_name x, %.loc16_25.3 +// CHECK:STDOUT: %.loc16_25.1: ref %ElementType.e6b = temporary_storage +// CHECK:STDOUT: %At.call: init %ElementType.e6b = call %At.bound(%c.ref, %s.ref) to %.loc16_25.1 +// CHECK:STDOUT: %.loc16_25.2: ref %ElementType.e6b = temporary %.loc16_25.1, %At.call +// CHECK:STDOUT: %.loc16_25.3: %ElementType.e6b = bind_value %.loc16_25.2 +// CHECK:STDOUT: %x: %ElementType.e6b = bind_name x, %.loc16_25.3 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -220,44 +220,44 @@ let x: i32 = c[0]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %IndexWith.type.1: type = generic_interface_type @IndexWith [template] -// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.1 = struct_value () [template] -// CHECK:STDOUT: %IndexWith.type.3: type = facet_type <@IndexWith, @IndexWith(%i32, %i32)> [template] -// CHECK:STDOUT: %At.type.2: type = fn_type @At.1, @IndexWith(%i32, %i32) [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%At.decl) [template] -// CHECK:STDOUT: %At.type.3: type = fn_type @At.2 [template] -// CHECK:STDOUT: %At.3: %At.type.3 = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.20: = impl_witness (imports.%import_ref.19), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_5.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2, %int_5.2) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [template] +// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [template] +// CHECK:STDOUT: %IndexWith.type.d22: type = facet_type <@IndexWith, @IndexWith(%i32, %i32)> [template] +// CHECK:STDOUT: %At.type.740: type = fn_type @At.1, @IndexWith(%i32, %i32) [template] +// CHECK:STDOUT: %impl_witness.d5f: = impl_witness (@impl.1.%At.decl) [template] +// CHECK:STDOUT: %At.type.37e: type = fn_type @At.2 [template] +// CHECK:STDOUT: %At.065: %At.type.37e = struct_value () [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.b33: = bound_method %int_5.64b, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.89d: = specific_function %Convert.bound.b33, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_1.c60, %int_5.70b) [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .IndexWith = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.10 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .IndexWith = %import_ref.76d +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5: %IndexWith.type.1 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %import_ref.76d: %IndexWith.type.504 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -272,23 +272,23 @@ let x: i32 = c[0]; // CHECK:STDOUT: %i32.loc4_7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc4_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc4_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc4_15.1: %tuple.type.1 = tuple_literal (%i32.loc4_7, %i32.loc4_12) -// CHECK:STDOUT: %.loc4_15.2: type = converted %.loc4_15.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] +// CHECK:STDOUT: %.loc4_15.1: %tuple.type.24b = tuple_literal (%i32.loc4_7, %i32.loc4_12) +// CHECK:STDOUT: %.loc4_15.2: type = converted %.loc4_15.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.1 = name_ref IndexWith, imports.%import_ref.5 [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%import_ref.76d [template = constants.%IndexWith.generic] // CHECK:STDOUT: %int_32.loc4_35: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc4_35: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc4_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc4_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%i32, constants.%i32)> [template = constants.%IndexWith.type.3] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%i32, constants.%i32)> [template = constants.%IndexWith.type.d22] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%At.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%At.decl) [template = constants.%impl_witness.d5f] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %.loc4_15.2 as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.3 = fn_decl @At.2 [template = constants.%At.3] { -// CHECK:STDOUT: %self.patt: %tuple.type.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %tuple.type.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %At.decl: %At.type.37e = fn_decl @At.2 [template = constants.%At.065] { +// CHECK:STDOUT: %self.patt: %tuple.type.471 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %tuple.type.471 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %subscript.patt: %i32 = binding_pattern subscript // CHECK:STDOUT: %subscript.param_patt: %i32 = value_param_pattern %subscript.patt, runtime_param1 // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -296,9 +296,9 @@ let x: i32 = c[0]; // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc5_40: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc5_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %self.param: %tuple.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.1.%.loc4_15.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %self: %tuple.type.2 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %tuple.type.471 = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.1.%.loc4_15.2 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %self: %tuple.type.471 = bind_name self, %self.param // CHECK:STDOUT: %subscript.param: %i32 = value_param runtime_param1 // CHECK:STDOUT: %.loc5: type = splice_block %i32.loc5_32 [template = constants.%i32] { // CHECK:STDOUT: %int_32.loc5_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] @@ -314,43 +314,43 @@ let x: i32 = c[0]; // CHECK:STDOUT: witness = file.%impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.2[%self.param_patt: %tuple.type.2](%subscript.param_patt: %i32) -> %i32 { +// CHECK:STDOUT: fn @At.2[%self.param_patt: %tuple.type.471](%subscript.param_patt: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %tuple.type.2 = name_ref self, %self -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %self.ref: %tuple.type.471 = name_ref self, %self +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %tuple.elem0: %i32 = tuple_access %self.ref, element0 // CHECK:STDOUT: return %tuple.elem0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %.loc10_26.1: %tuple.type.3 = tuple_literal (%int_1, %int_5) -// CHECK:STDOUT: %impl.elem0.loc10_26.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.20, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc10_26.1: = bound_method %int_1, %impl.elem0.loc10_26.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc10_26.1: = specific_function %Convert.bound.loc10_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc10_26.1: init %i32 = call %Convert.specific_fn.loc10_26.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc10_26.2: %i32 = value_of_initializer %int.convert_checked.loc10_26.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc10_26.3: %i32 = converted %int_1, %.loc10_26.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc10_26.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.20, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc10_26.2: = bound_method %int_5, %impl.elem0.loc10_26.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc10_26.2: = specific_function %Convert.bound.loc10_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc10_26.2: init %i32 = call %Convert.specific_fn.loc10_26.2(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc10_26.4: %i32 = value_of_initializer %int.convert_checked.loc10_26.2 [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc10_26.5: %i32 = converted %int_5, %.loc10_26.4 [template = constants.%int_5.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc10_26.3, %.loc10_26.5) [template = constants.%tuple] -// CHECK:STDOUT: %.loc10_27: %tuple.type.2 = converted %.loc10_26.1, %tuple [template = constants.%tuple] -// CHECK:STDOUT: %s: %tuple.type.2 = bind_name s, %.loc10_27 -// CHECK:STDOUT: %s.ref: %tuple.type.2 = name_ref s, %s -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc11_17.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.20, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_0, %impl.elem0.loc11_17.1 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer %int.convert_checked.loc11 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_17.2: %i32 = converted %int_0, %.loc11_17.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %impl.elem0.loc11_17.2: %At.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%At.3] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %.loc10_26.1: %tuple.type.f94 = tuple_literal (%int_1, %int_5) +// CHECK:STDOUT: %impl.elem0.loc10_26.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc10_26.1: = bound_method %int_1, %impl.elem0.loc10_26.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc10_26.1: = specific_function %Convert.bound.loc10_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc10_26.1: init %i32 = call %Convert.specific_fn.loc10_26.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc10_26.2: %i32 = value_of_initializer %int.convert_checked.loc10_26.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc10_26.3: %i32 = converted %int_1, %.loc10_26.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc10_26.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc10_26.2: = bound_method %int_5, %impl.elem0.loc10_26.2 [template = constants.%Convert.bound.b33] +// CHECK:STDOUT: %Convert.specific_fn.loc10_26.2: = specific_function %Convert.bound.loc10_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.89d] +// CHECK:STDOUT: %int.convert_checked.loc10_26.2: init %i32 = call %Convert.specific_fn.loc10_26.2(%int_5) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc10_26.4: %i32 = value_of_initializer %int.convert_checked.loc10_26.2 [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc10_26.5: %i32 = converted %int_5, %.loc10_26.4 [template = constants.%int_5.70b] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%.loc10_26.3, %.loc10_26.5) [template = constants.%tuple] +// CHECK:STDOUT: %.loc10_27: %tuple.type.471 = converted %.loc10_26.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %s: %tuple.type.471 = bind_name s, %.loc10_27 +// CHECK:STDOUT: %s.ref: %tuple.type.471 = name_ref s, %s +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc11_17.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_0, %impl.elem0.loc11_17.1 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_17.1: %i32 = value_of_initializer %int.convert_checked.loc11 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_17.2: %i32 = converted %int_0, %.loc11_17.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %impl.elem0.loc11_17.2: %At.type.740 = impl_witness_access constants.%impl_witness.d5f, element0 [template = constants.%At.065] // CHECK:STDOUT: %At.bound: = bound_method %s.ref, %impl.elem0.loc11_17.2 // CHECK:STDOUT: %At.call: init %i32 = call %At.bound(%s.ref, %.loc11_17.2) // CHECK:STDOUT: %.loc11_18.1: %i32 = value_of_initializer %At.call @@ -365,28 +365,28 @@ let x: i32 = c[0]; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %ElementType.1: type = class_type @ElementType [template] -// CHECK:STDOUT: %SubscriptType.1: type = class_type @SubscriptType [template] -// CHECK:STDOUT: %IndexWith.type.1: type = generic_interface_type @IndexWith [template] -// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.1 = struct_value () [template] -// CHECK:STDOUT: %IndexWith.type.3: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.1, %ElementType.1)> [template] -// CHECK:STDOUT: %At.type.2: type = fn_type @At.1, @IndexWith(%SubscriptType.1, %ElementType.1) [template] +// CHECK:STDOUT: %ElementType.e6b: type = class_type @ElementType [template] +// CHECK:STDOUT: %SubscriptType.8ee: type = class_type @SubscriptType [template] +// CHECK:STDOUT: %IndexWith.type.504: type = generic_interface_type @IndexWith [template] +// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.504 = struct_value () [template] +// CHECK:STDOUT: %IndexWith.type.2d3: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.8ee, %ElementType.e6b)> [template] +// CHECK:STDOUT: %At.type.38e: type = fn_type @At.1, @IndexWith(%SubscriptType.8ee, %ElementType.e6b) [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template] -// CHECK:STDOUT: %At.type.3: type = fn_type @At.2 [template] -// CHECK:STDOUT: %At.3: %At.type.3 = struct_value () [template] -// CHECK:STDOUT: %ElementType.val: %ElementType.1 = struct_value () [template] +// CHECK:STDOUT: %At.type.afe: type = fn_type @At.2 [template] +// CHECK:STDOUT: %At.9bf: %At.type.afe = struct_value () [template] +// CHECK:STDOUT: %ElementType.val: %ElementType.e6b = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IndexWith = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .IndexWith = %import_ref.76d +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %IndexWith.type.1 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %import_ref.76d: %IndexWith.type.504 = import_ref Core//prelude/operators/index, IndexWith, loaded [template = constants.%IndexWith.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -400,37 +400,37 @@ let x: i32 = c[0]; // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} -// CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [template = constants.%ElementType.1] {} {} -// CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [template = constants.%SubscriptType.1] {} {} +// CHECK:STDOUT: %ElementType.decl: type = class_decl @ElementType [template = constants.%ElementType.e6b] {} {} +// CHECK:STDOUT: %SubscriptType.decl: type = class_decl @SubscriptType [template = constants.%SubscriptType.8ee] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.1 = name_ref IndexWith, imports.%import_ref.1 [template = constants.%IndexWith.generic] -// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.1] -// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.1] -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.1, constants.%ElementType.1)> [template = constants.%IndexWith.type.3] +// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.504 = name_ref IndexWith, imports.%import_ref.76d [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.8ee] +// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.e6b] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%SubscriptType.8ee, constants.%ElementType.e6b)> [template = constants.%IndexWith.type.2d3] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %C.ref as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.3 = fn_decl @At.2 [template = constants.%At.3] { +// CHECK:STDOUT: %At.decl: %At.type.afe = fn_decl @At.2 [template = constants.%At.9bf] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 -// CHECK:STDOUT: %subscript.patt: %SubscriptType.1 = binding_pattern subscript -// CHECK:STDOUT: %subscript.param_patt: %SubscriptType.1 = value_param_pattern %subscript.patt, runtime_param1 -// CHECK:STDOUT: %return.patt: %ElementType.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ElementType.1 = out_param_pattern %return.patt, runtime_param2 +// CHECK:STDOUT: %subscript.patt: %SubscriptType.8ee = binding_pattern subscript +// CHECK:STDOUT: %subscript.param_patt: %SubscriptType.8ee = value_param_pattern %subscript.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %ElementType.e6b = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ElementType.e6b = out_param_pattern %return.patt, runtime_param2 // CHECK:STDOUT: } { -// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.1] +// CHECK:STDOUT: %ElementType.ref: type = name_ref ElementType, file.%ElementType.decl [template = constants.%ElementType.e6b] // CHECK:STDOUT: %self.param: %C = value_param runtime_param0 // CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%C.ref [template = constants.%C] // CHECK:STDOUT: %self: %C = bind_name self, %self.param -// CHECK:STDOUT: %subscript.param: %SubscriptType.1 = value_param runtime_param1 -// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.1] -// CHECK:STDOUT: %subscript: %SubscriptType.1 = bind_name subscript, %subscript.param -// CHECK:STDOUT: %return.param: ref %ElementType.1 = out_param runtime_param2 -// CHECK:STDOUT: %return: ref %ElementType.1 = return_slot %return.param +// CHECK:STDOUT: %subscript.param: %SubscriptType.8ee = value_param runtime_param1 +// CHECK:STDOUT: %SubscriptType.ref: type = name_ref SubscriptType, file.%SubscriptType.decl [template = constants.%SubscriptType.8ee] +// CHECK:STDOUT: %subscript: %SubscriptType.8ee = bind_name subscript, %subscript.param +// CHECK:STDOUT: %return.param: ref %ElementType.e6b = out_param runtime_param2 +// CHECK:STDOUT: %return: ref %ElementType.e6b = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -450,7 +450,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%ElementType.1 +// CHECK:STDOUT: .Self = constants.%ElementType.e6b // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: @@ -458,15 +458,15 @@ let x: i32 = c[0]; // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%SubscriptType.1 +// CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.1) -> %return.param_patt: %ElementType.1 { +// CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.8ee) -> %return.param_patt: %ElementType.e6b { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %.loc10_13.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc10_13.2: init %ElementType.1 = class_init (), %return [template = constants.%ElementType.val] -// CHECK:STDOUT: %.loc10_14: init %ElementType.1 = converted %.loc10_13.1, %.loc10_13.2 [template = constants.%ElementType.val] +// CHECK:STDOUT: %.loc10_13.2: init %ElementType.e6b = class_init (), %return [template = constants.%ElementType.val] +// CHECK:STDOUT: %.loc10_14: init %ElementType.e6b = converted %.loc10_13.1, %.loc10_13.2 [template = constants.%ElementType.val] // CHECK:STDOUT: return %.loc10_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -481,14 +481,14 @@ let x: i32 = c[0]; // CHECK:STDOUT: %c: %C = bind_name c, %.loc14_14.2 // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %.loc22_25.1: %SubscriptType.1 = converted %int_0, [template = ] -// CHECK:STDOUT: %impl.elem0: %At.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.3] +// CHECK:STDOUT: %.loc22_25.1: %SubscriptType.8ee = converted %int_0, [template = ] +// CHECK:STDOUT: %impl.elem0: %At.type.38e = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.9bf] // CHECK:STDOUT: %At.bound: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %.loc22_25.2: ref %ElementType.1 = temporary_storage -// CHECK:STDOUT: %At.call: init %ElementType.1 = call %At.bound(%c.ref, ) to %.loc22_25.2 -// CHECK:STDOUT: %.loc22_25.3: ref %ElementType.1 = temporary %.loc22_25.2, %At.call -// CHECK:STDOUT: %.loc22_25.4: %ElementType.1 = bind_value %.loc22_25.3 -// CHECK:STDOUT: %x: %ElementType.1 = bind_name x, %.loc22_25.4 +// CHECK:STDOUT: %.loc22_25.2: ref %ElementType.e6b = temporary_storage +// CHECK:STDOUT: %At.call: init %ElementType.e6b = call %At.bound(%c.ref, ) to %.loc22_25.2 +// CHECK:STDOUT: %.loc22_25.3: ref %ElementType.e6b = temporary %.loc22_25.2, %At.call +// CHECK:STDOUT: %.loc22_25.4: %ElementType.e6b = bind_value %.loc22_25.3 +// CHECK:STDOUT: %x: %ElementType.e6b = bind_name x, %.loc22_25.4 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -497,7 +497,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] @@ -506,8 +506,8 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .IndexWith = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .IndexWith = %import_ref.76d // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -525,7 +525,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index 3d0b94af1380..6eb1a177c476 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %LeftShift.type: type = facet_type <@LeftShift> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.1d8: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.0fc: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.01c: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.55b: %Op.type.01c = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %LeftShiftAssign.type: type = facet_type <@LeftShiftAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.ff3: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.c55: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.816: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.a2e: %Op.type.816 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .LeftShift = %import_ref.1 -// CHECK:STDOUT: .LeftShiftAssign = %import_ref.5 +// CHECK:STDOUT: .LeftShift = %import_ref.f19 +// CHECK:STDOUT: .LeftShiftAssign = %import_ref.737 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, LeftShift, loaded [template = constants.%LeftShift.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, LeftShiftAssign, loaded [template = constants.%LeftShiftAssign.type] +// CHECK:STDOUT: %import_ref.f19: type = import_ref Core//prelude/operators/bitwise, LeftShift, loaded [template = constants.%LeftShift.type] +// CHECK:STDOUT: %import_ref.737: type = import_ref Core//prelude/operators/bitwise, LeftShiftAssign, loaded [template = constants.%LeftShiftAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %LeftShift.ref: type = name_ref LeftShift, imports.%import_ref.1 [template = constants.%LeftShift.type] +// CHECK:STDOUT: %LeftShift.ref: type = name_ref LeftShift, imports.%import_ref.f19 [template = constants.%LeftShift.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.0fc] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %LeftShiftAssign.ref: type = name_ref LeftShiftAssign, imports.%import_ref.5 [template = constants.%LeftShiftAssign.type] +// CHECK:STDOUT: %LeftShiftAssign.ref: type = name_ref LeftShiftAssign, imports.%import_ref.737 [template = constants.%LeftShiftAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.c55] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %LeftShift.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.01c = fn_decl @Op.2 [template = constants.%Op.55b] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %LeftShiftAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.816 = fn_decl @Op.4 [template = constants.%Op.a2e] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.1d8 = impl_witness_access constants.%impl_witness.0fc, element0 [template = constants.%Op.55b] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.ff3 = impl_witness_access constants.%impl_witness.c55, element0 [template = constants.%Op.a2e] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index 4c7f471051aa..5c9b1aeef765 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Mod.type: type = facet_type <@Mod> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.10b: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.d28: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.8d9: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.97c: %Op.type.8d9 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %ModAssign.type: type = facet_type <@ModAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.3ec: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.32b: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.f4b: %Op.type.e42 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Mod = %import_ref.1 -// CHECK:STDOUT: .ModAssign = %import_ref.5 +// CHECK:STDOUT: .Mod = %import_ref.169 +// CHECK:STDOUT: .ModAssign = %import_ref.c74 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Mod, loaded [template = constants.%Mod.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, ModAssign, loaded [template = constants.%ModAssign.type] +// CHECK:STDOUT: %import_ref.169: type = import_ref Core//prelude/operators/arithmetic, Mod, loaded [template = constants.%Mod.type] +// CHECK:STDOUT: %import_ref.c74: type = import_ref Core//prelude/operators/arithmetic, ModAssign, loaded [template = constants.%ModAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Mod.ref: type = name_ref Mod, imports.%import_ref.1 [template = constants.%Mod.type] +// CHECK:STDOUT: %Mod.ref: type = name_ref Mod, imports.%import_ref.169 [template = constants.%Mod.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.d28] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ModAssign.ref: type = name_ref ModAssign, imports.%import_ref.5 [template = constants.%ModAssign.type] +// CHECK:STDOUT: %ModAssign.ref: type = name_ref ModAssign, imports.%import_ref.c74 [template = constants.%ModAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.32b] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Mod.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.8d9 = fn_decl @Op.2 [template = constants.%Op.97c] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %ModAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.e42 = fn_decl @Op.4 [template = constants.%Op.f4b] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.10b = impl_witness_access constants.%impl_witness.d28, element0 [template = constants.%Op.97c] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.3ec = impl_witness_access constants.%impl_witness.32b, element0 [template = constants.%Op.f4b] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index 4c56da54c62a..82a89bb5bf38 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Mul.type: type = facet_type <@Mul> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.090: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.631: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.ee3: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.2c0: %Op.type.ee3 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %MulAssign.type: type = facet_type <@MulAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.398: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.9dd: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.b05: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.cba: %Op.type.b05 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Mul = %import_ref.1 -// CHECK:STDOUT: .MulAssign = %import_ref.5 +// CHECK:STDOUT: .Mul = %import_ref.103 +// CHECK:STDOUT: .MulAssign = %import_ref.fb2 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Mul, loaded [template = constants.%Mul.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, MulAssign, loaded [template = constants.%MulAssign.type] +// CHECK:STDOUT: %import_ref.103: type = import_ref Core//prelude/operators/arithmetic, Mul, loaded [template = constants.%Mul.type] +// CHECK:STDOUT: %import_ref.fb2: type = import_ref Core//prelude/operators/arithmetic, MulAssign, loaded [template = constants.%MulAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Mul.ref: type = name_ref Mul, imports.%import_ref.1 [template = constants.%Mul.type] +// CHECK:STDOUT: %Mul.ref: type = name_ref Mul, imports.%import_ref.103 [template = constants.%Mul.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.631] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %MulAssign.ref: type = name_ref MulAssign, imports.%import_ref.5 [template = constants.%MulAssign.type] +// CHECK:STDOUT: %MulAssign.ref: type = name_ref MulAssign, imports.%import_ref.fb2 [template = constants.%MulAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.9dd] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Mul.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.ee3 = fn_decl @Op.2 [template = constants.%Op.2c0] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %MulAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.b05 = fn_decl @Op.4 [template = constants.%Op.cba] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.090 = impl_witness_access constants.%impl_witness.631, element0 [template = constants.%Op.2c0] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.398 = impl_witness_access constants.%impl_witness.9dd, element0 [template = constants.%Op.cba] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index ce280557ee3c..3a3bf2352883 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -31,10 +31,10 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %Op.type.4d0: type = fn_type @Op.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.454: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.793: %Op.type.454 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] @@ -42,11 +42,11 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Negate = %import_ref.1 +// CHECK:STDOUT: .Negate = %import_ref.a96 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Negate, loaded [template = constants.%Negate.type] +// CHECK:STDOUT: %import_ref.a96: type = import_ref Core//prelude/operators/arithmetic, Negate, loaded [template = constants.%Negate.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,7 +60,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Negate.ref: type = name_ref Negate, imports.%import_ref.1 [template = constants.%Negate.type] +// CHECK:STDOUT: %Negate.ref: type = name_ref Negate, imports.%import_ref.a96 [template = constants.%Negate.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { @@ -79,7 +79,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Negate.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.454 = fn_decl @Op.2 [template = constants.%Op.793] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %C = return_slot_pattern @@ -117,7 +117,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: fn @TestOp(%a.param_patt: %C) -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.4d0 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.793] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc23: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref) to %.loc23 diff --git a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon index 694186312020..8f71aca8ad8a 100644 --- a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon @@ -117,29 +117,29 @@ fn F() { ()[()]; } // CHECK:STDOUT: constants { // CHECK:STDOUT: %SubscriptType: type = bind_symbolic_name SubscriptType, 0 [symbolic] // CHECK:STDOUT: %SubscriptType.patt: type = symbolic_binding_pattern SubscriptType, 0 [symbolic] -// CHECK:STDOUT: %IndexWith.type.1: type = generic_interface_type @IndexWith [template] +// CHECK:STDOUT: %IndexWith.type.232: type = generic_interface_type @IndexWith [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.1 = struct_value () [template] -// CHECK:STDOUT: %IndexWith.type.2: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic] -// CHECK:STDOUT: %Self: %IndexWith.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %IndexWith.generic: %IndexWith.type.232 = struct_value () [template] +// CHECK:STDOUT: %IndexWith.type.4f1: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic] +// CHECK:STDOUT: %Self: %IndexWith.type.4f1 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %At.type.1: type = fn_type @At.1, @IndexWith(%SubscriptType) [symbolic] -// CHECK:STDOUT: %At.1: %At.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %At.assoc_type.1: type = assoc_entity_type %IndexWith.type.2, %At.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %At.assoc_type.1 = assoc_entity element0, @IndexWith.%At.decl [symbolic] -// CHECK:STDOUT: %IndexWith.type.3: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type)> [template] -// CHECK:STDOUT: %At.type.2: type = fn_type @At.1, @IndexWith(%empty_tuple.type) [template] -// CHECK:STDOUT: %At.2: %At.type.2 = struct_value () [template] -// CHECK:STDOUT: %At.assoc_type.2: type = assoc_entity_type %IndexWith.type.3, %At.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %At.assoc_type.2 = assoc_entity element0, @IndexWith.%At.decl [template] +// CHECK:STDOUT: %At.type.ca2: type = fn_type @At.1, @IndexWith(%SubscriptType) [symbolic] +// CHECK:STDOUT: %At.5ab: %At.type.ca2 = struct_value () [symbolic] +// CHECK:STDOUT: %At.assoc_type.2b4: type = assoc_entity_type %IndexWith.type.4f1, %At.type.ca2 [symbolic] +// CHECK:STDOUT: %assoc0.d12: %At.assoc_type.2b4 = assoc_entity element0, @IndexWith.%At.decl [symbolic] +// CHECK:STDOUT: %IndexWith.type.63e: type = facet_type <@IndexWith, @IndexWith(%empty_tuple.type)> [template] +// CHECK:STDOUT: %At.type.87b: type = fn_type @At.1, @IndexWith(%empty_tuple.type) [template] +// CHECK:STDOUT: %At.d3b: %At.type.87b = struct_value () [template] +// CHECK:STDOUT: %At.assoc_type.837: type = assoc_entity_type %IndexWith.type.63e, %At.type.87b [template] +// CHECK:STDOUT: %assoc0.df5: %At.assoc_type.837 = assoc_entity element0, @IndexWith.%At.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template] -// CHECK:STDOUT: %At.type.3: type = fn_type @At.2 [template] -// CHECK:STDOUT: %At.3: %At.type.3 = struct_value () [template] -// CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.2 = facet_value %empty_tuple.type, %impl_witness [symbolic] +// CHECK:STDOUT: %At.type.304: type = fn_type @At.2 [template] +// CHECK:STDOUT: %At.4cb: %At.type.304 = struct_value () [template] +// CHECK:STDOUT: %IndexWith.facet: %IndexWith.type.4f1 = facet_value %empty_tuple.type, %impl_witness [symbolic] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %At.bound: = bound_method %empty_tuple, %At.3 [template] +// CHECK:STDOUT: %At.bound: = bound_method %empty_tuple, %At.4cb [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -150,7 +150,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %Core: = namespace [template] { // CHECK:STDOUT: .IndexWith = %IndexWith.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %IndexWith.decl: %IndexWith.type.1 = interface_decl @IndexWith [template = constants.%IndexWith.generic] { +// CHECK:STDOUT: %IndexWith.decl: %IndexWith.type.232 = interface_decl @IndexWith [template = constants.%IndexWith.generic] { // CHECK:STDOUT: %SubscriptType.patt.loc5_26.1: type = symbolic_binding_pattern SubscriptType, 0 [symbolic = %SubscriptType.patt.loc5_26.2 (constants.%SubscriptType.patt)] // CHECK:STDOUT: %SubscriptType.param_patt: type = value_param_pattern %SubscriptType.patt.loc5_26.1, runtime_param [symbolic = %SubscriptType.patt.loc5_26.2 (constants.%SubscriptType.patt)] // CHECK:STDOUT: } { @@ -161,10 +161,10 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc9_7.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_7.2: type = converted %.loc9_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] // CHECK:STDOUT: %Core.ref: = name_ref Core, file.%Core [template = file.%Core] -// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.1 = name_ref IndexWith, file.%IndexWith.decl [template = constants.%IndexWith.generic] +// CHECK:STDOUT: %IndexWith.ref: %IndexWith.type.232 = name_ref IndexWith, file.%IndexWith.decl [template = constants.%IndexWith.generic] // CHECK:STDOUT: %.loc9_28: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_29: type = converted %.loc9_28, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%empty_tuple.type)> [template = constants.%IndexWith.type.3] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(constants.%empty_tuple.type)> [template = constants.%IndexWith.type.63e] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%At.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {} @@ -175,16 +175,16 @@ fn F() { ()[()]; } // CHECK:STDOUT: %SubscriptType.patt.loc5_26.2: type = symbolic_binding_pattern SubscriptType, 0 [symbolic = %SubscriptType.patt.loc5_26.2 (constants.%SubscriptType.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.loc5_26.2)> [symbolic = %IndexWith.type (constants.%IndexWith.type.2)] -// CHECK:STDOUT: %Self.2: %IndexWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %At.type: type = fn_type @At.1, @IndexWith(%SubscriptType.loc5_26.2) [symbolic = %At.type (constants.%At.type.1)] -// CHECK:STDOUT: %At: @IndexWith.%At.type (%At.type.1) = struct_value () [symbolic = %At (constants.%At.1)] -// CHECK:STDOUT: %At.assoc_type: type = assoc_entity_type @IndexWith.%IndexWith.type (%IndexWith.type.2), @IndexWith.%At.type (%At.type.1) [symbolic = %At.assoc_type (constants.%At.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc6_52.2: @IndexWith.%At.assoc_type (%At.assoc_type.1) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc6_52.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType.loc5_26.2)> [symbolic = %IndexWith.type (constants.%IndexWith.type.4f1)] +// CHECK:STDOUT: %Self.2: %IndexWith.type.4f1 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %At.type: type = fn_type @At.1, @IndexWith(%SubscriptType.loc5_26.2) [symbolic = %At.type (constants.%At.type.ca2)] +// CHECK:STDOUT: %At: @IndexWith.%At.type (%At.type.ca2) = struct_value () [symbolic = %At (constants.%At.5ab)] +// CHECK:STDOUT: %At.assoc_type: type = assoc_entity_type @IndexWith.%IndexWith.type (%IndexWith.type.4f1), @IndexWith.%At.type (%At.type.ca2) [symbolic = %At.assoc_type (constants.%At.assoc_type.2b4)] +// CHECK:STDOUT: %assoc0.loc6_52.2: @IndexWith.%At.assoc_type (%At.assoc_type.2b4) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc6_52.2 (constants.%assoc0.d12)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %At.decl: @IndexWith.%At.type (%At.type.1) = fn_decl @At.1 [symbolic = @IndexWith.%At (constants.%At.1)] { +// CHECK:STDOUT: %Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.4f1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %At.decl: @IndexWith.%At.type (%At.type.ca2) = fn_decl @At.1 [symbolic = @IndexWith.%At (constants.%At.5ab)] { // CHECK:STDOUT: %self.patt: @At.1.%Self.as_type.loc6_15.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @At.1.%Self.as_type.loc6_15.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %subscript.patt: @At.1.%SubscriptType (%SubscriptType) = binding_pattern subscript @@ -196,8 +196,8 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc6_51.2: type = converted %.loc6_51.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] // CHECK:STDOUT: %self.param: @At.1.%Self.as_type.loc6_15.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc6_15.1: type = splice_block %.loc6_15.3 [symbolic = %Self.as_type.loc6_15.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc6_15.2: @At.1.%IndexWith.type (%IndexWith.type.2) = specific_constant @IndexWith.%Self.1, @IndexWith(constants.%SubscriptType) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @At.1.%IndexWith.type (%IndexWith.type.2) = name_ref Self, %.loc6_15.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc6_15.2: @At.1.%IndexWith.type (%IndexWith.type.4f1) = specific_constant @IndexWith.%Self.1, @IndexWith(constants.%SubscriptType) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @At.1.%IndexWith.type (%IndexWith.type.4f1) = name_ref Self, %.loc6_15.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc6_15.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc6_15.3: type = converted %Self.ref, %Self.as_type.loc6_15.2 [symbolic = %Self.as_type.loc6_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -208,7 +208,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param2 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc6_52.1: @IndexWith.%At.assoc_type (%At.assoc_type.1) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc6_52.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc6_52.1: @IndexWith.%At.assoc_type (%At.assoc_type.2b4) = assoc_entity element0, %At.decl [symbolic = %assoc0.loc6_52.2 (constants.%assoc0.d12)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -218,7 +218,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %.loc9_7.2 as %IndexWith.type { -// CHECK:STDOUT: %At.decl: %At.type.3 = fn_decl @At.2 [template = constants.%At.3] { +// CHECK:STDOUT: %At.decl: %At.type.304 = fn_decl @At.2 [template = constants.%At.4cb] { // CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self // CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %subscript.patt: %empty_tuple.type = binding_pattern subscript @@ -246,10 +246,10 @@ fn F() { ()[()]; } // CHECK:STDOUT: witness = file.%impl_witness // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @At.1(@IndexWith.%SubscriptType.loc5_26.1: type, @IndexWith.%Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.2)) { +// CHECK:STDOUT: generic fn @At.1(@IndexWith.%SubscriptType.loc5_26.1: type, @IndexWith.%Self.1: @IndexWith.%IndexWith.type (%IndexWith.type.4f1)) { // CHECK:STDOUT: %SubscriptType: type = bind_symbolic_name SubscriptType, 0 [symbolic = %SubscriptType (constants.%SubscriptType)] -// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic = %IndexWith.type (constants.%IndexWith.type.2)] -// CHECK:STDOUT: %Self: %IndexWith.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %IndexWith.type: type = facet_type <@IndexWith, @IndexWith(%SubscriptType)> [symbolic = %IndexWith.type (constants.%IndexWith.type.4f1)] +// CHECK:STDOUT: %Self: %IndexWith.type.4f1 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc6_15.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_15.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @At.1.%Self.as_type.loc6_15.1 (%Self.as_type)](%subscript.param_patt: @At.1.%SubscriptType (%SubscriptType)) -> %empty_tuple.type; @@ -271,7 +271,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: %.loc15_11.2: %empty_tuple.type = converted %.loc15_11.1, %empty_tuple.loc15_11 [template = constants.%empty_tuple] // CHECK:STDOUT: %empty_tuple.loc15_14: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple] // CHECK:STDOUT: %.loc15_15: %empty_tuple.type = converted %.loc15_14, %empty_tuple.loc15_14 [template = constants.%empty_tuple] -// CHECK:STDOUT: %impl.elem0: %At.type.2 = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.3] +// CHECK:STDOUT: %impl.elem0: %At.type.87b = impl_witness_access constants.%impl_witness, element0 [template = constants.%At.4cb] // CHECK:STDOUT: %At.bound: = bound_method %.loc15_11.2, %impl.elem0 [template = constants.%At.bound] // CHECK:STDOUT: %At.call: init %empty_tuple.type = call %At.bound(%.loc15_11.2, %.loc15_15) // CHECK:STDOUT: return @@ -284,7 +284,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: // CHECK:STDOUT: specific @At.1(constants.%SubscriptType, constants.%Self) { // CHECK:STDOUT: %SubscriptType => constants.%SubscriptType -// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.2 +// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.4f1 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc6_15.1 => constants.%Self.as_type // CHECK:STDOUT: } @@ -298,17 +298,17 @@ fn F() { ()[()]; } // CHECK:STDOUT: %SubscriptType.patt.loc5_26.2 => constants.%empty_tuple.type // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.3 +// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.63e // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %At.type => constants.%At.type.2 -// CHECK:STDOUT: %At => constants.%At.2 -// CHECK:STDOUT: %At.assoc_type => constants.%At.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc6_52.2 => constants.%assoc0.2 +// CHECK:STDOUT: %At.type => constants.%At.type.87b +// CHECK:STDOUT: %At => constants.%At.d3b +// CHECK:STDOUT: %At.assoc_type => constants.%At.assoc_type.837 +// CHECK:STDOUT: %assoc0.loc6_52.2 => constants.%assoc0.df5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @At.1(constants.%empty_tuple.type, constants.%IndexWith.facet) { // CHECK:STDOUT: %SubscriptType => constants.%empty_tuple.type -// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.3 +// CHECK:STDOUT: %IndexWith.type => constants.%IndexWith.type.63e // CHECK:STDOUT: %Self => constants.%IndexWith.facet // CHECK:STDOUT: %Self.as_type.loc6_15.1 => constants.%empty_tuple.type // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index dfa1cdd704c3..1b9a095aa36d 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -81,21 +81,21 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Ordered.type: type = facet_type <@Ordered> [template] -// CHECK:STDOUT: %Less.type.1: type = fn_type @Less.1 [template] -// CHECK:STDOUT: %LessOrEquivalent.type.1: type = fn_type @LessOrEquivalent.1 [template] -// CHECK:STDOUT: %Greater.type.1: type = fn_type @Greater.1 [template] -// CHECK:STDOUT: %GreaterOrEquivalent.type.1: type = fn_type @GreaterOrEquivalent.1 [template] +// CHECK:STDOUT: %Less.type.fa1: type = fn_type @Less.1 [template] +// CHECK:STDOUT: %LessOrEquivalent.type.bb5: type = fn_type @LessOrEquivalent.1 [template] +// CHECK:STDOUT: %Greater.type.751: type = fn_type @Greater.1 [template] +// CHECK:STDOUT: %GreaterOrEquivalent.type.b22: type = fn_type @GreaterOrEquivalent.1 [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Less.decl, @impl.1.%LessOrEquivalent.decl, @impl.1.%Greater.decl, @impl.1.%GreaterOrEquivalent.decl) [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %Less.type.2: type = fn_type @Less.2 [template] -// CHECK:STDOUT: %Less.2: %Less.type.2 = struct_value () [template] -// CHECK:STDOUT: %LessOrEquivalent.type.2: type = fn_type @LessOrEquivalent.2 [template] -// CHECK:STDOUT: %LessOrEquivalent.2: %LessOrEquivalent.type.2 = struct_value () [template] -// CHECK:STDOUT: %Greater.type.2: type = fn_type @Greater.2 [template] -// CHECK:STDOUT: %Greater.2: %Greater.type.2 = struct_value () [template] -// CHECK:STDOUT: %GreaterOrEquivalent.type.2: type = fn_type @GreaterOrEquivalent.2 [template] -// CHECK:STDOUT: %GreaterOrEquivalent.2: %GreaterOrEquivalent.type.2 = struct_value () [template] +// CHECK:STDOUT: %Less.type.e95: type = fn_type @Less.2 [template] +// CHECK:STDOUT: %Less.a74: %Less.type.e95 = struct_value () [template] +// CHECK:STDOUT: %LessOrEquivalent.type.cd4: type = fn_type @LessOrEquivalent.2 [template] +// CHECK:STDOUT: %LessOrEquivalent.765: %LessOrEquivalent.type.cd4 = struct_value () [template] +// CHECK:STDOUT: %Greater.type.86f: type = fn_type @Greater.2 [template] +// CHECK:STDOUT: %Greater.854: %Greater.type.86f = struct_value () [template] +// CHECK:STDOUT: %GreaterOrEquivalent.type.adc: type = fn_type @GreaterOrEquivalent.2 [template] +// CHECK:STDOUT: %GreaterOrEquivalent.742: %GreaterOrEquivalent.type.adc = struct_value () [template] // CHECK:STDOUT: %TestLess.type: type = fn_type @TestLess [template] // CHECK:STDOUT: %TestLess: %TestLess.type = struct_value () [template] // CHECK:STDOUT: %TestLessEqual.type: type = fn_type @TestLessEqual [template] @@ -108,12 +108,12 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Ordered = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.11 +// CHECK:STDOUT: .Ordered = %import_ref.ca5 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/comparison, Ordered, loaded [template = constants.%Ordered.type] +// CHECK:STDOUT: %import_ref.ca5: type = import_ref Core//prelude/operators/comparison, Ordered, loaded [template = constants.%Ordered.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -130,7 +130,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Ordered.ref: type = name_ref Ordered, imports.%import_ref.1 [template = constants.%Ordered.type] +// CHECK:STDOUT: %Ordered.ref: type = name_ref Ordered, imports.%import_ref.ca5 [template = constants.%Ordered.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%Less.decl, @impl.1.%LessOrEquivalent.decl, @impl.1.%Greater.decl, @impl.1.%GreaterOrEquivalent.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %TestLess.decl: %TestLess.type = fn_decl @TestLess [template = constants.%TestLess] { @@ -216,7 +216,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Ordered.ref { -// CHECK:STDOUT: %Less.decl: %Less.type.2 = fn_decl @Less.2 [template = constants.%Less.2] { +// CHECK:STDOUT: %Less.decl: %Less.type.e95 = fn_decl @Less.2 [template = constants.%Less.a74] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -236,7 +236,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %LessOrEquivalent.decl: %LessOrEquivalent.type.2 = fn_decl @LessOrEquivalent.2 [template = constants.%LessOrEquivalent.2] { +// CHECK:STDOUT: %LessOrEquivalent.decl: %LessOrEquivalent.type.cd4 = fn_decl @LessOrEquivalent.2 [template = constants.%LessOrEquivalent.765] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -256,7 +256,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %Greater.decl: %Greater.type.2 = fn_decl @Greater.2 [template = constants.%Greater.2] { +// CHECK:STDOUT: %Greater.decl: %Greater.type.86f = fn_decl @Greater.2 [template = constants.%Greater.854] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -276,7 +276,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2 // CHECK:STDOUT: %return: ref bool = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %GreaterOrEquivalent.decl: %GreaterOrEquivalent.type.2 = fn_decl @GreaterOrEquivalent.2 [template = constants.%GreaterOrEquivalent.2] { +// CHECK:STDOUT: %GreaterOrEquivalent.decl: %GreaterOrEquivalent.type.adc = fn_decl @GreaterOrEquivalent.2 [template = constants.%GreaterOrEquivalent.742] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -325,7 +325,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Less.type.1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Less.2] +// CHECK:STDOUT: %impl.elem0: %Less.type.fa1 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Less.a74] // CHECK:STDOUT: %Less.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %Less.call: init bool = call %Less.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc14_15.1: bool = value_of_initializer %Less.call @@ -337,7 +337,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem1: %LessOrEquivalent.type.1 = impl_witness_access constants.%impl_witness, element1 [template = constants.%LessOrEquivalent.2] +// CHECK:STDOUT: %impl.elem1: %LessOrEquivalent.type.bb5 = impl_witness_access constants.%impl_witness, element1 [template = constants.%LessOrEquivalent.765] // CHECK:STDOUT: %LessOrEquivalent.bound: = bound_method %a.ref, %impl.elem1 // CHECK:STDOUT: %LessOrEquivalent.call: init bool = call %LessOrEquivalent.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc18_16.1: bool = value_of_initializer %LessOrEquivalent.call @@ -349,7 +349,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem2: %Greater.type.1 = impl_witness_access constants.%impl_witness, element2 [template = constants.%Greater.2] +// CHECK:STDOUT: %impl.elem2: %Greater.type.751 = impl_witness_access constants.%impl_witness, element2 [template = constants.%Greater.854] // CHECK:STDOUT: %Greater.bound: = bound_method %a.ref, %impl.elem2 // CHECK:STDOUT: %Greater.call: init bool = call %Greater.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc22_15.1: bool = value_of_initializer %Greater.call @@ -361,7 +361,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem3: %GreaterOrEquivalent.type.1 = impl_witness_access constants.%impl_witness, element3 [template = constants.%GreaterOrEquivalent.2] +// CHECK:STDOUT: %impl.elem3: %GreaterOrEquivalent.type.b22 = impl_witness_access constants.%impl_witness, element3 [template = constants.%GreaterOrEquivalent.742] // CHECK:STDOUT: %GreaterOrEquivalent.bound: = bound_method %a.ref, %impl.elem3 // CHECK:STDOUT: %GreaterOrEquivalent.call: init bool = call %GreaterOrEquivalent.bound(%a.ref, %b.ref) // CHECK:STDOUT: %.loc26_16.1: bool = value_of_initializer %GreaterOrEquivalent.call @@ -389,8 +389,8 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Ordered = %import_ref.2 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Ordered = %import_ref.ca5 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index b345cb4e98bf..fc29028aaa1e 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %RightShift.type: type = facet_type <@RightShift> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.194: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.1e1: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.ab2: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.14a: %Op.type.ab2 = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %RightShiftAssign.type: type = facet_type <@RightShiftAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.b9e: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.b59: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.46c: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.2fa: %Op.type.46c = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .RightShift = %import_ref.1 -// CHECK:STDOUT: .RightShiftAssign = %import_ref.5 +// CHECK:STDOUT: .RightShift = %import_ref.1dd +// CHECK:STDOUT: .RightShiftAssign = %import_ref.046 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/bitwise, RightShift, loaded [template = constants.%RightShift.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/bitwise, RightShiftAssign, loaded [template = constants.%RightShiftAssign.type] +// CHECK:STDOUT: %import_ref.1dd: type = import_ref Core//prelude/operators/bitwise, RightShift, loaded [template = constants.%RightShift.type] +// CHECK:STDOUT: %import_ref.046: type = import_ref Core//prelude/operators/bitwise, RightShiftAssign, loaded [template = constants.%RightShiftAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %RightShift.ref: type = name_ref RightShift, imports.%import_ref.1 [template = constants.%RightShift.type] +// CHECK:STDOUT: %RightShift.ref: type = name_ref RightShift, imports.%import_ref.1dd [template = constants.%RightShift.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1e1] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %RightShiftAssign.ref: type = name_ref RightShiftAssign, imports.%import_ref.5 [template = constants.%RightShiftAssign.type] +// CHECK:STDOUT: %RightShiftAssign.ref: type = name_ref RightShiftAssign, imports.%import_ref.046 [template = constants.%RightShiftAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.b59] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %RightShift.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.ab2 = fn_decl @Op.2 [template = constants.%Op.14a] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %RightShiftAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.46c = fn_decl @Op.4 [template = constants.%Op.2fa] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.194 = impl_witness_access constants.%impl_witness.1e1, element0 [template = constants.%Op.14a] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.b9e = impl_witness_access constants.%impl_witness.b59, element0 [template = constants.%Op.2fa] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index d2729da4e91a..f4150ce36df9 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -39,17 +39,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Sub.type: type = facet_type <@Sub> [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Op.type.1: type = fn_type @Op.1 [template] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (@impl.1.%Op.decl) [template] -// CHECK:STDOUT: %Op.type.2: type = fn_type @Op.2 [template] -// CHECK:STDOUT: %Op.2: %Op.type.2 = struct_value () [template] +// CHECK:STDOUT: %Op.type.14b: type = fn_type @Op.1 [template] +// CHECK:STDOUT: %impl_witness.66d: = impl_witness (@impl.1.%Op.decl) [template] +// CHECK:STDOUT: %Op.type.79a: type = fn_type @Op.2 [template] +// CHECK:STDOUT: %Op.fb2: %Op.type.79a = struct_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value () [template] // CHECK:STDOUT: %SubAssign.type: type = facet_type <@SubAssign> [template] -// CHECK:STDOUT: %Op.type.3: type = fn_type @Op.3 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Op.decl) [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type %C [template] -// CHECK:STDOUT: %Op.type.4: type = fn_type @Op.4 [template] -// CHECK:STDOUT: %Op.4: %Op.type.4 = struct_value () [template] +// CHECK:STDOUT: %Op.type.170: type = fn_type @Op.3 [template] +// CHECK:STDOUT: %impl_witness.16f: = impl_witness (@impl.2.%Op.decl) [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %Op.type.cc5: type = fn_type @Op.4 [template] +// CHECK:STDOUT: %Op.8d8: %Op.type.cc5 = struct_value () [template] // CHECK:STDOUT: %TestOp.type: type = fn_type @TestOp [template] // CHECK:STDOUT: %TestOp: %TestOp.type = struct_value () [template] // CHECK:STDOUT: %TestAssign.type: type = fn_type @TestAssign [template] @@ -58,13 +58,13 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Sub = %import_ref.1 -// CHECK:STDOUT: .SubAssign = %import_ref.5 +// CHECK:STDOUT: .Sub = %import_ref.c15 +// CHECK:STDOUT: .SubAssign = %import_ref.046 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Core//prelude/operators/arithmetic, Sub, loaded [template = constants.%Sub.type] -// CHECK:STDOUT: %import_ref.5: type = import_ref Core//prelude/operators/arithmetic, SubAssign, loaded [template = constants.%SubAssign.type] +// CHECK:STDOUT: %import_ref.c15: type = import_ref Core//prelude/operators/arithmetic, Sub, loaded [template = constants.%Sub.type] +// CHECK:STDOUT: %import_ref.046: type = import_ref Core//prelude/operators/arithmetic, SubAssign, loaded [template = constants.%SubAssign.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -79,15 +79,15 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: impl_decl @impl.1 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %Sub.ref: type = name_ref Sub, imports.%import_ref.1 [template = constants.%Sub.type] +// CHECK:STDOUT: %Sub.ref: type = name_ref Sub, imports.%import_ref.c15 [template = constants.%Sub.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.1] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.1.%Op.decl) [template = constants.%impl_witness.66d] // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %SubAssign.ref: type = name_ref SubAssign, imports.%import_ref.5 [template = constants.%SubAssign.type] +// CHECK:STDOUT: %SubAssign.ref: type = name_ref SubAssign, imports.%import_ref.046 [template = constants.%SubAssign.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc22: = impl_witness (@impl.2.%Op.decl) [template = constants.%impl_witness.16f] // CHECK:STDOUT: %TestOp.decl: %TestOp.type = fn_decl @TestOp [template = constants.%TestOp] { // CHECK:STDOUT: %a.patt: %C = binding_pattern a // CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt, runtime_param0 @@ -107,17 +107,17 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: %return: ref %C = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %TestAssign.decl: %TestAssign.type = fn_decl @TestAssign [template = constants.%TestAssign] { -// CHECK:STDOUT: %a.patt: %ptr.3 = binding_pattern a -// CHECK:STDOUT: %a.param_patt: %ptr.3 = value_param_pattern %a.patt, runtime_param0 +// CHECK:STDOUT: %a.patt: %ptr.019 = binding_pattern a +// CHECK:STDOUT: %a.param_patt: %ptr.019 = value_param_pattern %a.patt, runtime_param0 // CHECK:STDOUT: %b.patt: %C = binding_pattern b // CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %a.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %a.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc30: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc30_18: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: %ptr.3 = bind_name a, %a.param +// CHECK:STDOUT: %a: %ptr.019 = bind_name a, %a.param // CHECK:STDOUT: %b.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc30_25: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %b: %C = bind_name b, %b.param @@ -125,7 +125,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.1: %C.ref as %Sub.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.2 = fn_decl @Op.2 [template = constants.%Op.2] { +// CHECK:STDOUT: %Op.decl: %Op.type.79a = fn_decl @Op.2 [template = constants.%Op.fb2] { // CHECK:STDOUT: %self.patt: %C = binding_pattern self // CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %other.patt: %C = binding_pattern other @@ -150,19 +150,19 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C.ref as %SubAssign.ref { -// CHECK:STDOUT: %Op.decl: %Op.type.4 = fn_decl @Op.4 [template = constants.%Op.4] { -// CHECK:STDOUT: %self.patt: %ptr.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %ptr.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Op.decl: %Op.type.cc5 = fn_decl @Op.4 [template = constants.%Op.8d8] { +// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %.loc23_9: auto = addr_pattern %self.param_patt // CHECK:STDOUT: %other.patt: %C = binding_pattern other // CHECK:STDOUT: %other.param_patt: %C = value_param_pattern %other.patt, runtime_param1 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.3] { +// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc23_21: type = splice_block %ptr [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref.loc23_20: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.3] +// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.3 = bind_name self, %self.param +// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param // CHECK:STDOUT: %other.param: %C = value_param runtime_param1 // CHECK:STDOUT: %C.ref.loc23_31: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %other: %C = bind_name other, %other.param @@ -189,7 +189,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: return %.loc19_14 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.3](%other.param_patt: %C) { +// CHECK:STDOUT: fn @Op.4[addr %self.param_patt: %ptr.019](%other.param_patt: %C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -198,21 +198,21 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %C = name_ref a, %a // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.1 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Op.2] +// CHECK:STDOUT: %impl.elem0: %Op.type.14b = impl_witness_access constants.%impl_witness.66d, element0 [template = constants.%Op.fb2] // CHECK:STDOUT: %Op.bound: = bound_method %a.ref, %impl.elem0 // CHECK:STDOUT: %.loc26: ref %C = splice_block %return {} // CHECK:STDOUT: %Op.call: init %C = call %Op.bound(%a.ref, %b.ref) to %.loc26 // CHECK:STDOUT: return %Op.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.3, %b.param_patt: %C) { +// CHECK:STDOUT: fn @TestAssign(%a.param_patt: %ptr.019, %b.param_patt: %C) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %ptr.3 = name_ref a, %a +// CHECK:STDOUT: %a.ref: %ptr.019 = name_ref a, %a // CHECK:STDOUT: %.loc31: ref %C = deref %a.ref // CHECK:STDOUT: %b.ref: %C = name_ref b, %b -// CHECK:STDOUT: %impl.elem0: %Op.type.3 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Op.4] +// CHECK:STDOUT: %impl.elem0: %Op.type.170 = impl_witness_access constants.%impl_witness.16f, element0 [template = constants.%Op.8d8] // CHECK:STDOUT: %Op.bound: = bound_method %.loc31, %impl.elem0 -// CHECK:STDOUT: %addr: %ptr.3 = addr_of %.loc31 +// CHECK:STDOUT: %addr: %ptr.019 = addr_of %.loc31 // CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %Op.bound(%addr, %b.ref) // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon index edb9ba8bb07d..91dbb24d2dca 100644 --- a/toolchain/check/testdata/package_expr/fail_not_found.carbon +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -26,7 +26,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index a160ae989ded..3046876806b0 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -46,20 +46,20 @@ fn Main() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -80,12 +80,12 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%x.var, %.loc4 // CHECK:STDOUT: %package.ref: = name_ref package, package [template = package] // CHECK:STDOUT: %x.ref: ref %i32 = name_ref x, file.%x @@ -99,26 +99,26 @@ fn Main() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -140,12 +140,12 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %x.var: ref %i32 = var x // CHECK:STDOUT: %x: ref %i32 = bind_name x, %x.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc7: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc7: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: assign %x.var, %.loc7 // CHECK:STDOUT: %y.var: ref %i32 = var y // CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var @@ -158,12 +158,12 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%x.var, %.loc4 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon index af6e9abb3b1a..b7bd766b5ce8 100644 --- a/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon +++ b/toolchain/check/testdata/packages/fail_conflict_no_namespaces.carbon @@ -69,7 +69,7 @@ import library "var"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -88,7 +88,7 @@ import library "var"; // CHECK:STDOUT: --- fail_conflict.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Example//fn, Foo, unloaded +// CHECK:STDOUT: %import_ref.ee0 = import_ref Example//fn, Foo, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... @@ -97,7 +97,7 @@ import library "var"; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .Foo = imports.%import_ref.1 +// CHECK:STDOUT: .Foo = imports.%import_ref.ee0 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core diff --git a/toolchain/check/testdata/packages/fail_import_type_error.carbon b/toolchain/check/testdata/packages/fail_import_type_error.carbon index b7c29c241b1c..149a474ebcd6 100644 --- a/toolchain/check/testdata/packages/fail_import_type_error.carbon +++ b/toolchain/check/testdata/packages/fail_import_type_error.carbon @@ -79,12 +79,12 @@ var d: i32 = d_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: ref = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %import_ref.2: ref = import_ref Implicit//default, b_ref, loaded -// CHECK:STDOUT: %import_ref.3: ref = import_ref Implicit//default, c_ref, loaded -// CHECK:STDOUT: %import_ref.4: ref = import_ref Implicit//default, d_ref, loaded +// CHECK:STDOUT: %import_ref.663: ref = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %import_ref.621: ref = import_ref Implicit//default, b_ref, loaded +// CHECK:STDOUT: %import_ref.a99: ref = import_ref Implicit//default, c_ref, loaded +// CHECK:STDOUT: %import_ref.9a8: ref = import_ref Implicit//default, d_ref, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -92,10 +92,10 @@ var d: i32 = d_ref; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .c_ref = imports.%import_ref.3 -// CHECK:STDOUT: .d_ref = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.663 +// CHECK:STDOUT: .b_ref = imports.%import_ref.621 +// CHECK:STDOUT: .c_ref = imports.%import_ref.a99 +// CHECK:STDOUT: .d_ref = imports.%import_ref.9a8 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b @@ -117,13 +117,13 @@ var d: i32 = d_ref; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref = name_ref a_ref, imports.%import_ref.1 +// CHECK:STDOUT: %a_ref.ref: ref = name_ref a_ref, imports.%import_ref.663 // CHECK:STDOUT: assign file.%a.var, -// CHECK:STDOUT: %b_ref.ref: ref = name_ref b_ref, imports.%import_ref.2 +// CHECK:STDOUT: %b_ref.ref: ref = name_ref b_ref, imports.%import_ref.621 // CHECK:STDOUT: assign file.%b.var, -// CHECK:STDOUT: %c_ref.ref: ref = name_ref c_ref, imports.%import_ref.3 +// CHECK:STDOUT: %c_ref.ref: ref = name_ref c_ref, imports.%import_ref.a99 // CHECK:STDOUT: assign file.%c.var, -// CHECK:STDOUT: %d_ref.ref: ref = name_ref d_ref, imports.%import_ref.4 +// CHECK:STDOUT: %d_ref.ref: ref = name_ref d_ref, imports.%import_ref.9a8 // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon index 3f4c52b85f76..63cd981b69a0 100644 --- a/toolchain/check/testdata/packages/implicit_imports_prelude.carbon +++ b/toolchain/check/testdata/packages/implicit_imports_prelude.carbon @@ -27,20 +27,20 @@ var b: i32 = a; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -58,12 +58,12 @@ var b: i32 = a; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%a.var, %.loc4 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -76,9 +76,9 @@ var b: i32 = a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: ref %i32 = import_ref Main//lib, a, loaded +// CHECK:STDOUT: %import_ref.f58: ref %i32 = import_ref Main//lib, a, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.249 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -86,7 +86,7 @@ var b: i32 = a; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a = imports.%import_ref.1 +// CHECK:STDOUT: .a = imports.%import_ref.f58 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } @@ -99,7 +99,7 @@ var b: i32 = a; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, imports.%import_ref.1 +// CHECK:STDOUT: %a.ref: ref %i32 = name_ref a, imports.%import_ref.f58 // CHECK:STDOUT: %.loc4: %i32 = bind_value %a.ref // CHECK:STDOUT: assign file.%b.var, %.loc4 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon b/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon index d016884689cd..a0b93f6351c0 100644 --- a/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon +++ b/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon @@ -286,10 +286,10 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Other//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Other//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -297,14 +297,14 @@ alias C = Other.C; // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_copy.carbon @@ -317,10 +317,10 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Other//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Other//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -328,14 +328,14 @@ alias C = Other.C; // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_indirect.carbon @@ -348,10 +348,10 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Other//export_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Other//export_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Other//export_name, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Other//export_name, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -359,14 +359,14 @@ alias C = Other.C; // CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.4a7 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export_import.carbon @@ -382,13 +382,13 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//export_import // CHECK:STDOUT: import Other//base // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -403,9 +403,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -434,14 +434,14 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//export_import // CHECK:STDOUT: import Other//export_import_copy // CHECK:STDOUT: import Other//base // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -456,9 +456,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -487,14 +487,14 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0ac // CHECK:STDOUT: import Other//export_import_indirect // CHECK:STDOUT: import Other//export_import // CHECK:STDOUT: import Other//base // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Other//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Other//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Other//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -509,9 +509,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -540,12 +540,12 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.4a7 // CHECK:STDOUT: import Other//export_name // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ad3: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Other//export_name, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Other//export_name, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -560,9 +560,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -591,13 +591,13 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.4a7 // CHECK:STDOUT: import Other//export_name // CHECK:STDOUT: import Other//export_name_copy // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ad3: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Other//export_name, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Other//export_name, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -612,9 +612,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -643,12 +643,12 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.050 // CHECK:STDOUT: import Other//export_name_indirect // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name_indirect, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name_indirect, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name_indirect, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.328: = import_ref Other//export_name_indirect, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.db8 = import_ref Other//export_name_indirect, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.3ef = import_ref Other//export_name_indirect, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -663,9 +663,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name_indirect.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -694,7 +694,7 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.4a7 // CHECK:STDOUT: import Other//export_import // CHECK:STDOUT: import Other//export_name // CHECK:STDOUT: import Other//export_import_copy @@ -703,9 +703,9 @@ alias C = Other.C; // CHECK:STDOUT: import Other//export_name_indirect // CHECK:STDOUT: import Other//base // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ad3: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Other//export_name, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Other//export_name, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -720,9 +720,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -780,12 +780,12 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.0c1 // CHECK:STDOUT: import Other//export_import // CHECK:STDOUT: import Other//conflict // CHECK:STDOUT: import Other//base // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %C.type = import_ref Other//conflict, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0c1: %C.type = import_ref Other//conflict, C, loaded [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -795,8 +795,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %Other.import = import Other // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %C: %C.type = bind_alias C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%import_ref.0c1 [template = constants.%C] +// CHECK:STDOUT: %C: %C.type = bind_alias C, imports.%import_ref.0c1 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @C() [from "conflict.carbon"]; @@ -812,14 +812,14 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .C = %import_ref.1 +// CHECK:STDOUT: .C = %import_ref.4a7 // CHECK:STDOUT: import Other//export_name // CHECK:STDOUT: import Other//conflict // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: type = import_ref Other//export_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//export_name, inst21 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Other//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Other//export_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Other//export_name, inst20 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Other//export_name, inst21 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Other//export_name, inst22 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -829,14 +829,14 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %Other.import = import Other // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %C: type = bind_alias C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%import_ref.4a7 [template = constants.%C] +// CHECK:STDOUT: %C: type = bind_alias C, imports.%import_ref.4a7 [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon b/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon index 707a81f7730e..f073db178ace 100644 --- a/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/cross_package_import.carbon @@ -345,13 +345,13 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .F = %import_ref.1 -// CHECK:STDOUT: .F2 = %import_ref.2 +// CHECK:STDOUT: .F = %import_ref.5c2 +// CHECK:STDOUT: .F2 = %import_ref.3d3 // CHECK:STDOUT: import Other//other_fn // CHECK:STDOUT: import Other//other_fn2 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] -// CHECK:STDOUT: %import_ref.2: %F2.type = import_ref Other//other_fn2, F2, loaded [template = constants.%F2] +// CHECK:STDOUT: %import_ref.5c2: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.3d3: %F2.type = import_ref Other//other_fn2, F2, loaded [template = constants.%F2] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -366,10 +366,10 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Other.ref.loc8: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.5c2 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: %Other.ref.loc9: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F2.ref: %F2.type = name_ref F2, imports.%import_ref.2 [template = constants.%F2] +// CHECK:STDOUT: %F2.ref: %F2.type = name_ref F2, imports.%import_ref.3d3 [template = constants.%F2] // CHECK:STDOUT: %F2.call: init %empty_tuple.type = call %F2.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -390,11 +390,11 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .F = %import_ref.1 +// CHECK:STDOUT: .F = %import_ref.5c2 // CHECK:STDOUT: import Other//other_fn // CHECK:STDOUT: import Other//other_fn_extern // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.5c2: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -409,7 +409,7 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.5c2 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -444,11 +444,11 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .F = %import_ref.1 +// CHECK:STDOUT: .F = %import_ref.5c2 // CHECK:STDOUT: import Other//other_fn // CHECK:STDOUT: import Other//other_fn_conflict // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.1: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.5c2: %F.type = import_ref Other//other_fn, F, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -463,7 +463,7 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: fn @Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Other.ref: = name_ref Other, imports.%Other [template = imports.%Other] -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.1 [template = constants.%F] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.5c2 [template = constants.%F] // CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -478,8 +478,8 @@ fn UseF() { Other.F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Main//main_other_ns, Other, loaded -// CHECK:STDOUT: %Other: = namespace %import_ref.1, [template] { +// CHECK:STDOUT: %import_ref.b6b: = import_ref Main//main_other_ns, Other, loaded +// CHECK:STDOUT: %Other: = namespace %import_ref.b6b, [template] { // CHECK:STDOUT: .F = file.%F.decl // CHECK:STDOUT: import Other//other_fn // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/no_prelude/export_import.carbon b/toolchain/check/testdata/packages/no_prelude/export_import.carbon index f644783d06b7..e715e393f0eb 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_import.carbon @@ -280,15 +280,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -298,9 +298,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -332,15 +332,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.d92: type = import_ref Main//export_export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.d92 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -351,9 +351,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -381,15 +381,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -399,9 +399,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -429,15 +429,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -447,9 +447,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -477,15 +477,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -495,9 +495,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -525,15 +525,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -543,9 +543,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -573,15 +573,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -591,9 +591,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -621,15 +621,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -639,9 +639,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -680,15 +680,15 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -698,9 +698,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -728,17 +728,17 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//use_non_export_then_base, c, unloaded -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.39e = import_ref Main//use_non_export_then_base, c, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .c = imports.%import_ref.1 -// CHECK:STDOUT: .C = imports.%import_ref.2 +// CHECK:STDOUT: .c = imports.%import_ref.39e +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .indirect_c = %indirect_c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -748,9 +748,9 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .x = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon index 00db5e93e78b..6082fd43cd0c 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon @@ -120,11 +120,11 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %empty_tuple.type [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -138,7 +138,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.9be] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -148,7 +148,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %.loc9: %D.elem = field_decl y, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.9f4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -159,14 +159,14 @@ var d: D = {.y = ()}; // CHECK:STDOUT: --- export_import.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//base, C, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Main//base, D, unloaded +// CHECK:STDOUT: %import_ref.85d = import_ref Main//base, C, unloaded +// CHECK:STDOUT: %import_ref.5de = import_ref Main//base, D, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.85d +// CHECK:STDOUT: .D = imports.%import_ref.5de // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } @@ -181,27 +181,27 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//base, D, unloaded -// CHECK:STDOUT: %import_ref.3: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.5de = import_ref Main//base, D, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .C = %C -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .D = imports.%import_ref.5de // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .x = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon @@ -214,27 +214,27 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//base, D, unloaded -// CHECK:STDOUT: %import_ref.3: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.5de = import_ref Main//base, D, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .C = %C -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .D = imports.%import_ref.5de // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .x = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -262,15 +262,15 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -280,9 +280,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -310,15 +310,15 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_name, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export_name, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_name, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export_name, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export_name, inst23 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -328,9 +328,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -358,15 +358,15 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -376,9 +376,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -435,15 +435,15 @@ var d: D = {.y = ()}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -453,9 +453,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -477,30 +477,30 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %D.val: %D = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//base, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6: = import_ref Main//base, loc10_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.7 = import_ref Main//base, inst24 [no loc], unloaded -// CHECK:STDOUT: %import_ref.8 = import_ref Main//base, loc9_8, unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.275: type = import_ref Main//base, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export_import_then_name, inst21 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export_import_then_name, inst22 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export_import_then_name, inst23 [indirect], unloaded +// CHECK:STDOUT: %import_ref.5ab: = import_ref Main//base, loc10_1, loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.cab = import_ref Main//base, inst24 [no loc], unloaded +// CHECK:STDOUT: %import_ref.950 = import_ref Main//base, loc9_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 -// CHECK:STDOUT: .D = imports.%import_ref.2 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 +// CHECK:STDOUT: .D = imports.%import_ref.275 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } @@ -513,16 +513,16 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .x = imports.%import_ref.5 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.7 -// CHECK:STDOUT: .y = imports.%import_ref.8 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.6 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .y = imports.%import_ref.950 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/no_prelude/export_name.carbon b/toolchain/check/testdata/packages/no_prelude/export_name.carbon index 8572c1bc5ee4..39010aeb4411 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_name.carbon @@ -207,11 +207,11 @@ private export C; // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %empty_tuple.type [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %NSC.elem: type = unbound_element_type %NSC, %empty_tuple.type [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -228,7 +228,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc5: %C.elem = field_decl x, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.9be] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -238,7 +238,7 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: %.loc10: %NSC.elem = field_decl y, element0 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.9f4] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NSC @@ -252,25 +252,25 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { // CHECK:STDOUT: .NSC = file.%NSC // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//base, NSC, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//base, loc5_8, unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//base, loc11_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//base, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %import_ref.88a: type = import_ref Main//base, NSC, loaded [template = constants.%NSC] +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.5ab: = import_ref Main//base, loc11_1, loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.31c = import_ref Main//base, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -279,37 +279,37 @@ private export C; // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %NSC: type = export NSC, imports.%import_ref.3 [template = constants.%NSC] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] +// CHECK:STDOUT: %NSC: type = export NSC, imports.%import_ref.88a [template = constants.%NSC] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.31c +// CHECK:STDOUT: .y = imports.%import_ref.be6 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_reexporting.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//export, C, unloaded -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.ec9 = import_ref Main//export, C, unloaded +// CHECK:STDOUT: %import_ref.0f6: = import_ref Main//export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.0f6, [template] { +// CHECK:STDOUT: .NSC = %import_ref.4ef // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.ec9 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -321,25 +321,25 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0f6: = import_ref Main//export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.0f6, [template] { // CHECK:STDOUT: .NSC = file.%NSC // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: type = import_ref Main//export, NSC, loaded [template = constants.%NSC] -// CHECK:STDOUT: %import_ref.4: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//export, inst25 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//export, inst32 [indirect], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//export, inst33 [indirect], unloaded +// CHECK:STDOUT: %import_ref.833: type = import_ref Main//export, NSC, loaded [template = constants.%NSC] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.63c: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.f0b = import_ref Main//export, inst32 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ebc = import_ref Main//export, inst33 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -348,22 +348,22 @@ private export C; // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] -// CHECK:STDOUT: %NSC: type = export NSC, imports.%import_ref.3 [template = constants.%NSC] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.4a7 [template = constants.%C] +// CHECK:STDOUT: %NSC: type = export NSC, imports.%import_ref.833 [template = constants.%NSC] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -378,32 +378,32 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0f6: = import_ref Main//export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.0f6, [template] { +// CHECK:STDOUT: .NSC = %import_ref.833 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//export, inst25 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//export, inst32 [indirect], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//export, inst33 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.63c: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.f0b = import_ref Main//export, inst32 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ebc = import_ref Main//export, inst33 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .nsc = %nsc @@ -417,16 +417,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -456,32 +456,32 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.050: type = import_ref Main//export_export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.06f: = import_ref Main//export_export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.06f, [template] { +// CHECK:STDOUT: .NSC = %import_ref.17e // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//export_export, inst23 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export_export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//export_export, inst25 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//export_export, inst31 [indirect], loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//export_export, inst32 [indirect], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//export_export, inst33 [indirect], unloaded +// CHECK:STDOUT: %import_ref.328: = import_ref Main//export_export, inst23 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.db8 = import_ref Main//export_export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.3ef = import_ref Main//export_export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.c12: = import_ref Main//export_export, inst31 [indirect], loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.1cb = import_ref Main//export_export, inst32 [indirect], unloaded +// CHECK:STDOUT: %import_ref.b18 = import_ref Main//export_export, inst33 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.050 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .nsc = %nsc @@ -496,16 +496,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.1cb +// CHECK:STDOUT: .y = imports.%import_ref.b18 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.c12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -535,32 +535,32 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export_export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export_export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.050: type = import_ref Main//export_export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.06f: = import_ref Main//export_export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.06f, [template] { +// CHECK:STDOUT: .NSC = %import_ref.17e // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//export_export, inst23 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export_export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//export_export, inst25 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//export_export, inst31 [indirect], loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//export_export, inst32 [indirect], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//export_export, inst33 [indirect], unloaded +// CHECK:STDOUT: %import_ref.328: = import_ref Main//export_export, inst23 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.db8 = import_ref Main//export_export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.3ef = import_ref Main//export_export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.c12: = import_ref Main//export_export, inst31 [indirect], loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.1cb = import_ref Main//export_export, inst32 [indirect], unloaded +// CHECK:STDOUT: %import_ref.b18 = import_ref Main//export_export, inst33 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.050 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .nsc = %nsc @@ -574,16 +574,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.1cb +// CHECK:STDOUT: .y = imports.%import_ref.b18 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.c12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -610,16 +610,16 @@ private export C; // CHECK:STDOUT: --- fail_export_ns.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//base, C, unloaded -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.85d = import_ref Main//base, C, unloaded +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .NSC = %import_ref.d31 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.85d // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -658,19 +658,19 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .NSC = %import_ref.d31 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -678,9 +678,9 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -689,32 +689,32 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .NSC = %import_ref.88a // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//base, loc5_8, unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//base, loc11_1, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//base, inst25 [no loc], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//base, loc10_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.5ab: = import_ref Main//base, loc11_1, loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.31c = import_ref Main//base, inst25 [no loc], unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .nsc = %nsc @@ -728,16 +728,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.31c +// CHECK:STDOUT: .y = imports.%import_ref.be6 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -767,32 +767,32 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %struct_type.x: type = struct_type {.x: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.x [template] +// CHECK:STDOUT: %complete_type.9be: = complete_type_witness %struct_type.x [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %C.val: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %struct_type.y: type = struct_type {.y: %empty_tuple.type} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.y [template] +// CHECK:STDOUT: %complete_type.9f4: = complete_type_witness %struct_type.y [template] // CHECK:STDOUT: %NSC.val: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//export, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.0f6: = import_ref Main//export, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.0f6, [template] { +// CHECK:STDOUT: .NSC = %import_ref.833 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//export, inst25 [indirect], unloaded -// CHECK:STDOUT: %import_ref.7: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.8 = import_ref Main//export, inst32 [indirect], unloaded -// CHECK:STDOUT: %import_ref.9 = import_ref Main//export, inst33 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//export, inst23 [indirect], loaded [template = constants.%complete_type.9be] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.63c: = import_ref Main//export, inst31 [indirect], loaded [template = constants.%complete_type.9f4] +// CHECK:STDOUT: %import_ref.f0b = import_ref Main//export, inst32 [indirect], unloaded +// CHECK:STDOUT: %import_ref.ebc = import_ref Main//export, inst33 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: .c = %c // CHECK:STDOUT: .nsc = %nsc @@ -806,16 +806,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.8 -// CHECK:STDOUT: .y = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7 +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -864,14 +864,14 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .NSC = %import_ref.d31 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -880,14 +880,14 @@ private export C; // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -902,15 +902,15 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//repeat_export, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//repeat_export, inst23 [indirect], loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//repeat_export, inst24 [indirect], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Main//repeat_export, inst25 [indirect], unloaded +// CHECK:STDOUT: %import_ref.4a7: type = import_ref Main//repeat_export, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.ad3: = import_ref Main//repeat_export, inst23 [indirect], loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.6a9 = import_ref Main//repeat_export, inst24 [indirect], unloaded +// CHECK:STDOUT: %import_ref.f67 = import_ref Main//repeat_export, inst25 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.4a7 // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import @@ -920,9 +920,9 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "repeat_export.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .x = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -948,14 +948,14 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//base, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//base, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.2, [template] { -// CHECK:STDOUT: .NSC = %import_ref.3 +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Main//base, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//base, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .NSC = %import_ref.d31 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.4: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//base, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//base, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.56d: = import_ref Main//base, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Main//base, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.276 = import_ref Main//base, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -964,13 +964,13 @@ private export C; // CHECK:STDOUT: .NS = imports.%NS // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C: type = export C, imports.%import_ref.1 [template = constants.%C] +// CHECK:STDOUT: %C: type = export C, imports.%import_ref.0ac [template = constants.%C] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .x = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.4 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/fail_export_name_member.carbon b/toolchain/check/testdata/packages/no_prelude/fail_export_name_member.carbon index f4afdd4fa7d9..67b5fb91f156 100644 --- a/toolchain/check/testdata/packages/no_prelude/fail_export_name_member.carbon +++ b/toolchain/check/testdata/packages/no_prelude/fail_export_name_member.carbon @@ -70,23 +70,23 @@ export C.n; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Foo//a, C, loaded [template = constants.%C] -// CHECK:STDOUT: %import_ref.2: = import_ref Foo//a, loc6_1, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Foo//a, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4 = import_ref Foo//a, loc5_8, unloaded +// CHECK:STDOUT: %import_ref.0ac: type = import_ref Foo//a, C, loaded [template = constants.%C] +// CHECK:STDOUT: %import_ref.9fc: = import_ref Foo//a, loc6_1, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2c4 = import_ref Foo//a, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.4cb = import_ref Foo//a, loc5_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C = imports.%import_ref.1 +// CHECK:STDOUT: .C = imports.%import_ref.0ac // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .n = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .n = imports.%import_ref.4cb +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.9fc // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon b/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon index c43645f3097a..33d93c147b3c 100644 --- a/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon +++ b/toolchain/check/testdata/packages/no_prelude/fail_export_name_params.carbon @@ -96,8 +96,8 @@ export C2(T:! type); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: %C1.type = import_ref Foo//a, C1, loaded [template = constants.%C1.generic] -// CHECK:STDOUT: %import_ref.2: %C2.type = import_ref Foo//a, C2, loaded [template = constants.%C2.generic] +// CHECK:STDOUT: %import_ref.c46: %C1.type = import_ref Foo//a, C1, loaded [template = constants.%C1.generic] +// CHECK:STDOUT: %import_ref.f3f: %C2.type = import_ref Foo//a, C2, loaded [template = constants.%C2.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -106,10 +106,10 @@ export C2(T:! type); // CHECK:STDOUT: .C2 = %C2 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %C1: %C1.type = export C1, imports.%import_ref.1 [template = constants.%C1.generic] +// CHECK:STDOUT: %C1: %C1.type = export C1, imports.%import_ref.c46 [template = constants.%C1.generic] // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0, %T.param [symbolic = constants.%T] -// CHECK:STDOUT: %C2: %C2.type = export C2, imports.%import_ref.2 [template = constants.%C2.generic] +// CHECK:STDOUT: %C2: %C2.type = export C2, imports.%import_ref.f3f [template = constants.%C2.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C1(constants.%T: type) [from "a.carbon"] { diff --git a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon index b0f69140e255..bcb7d4dea7e4 100644 --- a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon +++ b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon @@ -330,18 +330,18 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//mix_current_package, C1, loaded [template = constants.%C1] -// CHECK:STDOUT: %import_ref.2: type = import_ref Main//c2, C2, loaded [template = constants.%C2] -// CHECK:STDOUT: %import_ref.3: = import_ref Main//c1, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//c1, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Main//c2, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Main//c2, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2f0: type = import_ref Main//mix_current_package, C1, loaded [template = constants.%C1] +// CHECK:STDOUT: %import_ref.dcf: type = import_ref Main//c2, C2, loaded [template = constants.%C2] +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Main//c1, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.eb7 = import_ref Main//c1, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Main//c2, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.5b0 = import_ref Main//c2, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C1 = imports.%import_ref.1 -// CHECK:STDOUT: .C2 = imports.%import_ref.2 +// CHECK:STDOUT: .C1 = imports.%import_ref.2f0 +// CHECK:STDOUT: .C2 = imports.%import_ref.dcf // CHECK:STDOUT: .c1 = %c1 // CHECK:STDOUT: .c2 = %c2 // CHECK:STDOUT: } @@ -355,14 +355,14 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.eb7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 [from "c2.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.5b0 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -401,14 +401,14 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//dup_c1, C1, loaded [template = constants.%C1] -// CHECK:STDOUT: %import_ref.2: = import_ref Main//c1, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//c1, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2f0: type = import_ref Main//dup_c1, C1, loaded [template = constants.%C1] +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//c1, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.eb7 = import_ref Main//c1, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .C1 = imports.%import_ref.1 +// CHECK:STDOUT: .C1 = imports.%import_ref.2f0 // CHECK:STDOUT: .c1 = %c1 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_6.1 = import @@ -419,8 +419,8 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.eb7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -435,9 +435,9 @@ import Other library "o1"; // CHECK:STDOUT: --- use_ns.carbon // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Main//ns, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .C = %import_ref.2 +// CHECK:STDOUT: %import_ref.d58: = import_ref Main//ns, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.d58, [template] { +// CHECK:STDOUT: .C = %import_ref.3c0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -458,12 +458,12 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: = import_ref Main//use_ns, NS, loaded -// CHECK:STDOUT: %NS: = namespace %import_ref.1, [template] { -// CHECK:STDOUT: .C = %import_ref.2 +// CHECK:STDOUT: %import_ref.0f6: = import_ref Main//use_ns, NS, loaded +// CHECK:STDOUT: %NS: = namespace %import_ref.0f6, [template] { +// CHECK:STDOUT: .C = %import_ref.a76 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.3: = import_ref Main//ns, loc5_13, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.4 = import_ref Main//ns, inst15 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Main//ns, loc5_13, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2dd = import_ref Main//ns, inst15 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -479,8 +479,8 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "ns.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.2dd +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -520,15 +520,15 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .O1 = %import_ref.1 -// CHECK:STDOUT: .O2 = %import_ref.4 +// CHECK:STDOUT: .O1 = %import_ref.136 +// CHECK:STDOUT: .O2 = %import_ref.f3b // CHECK:STDOUT: import Other//o2 // CHECK:STDOUT: import Other//o1 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//o1, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//o1, inst14 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5: = import_ref Other//o2, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.6 = import_ref Other//o2, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f24d3.1: = import_ref Other//o1, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.481 = import_ref Other//o1, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f24d3.2: = import_ref Other//o2, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.2eb = import_ref Other//o2, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -548,14 +548,14 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.481 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O2 [from "o2.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.5 +// CHECK:STDOUT: .Self = imports.%import_ref.2eb +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -597,11 +597,11 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Other: = namespace file.%Other.import, [template] { -// CHECK:STDOUT: .O1 = %import_ref.1 +// CHECK:STDOUT: .O1 = %import_ref.136 // CHECK:STDOUT: import Other//o1 // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: = import_ref Other//o1, loc4_11, loaded [template = constants.%complete_type] -// CHECK:STDOUT: %import_ref.3 = import_ref Other//o1, inst14 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Other//o1, loc4_11, loaded [template = constants.%complete_type] +// CHECK:STDOUT: %import_ref.481 = import_ref Other//o1, inst14 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -618,8 +618,8 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.2 +// CHECK:STDOUT: .Self = imports.%import_ref.481 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon index 2eb622c3b77f..a819c9b980bc 100644 --- a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon @@ -196,7 +196,7 @@ var n: {} = i32; // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %N: %T = bind_symbolic_name N, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %N.patt.2: %T = symbolic_binding_pattern N, 1 [symbolic] +// CHECK:STDOUT: %N.patt.45169f.2: %T = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %Int.specific_fn: = specific_function %Int, @Int(Core.IntLiteral, %int_32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -221,7 +221,7 @@ var n: {} = i32; // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: %N: %T = bind_symbolic_name N, 1 [symbolic = %N (constants.%N)] -// CHECK:STDOUT: %N.patt: %T = symbolic_binding_pattern N, 1 [symbolic = %N.patt (constants.%N.patt.2)] +// CHECK:STDOUT: %N.patt: %T = symbolic_binding_pattern N, 1 [symbolic = %N.patt (constants.%N.patt.45169f.2)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index 6a91c48b2d62..c54a673e30c6 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -20,21 +20,21 @@ fn F() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -61,12 +61,12 @@ fn F() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.var: ref %i32 = var n // CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign %n.var, %.loc12 // CHECK:STDOUT: %n.ref: ref %i32 = name_ref n, %n // CHECK:STDOUT: %addr.loc13_13: %ptr = addr_of %n.ref diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index 8053038d01a7..35f1a3b47be3 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -27,33 +27,33 @@ fn F() { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %struct_type.a.b.1 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %ptr.570: type = ptr_type %struct_type.a.b.3de [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -70,80 +70,80 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %s.var: ref %struct_type.a.b.1 = var s -// CHECK:STDOUT: %s: ref %struct_type.a.b.1 = bind_name s, %s.var -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc12_46.1: %struct_type.a.b.2 = struct_literal (%int_1.loc12, %int_2.loc12) -// CHECK:STDOUT: %impl.elem0.loc12_46.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_46.1: = bound_method %int_1.loc12, %impl.elem0.loc12_46.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc12_46.1: = specific_function %Convert.bound.loc12_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc12_46.1: init %i32 = call %Convert.specific_fn.loc12_46.1(%int_1.loc12) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc12_46.2: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12_46.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %s.var: ref %struct_type.a.b.3de = var s +// CHECK:STDOUT: %s: ref %struct_type.a.b.3de = bind_name s, %s.var +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc12: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc12_46.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc12, %int_2.loc12) +// CHECK:STDOUT: %impl.elem0.loc12_46.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_46.1: = bound_method %int_1.loc12, %impl.elem0.loc12_46.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc12_46.1: = specific_function %Convert.bound.loc12_46.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc12_46.1: init %i32 = call %Convert.specific_fn.loc12_46.1(%int_1.loc12) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc12_46.2: init %i32 = converted %int_1.loc12, %int.convert_checked.loc12_46.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc12_46.3: ref %i32 = struct_access %s.var, element0 -// CHECK:STDOUT: %.loc12_46.4: init %i32 = initialize_from %.loc12_46.2 to %.loc12_46.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc12_46.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12_46.2: = bound_method %int_2.loc12, %impl.elem0.loc12_46.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc12_46.2: = specific_function %Convert.bound.loc12_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc12_46.2: init %i32 = call %Convert.specific_fn.loc12_46.2(%int_2.loc12) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_46.5: init %i32 = converted %int_2.loc12, %int.convert_checked.loc12_46.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc12_46.4: init %i32 = initialize_from %.loc12_46.2 to %.loc12_46.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc12_46.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12_46.2: = bound_method %int_2.loc12, %impl.elem0.loc12_46.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc12_46.2: = specific_function %Convert.bound.loc12_46.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc12_46.2: init %i32 = call %Convert.specific_fn.loc12_46.2(%int_2.loc12) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_46.5: init %i32 = converted %int_2.loc12, %int.convert_checked.loc12_46.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc12_46.6: ref %i32 = struct_access %s.var, element1 -// CHECK:STDOUT: %.loc12_46.7: init %i32 = initialize_from %.loc12_46.5 to %.loc12_46.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_46.8: init %struct_type.a.b.1 = struct_init (%.loc12_46.4, %.loc12_46.7) to %s.var [template = constants.%struct] -// CHECK:STDOUT: %.loc12_47: init %struct_type.a.b.1 = converted %.loc12_46.1, %.loc12_46.8 [template = constants.%struct] +// CHECK:STDOUT: %.loc12_46.7: init %i32 = initialize_from %.loc12_46.5 to %.loc12_46.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc12_46.8: init %struct_type.a.b.3de = struct_init (%.loc12_46.4, %.loc12_46.7) to %s.var [template = constants.%struct] +// CHECK:STDOUT: %.loc12_47: init %struct_type.a.b.3de = converted %.loc12_46.1, %.loc12_46.8 [template = constants.%struct] // CHECK:STDOUT: assign %s.var, %.loc12_47 -// CHECK:STDOUT: %p.var: ref %ptr.1 = var p -// CHECK:STDOUT: %p: ref %ptr.1 = bind_name p, %p.var -// CHECK:STDOUT: %s.ref.loc14: ref %struct_type.a.b.1 = name_ref s, %s -// CHECK:STDOUT: %addr.loc14: %ptr.1 = addr_of %s.ref.loc14 +// CHECK:STDOUT: %p.var: ref %ptr.570 = var p +// CHECK:STDOUT: %p: ref %ptr.570 = bind_name p, %p.var +// CHECK:STDOUT: %s.ref.loc14: ref %struct_type.a.b.3de = name_ref s, %s +// CHECK:STDOUT: %addr.loc14: %ptr.570 = addr_of %s.ref.loc14 // CHECK:STDOUT: assign %p.var, %addr.loc14 -// CHECK:STDOUT: %q.var: ref %ptr.2 = var q -// CHECK:STDOUT: %q: ref %ptr.2 = bind_name q, %q.var -// CHECK:STDOUT: %s.ref.loc15: ref %struct_type.a.b.1 = name_ref s, %s +// CHECK:STDOUT: %q.var: ref %ptr.dc3 = var q +// CHECK:STDOUT: %q: ref %ptr.dc3 = bind_name q, %q.var +// CHECK:STDOUT: %s.ref.loc15: ref %struct_type.a.b.3de = name_ref s, %s // CHECK:STDOUT: %.loc15: ref %i32 = struct_access %s.ref.loc15, element0 -// CHECK:STDOUT: %addr.loc15: %ptr.2 = addr_of %.loc15 +// CHECK:STDOUT: %addr.loc15: %ptr.dc3 = addr_of %.loc15 // CHECK:STDOUT: assign %q.var, %addr.loc15 -// CHECK:STDOUT: %r.var: ref %ptr.2 = var r -// CHECK:STDOUT: %r: ref %ptr.2 = bind_name r, %r.var -// CHECK:STDOUT: %s.ref.loc16: ref %struct_type.a.b.1 = name_ref s, %s +// CHECK:STDOUT: %r.var: ref %ptr.dc3 = var r +// CHECK:STDOUT: %r: ref %ptr.dc3 = bind_name r, %r.var +// CHECK:STDOUT: %s.ref.loc16: ref %struct_type.a.b.3de = name_ref s, %s // CHECK:STDOUT: %.loc16: ref %i32 = struct_access %s.ref.loc16, element1 -// CHECK:STDOUT: %addr.loc16: %ptr.2 = addr_of %.loc16 +// CHECK:STDOUT: %addr.loc16: %ptr.dc3 = addr_of %.loc16 // CHECK:STDOUT: assign %r.var, %addr.loc16 -// CHECK:STDOUT: %t.var: ref %tuple.type.2 = var t -// CHECK:STDOUT: %t: ref %tuple.type.2 = bind_name t, %t.var -// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc18_28.1: %tuple.type.3 = tuple_literal (%int_1.loc18, %int_2.loc18) -// CHECK:STDOUT: %impl.elem0.loc18_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_28.1: = bound_method %int_1.loc18, %impl.elem0.loc18_28.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc18_28.1: = specific_function %Convert.bound.loc18_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc18_28.1: init %i32 = call %Convert.specific_fn.loc18_28.1(%int_1.loc18) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_28.2: init %i32 = converted %int_1.loc18, %int.convert_checked.loc18_28.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %t.var: ref %tuple.type.471 = var t +// CHECK:STDOUT: %t: ref %tuple.type.471 = bind_name t, %t.var +// CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc18: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc18_28.1: %tuple.type.f94 = tuple_literal (%int_1.loc18, %int_2.loc18) +// CHECK:STDOUT: %impl.elem0.loc18_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_28.1: = bound_method %int_1.loc18, %impl.elem0.loc18_28.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc18_28.1: = specific_function %Convert.bound.loc18_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc18_28.1: init %i32 = call %Convert.specific_fn.loc18_28.1(%int_1.loc18) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_28.2: init %i32 = converted %int_1.loc18, %int.convert_checked.loc18_28.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0.loc18: ref %i32 = tuple_access %t.var, element0 -// CHECK:STDOUT: %.loc18_28.3: init %i32 = initialize_from %.loc18_28.2 to %tuple.elem0.loc18 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc18_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_28.2: = bound_method %int_2.loc18, %impl.elem0.loc18_28.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc18_28.2: = specific_function %Convert.bound.loc18_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc18_28.2: init %i32 = call %Convert.specific_fn.loc18_28.2(%int_2.loc18) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_28.4: init %i32 = converted %int_2.loc18, %int.convert_checked.loc18_28.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc18_28.3: init %i32 = initialize_from %.loc18_28.2 to %tuple.elem0.loc18 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc18_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_28.2: = bound_method %int_2.loc18, %impl.elem0.loc18_28.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc18_28.2: = specific_function %Convert.bound.loc18_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc18_28.2: init %i32 = call %Convert.specific_fn.loc18_28.2(%int_2.loc18) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_28.4: init %i32 = converted %int_2.loc18, %int.convert_checked.loc18_28.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem1.loc18: ref %i32 = tuple_access %t.var, element1 -// CHECK:STDOUT: %.loc18_28.5: init %i32 = initialize_from %.loc18_28.4 to %tuple.elem1.loc18 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_28.6: init %tuple.type.2 = tuple_init (%.loc18_28.3, %.loc18_28.5) to %t.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc18_29: init %tuple.type.2 = converted %.loc18_28.1, %.loc18_28.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc18_28.5: init %i32 = initialize_from %.loc18_28.4 to %tuple.elem1.loc18 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_28.6: init %tuple.type.471 = tuple_init (%.loc18_28.3, %.loc18_28.5) to %t.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc18_29: init %tuple.type.471 = converted %.loc18_28.1, %.loc18_28.6 [template = constants.%tuple] // CHECK:STDOUT: assign %t.var, %.loc18_29 -// CHECK:STDOUT: %t0.var: ref %ptr.2 = var t0 -// CHECK:STDOUT: %t0: ref %ptr.2 = bind_name t0, %t0.var -// CHECK:STDOUT: %t.ref.loc19: ref %tuple.type.2 = name_ref t, %t +// CHECK:STDOUT: %t0.var: ref %ptr.dc3 = var t0 +// CHECK:STDOUT: %t0: ref %ptr.dc3 = bind_name t0, %t0.var +// CHECK:STDOUT: %t.ref.loc19: ref %tuple.type.471 = name_ref t, %t // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc19: ref %i32 = tuple_access %t.ref.loc19, element0 -// CHECK:STDOUT: %addr.loc19: %ptr.2 = addr_of %tuple.elem0.loc19 +// CHECK:STDOUT: %addr.loc19: %ptr.dc3 = addr_of %tuple.elem0.loc19 // CHECK:STDOUT: assign %t0.var, %addr.loc19 -// CHECK:STDOUT: %t1.var: ref %ptr.2 = var t1 -// CHECK:STDOUT: %t1: ref %ptr.2 = bind_name t1, %t1.var -// CHECK:STDOUT: %t.ref.loc20: ref %tuple.type.2 = name_ref t, %t -// CHECK:STDOUT: %int_1.loc20: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %t1.var: ref %ptr.dc3 = var t1 +// CHECK:STDOUT: %t1: ref %ptr.dc3 = bind_name t1, %t1.var +// CHECK:STDOUT: %t.ref.loc20: ref %tuple.type.471 = name_ref t, %t +// CHECK:STDOUT: %int_1.loc20: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc20: ref %i32 = tuple_access %t.ref.loc20, element1 -// CHECK:STDOUT: %addr.loc20: %ptr.2 = addr_of %tuple.elem1.loc20 +// CHECK:STDOUT: %addr.loc20: %ptr.dc3 = addr_of %tuple.elem1.loc20 // CHECK:STDOUT: assign %t1.var, %addr.loc20 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/arrow.carbon b/toolchain/check/testdata/pointer/arrow.carbon index 04e9d8d695c3..fdde3b133438 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -30,9 +30,9 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %Member.type: type = fn_type @Member [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Member: %Member.type = struct_value () [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %C [template] -// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %ptr.1 [template] -// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %ptr.1} [template] +// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template] +// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %ptr.019 [template] +// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %ptr.019} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [template] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] @@ -54,15 +54,15 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] { -// CHECK:STDOUT: %ptr.patt: %ptr.1 = binding_pattern ptr -// CHECK:STDOUT: %ptr.param_patt: %ptr.1 = value_param_pattern %ptr.patt, runtime_param0 +// CHECK:STDOUT: %ptr.patt: %ptr.019 = binding_pattern ptr +// CHECK:STDOUT: %ptr.param_patt: %ptr.019 = value_param_pattern %ptr.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %ptr.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16_14 [template = constants.%ptr.1] { +// CHECK:STDOUT: %ptr.param: %ptr.019 = value_param runtime_param0 +// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16_14 [template = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %ptr.loc16_14: type = ptr_type %C [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc16_14: type = ptr_type %C [template = constants.%ptr.019] // CHECK:STDOUT: } -// CHECK:STDOUT: %ptr.loc16_8: %ptr.1 = bind_name ptr, %ptr.param +// CHECK:STDOUT: %ptr.loc16_8: %ptr.019 = bind_name ptr, %ptr.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -87,36 +87,36 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: // CHECK:STDOUT: fn @Member[%self.param_patt: %C](); // CHECK:STDOUT: -// CHECK:STDOUT: fn @Foo(%ptr.param_patt: %ptr.1) { +// CHECK:STDOUT: fn @Foo(%ptr.param_patt: %ptr.019) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %ptr.ref.loc17: %ptr.1 = name_ref ptr, %ptr.loc16_8 +// CHECK:STDOUT: %ptr.ref.loc17: %ptr.019 = name_ref ptr, %ptr.loc16_8 // CHECK:STDOUT: %.loc17_4.1: ref %C = deref %ptr.ref.loc17 // CHECK:STDOUT: %Member.ref.loc17: %Member.type = name_ref Member, @C.%Member.decl [template = constants.%Member] // CHECK:STDOUT: %Member.bound.loc17: = bound_method %.loc17_4.1, %Member.ref.loc17 // CHECK:STDOUT: %.loc17_4.2: %C = bind_value %.loc17_4.1 // CHECK:STDOUT: %Member.call.loc17: init %empty_tuple.type = call %Member.bound.loc17(%.loc17_4.2) -// CHECK:STDOUT: %ptr.ref.loc18: %ptr.1 = name_ref ptr, %ptr.loc16_8 +// CHECK:STDOUT: %ptr.ref.loc18: %ptr.019 = name_ref ptr, %ptr.loc16_8 // CHECK:STDOUT: %.loc18_6.1: ref %C = deref %ptr.ref.loc18 // CHECK:STDOUT: %Member.ref.loc18: %Member.type = name_ref Member, @C.%Member.decl [template = constants.%Member] // CHECK:STDOUT: %Member.bound.loc18: = bound_method %.loc18_6.1, %Member.ref.loc18 // CHECK:STDOUT: %.loc18_6.2: %C = bind_value %.loc18_6.1 // CHECK:STDOUT: %Member.call.loc18: init %empty_tuple.type = call %Member.bound.loc18(%.loc18_6.2) -// CHECK:STDOUT: %ptr.ref.loc20: %ptr.1 = name_ref ptr, %ptr.loc16_8 +// CHECK:STDOUT: %ptr.ref.loc20: %ptr.019 = name_ref ptr, %ptr.loc16_8 // CHECK:STDOUT: %.loc20_4: ref %C = deref %ptr.ref.loc20 // CHECK:STDOUT: %field.ref.loc20: %C.elem = name_ref field, @C.%.loc13 [template = @C.%.loc13] -// CHECK:STDOUT: %.loc20_9: ref %ptr.1 = class_element_access %.loc20_4, element0 -// CHECK:STDOUT: %ptr.ref.loc21: %ptr.1 = name_ref ptr, %ptr.loc16_8 +// CHECK:STDOUT: %.loc20_9: ref %ptr.019 = class_element_access %.loc20_4, element0 +// CHECK:STDOUT: %ptr.ref.loc21: %ptr.019 = name_ref ptr, %ptr.loc16_8 // CHECK:STDOUT: %.loc21_6.1: ref %C = deref %ptr.ref.loc21 // CHECK:STDOUT: %field.ref.loc21: %C.elem = name_ref field, @C.%.loc13 [template = @C.%.loc13] -// CHECK:STDOUT: %.loc21_6.2: ref %ptr.1 = class_element_access %.loc21_6.1, element0 -// CHECK:STDOUT: %ptr.ref.loc23: %ptr.1 = name_ref ptr, %ptr.loc16_8 +// CHECK:STDOUT: %.loc21_6.2: ref %ptr.019 = class_element_access %.loc21_6.1, element0 +// CHECK:STDOUT: %ptr.ref.loc23: %ptr.019 = name_ref ptr, %ptr.loc16_8 // CHECK:STDOUT: %.loc23_6.1: ref %C = deref %ptr.ref.loc23 // CHECK:STDOUT: %field.ref.loc23_6: %C.elem = name_ref field, @C.%.loc13 [template = @C.%.loc13] -// CHECK:STDOUT: %.loc23_6.2: ref %ptr.1 = class_element_access %.loc23_6.1, element0 -// CHECK:STDOUT: %.loc23_6.3: %ptr.1 = bind_value %.loc23_6.2 +// CHECK:STDOUT: %.loc23_6.2: ref %ptr.019 = class_element_access %.loc23_6.1, element0 +// CHECK:STDOUT: %.loc23_6.3: %ptr.019 = bind_value %.loc23_6.2 // CHECK:STDOUT: %.loc23_13.1: ref %C = deref %.loc23_6.3 // CHECK:STDOUT: %field.ref.loc23_13: %C.elem = name_ref field, @C.%.loc13 [template = @C.%.loc13] -// CHECK:STDOUT: %.loc23_13.2: ref %ptr.1 = class_element_access %.loc23_13.1, element0 +// CHECK:STDOUT: %.loc23_13.2: ref %ptr.019 = class_element_access %.loc23_13.1, element0 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index 8c3030552550..0a1420b7d1be 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -22,21 +22,21 @@ fn F() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -63,12 +63,12 @@ fn F() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.var: ref %i32 = var n // CHECK:STDOUT: %n: ref %i32 = bind_name n, %n.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign %n.var, %.loc12 // CHECK:STDOUT: %p.var: ref %ptr = var p // CHECK:STDOUT: %p: ref %ptr = bind_name p, %p.var diff --git a/toolchain/check/testdata/pointer/fail_address_of_value.carbon b/toolchain/check/testdata/pointer/fail_address_of_value.carbon index ef9fad1bb387..62d2c918a810 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_value.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_value.carbon @@ -106,37 +106,37 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] // CHECK:STDOUT: %AddressOfLiteral.type: type = fn_type @AddressOfLiteral [template] // CHECK:STDOUT: %AddressOfLiteral: %AddressOfLiteral.type = struct_value () [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type Core.IntLiteral [template] +// CHECK:STDOUT: %ptr.1d1: type = ptr_type Core.IntLiteral [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type bool [template] +// CHECK:STDOUT: %ptr.bb2: type = ptr_type bool [template] // CHECK:STDOUT: %float: f64 = float_literal 1 [template] -// CHECK:STDOUT: %ptr.3: type = ptr_type f64 [template] -// CHECK:STDOUT: %ptr.4: type = ptr_type String [template] +// CHECK:STDOUT: %ptr.ef1: type = ptr_type f64 [template] +// CHECK:STDOUT: %ptr.a45: type = ptr_type String [template] // CHECK:STDOUT: %str: String = string_literal "Hello" [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %ptr.5: type = ptr_type %tuple.type [template] +// CHECK:STDOUT: %ptr.b50: type = ptr_type %tuple.type [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %ptr.6: type = ptr_type %struct_type.a.2 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %ptr.4e0: type = ptr_type %struct_type.a.a6c [template] // CHECK:STDOUT: %AddressOfOperator.type: type = fn_type @AddressOfOperator [template] // CHECK:STDOUT: %AddressOfOperator: %AddressOfOperator.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] -// CHECK:STDOUT: %ptr.7: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %AddressOfCall.type: type = fn_type @AddressOfCall [template] // CHECK:STDOUT: %AddressOfCall: %AddressOfCall.type = struct_value () [template] // CHECK:STDOUT: %AddressOfType.type: type = fn_type @AddressOfType [template] // CHECK:STDOUT: %AddressOfType: %AddressOfType.type = struct_value () [template] -// CHECK:STDOUT: %ptr.8: type = ptr_type type [template] +// CHECK:STDOUT: %ptr.db7: type = ptr_type type [template] // CHECK:STDOUT: %const: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.9: type = ptr_type %const [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const [template] // CHECK:STDOUT: %AddressOfTupleElementValue.type: type = fn_type @AddressOfTupleElementValue [template] // CHECK:STDOUT: %AddressOfTupleElementValue: %AddressOfTupleElementValue.type = struct_value () [template] // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1, %int_2) [template] @@ -146,7 +146,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -175,14 +175,14 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { -// CHECK:STDOUT: %return.patt: %struct_type.a.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %struct_type.a.1 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %struct_type.a.7cc = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %struct_type.a.7cc = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template = constants.%struct_type.a.1] -// CHECK:STDOUT: %return.param: ref %struct_type.a.1 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %struct_type.a.1 = return_slot %return.param +// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template = constants.%struct_type.a.7cc] +// CHECK:STDOUT: %return.param: ref %struct_type.a.7cc = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %struct_type.a.7cc = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %AddressOfLiteral.decl: %AddressOfLiteral.type = fn_decl @AddressOfLiteral [template = constants.%AddressOfLiteral] {} {} // CHECK:STDOUT: %AddressOfOperator.decl: %AddressOfOperator.type = fn_decl @AddressOfOperator [template = constants.%AddressOfOperator] {} {} @@ -204,25 +204,25 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32; // CHECK:STDOUT: -// CHECK:STDOUT: fn @H() -> %struct_type.a.1; +// CHECK:STDOUT: fn @H() -> %struct_type.a.7cc; // CHECK:STDOUT: // CHECK:STDOUT: fn @AddressOfLiteral() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] -// CHECK:STDOUT: %addr.loc20: %ptr.1 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc20: %ptr.1d1 = addr_of [template = ] // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %addr.loc25: %ptr.2 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc25: %ptr.bb2 = addr_of [template = ] // CHECK:STDOUT: %float: f64 = float_literal 1 [template = constants.%float] -// CHECK:STDOUT: %addr.loc30: %ptr.3 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc30: %ptr.ef1 = addr_of [template = ] // CHECK:STDOUT: %str: String = string_literal "Hello" [template = constants.%str] -// CHECK:STDOUT: %addr.loc35: %ptr.4 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc35: %ptr.a45 = addr_of [template = ] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %.loc40: %tuple.type = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %addr.loc40: %ptr.5 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc40: %ptr.b50 = addr_of [template = ] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5] -// CHECK:STDOUT: %.loc45: %struct_type.a.2 = struct_literal (%int_5) -// CHECK:STDOUT: %addr.loc45: %ptr.6 = addr_of [template = ] +// CHECK:STDOUT: %.loc45: %struct_type.a.a6c = struct_literal (%int_5) +// CHECK:STDOUT: %addr.loc45: %ptr.4e0 = addr_of [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -238,16 +238,16 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: // CHECK:STDOUT: !and.result: // CHECK:STDOUT: %.loc53: bool = block_arg !and.result [template = constants.%false] -// CHECK:STDOUT: %addr.loc53: %ptr.2 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc53: %ptr.bb2 = addr_of [template = ] // CHECK:STDOUT: %H.ref: %H.type = name_ref H, file.%H.decl [template = constants.%H] -// CHECK:STDOUT: %H.call: init %struct_type.a.1 = call %H.ref() -// CHECK:STDOUT: %.loc58_6.1: ref %struct_type.a.1 = temporary_storage -// CHECK:STDOUT: %.loc58_6.2: ref %struct_type.a.1 = temporary %.loc58_6.1, %H.call +// CHECK:STDOUT: %H.call: init %struct_type.a.7cc = call %H.ref() +// CHECK:STDOUT: %.loc58_6.1: ref %struct_type.a.7cc = temporary_storage +// CHECK:STDOUT: %.loc58_6.2: ref %struct_type.a.7cc = temporary %.loc58_6.1, %H.call // CHECK:STDOUT: %.loc58_7: ref %i32 = struct_access %.loc58_6.2, element0 -// CHECK:STDOUT: %addr.loc58: %ptr.7 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc58: %ptr.dc3 = addr_of [template = ] // CHECK:STDOUT: %true.loc63: bool = bool_literal true [template = constants.%true] // CHECK:STDOUT: %.loc63: bool = not %true.loc63 [template = constants.%false] -// CHECK:STDOUT: %addr.loc63: %ptr.2 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc63: %ptr.bb2 = addr_of [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -255,7 +255,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G] // CHECK:STDOUT: %G.call: init %i32 = call %G.ref() -// CHECK:STDOUT: %addr: %ptr.7 = addr_of [template = ] +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -263,12 +263,12 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_32.loc79: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc79: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %addr.loc79: %ptr.8 = addr_of [template = ] +// CHECK:STDOUT: %addr.loc79: %ptr.db7 = addr_of [template = ] // CHECK:STDOUT: %int_32.loc84: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc84: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const: type = const_type %i32 [template = constants.%const] -// CHECK:STDOUT: %ptr: type = ptr_type %const [template = constants.%ptr.9] -// CHECK:STDOUT: %addr.loc84: %ptr.8 = addr_of [template = ] +// CHECK:STDOUT: %ptr: type = ptr_type %const [template = constants.%ptr.719] +// CHECK:STDOUT: %addr.loc84: %ptr.db7 = addr_of [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -281,16 +281,16 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%int_1, %int_2) [template = constants.%tuple] // CHECK:STDOUT: %.loc92_10.2: %tuple.type = converted %.loc92_10.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: %tuple.elem0: Core.IntLiteral = tuple_access %.loc92_10.2, element0 [template = constants.%int_1] -// CHECK:STDOUT: %addr: %ptr.1 = addr_of [template = ] +// CHECK:STDOUT: %addr: %ptr.1d1 = addr_of [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AddressOfParam(%param.param_patt: %i32) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %param_addr.var: ref %ptr.7 = var param_addr -// CHECK:STDOUT: %param_addr: ref %ptr.7 = bind_name param_addr, %param_addr.var +// CHECK:STDOUT: %param_addr.var: ref %ptr.dc3 = var param_addr +// CHECK:STDOUT: %param_addr: ref %ptr.dc3 = bind_name param_addr, %param_addr.var // CHECK:STDOUT: %param.ref: %i32 = name_ref param, %param -// CHECK:STDOUT: %addr: %ptr.7 = addr_of [template = ] +// CHECK:STDOUT: %addr: %ptr.dc3 = addr_of [template = ] // CHECK:STDOUT: assign %param_addr.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_deref_error.carbon b/toolchain/check/testdata/pointer/fail_deref_error.carbon index 51b40e66aa84..6c18a036baaf 100644 --- a/toolchain/check/testdata/pointer/fail_deref_error.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_error.carbon @@ -27,7 +27,7 @@ let n2: i32 = undeclared->foo; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon index a3ed1a193a9e..677967a9e83f 100644 --- a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon @@ -55,7 +55,7 @@ fn Deref(n: i32) { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_deref_type.carbon b/toolchain/check/testdata/pointer/fail_deref_type.carbon index 85f431b0af84..ee24a3c9fabc 100644 --- a/toolchain/check/testdata/pointer/fail_deref_type.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_type.carbon @@ -28,7 +28,7 @@ var p2: i32->foo; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon index 7526c805e070..cdd696590764 100644 --- a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon @@ -22,17 +22,17 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %const.1: type = const_type %empty_struct_type [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %empty_struct_type [template] -// CHECK:STDOUT: %const.2: type = const_type %ptr.2 [template] +// CHECK:STDOUT: %const.c48: type = const_type %empty_struct_type [template] +// CHECK:STDOUT: %ptr.bf9: type = ptr_type %const.c48 [template] +// CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [template] +// CHECK:STDOUT: %const.987: type = const_type %ptr.c28 [template] // CHECK:STDOUT: %ConstMismatch.type: type = fn_type @ConstMismatch [template] // CHECK:STDOUT: %ConstMismatch: %ConstMismatch.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -45,32 +45,32 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %ConstMismatch.decl: %ConstMismatch.type = fn_decl @ConstMismatch [template = constants.%ConstMismatch] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %const.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %const.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.bf9 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.bf9 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %const.987 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %const.987 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %.loc11_43: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc11_44: type = converted %.loc11_43, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %ptr.loc11_44: type = ptr_type %empty_struct_type [template = constants.%ptr.2] -// CHECK:STDOUT: %const.loc11_35: type = const_type %ptr.2 [template = constants.%const.2] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc11_29: type = splice_block %ptr.loc11_29 [template = constants.%ptr.1] { +// CHECK:STDOUT: %ptr.loc11_44: type = ptr_type %empty_struct_type [template = constants.%ptr.c28] +// CHECK:STDOUT: %const.loc11_35: type = const_type %ptr.c28 [template = constants.%const.987] +// CHECK:STDOUT: %p.param: %ptr.bf9 = value_param runtime_param0 +// CHECK:STDOUT: %.loc11_29: type = splice_block %ptr.loc11_29 [template = constants.%ptr.bf9] { // CHECK:STDOUT: %.loc11_28: %empty_struct_type = struct_literal () // CHECK:STDOUT: %.loc11_21: type = converted %.loc11_28, constants.%empty_struct_type [template = constants.%empty_struct_type] -// CHECK:STDOUT: %const.loc11_21: type = const_type %empty_struct_type [template = constants.%const.1] -// CHECK:STDOUT: %ptr.loc11_29: type = ptr_type %const.1 [template = constants.%ptr.1] +// CHECK:STDOUT: %const.loc11_21: type = const_type %empty_struct_type [template = constants.%const.c48] +// CHECK:STDOUT: %ptr.loc11_29: type = ptr_type %const.c48 [template = constants.%ptr.bf9] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %const.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %const.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.bf9 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %const.987 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %const.987 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConstMismatch(%p.param_patt: %ptr.1) -> %const.2 { +// CHECK:STDOUT: fn @ConstMismatch(%p.param_patt: %ptr.bf9) -> %const.987 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p -// CHECK:STDOUT: %.loc18: %const.2 = converted %p.ref, [template = ] +// CHECK:STDOUT: %p.ref: %ptr.bf9 = name_ref p, %p +// CHECK:STDOUT: %.loc18: %const.987 = converted %p.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/import.carbon b/toolchain/check/testdata/pointer/import.carbon index f9faf4706146..1961af21fdd1 100644 --- a/toolchain/check/testdata/pointer/import.carbon +++ b/toolchain/check/testdata/pointer/import.carbon @@ -26,21 +26,21 @@ var a: i32* = a_ref; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -61,12 +61,12 @@ var a: i32* = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%a_orig.var, %.loc4 // CHECK:STDOUT: %a_orig.ref: ref %i32 = name_ref a_orig, file.%a_orig // CHECK:STDOUT: %addr: %ptr = addr_of %a_orig.ref @@ -83,10 +83,10 @@ var a: i32* = a_ref; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, a_orig, unloaded -// CHECK:STDOUT: %import_ref.2: ref %ptr = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %import_ref.ae6 = import_ref Implicit//default, a_orig, unloaded +// CHECK:STDOUT: %import_ref.b22: ref %ptr = import_ref Implicit//default, a_ref, loaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.250 +// CHECK:STDOUT: .Int = %import_ref.d69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -94,8 +94,8 @@ var a: i32* = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_orig = imports.%import_ref.1 -// CHECK:STDOUT: .a_ref = imports.%import_ref.2 +// CHECK:STDOUT: .a_orig = imports.%import_ref.ae6 +// CHECK:STDOUT: .a_ref = imports.%import_ref.b22 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: } @@ -108,7 +108,7 @@ var a: i32* = a_ref; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %ptr = name_ref a_ref, imports.%import_ref.2 +// CHECK:STDOUT: %a_ref.ref: ref %ptr = name_ref a_ref, imports.%import_ref.b22 // CHECK:STDOUT: %.loc4: %ptr = bind_value %a_ref.ref // CHECK:STDOUT: assign file.%a.var, %.loc4 // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/pointer/nested_const.carbon b/toolchain/check/testdata/pointer/nested_const.carbon index a76b1e3d43bf..e7037615045d 100644 --- a/toolchain/check/testdata/pointer/nested_const.carbon +++ b/toolchain/check/testdata/pointer/nested_const.carbon @@ -18,18 +18,18 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %const.1: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %const.1 [template] -// CHECK:STDOUT: %const.2: type = const_type %ptr.1 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %const.2 [template] -// CHECK:STDOUT: %const.3: type = const_type %ptr.2 [template] +// CHECK:STDOUT: %const.105: type = const_type %i32 [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const.105 [template] +// CHECK:STDOUT: %const.5f0: type = const_type %ptr.719 [template] +// CHECK:STDOUT: %ptr.fa4: type = ptr_type %const.5f0 [template] +// CHECK:STDOUT: %const.297: type = const_type %ptr.fa4 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -42,37 +42,37 @@ 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 [template = constants.%F] { -// CHECK:STDOUT: %p.patt: %const.3 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %const.3 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %const.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %const.1 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %const.297 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %const.297 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %const.105 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %const.105 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc12_47: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_47: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %const.loc12_41: type = const_type %i32 [template = constants.%const.1] -// CHECK:STDOUT: %p.param: %const.3 = value_param runtime_param0 -// CHECK:STDOUT: %.loc12: type = splice_block %const.loc12_9 [template = constants.%const.3] { +// CHECK:STDOUT: %const.loc12_41: type = const_type %i32 [template = constants.%const.105] +// CHECK:STDOUT: %p.param: %const.297 = value_param runtime_param0 +// CHECK:STDOUT: %.loc12: type = splice_block %const.loc12_9 [template = constants.%const.297] { // CHECK:STDOUT: %int_32.loc12_29: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_29: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %const.loc12_23: type = const_type %i32 [template = constants.%const.1] -// CHECK:STDOUT: %ptr.loc12_32: type = ptr_type %const.1 [template = constants.%ptr.1] -// CHECK:STDOUT: %const.loc12_16: type = const_type %ptr.1 [template = constants.%const.2] -// CHECK:STDOUT: %ptr.loc12_34: type = ptr_type %const.2 [template = constants.%ptr.2] -// CHECK:STDOUT: %const.loc12_9: type = const_type %ptr.2 [template = constants.%const.3] +// CHECK:STDOUT: %const.loc12_23: type = const_type %i32 [template = constants.%const.105] +// CHECK:STDOUT: %ptr.loc12_32: type = ptr_type %const.105 [template = constants.%ptr.719] +// CHECK:STDOUT: %const.loc12_16: type = const_type %ptr.719 [template = constants.%const.5f0] +// CHECK:STDOUT: %ptr.loc12_34: type = ptr_type %const.5f0 [template = constants.%ptr.fa4] +// CHECK:STDOUT: %const.loc12_9: type = const_type %ptr.fa4 [template = constants.%const.297] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %const.3 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %const.1 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %const.1 = return_slot %return.param +// CHECK:STDOUT: %p: %const.297 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %const.105 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %const.105 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%p.param_patt: %const.3) -> %const.1 { +// CHECK:STDOUT: fn @F(%p.param_patt: %const.297) -> %const.105 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %const.3 = name_ref p, %p -// CHECK:STDOUT: %.loc13_11.1: ref %const.2 = deref %p.ref -// CHECK:STDOUT: %.loc13_11.2: %const.2 = bind_value %.loc13_11.1 -// CHECK:STDOUT: %.loc13_10.1: ref %const.1 = deref %.loc13_11.2 -// CHECK:STDOUT: %.loc13_10.2: %const.1 = bind_value %.loc13_10.1 +// CHECK:STDOUT: %p.ref: %const.297 = name_ref p, %p +// CHECK:STDOUT: %.loc13_11.1: ref %const.5f0 = deref %p.ref +// CHECK:STDOUT: %.loc13_11.2: %const.5f0 = bind_value %.loc13_11.1 +// CHECK:STDOUT: %.loc13_10.1: ref %const.105 = deref %.loc13_11.2 +// CHECK:STDOUT: %.loc13_10.2: %const.105 = bind_value %.loc13_10.1 // CHECK:STDOUT: return %.loc13_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/types.carbon b/toolchain/check/testdata/pointer/types.carbon index 2a1757100e39..9cf8f8a68659 100644 --- a/toolchain/check/testdata/pointer/types.carbon +++ b/toolchain/check/testdata/pointer/types.carbon @@ -21,18 +21,18 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %ptr.1: type = ptr_type %i32 [template] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] // CHECK:STDOUT: %Ptr.type: type = fn_type @Ptr [template] // CHECK:STDOUT: %Ptr: %Ptr.type = struct_value () [template] // CHECK:STDOUT: %const: type = const_type %i32 [template] -// CHECK:STDOUT: %ptr.2: type = ptr_type %const [template] +// CHECK:STDOUT: %ptr.719: type = ptr_type %const [template] // CHECK:STDOUT: %ConstPtr.type: type = fn_type @ConstPtr [template] // CHECK:STDOUT: %ConstPtr: %ConstPtr.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -46,56 +46,56 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Ptr.decl: %Ptr.type = fn_decl @Ptr [template = constants.%Ptr] { -// CHECK:STDOUT: %p.patt: %ptr.1 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.1 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.1 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.dc3 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.dc3 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.dc3 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.dc3 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_20: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_20: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc11_23: type = ptr_type %i32 [template = constants.%ptr.1] -// CHECK:STDOUT: %p.param: %ptr.1 = value_param runtime_param0 -// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_14 [template = constants.%ptr.1] { +// CHECK:STDOUT: %ptr.loc11_23: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %p.param: %ptr.dc3 = value_param runtime_param0 +// CHECK:STDOUT: %.loc11: type = splice_block %ptr.loc11_14 [template = constants.%ptr.dc3] { // CHECK:STDOUT: %int_32.loc11_11: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_11: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr.loc11_14: type = ptr_type %i32 [template = constants.%ptr.1] +// CHECK:STDOUT: %ptr.loc11_14: type = ptr_type %i32 [template = constants.%ptr.dc3] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.1 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.1 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.1 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.dc3 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.dc3 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.dc3 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %ConstPtr.decl: %ConstPtr.type = fn_decl @ConstPtr [template = constants.%ConstPtr] { -// CHECK:STDOUT: %p.patt: %ptr.2 = binding_pattern p -// CHECK:STDOUT: %p.param_patt: %ptr.2 = value_param_pattern %p.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %ptr.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %ptr.2 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %p.patt: %ptr.719 = binding_pattern p +// CHECK:STDOUT: %p.param_patt: %ptr.719 = value_param_pattern %p.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %ptr.719 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %ptr.719 = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc15_38: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_38: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const.loc15_32: type = const_type %i32 [template = constants.%const] -// CHECK:STDOUT: %ptr.loc15_42: type = ptr_type %const [template = constants.%ptr.2] -// CHECK:STDOUT: %p.param: %ptr.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_25 [template = constants.%ptr.2] { +// CHECK:STDOUT: %ptr.loc15_42: type = ptr_type %const [template = constants.%ptr.719] +// CHECK:STDOUT: %p.param: %ptr.719 = value_param runtime_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_25 [template = constants.%ptr.719] { // CHECK:STDOUT: %int_32.loc15_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc15_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %const.loc15_16: type = const_type %i32 [template = constants.%const] -// CHECK:STDOUT: %ptr.loc15_25: type = ptr_type %const [template = constants.%ptr.2] +// CHECK:STDOUT: %ptr.loc15_25: type = ptr_type %const [template = constants.%ptr.719] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.2 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.2 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %ptr.2 = return_slot %return.param +// CHECK:STDOUT: %p: %ptr.719 = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref %ptr.719 = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %ptr.719 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Ptr(%p.param_patt: %ptr.1) -> %ptr.1 { +// CHECK:STDOUT: fn @Ptr(%p.param_patt: %ptr.dc3) -> %ptr.dc3 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.1 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.dc3 = name_ref p, %p // CHECK:STDOUT: return %p.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @ConstPtr(%p.param_patt: %ptr.2) -> %ptr.2 { +// CHECK:STDOUT: fn @ConstPtr(%p.param_patt: %ptr.719) -> %ptr.719 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.2 = name_ref p, %p +// CHECK:STDOUT: %p.ref: %ptr.719 = name_ref p, %p // CHECK:STDOUT: return %p.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/code_after_return.carbon b/toolchain/check/testdata/return/code_after_return.carbon index c169dce60d07..7f36587da456 100644 --- a/toolchain/check/testdata/return/code_after_return.carbon +++ b/toolchain/check/testdata/return/code_after_return.carbon @@ -22,8 +22,8 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index b1f99ead09af..cc15e4d3983f 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -29,21 +29,21 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -77,13 +77,13 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%b.param_patt: bool) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc12_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_call_in_type.carbon b/toolchain/check/testdata/return/fail_call_in_type.carbon index abc736d56629..15fbc6ef7e3e 100644 --- a/toolchain/check/testdata/return/fail_call_in_type.carbon +++ b/toolchain/check/testdata/return/fail_call_in_type.carbon @@ -30,7 +30,7 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_missing_return.carbon b/toolchain/check/testdata/return/fail_missing_return.carbon index 83552186e35b..6bbfbb1e187d 100644 --- a/toolchain/check/testdata/return/fail_missing_return.carbon +++ b/toolchain/check/testdata/return/fail_missing_return.carbon @@ -25,7 +25,7 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon index ec099bb066e7..8e46b1f31467 100644 --- a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon @@ -26,7 +26,7 @@ fn Procedure() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 55a8f25ddfc9..38640aaf8891 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -39,36 +39,36 @@ fn G() -> C { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -105,7 +105,7 @@ fn G() -> C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc23_16: %C.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc23_28: %C.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -118,37 +118,37 @@ fn G() -> C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign %v.var, %.loc12 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c: ref %C = bind_name c, %return -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc25_38.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc25_38.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc25_38.1: = bound_method %int_1, %impl.elem0.loc25_38.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc25_38.1: = specific_function %Convert.bound.loc25_38.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc25_38.1: init %i32 = call %Convert.specific_fn.loc25_38.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc25_38.2: init %i32 = converted %int_1, %int.convert_checked.loc25_38.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc25_38.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc25_38.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc25_38.1: = bound_method %int_1, %impl.elem0.loc25_38.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc25_38.1: = specific_function %Convert.bound.loc25_38.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc25_38.1: init %i32 = call %Convert.specific_fn.loc25_38.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc25_38.2: init %i32 = converted %int_1, %int.convert_checked.loc25_38.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc25_38.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc25_38.4: init %i32 = initialize_from %.loc25_38.2 to %.loc25_38.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc25_38.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc25_38.2: = bound_method %int_2, %impl.elem0.loc25_38.2 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc25_38.2: = specific_function %Convert.bound.loc25_38.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc25_38.2: init %i32 = call %Convert.specific_fn.loc25_38.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc25_38.5: init %i32 = converted %int_2, %int.convert_checked.loc25_38.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc25_38.4: init %i32 = initialize_from %.loc25_38.2 to %.loc25_38.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc25_38.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc25_38.2: = bound_method %int_2, %impl.elem0.loc25_38.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc25_38.2: = specific_function %Convert.bound.loc25_38.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc25_38.2: init %i32 = call %Convert.specific_fn.loc25_38.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc25_38.5: init %i32 = converted %int_2, %int.convert_checked.loc25_38.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc25_38.6: ref %i32 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc25_38.7: init %i32 = initialize_from %.loc25_38.5 to %.loc25_38.6 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc25_38.7: init %i32 = initialize_from %.loc25_38.5 to %.loc25_38.6 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc25_38.8: init %C = class_init (%.loc25_38.4, %.loc25_38.7), %return [template = constants.%C.val] // CHECK:STDOUT: %.loc25_39: init %C = converted %.loc25_38.1, %.loc25_38.8 [template = constants.%C.val] // CHECK:STDOUT: assign %return, %.loc25_39 diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index 61cb4555e715..91a7982d3b9f 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -47,26 +47,26 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: %SameScope.type: type = fn_type @SameScope [template] // CHECK:STDOUT: %SameScope: %SameScope.type = struct_value () [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %DifferentScopes.type: type = fn_type @DifferentScopes [template] // CHECK:STDOUT: %DifferentScopes: %DifferentScopes.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -107,32 +107,32 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: !if.then: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13: init %i32 = converted %int_0.loc13, %int.convert_checked.loc13 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13: init %i32 = converted %int_0.loc13, %int.convert_checked.loc13 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %v.var, %.loc13 // CHECK:STDOUT: %w.var: ref %i32 = var w // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_1, %impl.elem0.loc21 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc21: init %i32 = converted %int_1, %int.convert_checked.loc21 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc21: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc21: = bound_method %int_1, %impl.elem0.loc21 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc21: = specific_function %Convert.bound.loc21, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %Convert.specific_fn.loc21(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc21: init %i32 = converted %int_1, %int.convert_checked.loc21 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %w.var, %.loc21 // CHECK:STDOUT: br !if.else // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_0.loc23: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_0.loc23, %impl.elem0.loc23 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_0.loc23) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc23_11.1: %i32 = value_of_initializer %int.convert_checked.loc23 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc23_11.2: %i32 = converted %int_0.loc23, %.loc23_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc23: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_0.loc23, %impl.elem0.loc23 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_0.loc23) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc23_11.1: %i32 = value_of_initializer %int.convert_checked.loc23 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc23_11.2: %i32 = converted %int_0.loc23, %.loc23_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc23_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -144,12 +144,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: !if.then.loc27: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc28: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc28: = bound_method %int_0.loc28, %impl.elem0.loc28 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc28: = specific_function %Convert.bound.loc28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc28: init %i32 = call %Convert.specific_fn.loc28(%int_0.loc28) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc28: init %i32 = converted %int_0.loc28, %int.convert_checked.loc28 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc28: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc28: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc28: = bound_method %int_0.loc28, %impl.elem0.loc28 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc28: = specific_function %Convert.bound.loc28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc28: init %i32 = call %Convert.specific_fn.loc28(%int_0.loc28) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc28: init %i32 = converted %int_0.loc28, %int.convert_checked.loc28 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %v.var, %.loc28 // CHECK:STDOUT: %true.loc29: bool = bool_literal true [template = constants.%true] // CHECK:STDOUT: if %true.loc29 br !if.then.loc29 else br !if.else.loc29 @@ -157,12 +157,12 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: !if.then.loc29: // CHECK:STDOUT: %w.var: ref %i32 = var w // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc36: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc36: = bound_method %int_1, %impl.elem0.loc36 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc36: = specific_function %Convert.bound.loc36, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc36: init %i32 = call %Convert.specific_fn.loc36(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc36: init %i32 = converted %int_1, %int.convert_checked.loc36 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc36: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc36: = bound_method %int_1, %impl.elem0.loc36 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc36: = specific_function %Convert.bound.loc36, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc36: init %i32 = call %Convert.specific_fn.loc36(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc36: init %i32 = converted %int_1, %int.convert_checked.loc36 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %w.var, %.loc36 // CHECK:STDOUT: br !if.else.loc29 // CHECK:STDOUT: @@ -170,13 +170,13 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: br !if.else.loc27 // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc27: -// CHECK:STDOUT: %int_0.loc39: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc39: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc39: = bound_method %int_0.loc39, %impl.elem0.loc39 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc39: = specific_function %Convert.bound.loc39, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc39: init %i32 = call %Convert.specific_fn.loc39(%int_0.loc39) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc39_11.1: %i32 = value_of_initializer %int.convert_checked.loc39 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc39_11.2: %i32 = converted %int_0.loc39, %.loc39_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc39: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc39: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc39: = bound_method %int_0.loc39, %impl.elem0.loc39 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc39: = specific_function %Convert.bound.loc39, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc39: init %i32 = call %Convert.specific_fn.loc39(%int_0.loc39) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc39_11.1: %i32 = value_of_initializer %int.convert_checked.loc39 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc39_11.2: %i32 = converted %int_0.loc39, %.loc39_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc39_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_type.carbon b/toolchain/check/testdata/return/fail_returned_var_type.carbon index 2cace038a360..f85468899cc9 100644 --- a/toolchain/check/testdata/return/fail_returned_var_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_type.carbon @@ -31,8 +31,8 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Float = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Float = %import_ref.20b // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_type_mismatch.carbon b/toolchain/check/testdata/return/fail_type_mismatch.carbon index 18290c361ebb..c577b57810f6 100644 --- a/toolchain/check/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/return/fail_type_mismatch.carbon @@ -30,8 +30,8 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_value_missing.carbon b/toolchain/check/testdata/return/fail_value_missing.carbon index 8ef3a7fdd502..2873c7006bf2 100644 --- a/toolchain/check/testdata/return/fail_value_missing.carbon +++ b/toolchain/check/testdata/return/fail_value_missing.carbon @@ -29,7 +29,7 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_var_in_type.carbon b/toolchain/check/testdata/return/fail_var_in_type.carbon index f3017ae0bf27..c2b7aff6b468 100644 --- a/toolchain/check/testdata/return/fail_var_in_type.carbon +++ b/toolchain/check/testdata/return/fail_var_in_type.carbon @@ -26,7 +26,7 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon b/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon index 2d32fa8c95b7..8e316e16e54e 100644 --- a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +++ b/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon @@ -71,26 +71,26 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.1 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.96f: type = generic_interface_type @ImplicitAs [template] +// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.96f = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.type.a1f: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] +// CHECK:STDOUT: %Self: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.1: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Convert.assoc_type.1 = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] +// CHECK:STDOUT: %Convert.type.b11: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %Convert.639: %Convert.type.b11 = struct_value () [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.4d8: type = assoc_entity_type %ImplicitAs.type.a1f, %Convert.type.b11 [symbolic] +// CHECK:STDOUT: %assoc0.39c: %Convert.assoc_type.4d8 = assoc_entity element0, @ImplicitAs.%Convert.decl [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.2: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Convert.assoc_type.2 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] +// CHECK:STDOUT: %ImplicitAs.type.982: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.c1f: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.338: %Convert.type.c1f = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.918: type = assoc_entity_type %ImplicitAs.type.982, %Convert.type.c1f [template] +// CHECK:STDOUT: %assoc0.e51: %Convert.assoc_type.918 = assoc_entity element0, @ImplicitAs.%Convert.decl [template] // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2 [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2 = facet_value Core.IntLiteral, %impl_witness [symbolic] +// CHECK:STDOUT: %Convert.type.928: type = fn_type @Convert.2 [template] +// CHECK:STDOUT: %Convert.4e2: %Convert.type.928 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.a1f = facet_value Core.IntLiteral, %impl_witness [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -123,7 +123,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param: ref type = out_param runtime_param1 // CHECK:STDOUT: %return: ref type = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %ImplicitAs.decl: %ImplicitAs.type.1 = interface_decl @ImplicitAs [template = constants.%ImplicitAs.generic] { +// CHECK:STDOUT: %ImplicitAs.decl: %ImplicitAs.type.96f = interface_decl @ImplicitAs [template = constants.%ImplicitAs.generic] { // CHECK:STDOUT: %T.patt.loc8_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_22.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_22.1, runtime_param [symbolic = %T.patt.loc8_22.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -135,12 +135,12 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral] // CHECK:STDOUT: %.loc12_17.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral] // CHECK:STDOUT: %.loc12_17.2: type = converted %int_literal.make_type, %.loc12_17.1 [template = Core.IntLiteral] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.96f = name_ref ImplicitAs, file.%ImplicitAs.decl [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %int.make_type_signed: init type = call constants.%Int(%int_32) [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc12_36.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin] // CHECK:STDOUT: %.loc12_36.2: type = converted %int.make_type_signed, %.loc12_36.1 [template = constants.%i32.builtin] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [template = constants.%ImplicitAs.type.3] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%i32.builtin)> [template = constants.%ImplicitAs.type.982] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Convert.decl) [template = constants.%impl_witness] // CHECK:STDOUT: } @@ -150,16 +150,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt.loc8_22.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_22.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc8_22.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self.2: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T.loc8_22.2) [symbolic = %Convert.type (constants.%Convert.type.1)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc9_32.2: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc9_32.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T.loc8_22.2)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.a1f)] +// CHECK:STDOUT: %Self.2: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T.loc8_22.2) [symbolic = %Convert.type (constants.%Convert.type.b11)] +// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.b11) = struct_value () [symbolic = %Convert (constants.%Convert.639)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f), @ImplicitAs.%Convert.type (%Convert.type.b11) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.4d8)] +// CHECK:STDOUT: %assoc0.loc9_32.2: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.4d8) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc9_32.2 (constants.%assoc0.39c)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type.1) = fn_decl @Convert.1 [symbolic = @ImplicitAs.%Convert (constants.%Convert.1)] { +// CHECK:STDOUT: %Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Convert.decl: @ImplicitAs.%Convert.type (%Convert.type.b11) = fn_decl @Convert.1 [symbolic = @ImplicitAs.%Convert (constants.%Convert.639)] { // CHECK:STDOUT: %self.patt: @Convert.1.%Self.as_type.loc9_20.1 (%Self.as_type) = binding_pattern self // CHECK:STDOUT: %self.param_patt: @Convert.1.%Self.as_type.loc9_20.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: @Convert.1.%T (%T) = return_slot_pattern @@ -168,8 +168,8 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.ref: type = name_ref T, @ImplicitAs.%T.loc8_22.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %self.param: @Convert.1.%Self.as_type.loc9_20.1 (%Self.as_type) = value_param runtime_param0 // CHECK:STDOUT: %.loc9_20.1: type = splice_block %.loc9_20.3 [symbolic = %Self.as_type.loc9_20.1 (constants.%Self.as_type)] { -// CHECK:STDOUT: %.loc9_20.2: @Convert.1.%ImplicitAs.type (%ImplicitAs.type.2) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.ref: @Convert.1.%ImplicitAs.type (%ImplicitAs.type.2) = name_ref Self, %.loc9_20.2 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %.loc9_20.2: @Convert.1.%ImplicitAs.type (%ImplicitAs.type.a1f) = specific_constant @ImplicitAs.%Self.1, @ImplicitAs(constants.%T) [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Self.ref: @Convert.1.%ImplicitAs.type (%ImplicitAs.type.a1f) = name_ref Self, %.loc9_20.2 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc9_20.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc9_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: %.loc9_20.3: type = converted %Self.ref, %Self.as_type.loc9_20.2 [symbolic = %Self.as_type.loc9_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: } @@ -177,7 +177,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param: ref @Convert.1.%T (%T) = out_param runtime_param1 // CHECK:STDOUT: %return: ref @Convert.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %assoc0.loc9_32.1: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc9_32.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc9_32.1: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.4d8) = assoc_entity element0, %Convert.decl [symbolic = %assoc0.loc9_32.2 (constants.%assoc0.39c)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -187,7 +187,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl: %.loc12_17.2 as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.3 = fn_decl @Convert.2 [template = constants.%Convert.3] { +// CHECK:STDOUT: %Convert.decl: %Convert.type.928 = fn_decl @Convert.2 [template = constants.%Convert.4e2] { // CHECK:STDOUT: %self.patt: Core.IntLiteral = binding_pattern self // CHECK:STDOUT: %self.param_patt: Core.IntLiteral = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %i32.builtin = return_slot_pattern @@ -213,10 +213,10 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(@ImplicitAs.%T.loc8_22.1: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2)) { +// CHECK:STDOUT: generic fn @Convert.1(@ImplicitAs.%T.loc8_22.1: type, @ImplicitAs.%Self.1: @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.a1f)) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.a1f)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.a1f = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type.loc9_20.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc9_20.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type.loc9_20.1 (%Self.as_type)]() -> @Convert.1.%T (%T); @@ -231,7 +231,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a1f // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type.loc9_20.1 => constants.%Self.as_type // CHECK:STDOUT: } @@ -245,17 +245,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt.loc8_22.2 => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.982 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2 -// CHECK:STDOUT: %Convert => constants.%Convert.2 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.2 -// CHECK:STDOUT: %assoc0.loc9_32.2 => constants.%assoc0.2 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.c1f +// CHECK:STDOUT: %Convert => constants.%Convert.338 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.918 +// CHECK:STDOUT: %assoc0.loc9_32.2 => constants.%assoc0.e51 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Convert.1(constants.%i32.builtin, constants.%ImplicitAs.facet) { // CHECK:STDOUT: %T => constants.%i32.builtin -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.982 // CHECK:STDOUT: %Self => constants.%ImplicitAs.facet // CHECK:STDOUT: %Self.as_type.loc9_20.1 => Core.IntLiteral // CHECK:STDOUT: } @@ -271,122 +271,122 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %N.patt: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%N) [symbolic] +// CHECK:STDOUT: %C.892: type = class_type @C, @C(%N) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %i32.builtin [template] -// CHECK:STDOUT: %struct_type.n.m.1: type = struct_type {.n: %i32.builtin, .m: %i32.builtin} [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %struct_type.n.m.1 [template] +// CHECK:STDOUT: %struct_type.n.m.566: type = struct_type {.n: %i32.builtin, .m: %i32.builtin} [template] +// CHECK:STDOUT: %complete_type.682: = complete_type_witness %struct_type.n.m.566 [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %struct_type.n.m.2: type = struct_type {.n: Core.IntLiteral, .m: Core.IntLiteral} [template] -// CHECK:STDOUT: %ImplicitAs.type.1: type = generic_interface_type @ImplicitAs [template] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.1 = struct_value () [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %struct_type.n.m.819: type = struct_type {.n: Core.IntLiteral, .m: Core.IntLiteral} [template] +// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [template] +// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.d33: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Convert.type.608: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %Convert.de6: %Convert.type.608 = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.1: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.6 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.2: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Convert.assoc_type.2 = assoc_entity element0, imports.%import_ref.6 [template] -// CHECK:STDOUT: %assoc0.3: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.7 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (imports.%import_ref.11) [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2 [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.3 [template] -// CHECK:STDOUT: %int_0.2: %i32.builtin = int_value 0 [template] -// CHECK:STDOUT: %D.val: %D = struct_value (%int_0.2, %int_0.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%int_0.2) [template] -// CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [template] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.1, @ImplicitAs(%D) [template] -// CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.3: type = assoc_entity_type %ImplicitAs.type.4, %Convert.type.4 [template] -// CHECK:STDOUT: %assoc0.4: %Convert.assoc_type.3 = assoc_entity element0, imports.%import_ref.6 [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (@impl.2.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.1: %ImplicitAs.type.2 = facet_value %C.2, %impl_witness.2 [symbolic] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.3 [template] -// CHECK:STDOUT: %int_1.2: %i32.builtin = int_value 1 [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%int_1.2) [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (@impl.3.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.4 [template] -// CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.2: %ImplicitAs.type.2 = facet_value %C.3, %impl_witness.3 [symbolic] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.3 [template] -// CHECK:STDOUT: %int_2.2: %i32.builtin = int_value 2 [template] -// CHECK:STDOUT: %C.4: type = class_type @C, @C(%int_2.2) [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (@impl.4.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.5 [template] -// CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.3: %ImplicitAs.type.2 = facet_value %C.4, %impl_witness.4 [symbolic] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.1, %Convert.3 [template] -// CHECK:STDOUT: %int_3.2: %i32.builtin = int_value 3 [template] -// CHECK:STDOUT: %C.5: type = class_type @C, @C(%int_3.2) [template] -// CHECK:STDOUT: %impl_witness.5: = impl_witness (@impl.5.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.6 [template] -// CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.4: %ImplicitAs.type.2 = facet_value %C.5, %impl_witness.5 [symbolic] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_4.1, %Convert.3 [template] -// CHECK:STDOUT: %int_4.2: %i32.builtin = int_value 4 [template] -// CHECK:STDOUT: %C.6: type = class_type @C, @C(%int_4.2) [template] -// CHECK:STDOUT: %impl_witness.6: = impl_witness (@impl.6.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.7 [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.5: %ImplicitAs.type.2 = facet_value %C.6, %impl_witness.6 [symbolic] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.bound.6: = bound_method %int_5.1, %Convert.3 [template] -// CHECK:STDOUT: %int_5.2: %i32.builtin = int_value 5 [template] -// CHECK:STDOUT: %C.7: type = class_type @C, @C(%int_5.2) [template] -// CHECK:STDOUT: %impl_witness.7: = impl_witness (@impl.7.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.8 [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.6: %ImplicitAs.type.2 = facet_value %C.7, %impl_witness.7 [symbolic] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %Convert.bound.7: = bound_method %int_6.1, %Convert.3 [template] -// CHECK:STDOUT: %int_6.2: %i32.builtin = int_value 6 [template] -// CHECK:STDOUT: %C.8: type = class_type @C, @C(%int_6.2) [template] -// CHECK:STDOUT: %impl_witness.8: = impl_witness (@impl.8.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.9 [template] -// CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.7: %ImplicitAs.type.2 = facet_value %C.8, %impl_witness.8 [symbolic] -// CHECK:STDOUT: %int_7.1: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %Convert.bound.8: = bound_method %int_7.1, %Convert.3 [template] -// CHECK:STDOUT: %int_7.2: %i32.builtin = int_value 7 [template] -// CHECK:STDOUT: %C.9: type = class_type @C, @C(%int_7.2) [template] -// CHECK:STDOUT: %impl_witness.9: = impl_witness (@impl.9.%Convert.decl) [template] -// CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.10 [template] -// CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.facet.8: %ImplicitAs.type.2 = facet_value %C.9, %impl_witness.9 [symbolic] +// CHECK:STDOUT: %Convert.assoc_type.407: type = assoc_entity_type %ImplicitAs.type.d33, %Convert.type.608 [symbolic] +// CHECK:STDOUT: %assoc0.317cac.1: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.51b: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.2a0: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.756: %Convert.type.2a0 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.f84: type = assoc_entity_type %ImplicitAs.type.51b, %Convert.type.2a0 [template] +// CHECK:STDOUT: %assoc0.695: %Convert.assoc_type.f84 = assoc_entity element0, imports.%import_ref.dbaf9d.1 [template] +// CHECK:STDOUT: %assoc0.317cac.2: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.2 [symbolic] +// CHECK:STDOUT: %impl_witness.25b: = impl_witness (imports.%import_ref.02a) [template] +// CHECK:STDOUT: %Convert.type.c8d: type = fn_type @Convert.2 [template] +// CHECK:STDOUT: %Convert.718: %Convert.type.c8d = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.59c: = bound_method %int_0.5c6, %Convert.718 [template] +// CHECK:STDOUT: %int_0.a54: %i32.builtin = int_value 0 [template] +// CHECK:STDOUT: %D.val: %D = struct_value (%int_0.a54, %int_0.a54) [template] +// CHECK:STDOUT: %C.564: type = class_type @C, @C(%int_0.a54) [template] +// CHECK:STDOUT: %ImplicitAs.type.a26: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [template] +// CHECK:STDOUT: %Convert.type.85a: type = fn_type @Convert.1, @ImplicitAs(%D) [template] +// CHECK:STDOUT: %Convert.b4e: %Convert.type.85a = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.b3b: type = assoc_entity_type %ImplicitAs.type.a26, %Convert.type.85a [template] +// CHECK:STDOUT: %assoc0.794: %Convert.assoc_type.b3b = assoc_entity element0, imports.%import_ref.dbaf9d.1 [template] +// CHECK:STDOUT: %impl_witness.a18: = impl_witness (@impl.2.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.efe: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.b29: %Convert.type.efe = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.5d7: %ImplicitAs.type.d33 = facet_value %C.564, %impl_witness.a18 [symbolic] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.5fe: = bound_method %int_1.5b8, %Convert.718 [template] +// CHECK:STDOUT: %int_1.f38: %i32.builtin = int_value 1 [template] +// CHECK:STDOUT: %C.cad: type = class_type @C, @C(%int_1.f38) [template] +// CHECK:STDOUT: %impl_witness.d26: = impl_witness (@impl.3.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.621: type = fn_type @Convert.4 [template] +// CHECK:STDOUT: %Convert.0d5: %Convert.type.621 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.4f9: %ImplicitAs.type.d33 = facet_value %C.cad, %impl_witness.d26 [symbolic] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.a80: = bound_method %int_2.ecc, %Convert.718 [template] +// CHECK:STDOUT: %int_2.5a1: %i32.builtin = int_value 2 [template] +// CHECK:STDOUT: %C.75f: type = class_type @C, @C(%int_2.5a1) [template] +// CHECK:STDOUT: %impl_witness.de1: = impl_witness (@impl.4.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.dca: type = fn_type @Convert.5 [template] +// CHECK:STDOUT: %Convert.4ba: %Convert.type.dca = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.0b5: %ImplicitAs.type.d33 = facet_value %C.75f, %impl_witness.de1 [symbolic] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.227: = bound_method %int_3.1ba, %Convert.718 [template] +// CHECK:STDOUT: %int_3.a0f: %i32.builtin = int_value 3 [template] +// CHECK:STDOUT: %C.dea: type = class_type @C, @C(%int_3.a0f) [template] +// CHECK:STDOUT: %impl_witness.fa4: = impl_witness (@impl.5.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.381: type = fn_type @Convert.6 [template] +// CHECK:STDOUT: %Convert.b7d: %Convert.type.381 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.fa7: %ImplicitAs.type.d33 = facet_value %C.dea, %impl_witness.fa4 [symbolic] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.503: = bound_method %int_4.0c1, %Convert.718 [template] +// CHECK:STDOUT: %int_4.4f1: %i32.builtin = int_value 4 [template] +// CHECK:STDOUT: %C.71c: type = class_type @C, @C(%int_4.4f1) [template] +// CHECK:STDOUT: %impl_witness.f49: = impl_witness (@impl.6.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.b2a: type = fn_type @Convert.7 [template] +// CHECK:STDOUT: %Convert.7ca: %Convert.type.b2a = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.061: %ImplicitAs.type.d33 = facet_value %C.71c, %impl_witness.f49 [symbolic] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.bound.2c9: = bound_method %int_5.64b, %Convert.718 [template] +// CHECK:STDOUT: %int_5.967: %i32.builtin = int_value 5 [template] +// CHECK:STDOUT: %C.a07: type = class_type @C, @C(%int_5.967) [template] +// CHECK:STDOUT: %impl_witness.578: = impl_witness (@impl.7.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.915: type = fn_type @Convert.8 [template] +// CHECK:STDOUT: %Convert.d49: %Convert.type.915 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.6a1: %ImplicitAs.type.d33 = facet_value %C.a07, %impl_witness.578 [symbolic] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %Convert.bound.d98: = bound_method %int_6.462, %Convert.718 [template] +// CHECK:STDOUT: %int_6.ec5: %i32.builtin = int_value 6 [template] +// CHECK:STDOUT: %C.109: type = class_type @C, @C(%int_6.ec5) [template] +// CHECK:STDOUT: %impl_witness.a28: = impl_witness (@impl.8.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.25a: type = fn_type @Convert.9 [template] +// CHECK:STDOUT: %Convert.f02: %Convert.type.25a = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.5b2: %ImplicitAs.type.d33 = facet_value %C.109, %impl_witness.a28 [symbolic] +// CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [template] +// CHECK:STDOUT: %Convert.bound.e27: = bound_method %int_7.29f, %Convert.718 [template] +// CHECK:STDOUT: %int_7.6ae: %i32.builtin = int_value 7 [template] +// CHECK:STDOUT: %C.d04: type = class_type @C, @C(%int_7.6ae) [template] +// CHECK:STDOUT: %impl_witness.ac7: = impl_witness (@impl.9.%Convert.decl) [template] +// CHECK:STDOUT: %Convert.type.9e5: type = fn_type @Convert.10 [template] +// CHECK:STDOUT: %Convert.f0d: %Convert.type.9e5 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.facet.21d: %ImplicitAs.type.d33 = facet_value %C.d04, %impl_witness.ac7 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.2 +// CHECK:STDOUT: .Int = %import_ref.71a +// CHECK:STDOUT: .ImplicitAs = %import_ref.7f1 // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: %ImplicitAs.type.1 = import_ref Core//default, ImplicitAs, loaded [template = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %import_ref.3 = import_ref Core//default, inst49 [no loc], unloaded -// CHECK:STDOUT: %import_ref.4: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.5: @ImplicitAs.%Convert.type (%Convert.type.1) = import_ref Core//default, Convert, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.1)] -// CHECK:STDOUT: %import_ref.6 = import_ref Core//default, loc9_32, unloaded -// CHECK:STDOUT: %import_ref.8: = import_ref Core//default, loc12_38, loaded [template = constants.%impl_witness.1] -// CHECK:STDOUT: %import_ref.9: type = import_ref Core//default, loc12_17, loaded [template = Core.IntLiteral] -// CHECK:STDOUT: %import_ref.10: type = import_ref Core//default, loc12_36, loaded [template = constants.%ImplicitAs.type.3] +// CHECK:STDOUT: %import_ref.7f1: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %import_ref.01e = import_ref Core//default, inst49 [no loc], unloaded +// CHECK:STDOUT: %import_ref.86d: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.317cac.2)] +// CHECK:STDOUT: %import_ref.6c2: @ImplicitAs.%Convert.type (%Convert.type.608) = import_ref Core//default, Convert, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.de6)] +// CHECK:STDOUT: %import_ref.dbaf9d.1 = import_ref Core//default, loc9_32, unloaded +// CHECK:STDOUT: %import_ref.4ae: = import_ref Core//default, loc12_38, loaded [template = constants.%impl_witness.25b] +// CHECK:STDOUT: %import_ref.afb: type = import_ref Core//default, loc12_17, loaded [template = Core.IntLiteral] +// CHECK:STDOUT: %import_ref.d93: type = import_ref Core//default, loc12_36, loaded [template = constants.%ImplicitAs.type.51b] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -421,124 +421,124 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: impl_decl @impl.2 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc10_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc10_9.2: %i32.builtin = converted %int_0, %.loc10_9.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_0.2) [template = constants.%C.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.59c] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_0) [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc10_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc10_9.2: %i32.builtin = converted %int_0, %.loc10_9.1 [template = constants.%int_0.a54] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_0.a54) [template = constants.%C.564] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc10: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.2] +// CHECK:STDOUT: %impl_witness.loc10: = impl_witness (@impl.2.%Convert.decl) [template = constants.%impl_witness.a18] // CHECK:STDOUT: impl_decl @impl.3 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_9.2: %i32.builtin = converted %int_1, %.loc11_9.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1.2) [template = constants.%C.3] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound.5fe] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_1) [template = constants.%int_1.f38] +// CHECK:STDOUT: %.loc11_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_1.f38] +// CHECK:STDOUT: %.loc11_9.2: %i32.builtin = converted %int_1, %.loc11_9.1 [template = constants.%int_1.f38] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_1.f38) [template = constants.%C.cad] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (@impl.3.%Convert.decl) [template = constants.%impl_witness.3] +// CHECK:STDOUT: %impl_witness.loc11: = impl_witness (@impl.3.%Convert.decl) [template = constants.%impl_witness.d26] // CHECK:STDOUT: impl_decl @impl.4 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc12_9.2: %i32.builtin = converted %int_2, %.loc12_9.1 [template = constants.%int_2.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_2.2) [template = constants.%C.4] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound.a80] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_2) [template = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc12_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc12_9.2: %i32.builtin = converted %int_2, %.loc12_9.1 [template = constants.%int_2.5a1] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_2.5a1) [template = constants.%C.75f] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (@impl.4.%Convert.decl) [template = constants.%impl_witness.4] +// CHECK:STDOUT: %impl_witness.loc12: = impl_witness (@impl.4.%Convert.decl) [template = constants.%impl_witness.de1] // CHECK:STDOUT: impl_decl @impl.5 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc13_9.2: %i32.builtin = converted %int_3, %.loc13_9.1 [template = constants.%int_3.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_3.2) [template = constants.%C.5] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound.227] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_3) [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc13_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc13_9.2: %i32.builtin = converted %int_3, %.loc13_9.1 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_3.a0f) [template = constants.%C.dea] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.5.%Convert.decl) [template = constants.%impl_witness.5] +// CHECK:STDOUT: %impl_witness.loc13: = impl_witness (@impl.5.%Convert.decl) [template = constants.%impl_witness.fa4] // CHECK:STDOUT: impl_decl @impl.6 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc14_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc14_9.2: %i32.builtin = converted %int_4, %.loc14_9.1 [template = constants.%int_4.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_4.2) [template = constants.%C.6] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound.503] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_4) [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc14_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc14_9.2: %i32.builtin = converted %int_4, %.loc14_9.1 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_4.4f1) [template = constants.%C.71c] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (@impl.6.%Convert.decl) [template = constants.%impl_witness.6] +// CHECK:STDOUT: %impl_witness.loc14: = impl_witness (@impl.6.%Convert.decl) [template = constants.%impl_witness.f49] // CHECK:STDOUT: impl_decl @impl.7 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_5) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc15_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc15_9.2: %i32.builtin = converted %int_5, %.loc15_9.1 [template = constants.%int_5.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_5.2) [template = constants.%C.7] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5, %impl.elem0 [template = constants.%Convert.bound.2c9] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_5) [template = constants.%int_5.967] +// CHECK:STDOUT: %.loc15_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_5.967] +// CHECK:STDOUT: %.loc15_9.2: %i32.builtin = converted %int_5, %.loc15_9.1 [template = constants.%int_5.967] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_5.967) [template = constants.%C.a07] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.7.%Convert.decl) [template = constants.%impl_witness.7] +// CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.7.%Convert.decl) [template = constants.%impl_witness.578] // CHECK:STDOUT: impl_decl @impl.8 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_6, %impl.elem0 [template = constants.%Convert.bound.7] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc16_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc16_9.2: %i32.builtin = converted %int_6, %.loc16_9.1 [template = constants.%int_6.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_6.2) [template = constants.%C.8] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_6, %impl.elem0 [template = constants.%Convert.bound.d98] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_6) [template = constants.%int_6.ec5] +// CHECK:STDOUT: %.loc16_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_6.ec5] +// CHECK:STDOUT: %.loc16_9.2: %i32.builtin = converted %int_6, %.loc16_9.1 [template = constants.%int_6.ec5] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_6.ec5) [template = constants.%C.109] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.8.%Convert.decl) [template = constants.%impl_witness.8] +// CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.8.%Convert.decl) [template = constants.%impl_witness.a28] // CHECK:STDOUT: impl_decl @impl.9 [template] {} { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_7, %impl.elem0 [template = constants.%Convert.bound.8] -// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_7) [template = constants.%int_7.2] -// CHECK:STDOUT: %.loc17_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_7.2] -// CHECK:STDOUT: %.loc17_9.2: %i32.builtin = converted %int_7, %.loc17_9.1 [template = constants.%int_7.2] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_7.2) [template = constants.%C.9] +// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] +// CHECK:STDOUT: %impl.elem0: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_7, %impl.elem0 [template = constants.%Convert.bound.e27] +// CHECK:STDOUT: %int.convert_checked: init %i32.builtin = call %Convert.bound(%int_7) [template = constants.%int_7.6ae] +// CHECK:STDOUT: %.loc17_9.1: %i32.builtin = value_of_initializer %int.convert_checked [template = constants.%int_7.6ae] +// CHECK:STDOUT: %.loc17_9.2: %i32.builtin = converted %int_7, %.loc17_9.1 [template = constants.%int_7.6ae] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%int_7.6ae) [template = constants.%C.d04] // CHECK:STDOUT: %Core.ref: = name_ref Core, imports.%Core [template = imports.%Core] -// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.1 = name_ref ImplicitAs, imports.%import_ref.2 [template = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%import_ref.7f1 [template = constants.%ImplicitAs.generic] // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.4] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%D)> [template = constants.%ImplicitAs.type.a26] // CHECK:STDOUT: } -// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.9.%Convert.decl) [template = constants.%impl_witness.9] +// CHECK:STDOUT: %impl_witness.loc17: = impl_witness (@impl.9.%Convert.decl) [template = constants.%impl_witness.ac7] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic interface @ImplicitAs(constants.%T: type) [from "core.carbon"] { @@ -546,37 +546,37 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.1)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, imports.%import_ref.6 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.608)] +// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.608) = struct_value () [symbolic = %Convert (constants.%Convert.de6)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d33), @ImplicitAs.%Convert.type (%Convert.type.608) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.407)] +// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic = %assoc0 (constants.%assoc0.317cac.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.3 -// CHECK:STDOUT: .Convert = imports.%import_ref.4 -// CHECK:STDOUT: witness = (imports.%import_ref.5) +// CHECK:STDOUT: .Self = imports.%import_ref.01e +// CHECK:STDOUT: .Convert = imports.%import_ref.86d +// CHECK:STDOUT: witness = (imports.%import_ref.6c2) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.9 as imports.%import_ref.10 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.afb as imports.%import_ref.d93 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.8 +// CHECK:STDOUT: witness = imports.%import_ref.4ae // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.2: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.5 = fn_decl @Convert.3 [template = constants.%Convert.5] { -// CHECK:STDOUT: %self.patt: %C.2 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.2 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.efe = fn_decl @Convert.3 [template = constants.%Convert.b29] { +// CHECK:STDOUT: %self.patt: %C.564 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.564 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.2 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.2.%C [template = constants.%C.2] -// CHECK:STDOUT: %self: %C.2 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.564 = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.2.%C [template = constants.%C.564] +// CHECK:STDOUT: %self: %C.564 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -587,16 +587,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.3: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.6 = fn_decl @Convert.4 [template = constants.%Convert.6] { -// CHECK:STDOUT: %self.patt: %C.3 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.3 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.621 = fn_decl @Convert.4 [template = constants.%Convert.0d5] { +// CHECK:STDOUT: %self.patt: %C.cad = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.cad = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.3 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.3.%C [template = constants.%C.3] -// CHECK:STDOUT: %self: %C.3 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.cad = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.3.%C [template = constants.%C.cad] +// CHECK:STDOUT: %self: %C.cad = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -607,16 +607,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.4: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.7 = fn_decl @Convert.5 [template = constants.%Convert.7] { -// CHECK:STDOUT: %self.patt: %C.4 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.4 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.dca = fn_decl @Convert.5 [template = constants.%Convert.4ba] { +// CHECK:STDOUT: %self.patt: %C.75f = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.75f = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.4 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.4.%C [template = constants.%C.4] -// CHECK:STDOUT: %self: %C.4 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.75f = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.4.%C [template = constants.%C.75f] +// CHECK:STDOUT: %self: %C.75f = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -627,16 +627,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.5: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.8 = fn_decl @Convert.6 [template = constants.%Convert.8] { -// CHECK:STDOUT: %self.patt: %C.5 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.5 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.381 = fn_decl @Convert.6 [template = constants.%Convert.b7d] { +// CHECK:STDOUT: %self.patt: %C.dea = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.dea = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.5 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.5.%C [template = constants.%C.5] -// CHECK:STDOUT: %self: %C.5 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.dea = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.5.%C [template = constants.%C.dea] +// CHECK:STDOUT: %self: %C.dea = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -647,16 +647,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.6: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.9 = fn_decl @Convert.7 [template = constants.%Convert.9] { -// CHECK:STDOUT: %self.patt: %C.6 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.6 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.b2a = fn_decl @Convert.7 [template = constants.%Convert.7ca] { +// CHECK:STDOUT: %self.patt: %C.71c = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.71c = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.6 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.6.%C [template = constants.%C.6] -// CHECK:STDOUT: %self: %C.6 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.71c = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.6.%C [template = constants.%C.71c] +// CHECK:STDOUT: %self: %C.71c = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -667,16 +667,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.7: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.10 = fn_decl @Convert.8 [template = constants.%Convert.10] { -// CHECK:STDOUT: %self.patt: %C.7 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.7 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.915 = fn_decl @Convert.8 [template = constants.%Convert.d49] { +// CHECK:STDOUT: %self.patt: %C.a07 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.a07 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.7 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.7.%C [template = constants.%C.7] -// CHECK:STDOUT: %self: %C.7 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.a07 = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.7.%C [template = constants.%C.a07] +// CHECK:STDOUT: %self: %C.a07 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -687,16 +687,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.8: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.11 = fn_decl @Convert.9 [template = constants.%Convert.11] { -// CHECK:STDOUT: %self.patt: %C.8 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.8 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.25a = fn_decl @Convert.9 [template = constants.%Convert.f02] { +// CHECK:STDOUT: %self.patt: %C.109 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.109 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.8 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.8.%C [template = constants.%C.8] -// CHECK:STDOUT: %self: %C.8 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.109 = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.8.%C [template = constants.%C.109] +// CHECK:STDOUT: %self: %C.109 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -707,16 +707,16 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl @impl.9: %C as %ImplicitAs.type { -// CHECK:STDOUT: %Convert.decl: %Convert.type.12 = fn_decl @Convert.10 [template = constants.%Convert.12] { -// CHECK:STDOUT: %self.patt: %C.9 = binding_pattern self -// CHECK:STDOUT: %self.param_patt: %C.9 = value_param_pattern %self.patt, runtime_param0 +// CHECK:STDOUT: %Convert.decl: %Convert.type.9e5 = fn_decl @Convert.10 [template = constants.%Convert.f0d] { +// CHECK:STDOUT: %self.patt: %C.d04 = binding_pattern self +// CHECK:STDOUT: %self.param_patt: %C.d04 = value_param_pattern %self.patt, runtime_param0 // CHECK:STDOUT: %return.patt: %D = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D] -// CHECK:STDOUT: %self.param: %C.9 = value_param runtime_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.9.%C [template = constants.%C.9] -// CHECK:STDOUT: %self: %C.9 = bind_name self, %self.param +// CHECK:STDOUT: %self.param: %C.d04 = value_param runtime_param0 +// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.9.%C [template = constants.%C.d04] +// CHECK:STDOUT: %self: %C.d04 = bind_name self, %self.param // CHECK:STDOUT: %return.param: ref %D = out_param runtime_param1 // CHECK:STDOUT: %return: ref %D = return_slot %return.param // CHECK:STDOUT: } @@ -733,10 +733,10 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.1] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.892 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -744,7 +744,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %.loc7_16: %D.elem = field_decl n, element0 [template] // CHECK:STDOUT: %.loc7_28: %D.elem = field_decl m, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.m.1 [template = constants.%complete_type.2] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.m.566 [template = constants.%complete_type.682] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D @@ -757,30 +757,30 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0.loc8_31: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %int_0.loc8_39: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc8_40.1: %struct_type.n.m.2 = struct_literal (%int_0.loc8_31, %int_0.loc8_39) -// CHECK:STDOUT: %impl.elem0.loc8_40.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc8_40.1: = bound_method %int_0.loc8_31, %impl.elem0.loc8_40.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %int.convert_checked.loc8_40.1: init %i32.builtin = call %Convert.bound.loc8_40.1(%int_0.loc8_31) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_40.2: init %i32.builtin = converted %int_0.loc8_31, %int.convert_checked.loc8_40.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc8_31: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %int_0.loc8_39: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc8_40.1: %struct_type.n.m.819 = struct_literal (%int_0.loc8_31, %int_0.loc8_39) +// CHECK:STDOUT: %impl.elem0.loc8_40.1: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc8_40.1: = bound_method %int_0.loc8_31, %impl.elem0.loc8_40.1 [template = constants.%Convert.bound.59c] +// CHECK:STDOUT: %int.convert_checked.loc8_40.1: init %i32.builtin = call %Convert.bound.loc8_40.1(%int_0.loc8_31) [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc8_40.2: init %i32.builtin = converted %int_0.loc8_31, %int.convert_checked.loc8_40.1 [template = constants.%int_0.a54] // CHECK:STDOUT: %.loc8_40.3: ref %i32.builtin = class_element_access %return, element0 -// CHECK:STDOUT: %.loc8_40.4: init %i32.builtin = initialize_from %.loc8_40.2 to %.loc8_40.3 [template = constants.%int_0.2] -// CHECK:STDOUT: %impl.elem0.loc8_40.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc8_40.2: = bound_method %int_0.loc8_39, %impl.elem0.loc8_40.2 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %int.convert_checked.loc8_40.2: init %i32.builtin = call %Convert.bound.loc8_40.2(%int_0.loc8_39) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_40.5: init %i32.builtin = converted %int_0.loc8_39, %int.convert_checked.loc8_40.2 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc8_40.4: init %i32.builtin = initialize_from %.loc8_40.2 to %.loc8_40.3 [template = constants.%int_0.a54] +// CHECK:STDOUT: %impl.elem0.loc8_40.2: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc8_40.2: = bound_method %int_0.loc8_39, %impl.elem0.loc8_40.2 [template = constants.%Convert.bound.59c] +// CHECK:STDOUT: %int.convert_checked.loc8_40.2: init %i32.builtin = call %Convert.bound.loc8_40.2(%int_0.loc8_39) [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc8_40.5: init %i32.builtin = converted %int_0.loc8_39, %int.convert_checked.loc8_40.2 [template = constants.%int_0.a54] // CHECK:STDOUT: %.loc8_40.6: ref %i32.builtin = class_element_access %return, element1 -// CHECK:STDOUT: %.loc8_40.7: init %i32.builtin = initialize_from %.loc8_40.5 to %.loc8_40.6 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc8_40.7: init %i32.builtin = initialize_from %.loc8_40.5 to %.loc8_40.6 [template = constants.%int_0.a54] // CHECK:STDOUT: %.loc8_40.8: init %D = class_init (%.loc8_40.4, %.loc8_40.7), %return [template = constants.%D.val] // CHECK:STDOUT: %.loc8_41: init %D = converted %.loc8_40.1, %.loc8_40.8 [template = constants.%D.val] // CHECK:STDOUT: return %.loc8_41 to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self: %ImplicitAs.type.2) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self: %ImplicitAs.type.d33) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type (%Self.as_type)]() -> @Convert.1.%T (%T); @@ -788,7 +788,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: Core.IntLiteral]() -> %i32.builtin = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.3[%self.param_patt: %C.2]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.3[%self.param_patt: %C.564]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc10: ref %D = splice_block %return {} @@ -796,7 +796,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.4[%self.param_patt: %C.3]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.4[%self.param_patt: %C.cad]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc11: ref %D = splice_block %return {} @@ -804,7 +804,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.5[%self.param_patt: %C.4]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.5[%self.param_patt: %C.75f]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc12: ref %D = splice_block %return {} @@ -812,7 +812,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.6[%self.param_patt: %C.5]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.6[%self.param_patt: %C.dea]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc13: ref %D = splice_block %return {} @@ -820,7 +820,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.7[%self.param_patt: %C.6]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.7[%self.param_patt: %C.71c]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc14: ref %D = splice_block %return {} @@ -828,7 +828,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.8[%self.param_patt: %C.7]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.8[%self.param_patt: %C.a07]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc15: ref %D = splice_block %return {} @@ -836,7 +836,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.9[%self.param_patt: %C.8]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.9[%self.param_patt: %C.109]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc16: ref %D = splice_block %return {} @@ -844,7 +844,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.10[%self.param_patt: %C.9]() -> %return.param_patt: %D { +// CHECK:STDOUT: fn @Convert.10[%self.param_patt: %C.d04]() -> %return.param_patt: %D { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make] // CHECK:STDOUT: %.loc17: ref %D = splice_block %return {} @@ -868,7 +868,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d33 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: } @@ -878,17 +878,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.51b // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2 -// CHECK:STDOUT: %Convert => constants.%Convert.2 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2a0 +// CHECK:STDOUT: %Convert => constants.%Convert.756 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.f84 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.695 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_0.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_0.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_0.2 +// CHECK:STDOUT: specific @C(constants.%int_0.a54) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_0.a54 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_0.a54 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -898,117 +898,117 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt => constants.%D // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.4 -// CHECK:STDOUT: %Convert => constants.%Convert.4 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.4 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.85a +// CHECK:STDOUT: %Convert => constants.%Convert.b4e +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.b3b +// CHECK:STDOUT: %assoc0 => constants.%assoc0.794 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.1) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.5d7) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.1 -// CHECK:STDOUT: %Self.as_type => constants.%C.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.5d7 +// CHECK:STDOUT: %Self.as_type => constants.%C.564 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_1.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_1.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_1.2 +// CHECK:STDOUT: specific @C(constants.%int_1.f38) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_1.f38 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_1.f38 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.2) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.4f9) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.2 -// CHECK:STDOUT: %Self.as_type => constants.%C.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.4f9 +// CHECK:STDOUT: %Self.as_type => constants.%C.cad // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_2.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_2.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_2.2 +// CHECK:STDOUT: specific @C(constants.%int_2.5a1) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_2.5a1 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_2.5a1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.3) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.0b5) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.3 -// CHECK:STDOUT: %Self.as_type => constants.%C.4 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.0b5 +// CHECK:STDOUT: %Self.as_type => constants.%C.75f // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_3.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_3.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_3.2 +// CHECK:STDOUT: specific @C(constants.%int_3.a0f) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_3.a0f +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_3.a0f // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.4) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.fa7) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.4 -// CHECK:STDOUT: %Self.as_type => constants.%C.5 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.fa7 +// CHECK:STDOUT: %Self.as_type => constants.%C.dea // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_4.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_4.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_4.2 +// CHECK:STDOUT: specific @C(constants.%int_4.4f1) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_4.4f1 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_4.4f1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.5) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.061) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.5 -// CHECK:STDOUT: %Self.as_type => constants.%C.6 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.061 +// CHECK:STDOUT: %Self.as_type => constants.%C.71c // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_5.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_5.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_5.2 +// CHECK:STDOUT: specific @C(constants.%int_5.967) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_5.967 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_5.967 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.6) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.6a1) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.6 -// CHECK:STDOUT: %Self.as_type => constants.%C.7 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.6a1 +// CHECK:STDOUT: %Self.as_type => constants.%C.a07 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_6.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_6.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_6.2 +// CHECK:STDOUT: specific @C(constants.%int_6.ec5) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_6.ec5 +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_6.ec5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.7) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.5b2) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.7 -// CHECK:STDOUT: %Self.as_type => constants.%C.8 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.5b2 +// CHECK:STDOUT: %Self.as_type => constants.%C.109 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_7.2) { -// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_7.2 -// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_7.2 +// CHECK:STDOUT: specific @C(constants.%int_7.6ae) { +// CHECK:STDOUT: %N.loc6_9.2 => constants.%int_7.6ae +// CHECK:STDOUT: %N.patt.loc6_9.2 => constants.%int_7.6ae // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.8) { +// CHECK:STDOUT: specific @Convert.1(constants.%D, constants.%ImplicitAs.facet.21d) { // CHECK:STDOUT: %T => constants.%D -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 -// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.8 -// CHECK:STDOUT: %Self.as_type => constants.%C.9 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.a26 +// CHECK:STDOUT: %Self => constants.%ImplicitAs.facet.21d +// CHECK:STDOUT: %Self.as_type => constants.%C.d04 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- user.carbon @@ -1020,159 +1020,159 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %struct_type.n.m: type = struct_type {.n: %i32.builtin, .m: %i32.builtin} [template] -// CHECK:STDOUT: %complete_type.1: = complete_type_witness %struct_type.n.m [template] +// CHECK:STDOUT: %complete_type.682: = complete_type_witness %struct_type.n.m [template] // CHECK:STDOUT: %F0.type: type = fn_type @F0 [template] // CHECK:STDOUT: %F0: %F0.type = struct_value () [template] // CHECK:STDOUT: %false: bool = bool_literal false [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %N: %i32.builtin = bind_symbolic_name N, 0 [symbolic] // CHECK:STDOUT: %N.patt: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.2: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.d33: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.1: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] -// CHECK:STDOUT: %Convert.1: %Convert.type.1 = struct_value () [symbolic] +// CHECK:STDOUT: %Convert.type.608: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic] +// CHECK:STDOUT: %Convert.de6: %Convert.type.608 = struct_value () [symbolic] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic] -// CHECK:STDOUT: %Convert.assoc_type.1: type = assoc_entity_type %ImplicitAs.type.2, %Convert.type.1 [symbolic] -// CHECK:STDOUT: %assoc0.1: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.14 [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.3: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] -// CHECK:STDOUT: %Convert.2: %Convert.type.2 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.2: type = assoc_entity_type %ImplicitAs.type.3, %Convert.type.2 [template] -// CHECK:STDOUT: %assoc0.2: %Convert.assoc_type.2 = assoc_entity element0, imports.%import_ref.14 [template] -// CHECK:STDOUT: %assoc0.3: %Convert.assoc_type.1 = assoc_entity element0, imports.%import_ref.15 [symbolic] -// CHECK:STDOUT: %impl_witness.1: = impl_witness (imports.%import_ref.19) [template] -// CHECK:STDOUT: %Convert.type.3: type = fn_type @Convert.2 [template] -// CHECK:STDOUT: %Convert.3: %Convert.type.3 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.3 [template] -// CHECK:STDOUT: %int_0.2: %i32.builtin = int_value 0 [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%int_0.2) [template] -// CHECK:STDOUT: %C.val.1: %C.2 = struct_value () [template] -// CHECK:STDOUT: %ImplicitAs.type.4: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [template] -// CHECK:STDOUT: %Convert.type.4: type = fn_type @Convert.1, @ImplicitAs(%D) [template] -// CHECK:STDOUT: %Convert.4: %Convert.type.4 = struct_value () [template] -// CHECK:STDOUT: %Convert.assoc_type.3: type = assoc_entity_type %ImplicitAs.type.4, %Convert.type.4 [template] -// CHECK:STDOUT: %assoc0.4: %Convert.assoc_type.3 = assoc_entity element0, imports.%import_ref.14 [template] -// CHECK:STDOUT: %int_1.1: %i32.builtin = int_value 1 [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%int_1.1) [template] -// CHECK:STDOUT: %int_2.1: %i32.builtin = int_value 2 [template] -// CHECK:STDOUT: %C.4: type = class_type @C, @C(%int_2.1) [template] -// CHECK:STDOUT: %int_3.1: %i32.builtin = int_value 3 [template] -// CHECK:STDOUT: %C.5: type = class_type @C, @C(%int_3.1) [template] -// CHECK:STDOUT: %int_4.1: %i32.builtin = int_value 4 [template] -// CHECK:STDOUT: %C.6: type = class_type @C, @C(%int_4.1) [template] -// CHECK:STDOUT: %int_5.1: %i32.builtin = int_value 5 [template] -// CHECK:STDOUT: %C.7: type = class_type @C, @C(%int_5.1) [template] -// CHECK:STDOUT: %int_6.1: %i32.builtin = int_value 6 [template] -// CHECK:STDOUT: %C.8: type = class_type @C, @C(%int_6.1) [template] -// CHECK:STDOUT: %int_7.1: %i32.builtin = int_value 7 [template] -// CHECK:STDOUT: %C.9: type = class_type @C, @C(%int_7.1) [template] -// CHECK:STDOUT: %impl_witness.2: = impl_witness (imports.%import_ref.44) [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.3 [template] -// CHECK:STDOUT: %Convert.5: %Convert.type.5 = struct_value () [template] -// CHECK:STDOUT: %int_1.2: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.2: %C.3 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.3: = impl_witness (imports.%import_ref.45) [template] -// CHECK:STDOUT: %Convert.type.6: type = fn_type @Convert.4 [template] -// CHECK:STDOUT: %Convert.6: %Convert.type.6 = struct_value () [template] -// CHECK:STDOUT: %int_2.2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.3: %C.4 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.4: = impl_witness (imports.%import_ref.46) [template] -// CHECK:STDOUT: %Convert.type.7: type = fn_type @Convert.5 [template] -// CHECK:STDOUT: %Convert.7: %Convert.type.7 = struct_value () [template] -// CHECK:STDOUT: %int_3.2: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.4: %C.5 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.5: = impl_witness (imports.%import_ref.47) [template] -// CHECK:STDOUT: %Convert.type.8: type = fn_type @Convert.6 [template] -// CHECK:STDOUT: %Convert.8: %Convert.type.8 = struct_value () [template] -// CHECK:STDOUT: %int_4.2: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_4.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.5: %C.6 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.6: = impl_witness (imports.%import_ref.48) [template] -// CHECK:STDOUT: %Convert.type.9: type = fn_type @Convert.7 [template] -// CHECK:STDOUT: %Convert.9: %Convert.type.9 = struct_value () [template] -// CHECK:STDOUT: %int_5.2: Core.IntLiteral = int_value 5 [template] -// CHECK:STDOUT: %Convert.bound.6: = bound_method %int_5.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.6: %C.7 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.7: = impl_witness (imports.%import_ref.49) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.8 [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %int_6.2: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %Convert.bound.7: = bound_method %int_6.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.7: %C.8 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.8: = impl_witness (imports.%import_ref.50) [template] -// CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.9 [template] -// CHECK:STDOUT: %Convert.11: %Convert.type.11 = struct_value () [template] -// CHECK:STDOUT: %int_7.2: Core.IntLiteral = int_value 7 [template] -// CHECK:STDOUT: %Convert.bound.8: = bound_method %int_7.2, %Convert.3 [template] -// CHECK:STDOUT: %C.val.8: %C.9 = struct_value () [template] -// CHECK:STDOUT: %impl_witness.9: = impl_witness (imports.%import_ref.51) [template] -// CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.10 [template] -// CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.407: type = assoc_entity_type %ImplicitAs.type.d33, %Convert.type.608 [symbolic] +// CHECK:STDOUT: %assoc0.317cac.1: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic] +// CHECK:STDOUT: %ImplicitAs.type.51b: type = facet_type <@ImplicitAs, @ImplicitAs(%i32.builtin)> [template] +// CHECK:STDOUT: %Convert.type.2a0: type = fn_type @Convert.1, @ImplicitAs(%i32.builtin) [template] +// CHECK:STDOUT: %Convert.756: %Convert.type.2a0 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.f84: type = assoc_entity_type %ImplicitAs.type.51b, %Convert.type.2a0 [template] +// CHECK:STDOUT: %assoc0.695: %Convert.assoc_type.f84 = assoc_entity element0, imports.%import_ref.dbaf9d.1 [template] +// CHECK:STDOUT: %assoc0.317cac.2: %Convert.assoc_type.407 = assoc_entity element0, imports.%import_ref.dbaf9d.2 [symbolic] +// CHECK:STDOUT: %impl_witness.25b: = impl_witness (imports.%import_ref.02a) [template] +// CHECK:STDOUT: %Convert.type.c8d: type = fn_type @Convert.2 [template] +// CHECK:STDOUT: %Convert.718: %Convert.type.c8d = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.59c: = bound_method %int_0.5c6, %Convert.718 [template] +// CHECK:STDOUT: %int_0.a54: %i32.builtin = int_value 0 [template] +// CHECK:STDOUT: %C.1a1: type = class_type @C, @C(%int_0.a54) [template] +// CHECK:STDOUT: %C.val.b00: %C.1a1 = struct_value () [template] +// CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(%D)> [template] +// CHECK:STDOUT: %Convert.type.c19: type = fn_type @Convert.1, @ImplicitAs(%D) [template] +// CHECK:STDOUT: %Convert.2c0: %Convert.type.c19 = struct_value () [template] +// CHECK:STDOUT: %Convert.assoc_type.0de: type = assoc_entity_type %ImplicitAs.type.2fd, %Convert.type.c19 [template] +// CHECK:STDOUT: %assoc0.090: %Convert.assoc_type.0de = assoc_entity element0, imports.%import_ref.dbaf9d.1 [template] +// CHECK:STDOUT: %int_1.f38: %i32.builtin = int_value 1 [template] +// CHECK:STDOUT: %C.b1b: type = class_type @C, @C(%int_1.f38) [template] +// CHECK:STDOUT: %int_2.5a1: %i32.builtin = int_value 2 [template] +// CHECK:STDOUT: %C.1f5: type = class_type @C, @C(%int_2.5a1) [template] +// CHECK:STDOUT: %int_3.a0f: %i32.builtin = int_value 3 [template] +// CHECK:STDOUT: %C.93c: type = class_type @C, @C(%int_3.a0f) [template] +// CHECK:STDOUT: %int_4.4f1: %i32.builtin = int_value 4 [template] +// CHECK:STDOUT: %C.305: type = class_type @C, @C(%int_4.4f1) [template] +// CHECK:STDOUT: %int_5.967: %i32.builtin = int_value 5 [template] +// CHECK:STDOUT: %C.df3: type = class_type @C, @C(%int_5.967) [template] +// CHECK:STDOUT: %int_6.ec5: %i32.builtin = int_value 6 [template] +// CHECK:STDOUT: %C.9d8: type = class_type @C, @C(%int_6.ec5) [template] +// CHECK:STDOUT: %int_7.6ae: %i32.builtin = int_value 7 [template] +// CHECK:STDOUT: %C.7a2: type = class_type @C, @C(%int_7.6ae) [template] +// CHECK:STDOUT: %impl_witness.da0: = impl_witness (imports.%import_ref.5e1) [template] +// CHECK:STDOUT: %Convert.type.a92: type = fn_type @Convert.3 [template] +// CHECK:STDOUT: %Convert.a61: %Convert.type.a92 = struct_value () [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.5fe: = bound_method %int_1.5b8, %Convert.718 [template] +// CHECK:STDOUT: %C.val.732: %C.b1b = struct_value () [template] +// CHECK:STDOUT: %impl_witness.9b6: = impl_witness (imports.%import_ref.931) [template] +// CHECK:STDOUT: %Convert.type.328: type = fn_type @Convert.4 [template] +// CHECK:STDOUT: %Convert.f02: %Convert.type.328 = struct_value () [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.a80: = bound_method %int_2.ecc, %Convert.718 [template] +// CHECK:STDOUT: %C.val.3b9: %C.1f5 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.ccf: = impl_witness (imports.%import_ref.4a0) [template] +// CHECK:STDOUT: %Convert.type.a2e: type = fn_type @Convert.5 [template] +// CHECK:STDOUT: %Convert.216: %Convert.type.a2e = struct_value () [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %Convert.bound.227: = bound_method %int_3.1ba, %Convert.718 [template] +// CHECK:STDOUT: %C.val.887: %C.93c = struct_value () [template] +// CHECK:STDOUT: %impl_witness.b44: = impl_witness (imports.%import_ref.d4a) [template] +// CHECK:STDOUT: %Convert.type.880: type = fn_type @Convert.6 [template] +// CHECK:STDOUT: %Convert.b88: %Convert.type.880 = struct_value () [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.503: = bound_method %int_4.0c1, %Convert.718 [template] +// CHECK:STDOUT: %C.val.7a5: %C.305 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.9c7: = impl_witness (imports.%import_ref.d26) [template] +// CHECK:STDOUT: %Convert.type.49d: type = fn_type @Convert.7 [template] +// CHECK:STDOUT: %Convert.7a6: %Convert.type.49d = struct_value () [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %Convert.bound.2c9: = bound_method %int_5.64b, %Convert.718 [template] +// CHECK:STDOUT: %C.val.313: %C.df3 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.6ed: = impl_witness (imports.%import_ref.bdf) [template] +// CHECK:STDOUT: %Convert.type.c08: type = fn_type @Convert.8 [template] +// CHECK:STDOUT: %Convert.d06: %Convert.type.c08 = struct_value () [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %Convert.bound.d98: = bound_method %int_6.462, %Convert.718 [template] +// CHECK:STDOUT: %C.val.311: %C.9d8 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.8c2: = impl_witness (imports.%import_ref.c09) [template] +// CHECK:STDOUT: %Convert.type.f09: type = fn_type @Convert.9 [template] +// CHECK:STDOUT: %Convert.998: %Convert.type.f09 = struct_value () [template] +// CHECK:STDOUT: %int_7.29f: Core.IntLiteral = int_value 7 [template] +// CHECK:STDOUT: %Convert.bound.e27: = bound_method %int_7.29f, %Convert.718 [template] +// CHECK:STDOUT: %C.val.cdc: %C.7a2 = struct_value () [template] +// CHECK:STDOUT: %impl_witness.aef: = impl_witness (imports.%import_ref.057) [template] +// CHECK:STDOUT: %Convert.type.181: type = fn_type @Convert.10 [template] +// CHECK:STDOUT: %Convert.5ef: %Convert.type.181 = struct_value () [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %P: = namespace file.%P.import, [template] { -// CHECK:STDOUT: .D = %import_ref.2 -// CHECK:STDOUT: .C = %import_ref.7 -// CHECK:STDOUT: .Make = %import_ref.52 +// CHECK:STDOUT: .D = %import_ref.275 +// CHECK:STDOUT: .C = %import_ref.867 +// CHECK:STDOUT: .Make = %import_ref.30b // CHECK:STDOUT: import P//library // CHECK:STDOUT: } // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.10 +// CHECK:STDOUT: .Int = %import_ref.71a +// CHECK:STDOUT: .ImplicitAs = %import_ref.7f1 // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.2: type = import_ref P//library, D, loaded [template = constants.%D] -// CHECK:STDOUT: %import_ref.3: = import_ref P//library, loc7_35, loaded [template = constants.%complete_type.1] -// CHECK:STDOUT: %import_ref.4 = import_ref P//library, inst47 [no loc], unloaded -// CHECK:STDOUT: %import_ref.5 = import_ref P//library, loc7_16, unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref P//library, loc7_28, unloaded -// CHECK:STDOUT: %import_ref.7: %C.type = import_ref P//library, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.8: = import_ref P//library, loc6_19, loaded [template = constants.%complete_type.2] -// CHECK:STDOUT: %import_ref.9 = import_ref P//library, inst42 [no loc], unloaded -// CHECK:STDOUT: %import_ref.11 = import_ref Core//default, inst49 [no loc], unloaded -// CHECK:STDOUT: %import_ref.12: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.3)] -// CHECK:STDOUT: %import_ref.13 = import_ref Core//default, Convert, unloaded -// CHECK:STDOUT: %import_ref.14 = import_ref Core//default, loc9_32, unloaded -// CHECK:STDOUT: %import_ref.16: = import_ref Core//default, loc12_38, loaded [template = constants.%impl_witness.1] -// CHECK:STDOUT: %import_ref.17: type = import_ref Core//default, loc12_17, loaded [template = Core.IntLiteral] -// CHECK:STDOUT: %import_ref.18: type = import_ref Core//default, loc12_36, loaded [template = constants.%ImplicitAs.type.3] -// CHECK:STDOUT: %import_ref.20: = import_ref P//library, loc10_33, loaded [template = constants.%impl_witness.2] -// CHECK:STDOUT: %import_ref.21: type = import_ref P//library, loc10_9, loaded [template = constants.%C.2] -// CHECK:STDOUT: %import_ref.22: type = import_ref P//library, loc10_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.23: = import_ref P//library, loc11_33, loaded [template = constants.%impl_witness.3] -// CHECK:STDOUT: %import_ref.24: type = import_ref P//library, loc11_9, loaded [template = constants.%C.3] -// CHECK:STDOUT: %import_ref.25: type = import_ref P//library, loc11_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.26: = import_ref P//library, loc12_33, loaded [template = constants.%impl_witness.4] -// CHECK:STDOUT: %import_ref.27: type = import_ref P//library, loc12_9, loaded [template = constants.%C.4] -// CHECK:STDOUT: %import_ref.28: type = import_ref P//library, loc12_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.29: = import_ref P//library, loc13_33, loaded [template = constants.%impl_witness.5] -// CHECK:STDOUT: %import_ref.30: type = import_ref P//library, loc13_9, loaded [template = constants.%C.5] -// CHECK:STDOUT: %import_ref.31: type = import_ref P//library, loc13_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.32: = import_ref P//library, loc14_33, loaded [template = constants.%impl_witness.6] -// CHECK:STDOUT: %import_ref.33: type = import_ref P//library, loc14_9, loaded [template = constants.%C.6] -// CHECK:STDOUT: %import_ref.34: type = import_ref P//library, loc14_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.35: = import_ref P//library, loc15_33, loaded [template = constants.%impl_witness.7] -// CHECK:STDOUT: %import_ref.36: type = import_ref P//library, loc15_9, loaded [template = constants.%C.7] -// CHECK:STDOUT: %import_ref.37: type = import_ref P//library, loc15_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.38: = import_ref P//library, loc16_33, loaded [template = constants.%impl_witness.8] -// CHECK:STDOUT: %import_ref.39: type = import_ref P//library, loc16_9, loaded [template = constants.%C.8] -// CHECK:STDOUT: %import_ref.40: type = import_ref P//library, loc16_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.41: = import_ref P//library, loc17_33, loaded [template = constants.%impl_witness.9] -// CHECK:STDOUT: %import_ref.42: type = import_ref P//library, loc17_9, loaded [template = constants.%C.9] -// CHECK:STDOUT: %import_ref.43: type = import_ref P//library, loc17_31, loaded [template = constants.%ImplicitAs.type.4] -// CHECK:STDOUT: %import_ref.52: %Make.type = import_ref P//library, Make, loaded [template = constants.%Make] +// CHECK:STDOUT: %import_ref.275: type = import_ref P//library, D, loaded [template = constants.%D] +// CHECK:STDOUT: %import_ref.7e5: = import_ref P//library, loc7_35, loaded [template = constants.%complete_type.682] +// CHECK:STDOUT: %import_ref.cab = import_ref P//library, inst47 [no loc], unloaded +// CHECK:STDOUT: %import_ref.a99 = import_ref P//library, loc7_16, unloaded +// CHECK:STDOUT: %import_ref.9d2 = import_ref P//library, loc7_28, unloaded +// CHECK:STDOUT: %import_ref.867: %C.type = import_ref P//library, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.8f2: = import_ref P//library, loc6_19, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.adc = import_ref P//library, inst42 [no loc], unloaded +// CHECK:STDOUT: %import_ref.01e = import_ref Core//default, inst49 [no loc], unloaded +// CHECK:STDOUT: %import_ref.86d: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.317cac.2)] +// CHECK:STDOUT: %import_ref.038 = import_ref Core//default, Convert, unloaded +// CHECK:STDOUT: %import_ref.dbaf9d.1 = import_ref Core//default, loc9_32, unloaded +// CHECK:STDOUT: %import_ref.4ae: = import_ref Core//default, loc12_38, loaded [template = constants.%impl_witness.25b] +// CHECK:STDOUT: %import_ref.afb: type = import_ref Core//default, loc12_17, loaded [template = Core.IntLiteral] +// CHECK:STDOUT: %import_ref.d93: type = import_ref Core//default, loc12_36, loaded [template = constants.%ImplicitAs.type.51b] +// CHECK:STDOUT: %import_ref.8fe: = import_ref P//library, loc10_33, loaded [template = constants.%impl_witness.da0] +// CHECK:STDOUT: %import_ref.d9f: type = import_ref P//library, loc10_9, loaded [template = constants.%C.1a1] +// CHECK:STDOUT: %import_ref.262642.1: type = import_ref P//library, loc10_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.1fd: = import_ref P//library, loc11_33, loaded [template = constants.%impl_witness.9b6] +// CHECK:STDOUT: %import_ref.7bf: type = import_ref P//library, loc11_9, loaded [template = constants.%C.b1b] +// CHECK:STDOUT: %import_ref.262642.2: type = import_ref P//library, loc11_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.8e3: = import_ref P//library, loc12_33, loaded [template = constants.%impl_witness.ccf] +// CHECK:STDOUT: %import_ref.bc4: type = import_ref P//library, loc12_9, loaded [template = constants.%C.1f5] +// CHECK:STDOUT: %import_ref.262642.3: type = import_ref P//library, loc12_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.318: = import_ref P//library, loc13_33, loaded [template = constants.%impl_witness.b44] +// CHECK:STDOUT: %import_ref.666: type = import_ref P//library, loc13_9, loaded [template = constants.%C.93c] +// CHECK:STDOUT: %import_ref.262642.4: type = import_ref P//library, loc13_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.4fb: = import_ref P//library, loc14_33, loaded [template = constants.%impl_witness.9c7] +// CHECK:STDOUT: %import_ref.229: type = import_ref P//library, loc14_9, loaded [template = constants.%C.305] +// CHECK:STDOUT: %import_ref.262642.5: type = import_ref P//library, loc14_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.0f5: = import_ref P//library, loc15_33, loaded [template = constants.%impl_witness.6ed] +// CHECK:STDOUT: %import_ref.7fd: type = import_ref P//library, loc15_9, loaded [template = constants.%C.df3] +// CHECK:STDOUT: %import_ref.262642.6: type = import_ref P//library, loc15_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.044: = import_ref P//library, loc16_33, loaded [template = constants.%impl_witness.8c2] +// CHECK:STDOUT: %import_ref.83b: type = import_ref P//library, loc16_9, loaded [template = constants.%C.9d8] +// CHECK:STDOUT: %import_ref.262642.7: type = import_ref P//library, loc16_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.f4b: = import_ref P//library, loc17_33, loaded [template = constants.%impl_witness.aef] +// CHECK:STDOUT: %import_ref.79f: type = import_ref P//library, loc17_9, loaded [template = constants.%C.7a2] +// CHECK:STDOUT: %import_ref.262642.8: type = import_ref P//library, loc17_31, loaded [template = constants.%ImplicitAs.type.2fd] +// CHECK:STDOUT: %import_ref.30b: %Make.type = import_ref P//library, Make, loaded [template = constants.%Make] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1190,7 +1190,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %P.ref.loc7: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.2 [template = constants.%D] +// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%import_ref.275 [template = constants.%D] // CHECK:STDOUT: %n.param: %i32.builtin = value_param runtime_param0 // CHECK:STDOUT: %.loc7_10.1: type = splice_block %.loc7_10.3 [template = constants.%i32.builtin] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] @@ -1209,72 +1209,72 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.1)] -// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.1) = struct_value () [symbolic = %Convert (constants.%Convert.1)] -// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.2), @ImplicitAs.%Convert.type (%Convert.type.1) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.1)] -// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.1) = assoc_entity element0, imports.%import_ref.14 [symbolic = %assoc0 (constants.%assoc0.1)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %Convert.type: type = fn_type @Convert.1, @ImplicitAs(%T) [symbolic = %Convert.type (constants.%Convert.type.608)] +// CHECK:STDOUT: %Convert: @ImplicitAs.%Convert.type (%Convert.type.608) = struct_value () [symbolic = %Convert (constants.%Convert.de6)] +// CHECK:STDOUT: %Convert.assoc_type: type = assoc_entity_type @ImplicitAs.%ImplicitAs.type (%ImplicitAs.type.d33), @ImplicitAs.%Convert.type (%Convert.type.608) [symbolic = %Convert.assoc_type (constants.%Convert.assoc_type.407)] +// CHECK:STDOUT: %assoc0: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.407) = assoc_entity element0, imports.%import_ref.dbaf9d.1 [symbolic = %assoc0 (constants.%assoc0.317cac.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.11 -// CHECK:STDOUT: .Convert = imports.%import_ref.12 -// CHECK:STDOUT: witness = (imports.%import_ref.13) +// CHECK:STDOUT: .Self = imports.%import_ref.01e +// CHECK:STDOUT: .Convert = imports.%import_ref.86d +// CHECK:STDOUT: witness = (imports.%import_ref.038) // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.1: imports.%import_ref.17 as imports.%import_ref.18 [from "core.carbon"] { +// CHECK:STDOUT: impl @impl.1: imports.%import_ref.afb as imports.%import_ref.d93 [from "core.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.16 +// CHECK:STDOUT: witness = imports.%import_ref.4ae // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.2: imports.%import_ref.21 as imports.%import_ref.22 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.2: imports.%import_ref.d9f as imports.%import_ref.262642.1 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.20 +// CHECK:STDOUT: witness = imports.%import_ref.8fe // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.3: imports.%import_ref.24 as imports.%import_ref.25 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.3: imports.%import_ref.7bf as imports.%import_ref.262642.2 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.23 +// CHECK:STDOUT: witness = imports.%import_ref.1fd // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.4: imports.%import_ref.27 as imports.%import_ref.28 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.4: imports.%import_ref.bc4 as imports.%import_ref.262642.3 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.26 +// CHECK:STDOUT: witness = imports.%import_ref.8e3 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.5: imports.%import_ref.30 as imports.%import_ref.31 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.5: imports.%import_ref.666 as imports.%import_ref.262642.4 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.29 +// CHECK:STDOUT: witness = imports.%import_ref.318 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.6: imports.%import_ref.33 as imports.%import_ref.34 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.6: imports.%import_ref.229 as imports.%import_ref.262642.5 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.32 +// CHECK:STDOUT: witness = imports.%import_ref.4fb // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.7: imports.%import_ref.36 as imports.%import_ref.37 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.7: imports.%import_ref.7fd as imports.%import_ref.262642.6 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.35 +// CHECK:STDOUT: witness = imports.%import_ref.0f5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.8: imports.%import_ref.39 as imports.%import_ref.40 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.8: imports.%import_ref.83b as imports.%import_ref.262642.7 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.38 +// CHECK:STDOUT: witness = imports.%import_ref.044 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: impl @impl.9: imports.%import_ref.42 as imports.%import_ref.43 [from "library.carbon"] { +// CHECK:STDOUT: impl @impl.9: imports.%import_ref.79f as imports.%import_ref.262642.8 [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: witness = imports.%import_ref.41 +// CHECK:STDOUT: witness = imports.%import_ref.f4b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "library.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.4 -// CHECK:STDOUT: .n = imports.%import_ref.5 -// CHECK:STDOUT: .m = imports.%import_ref.6 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.3 +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .n = imports.%import_ref.a99 +// CHECK:STDOUT: .m = imports.%import_ref.9d2 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.7e5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%N: %i32.builtin) [from "library.carbon"] { @@ -1285,8 +1285,8 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.9 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8 +// CHECK:STDOUT: .Self = imports.%import_ref.adc +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1300,22 +1300,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc8: // CHECK:STDOUT: %.loc8_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc8: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc8: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc8_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc8_34: = bound_method %int_0, %impl.elem0.loc8_34 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %int.convert_checked.loc8: init %i32.builtin = call %Convert.bound.loc8_34(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc8_34.2: %i32.builtin = converted %int_0, %.loc8_34.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %C.loc8: type = class_type @C, @C(constants.%int_0.2) [template = constants.%C.2] -// CHECK:STDOUT: %.loc8_24.2: ref %C.2 = temporary_storage -// CHECK:STDOUT: %.loc8_24.3: init %C.2 = class_init (), %.loc8_24.2 [template = constants.%C.val.1] -// CHECK:STDOUT: %.loc8_24.4: ref %C.2 = temporary %.loc8_24.2, %.loc8_24.3 -// CHECK:STDOUT: %.loc8_26.1: ref %C.2 = converted %.loc8_24.1, %.loc8_24.4 -// CHECK:STDOUT: %impl.elem0.loc8_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.2, element0 [template = constants.%Convert.5] +// CHECK:STDOUT: %C.ref.loc8: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc8_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc8_34: = bound_method %int_0, %impl.elem0.loc8_34 [template = constants.%Convert.bound.59c] +// CHECK:STDOUT: %int.convert_checked.loc8: init %i32.builtin = call %Convert.bound.loc8_34(%int_0) [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc8_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc8 [template = constants.%int_0.a54] +// CHECK:STDOUT: %.loc8_34.2: %i32.builtin = converted %int_0, %.loc8_34.1 [template = constants.%int_0.a54] +// CHECK:STDOUT: %C.loc8: type = class_type @C, @C(constants.%int_0.a54) [template = constants.%C.1a1] +// CHECK:STDOUT: %.loc8_24.2: ref %C.1a1 = temporary_storage +// CHECK:STDOUT: %.loc8_24.3: init %C.1a1 = class_init (), %.loc8_24.2 [template = constants.%C.val.b00] +// CHECK:STDOUT: %.loc8_24.4: ref %C.1a1 = temporary %.loc8_24.2, %.loc8_24.3 +// CHECK:STDOUT: %.loc8_26.1: ref %C.1a1 = converted %.loc8_24.1, %.loc8_24.4 +// CHECK:STDOUT: %impl.elem0.loc8_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.da0, element0 [template = constants.%Convert.a61] // CHECK:STDOUT: %Convert.bound.loc8_35: = bound_method %.loc8_26.1, %impl.elem0.loc8_35 // CHECK:STDOUT: %.loc8_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc8_26.2: %C.2 = bind_value %.loc8_26.1 +// CHECK:STDOUT: %.loc8_26.2: %C.1a1 = bind_value %.loc8_26.1 // CHECK:STDOUT: %Convert.call.loc8: init %D = call %Convert.bound.loc8_35(%.loc8_26.2) to %.loc8_35.1 // CHECK:STDOUT: %.loc8_35.2: init %D = converted %.loc8_26.1, %Convert.call.loc8 // CHECK:STDOUT: return %.loc8_35.2 to %return @@ -1327,22 +1327,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc9: // CHECK:STDOUT: %.loc9_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc9: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc9: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc9_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc9_34: = bound_method %int_1, %impl.elem0.loc9_34 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %int.convert_checked.loc9: init %i32.builtin = call %Convert.bound.loc9_34(%int_1) [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc9_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc9 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc9_34.2: %i32.builtin = converted %int_1, %.loc9_34.1 [template = constants.%int_1.1] -// CHECK:STDOUT: %C.loc9: type = class_type @C, @C(constants.%int_1.1) [template = constants.%C.3] -// CHECK:STDOUT: %.loc9_24.2: ref %C.3 = temporary_storage -// CHECK:STDOUT: %.loc9_24.3: init %C.3 = class_init (), %.loc9_24.2 [template = constants.%C.val.2] -// CHECK:STDOUT: %.loc9_24.4: ref %C.3 = temporary %.loc9_24.2, %.loc9_24.3 -// CHECK:STDOUT: %.loc9_26.1: ref %C.3 = converted %.loc9_24.1, %.loc9_24.4 -// CHECK:STDOUT: %impl.elem0.loc9_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.3, element0 [template = constants.%Convert.6] +// CHECK:STDOUT: %C.ref.loc9: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc9_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc9_34: = bound_method %int_1, %impl.elem0.loc9_34 [template = constants.%Convert.bound.5fe] +// CHECK:STDOUT: %int.convert_checked.loc9: init %i32.builtin = call %Convert.bound.loc9_34(%int_1) [template = constants.%int_1.f38] +// CHECK:STDOUT: %.loc9_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc9 [template = constants.%int_1.f38] +// CHECK:STDOUT: %.loc9_34.2: %i32.builtin = converted %int_1, %.loc9_34.1 [template = constants.%int_1.f38] +// CHECK:STDOUT: %C.loc9: type = class_type @C, @C(constants.%int_1.f38) [template = constants.%C.b1b] +// CHECK:STDOUT: %.loc9_24.2: ref %C.b1b = temporary_storage +// CHECK:STDOUT: %.loc9_24.3: init %C.b1b = class_init (), %.loc9_24.2 [template = constants.%C.val.732] +// CHECK:STDOUT: %.loc9_24.4: ref %C.b1b = temporary %.loc9_24.2, %.loc9_24.3 +// CHECK:STDOUT: %.loc9_26.1: ref %C.b1b = converted %.loc9_24.1, %.loc9_24.4 +// CHECK:STDOUT: %impl.elem0.loc9_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.9b6, element0 [template = constants.%Convert.f02] // CHECK:STDOUT: %Convert.bound.loc9_35: = bound_method %.loc9_26.1, %impl.elem0.loc9_35 // CHECK:STDOUT: %.loc9_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc9_26.2: %C.3 = bind_value %.loc9_26.1 +// CHECK:STDOUT: %.loc9_26.2: %C.b1b = bind_value %.loc9_26.1 // CHECK:STDOUT: %Convert.call.loc9: init %D = call %Convert.bound.loc9_35(%.loc9_26.2) to %.loc9_35.1 // CHECK:STDOUT: %.loc9_35.2: init %D = converted %.loc9_26.1, %Convert.call.loc9 // CHECK:STDOUT: return %.loc9_35.2 to %return @@ -1354,22 +1354,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc10: // CHECK:STDOUT: %.loc10_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc10: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc10_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc10_34: = bound_method %int_2, %impl.elem0.loc10_34 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %int.convert_checked.loc10: init %i32.builtin = call %Convert.bound.loc10_34(%int_2) [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc10_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc10 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc10_34.2: %i32.builtin = converted %int_2, %.loc10_34.1 [template = constants.%int_2.1] -// CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%int_2.1) [template = constants.%C.4] -// CHECK:STDOUT: %.loc10_24.2: ref %C.4 = temporary_storage -// CHECK:STDOUT: %.loc10_24.3: init %C.4 = class_init (), %.loc10_24.2 [template = constants.%C.val.3] -// CHECK:STDOUT: %.loc10_24.4: ref %C.4 = temporary %.loc10_24.2, %.loc10_24.3 -// CHECK:STDOUT: %.loc10_26.1: ref %C.4 = converted %.loc10_24.1, %.loc10_24.4 -// CHECK:STDOUT: %impl.elem0.loc10_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.4, element0 [template = constants.%Convert.7] +// CHECK:STDOUT: %C.ref.loc10: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc10_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc10_34: = bound_method %int_2, %impl.elem0.loc10_34 [template = constants.%Convert.bound.a80] +// CHECK:STDOUT: %int.convert_checked.loc10: init %i32.builtin = call %Convert.bound.loc10_34(%int_2) [template = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc10_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc10 [template = constants.%int_2.5a1] +// CHECK:STDOUT: %.loc10_34.2: %i32.builtin = converted %int_2, %.loc10_34.1 [template = constants.%int_2.5a1] +// CHECK:STDOUT: %C.loc10: type = class_type @C, @C(constants.%int_2.5a1) [template = constants.%C.1f5] +// CHECK:STDOUT: %.loc10_24.2: ref %C.1f5 = temporary_storage +// CHECK:STDOUT: %.loc10_24.3: init %C.1f5 = class_init (), %.loc10_24.2 [template = constants.%C.val.3b9] +// CHECK:STDOUT: %.loc10_24.4: ref %C.1f5 = temporary %.loc10_24.2, %.loc10_24.3 +// CHECK:STDOUT: %.loc10_26.1: ref %C.1f5 = converted %.loc10_24.1, %.loc10_24.4 +// CHECK:STDOUT: %impl.elem0.loc10_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.ccf, element0 [template = constants.%Convert.216] // CHECK:STDOUT: %Convert.bound.loc10_35: = bound_method %.loc10_26.1, %impl.elem0.loc10_35 // CHECK:STDOUT: %.loc10_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc10_26.2: %C.4 = bind_value %.loc10_26.1 +// CHECK:STDOUT: %.loc10_26.2: %C.1f5 = bind_value %.loc10_26.1 // CHECK:STDOUT: %Convert.call.loc10: init %D = call %Convert.bound.loc10_35(%.loc10_26.2) to %.loc10_35.1 // CHECK:STDOUT: %.loc10_35.2: init %D = converted %.loc10_26.1, %Convert.call.loc10 // CHECK:STDOUT: return %.loc10_35.2 to %return @@ -1381,22 +1381,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc11: // CHECK:STDOUT: %.loc11_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc11: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc11: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.2] -// CHECK:STDOUT: %impl.elem0.loc11_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc11_34: = bound_method %int_3, %impl.elem0.loc11_34 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32.builtin = call %Convert.bound.loc11_34(%int_3) [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc11_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc11 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc11_34.2: %i32.builtin = converted %int_3, %.loc11_34.1 [template = constants.%int_3.1] -// CHECK:STDOUT: %C.loc11: type = class_type @C, @C(constants.%int_3.1) [template = constants.%C.5] -// CHECK:STDOUT: %.loc11_24.2: ref %C.5 = temporary_storage -// CHECK:STDOUT: %.loc11_24.3: init %C.5 = class_init (), %.loc11_24.2 [template = constants.%C.val.4] -// CHECK:STDOUT: %.loc11_24.4: ref %C.5 = temporary %.loc11_24.2, %.loc11_24.3 -// CHECK:STDOUT: %.loc11_26.1: ref %C.5 = converted %.loc11_24.1, %.loc11_24.4 -// CHECK:STDOUT: %impl.elem0.loc11_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.5, element0 [template = constants.%Convert.8] +// CHECK:STDOUT: %C.ref.loc11: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %impl.elem0.loc11_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc11_34: = bound_method %int_3, %impl.elem0.loc11_34 [template = constants.%Convert.bound.227] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32.builtin = call %Convert.bound.loc11_34(%int_3) [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc11_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc11 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %.loc11_34.2: %i32.builtin = converted %int_3, %.loc11_34.1 [template = constants.%int_3.a0f] +// CHECK:STDOUT: %C.loc11: type = class_type @C, @C(constants.%int_3.a0f) [template = constants.%C.93c] +// CHECK:STDOUT: %.loc11_24.2: ref %C.93c = temporary_storage +// CHECK:STDOUT: %.loc11_24.3: init %C.93c = class_init (), %.loc11_24.2 [template = constants.%C.val.887] +// CHECK:STDOUT: %.loc11_24.4: ref %C.93c = temporary %.loc11_24.2, %.loc11_24.3 +// CHECK:STDOUT: %.loc11_26.1: ref %C.93c = converted %.loc11_24.1, %.loc11_24.4 +// CHECK:STDOUT: %impl.elem0.loc11_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.b44, element0 [template = constants.%Convert.b88] // CHECK:STDOUT: %Convert.bound.loc11_35: = bound_method %.loc11_26.1, %impl.elem0.loc11_35 // CHECK:STDOUT: %.loc11_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc11_26.2: %C.5 = bind_value %.loc11_26.1 +// CHECK:STDOUT: %.loc11_26.2: %C.93c = bind_value %.loc11_26.1 // CHECK:STDOUT: %Convert.call.loc11: init %D = call %Convert.bound.loc11_35(%.loc11_26.2) to %.loc11_35.1 // CHECK:STDOUT: %.loc11_35.2: init %D = converted %.loc11_26.1, %Convert.call.loc11 // CHECK:STDOUT: return %.loc11_35.2 to %return @@ -1408,22 +1408,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc12: // CHECK:STDOUT: %.loc12_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc12: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc12: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.2] -// CHECK:STDOUT: %impl.elem0.loc12_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc12_34: = bound_method %int_4, %impl.elem0.loc12_34 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32.builtin = call %Convert.bound.loc12_34(%int_4) [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc12_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc12_34.2: %i32.builtin = converted %int_4, %.loc12_34.1 [template = constants.%int_4.1] -// CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%int_4.1) [template = constants.%C.6] -// CHECK:STDOUT: %.loc12_24.2: ref %C.6 = temporary_storage -// CHECK:STDOUT: %.loc12_24.3: init %C.6 = class_init (), %.loc12_24.2 [template = constants.%C.val.5] -// CHECK:STDOUT: %.loc12_24.4: ref %C.6 = temporary %.loc12_24.2, %.loc12_24.3 -// CHECK:STDOUT: %.loc12_26.1: ref %C.6 = converted %.loc12_24.1, %.loc12_24.4 -// CHECK:STDOUT: %impl.elem0.loc12_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.6, element0 [template = constants.%Convert.9] +// CHECK:STDOUT: %C.ref.loc12: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %impl.elem0.loc12_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc12_34: = bound_method %int_4, %impl.elem0.loc12_34 [template = constants.%Convert.bound.503] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32.builtin = call %Convert.bound.loc12_34(%int_4) [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc12_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc12 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %.loc12_34.2: %i32.builtin = converted %int_4, %.loc12_34.1 [template = constants.%int_4.4f1] +// CHECK:STDOUT: %C.loc12: type = class_type @C, @C(constants.%int_4.4f1) [template = constants.%C.305] +// CHECK:STDOUT: %.loc12_24.2: ref %C.305 = temporary_storage +// CHECK:STDOUT: %.loc12_24.3: init %C.305 = class_init (), %.loc12_24.2 [template = constants.%C.val.7a5] +// CHECK:STDOUT: %.loc12_24.4: ref %C.305 = temporary %.loc12_24.2, %.loc12_24.3 +// CHECK:STDOUT: %.loc12_26.1: ref %C.305 = converted %.loc12_24.1, %.loc12_24.4 +// CHECK:STDOUT: %impl.elem0.loc12_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.9c7, element0 [template = constants.%Convert.7a6] // CHECK:STDOUT: %Convert.bound.loc12_35: = bound_method %.loc12_26.1, %impl.elem0.loc12_35 // CHECK:STDOUT: %.loc12_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc12_26.2: %C.6 = bind_value %.loc12_26.1 +// CHECK:STDOUT: %.loc12_26.2: %C.305 = bind_value %.loc12_26.1 // CHECK:STDOUT: %Convert.call.loc12: init %D = call %Convert.bound.loc12_35(%.loc12_26.2) to %.loc12_35.1 // CHECK:STDOUT: %.loc12_35.2: init %D = converted %.loc12_26.1, %Convert.call.loc12 // CHECK:STDOUT: return %.loc12_35.2 to %return @@ -1435,22 +1435,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc13: // CHECK:STDOUT: %.loc13_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc13: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc13: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.2] -// CHECK:STDOUT: %impl.elem0.loc13_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc13_34: = bound_method %int_5, %impl.elem0.loc13_34 [template = constants.%Convert.bound.6] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32.builtin = call %Convert.bound.loc13_34(%int_5) [template = constants.%int_5.1] -// CHECK:STDOUT: %.loc13_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_5.1] -// CHECK:STDOUT: %.loc13_34.2: %i32.builtin = converted %int_5, %.loc13_34.1 [template = constants.%int_5.1] -// CHECK:STDOUT: %C.loc13: type = class_type @C, @C(constants.%int_5.1) [template = constants.%C.7] -// CHECK:STDOUT: %.loc13_24.2: ref %C.7 = temporary_storage -// CHECK:STDOUT: %.loc13_24.3: init %C.7 = class_init (), %.loc13_24.2 [template = constants.%C.val.6] -// CHECK:STDOUT: %.loc13_24.4: ref %C.7 = temporary %.loc13_24.2, %.loc13_24.3 -// CHECK:STDOUT: %.loc13_26.1: ref %C.7 = converted %.loc13_24.1, %.loc13_24.4 -// CHECK:STDOUT: %impl.elem0.loc13_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.7, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %C.ref.loc13: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %impl.elem0.loc13_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc13_34: = bound_method %int_5, %impl.elem0.loc13_34 [template = constants.%Convert.bound.2c9] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32.builtin = call %Convert.bound.loc13_34(%int_5) [template = constants.%int_5.967] +// CHECK:STDOUT: %.loc13_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc13 [template = constants.%int_5.967] +// CHECK:STDOUT: %.loc13_34.2: %i32.builtin = converted %int_5, %.loc13_34.1 [template = constants.%int_5.967] +// CHECK:STDOUT: %C.loc13: type = class_type @C, @C(constants.%int_5.967) [template = constants.%C.df3] +// CHECK:STDOUT: %.loc13_24.2: ref %C.df3 = temporary_storage +// CHECK:STDOUT: %.loc13_24.3: init %C.df3 = class_init (), %.loc13_24.2 [template = constants.%C.val.313] +// CHECK:STDOUT: %.loc13_24.4: ref %C.df3 = temporary %.loc13_24.2, %.loc13_24.3 +// CHECK:STDOUT: %.loc13_26.1: ref %C.df3 = converted %.loc13_24.1, %.loc13_24.4 +// CHECK:STDOUT: %impl.elem0.loc13_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.6ed, element0 [template = constants.%Convert.d06] // CHECK:STDOUT: %Convert.bound.loc13_35: = bound_method %.loc13_26.1, %impl.elem0.loc13_35 // CHECK:STDOUT: %.loc13_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc13_26.2: %C.7 = bind_value %.loc13_26.1 +// CHECK:STDOUT: %.loc13_26.2: %C.df3 = bind_value %.loc13_26.1 // CHECK:STDOUT: %Convert.call.loc13: init %D = call %Convert.bound.loc13_35(%.loc13_26.2) to %.loc13_35.1 // CHECK:STDOUT: %.loc13_35.2: init %D = converted %.loc13_26.1, %Convert.call.loc13 // CHECK:STDOUT: return %.loc13_35.2 to %return @@ -1462,22 +1462,22 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc14: // CHECK:STDOUT: %.loc14_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc14: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc14: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.2] -// CHECK:STDOUT: %impl.elem0.loc14_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc14_34: = bound_method %int_6, %impl.elem0.loc14_34 [template = constants.%Convert.bound.7] -// CHECK:STDOUT: %int.convert_checked.loc14: init %i32.builtin = call %Convert.bound.loc14_34(%int_6) [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc14_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc14_34.2: %i32.builtin = converted %int_6, %.loc14_34.1 [template = constants.%int_6.1] -// CHECK:STDOUT: %C.loc14: type = class_type @C, @C(constants.%int_6.1) [template = constants.%C.8] -// CHECK:STDOUT: %.loc14_24.2: ref %C.8 = temporary_storage -// CHECK:STDOUT: %.loc14_24.3: init %C.8 = class_init (), %.loc14_24.2 [template = constants.%C.val.7] -// CHECK:STDOUT: %.loc14_24.4: ref %C.8 = temporary %.loc14_24.2, %.loc14_24.3 -// CHECK:STDOUT: %.loc14_26.1: ref %C.8 = converted %.loc14_24.1, %.loc14_24.4 -// CHECK:STDOUT: %impl.elem0.loc14_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.8, element0 [template = constants.%Convert.11] +// CHECK:STDOUT: %C.ref.loc14: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %impl.elem0.loc14_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc14_34: = bound_method %int_6, %impl.elem0.loc14_34 [template = constants.%Convert.bound.d98] +// CHECK:STDOUT: %int.convert_checked.loc14: init %i32.builtin = call %Convert.bound.loc14_34(%int_6) [template = constants.%int_6.ec5] +// CHECK:STDOUT: %.loc14_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc14 [template = constants.%int_6.ec5] +// CHECK:STDOUT: %.loc14_34.2: %i32.builtin = converted %int_6, %.loc14_34.1 [template = constants.%int_6.ec5] +// CHECK:STDOUT: %C.loc14: type = class_type @C, @C(constants.%int_6.ec5) [template = constants.%C.9d8] +// CHECK:STDOUT: %.loc14_24.2: ref %C.9d8 = temporary_storage +// CHECK:STDOUT: %.loc14_24.3: init %C.9d8 = class_init (), %.loc14_24.2 [template = constants.%C.val.311] +// CHECK:STDOUT: %.loc14_24.4: ref %C.9d8 = temporary %.loc14_24.2, %.loc14_24.3 +// CHECK:STDOUT: %.loc14_26.1: ref %C.9d8 = converted %.loc14_24.1, %.loc14_24.4 +// CHECK:STDOUT: %impl.elem0.loc14_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.8c2, element0 [template = constants.%Convert.998] // CHECK:STDOUT: %Convert.bound.loc14_35: = bound_method %.loc14_26.1, %impl.elem0.loc14_35 // CHECK:STDOUT: %.loc14_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc14_26.2: %C.8 = bind_value %.loc14_26.1 +// CHECK:STDOUT: %.loc14_26.2: %C.9d8 = bind_value %.loc14_26.1 // CHECK:STDOUT: %Convert.call.loc14: init %D = call %Convert.bound.loc14_35(%.loc14_26.2) to %.loc14_35.1 // CHECK:STDOUT: %.loc14_35.2: init %D = converted %.loc14_26.1, %Convert.call.loc14 // CHECK:STDOUT: return %.loc14_35.2 to %return @@ -1489,38 +1489,38 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !if.then.loc15: // CHECK:STDOUT: %.loc15_24.1: %empty_struct_type = struct_literal () // CHECK:STDOUT: %P.ref.loc15: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %C.ref.loc15: %C.type = name_ref C, imports.%import_ref.7 [template = constants.%C.generic] -// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.2] -// CHECK:STDOUT: %impl.elem0.loc15_34: %Convert.type.2 = impl_witness_access constants.%impl_witness.1, element0 [template = constants.%Convert.3] -// CHECK:STDOUT: %Convert.bound.loc15_34: = bound_method %int_7, %impl.elem0.loc15_34 [template = constants.%Convert.bound.8] -// CHECK:STDOUT: %int.convert_checked.loc15: init %i32.builtin = call %Convert.bound.loc15_34(%int_7) [template = constants.%int_7.1] -// CHECK:STDOUT: %.loc15_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_7.1] -// CHECK:STDOUT: %.loc15_34.2: %i32.builtin = converted %int_7, %.loc15_34.1 [template = constants.%int_7.1] -// CHECK:STDOUT: %C.loc15: type = class_type @C, @C(constants.%int_7.1) [template = constants.%C.9] -// CHECK:STDOUT: %.loc15_24.2: ref %C.9 = temporary_storage -// CHECK:STDOUT: %.loc15_24.3: init %C.9 = class_init (), %.loc15_24.2 [template = constants.%C.val.8] -// CHECK:STDOUT: %.loc15_24.4: ref %C.9 = temporary %.loc15_24.2, %.loc15_24.3 -// CHECK:STDOUT: %.loc15_26.1: ref %C.9 = converted %.loc15_24.1, %.loc15_24.4 -// CHECK:STDOUT: %impl.elem0.loc15_35: %Convert.type.4 = impl_witness_access constants.%impl_witness.9, element0 [template = constants.%Convert.12] +// CHECK:STDOUT: %C.ref.loc15: %C.type = name_ref C, imports.%import_ref.867 [template = constants.%C.generic] +// CHECK:STDOUT: %int_7: Core.IntLiteral = int_value 7 [template = constants.%int_7.29f] +// CHECK:STDOUT: %impl.elem0.loc15_34: %Convert.type.2a0 = impl_witness_access constants.%impl_witness.25b, element0 [template = constants.%Convert.718] +// CHECK:STDOUT: %Convert.bound.loc15_34: = bound_method %int_7, %impl.elem0.loc15_34 [template = constants.%Convert.bound.e27] +// CHECK:STDOUT: %int.convert_checked.loc15: init %i32.builtin = call %Convert.bound.loc15_34(%int_7) [template = constants.%int_7.6ae] +// CHECK:STDOUT: %.loc15_34.1: %i32.builtin = value_of_initializer %int.convert_checked.loc15 [template = constants.%int_7.6ae] +// CHECK:STDOUT: %.loc15_34.2: %i32.builtin = converted %int_7, %.loc15_34.1 [template = constants.%int_7.6ae] +// CHECK:STDOUT: %C.loc15: type = class_type @C, @C(constants.%int_7.6ae) [template = constants.%C.7a2] +// CHECK:STDOUT: %.loc15_24.2: ref %C.7a2 = temporary_storage +// CHECK:STDOUT: %.loc15_24.3: init %C.7a2 = class_init (), %.loc15_24.2 [template = constants.%C.val.cdc] +// CHECK:STDOUT: %.loc15_24.4: ref %C.7a2 = temporary %.loc15_24.2, %.loc15_24.3 +// CHECK:STDOUT: %.loc15_26.1: ref %C.7a2 = converted %.loc15_24.1, %.loc15_24.4 +// CHECK:STDOUT: %impl.elem0.loc15_35: %Convert.type.c19 = impl_witness_access constants.%impl_witness.aef, element0 [template = constants.%Convert.5ef] // CHECK:STDOUT: %Convert.bound.loc15_35: = bound_method %.loc15_26.1, %impl.elem0.loc15_35 // CHECK:STDOUT: %.loc15_35.1: ref %D = temporary_storage -// CHECK:STDOUT: %.loc15_26.2: %C.9 = bind_value %.loc15_26.1 +// CHECK:STDOUT: %.loc15_26.2: %C.7a2 = bind_value %.loc15_26.1 // CHECK:STDOUT: %Convert.call.loc15: init %D = call %Convert.bound.loc15_35(%.loc15_26.2) to %.loc15_35.1 // CHECK:STDOUT: %.loc15_35.2: init %D = converted %.loc15_26.1, %Convert.call.loc15 // CHECK:STDOUT: return %.loc15_35.2 to %return // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc15: // CHECK:STDOUT: %P.ref.loc16: = name_ref P, imports.%P [template = imports.%P] -// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%import_ref.52 [template = constants.%Make] +// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%import_ref.30b [template = constants.%Make] // CHECK:STDOUT: %.loc7_15: ref %D = splice_block %return {} // CHECK:STDOUT: %Make.call: init %D = call %Make.ref() to %.loc7_15 // CHECK:STDOUT: return %Make.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self: %ImplicitAs.type.2) [from "core.carbon"] { +// CHECK:STDOUT: generic fn @Convert.1(constants.%T: type, constants.%Self: %ImplicitAs.type.d33) [from "core.carbon"] { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.2)] -// CHECK:STDOUT: %Self: %ImplicitAs.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] +// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(%T)> [symbolic = %ImplicitAs.type (constants.%ImplicitAs.type.d33)] +// CHECK:STDOUT: %Self: %ImplicitAs.type.d33 = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self)] // CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic = %Self.as_type (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: fn[%self.param_patt: @Convert.1.%Self.as_type (%Self.as_type)]() -> @Convert.1.%T (%T); @@ -1528,21 +1528,21 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: Core.IntLiteral]() -> %i32.builtin = "int.convert_checked" [from "core.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.3[%self.param_patt: %C.2]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.3[%self.param_patt: %C.1a1]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.4[%self.param_patt: %C.3]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.4[%self.param_patt: %C.b1b]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.5[%self.param_patt: %C.4]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.5[%self.param_patt: %C.1f5]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.6[%self.param_patt: %C.5]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.6[%self.param_patt: %C.93c]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.7[%self.param_patt: %C.6]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.7[%self.param_patt: %C.305]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.8[%self.param_patt: %C.7]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.8[%self.param_patt: %C.df3]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.9[%self.param_patt: %C.8]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.9[%self.param_patt: %C.9d8]() -> %D [from "library.carbon"]; // CHECK:STDOUT: -// CHECK:STDOUT: fn @Convert.10[%self.param_patt: %C.9]() -> %D [from "library.carbon"]; +// CHECK:STDOUT: fn @Convert.10[%self.param_patt: %C.7a2]() -> %D [from "library.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %D [from "library.carbon"]; // CHECK:STDOUT: @@ -1562,7 +1562,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: specific @Convert.1(constants.%T, constants.%Self) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.d33 // CHECK:STDOUT: %Self => constants.%Self // CHECK:STDOUT: %Self.as_type => constants.%Self.as_type // CHECK:STDOUT: } @@ -1572,17 +1572,17 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt => constants.%i32.builtin // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.3 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.51b // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2 -// CHECK:STDOUT: %Convert => constants.%Convert.2 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.2a0 +// CHECK:STDOUT: %Convert => constants.%Convert.756 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.f84 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.695 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_0.2) { -// CHECK:STDOUT: %N => constants.%int_0.2 -// CHECK:STDOUT: %N.patt => constants.%int_0.2 +// CHECK:STDOUT: specific @C(constants.%int_0.a54) { +// CHECK:STDOUT: %N => constants.%int_0.a54 +// CHECK:STDOUT: %N.patt => constants.%int_0.a54 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } @@ -1592,59 +1592,59 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %T.patt => constants.%D // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.4 +// CHECK:STDOUT: %ImplicitAs.type => constants.%ImplicitAs.type.2fd // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Convert.type => constants.%Convert.type.4 -// CHECK:STDOUT: %Convert => constants.%Convert.4 -// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.4 +// CHECK:STDOUT: %Convert.type => constants.%Convert.type.c19 +// CHECK:STDOUT: %Convert => constants.%Convert.2c0 +// CHECK:STDOUT: %Convert.assoc_type => constants.%Convert.assoc_type.0de +// CHECK:STDOUT: %assoc0 => constants.%assoc0.090 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_1.1) { -// CHECK:STDOUT: %N => constants.%int_1.1 -// CHECK:STDOUT: %N.patt => constants.%int_1.1 +// CHECK:STDOUT: specific @C(constants.%int_1.f38) { +// CHECK:STDOUT: %N => constants.%int_1.f38 +// CHECK:STDOUT: %N.patt => constants.%int_1.f38 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_2.1) { -// CHECK:STDOUT: %N => constants.%int_2.1 -// CHECK:STDOUT: %N.patt => constants.%int_2.1 +// CHECK:STDOUT: specific @C(constants.%int_2.5a1) { +// CHECK:STDOUT: %N => constants.%int_2.5a1 +// CHECK:STDOUT: %N.patt => constants.%int_2.5a1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_3.1) { -// CHECK:STDOUT: %N => constants.%int_3.1 -// CHECK:STDOUT: %N.patt => constants.%int_3.1 +// CHECK:STDOUT: specific @C(constants.%int_3.a0f) { +// CHECK:STDOUT: %N => constants.%int_3.a0f +// CHECK:STDOUT: %N.patt => constants.%int_3.a0f // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_4.1) { -// CHECK:STDOUT: %N => constants.%int_4.1 -// CHECK:STDOUT: %N.patt => constants.%int_4.1 +// CHECK:STDOUT: specific @C(constants.%int_4.4f1) { +// CHECK:STDOUT: %N => constants.%int_4.4f1 +// CHECK:STDOUT: %N.patt => constants.%int_4.4f1 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_5.1) { -// CHECK:STDOUT: %N => constants.%int_5.1 -// CHECK:STDOUT: %N.patt => constants.%int_5.1 +// CHECK:STDOUT: specific @C(constants.%int_5.967) { +// CHECK:STDOUT: %N => constants.%int_5.967 +// CHECK:STDOUT: %N.patt => constants.%int_5.967 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_6.1) { -// CHECK:STDOUT: %N => constants.%int_6.1 -// CHECK:STDOUT: %N.patt => constants.%int_6.1 +// CHECK:STDOUT: specific @C(constants.%int_6.ec5) { +// CHECK:STDOUT: %N => constants.%int_6.ec5 +// CHECK:STDOUT: %N.patt => constants.%int_6.ec5 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%int_7.1) { -// CHECK:STDOUT: %N => constants.%int_7.1 -// CHECK:STDOUT: %N.patt => constants.%int_7.1 +// CHECK:STDOUT: specific @C(constants.%int_7.6ae) { +// CHECK:STDOUT: %N => constants.%int_7.6ae +// CHECK:STDOUT: %N.patt => constants.%int_7.6ae // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index b3a5ebfc8908..b85b2147c240 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -30,36 +30,36 @@ fn G() -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %i32 [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %struct_type.a.b.1 [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %complete_type.e46: = complete_type_witness %struct_type.a.b.3de [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %C.val: %C = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -96,7 +96,7 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %.loc12: %C.elem = field_decl a, element0 [template] // CHECK:STDOUT: %.loc13: %C.elem = field_decl b, element1 [template] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.1 [template = constants.%complete_type.3] +// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.3de [template = constants.%complete_type.e46] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C @@ -108,23 +108,23 @@ fn G() -> i32 { // CHECK:STDOUT: fn @F() -> %return.param_patt: %C { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %result: ref %C = bind_name result, %return -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc17_43.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc17_43.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_43.1: = bound_method %int_1, %impl.elem0.loc17_43.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc17_43.1: = specific_function %Convert.bound.loc17_43.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc17_43.1: init %i32 = call %Convert.specific_fn.loc17_43.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc17_43.2: init %i32 = converted %int_1, %int.convert_checked.loc17_43.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc17_43.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc17_43.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_43.1: = bound_method %int_1, %impl.elem0.loc17_43.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc17_43.1: = specific_function %Convert.bound.loc17_43.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc17_43.1: init %i32 = call %Convert.specific_fn.loc17_43.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc17_43.2: init %i32 = converted %int_1, %int.convert_checked.loc17_43.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc17_43.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc17_43.4: init %i32 = initialize_from %.loc17_43.2 to %.loc17_43.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc17_43.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc17_43.2: = bound_method %int_2, %impl.elem0.loc17_43.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc17_43.2: = specific_function %Convert.bound.loc17_43.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc17_43.2: init %i32 = call %Convert.specific_fn.loc17_43.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_43.5: init %i32 = converted %int_2, %int.convert_checked.loc17_43.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_43.4: init %i32 = initialize_from %.loc17_43.2 to %.loc17_43.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc17_43.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc17_43.2: = bound_method %int_2, %impl.elem0.loc17_43.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc17_43.2: = specific_function %Convert.bound.loc17_43.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc17_43.2: init %i32 = call %Convert.specific_fn.loc17_43.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_43.5: init %i32 = converted %int_2, %int.convert_checked.loc17_43.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_43.6: ref %i32 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc17_43.7: init %i32 = initialize_from %.loc17_43.5 to %.loc17_43.6 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_43.7: init %i32 = initialize_from %.loc17_43.5 to %.loc17_43.6 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_43.8: init %C = class_init (%.loc17_43.4, %.loc17_43.7), %return [template = constants.%C.val] // CHECK:STDOUT: %.loc17_44: init %C = converted %.loc17_43.1, %.loc17_43.8 [template = constants.%C.val] // CHECK:STDOUT: assign %return, %.loc17_44 @@ -135,12 +135,12 @@ fn G() -> i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %result.var: ref %i32 = var result // CHECK:STDOUT: %result: ref %i32 = bind_name result, %result.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc22_31: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc22_31: init %i32 = converted %int_0, %int.convert_checked [template = constants.%int_0.f61] // CHECK:STDOUT: assign %result.var, %.loc22_31 // CHECK:STDOUT: %.loc22_16: %i32 = bind_value %result // CHECK:STDOUT: return %.loc22_16 diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index ab24ae8e6571..07d7e35f4352 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -35,18 +35,18 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: %UnrelatedScopes.type: type = fn_type @UnrelatedScopes [template] // CHECK:STDOUT: %UnrelatedScopes: %UnrelatedScopes.type = struct_value () [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] // CHECK:STDOUT: %EnclosingButAfter.type: type = fn_type @EnclosingButAfter [template] @@ -55,9 +55,9 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Bool = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -107,12 +107,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: !if.then.loc12: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13: init %i32 = converted %int_0.loc13, %int.convert_checked.loc13 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc13: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc13: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13: = bound_method %int_0.loc13, %impl.elem0.loc13 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc13: = specific_function %Convert.bound.loc13, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc13: init %i32 = call %Convert.specific_fn.loc13(%int_0.loc13) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13: init %i32 = converted %int_0.loc13, %int.convert_checked.loc13 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %v.var, %.loc13 // CHECK:STDOUT: br !if.else.loc12 // CHECK:STDOUT: @@ -123,23 +123,23 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: !if.then.loc15: // CHECK:STDOUT: %w.var: ref %i32 = var w // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc16: init %i32 = converted %int_1, %int.convert_checked.loc16 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc16: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc16: = bound_method %int_1, %impl.elem0.loc16 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc16: = specific_function %Convert.bound.loc16, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc16: init %i32 = call %Convert.specific_fn.loc16(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc16: init %i32 = converted %int_1, %int.convert_checked.loc16 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %w.var, %.loc16 // CHECK:STDOUT: br !if.else.loc15 // CHECK:STDOUT: // CHECK:STDOUT: !if.else.loc15: -// CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_0.loc18, %impl.elem0.loc18 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_0.loc18) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc18_11.1: %i32 = value_of_initializer %int.convert_checked.loc18 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc18_11.2: %i32 = converted %int_0.loc18, %.loc18_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc18: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18: = bound_method %int_0.loc18, %impl.elem0.loc18 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc18: = specific_function %Convert.bound.loc18, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %Convert.specific_fn.loc18(%int_0.loc18) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc18_11.1: %i32 = value_of_initializer %int.convert_checked.loc18 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc18_11.2: %i32 = converted %int_0.loc18, %.loc18_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc18_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -151,12 +151,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: !if.then: // CHECK:STDOUT: %v.var: ref %i32 = var v // CHECK:STDOUT: %v: ref %i32 = bind_name v, %v.var -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_0, %impl.elem0.loc23 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc23_28: init %i32 = converted %int_0, %int.convert_checked.loc23 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc23: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc23: = bound_method %int_0, %impl.elem0.loc23 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc23: = specific_function %Convert.bound.loc23, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %Convert.specific_fn.loc23(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc23_28: init %i32 = converted %int_0, %int.convert_checked.loc23 [template = constants.%int_0.f61] // CHECK:STDOUT: assign %v.var, %.loc23_28 // CHECK:STDOUT: %.loc23_18: %i32 = bind_value %v // CHECK:STDOUT: return %.loc23_18 @@ -164,12 +164,12 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: !if.else: // CHECK:STDOUT: %w.var: ref %i32 = var w // CHECK:STDOUT: %w: ref %i32 = bind_name w, %w.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_1, %impl.elem0.loc26 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc26_26: init %i32 = converted %int_1, %int.convert_checked.loc26 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %impl.elem0.loc26: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc26: = bound_method %int_1, %impl.elem0.loc26 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc26: = specific_function %Convert.bound.loc26, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %Convert.specific_fn.loc26(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc26_26: init %i32 = converted %int_1, %int.convert_checked.loc26 [template = constants.%int_1.c60] // CHECK:STDOUT: assign %w.var, %.loc26_26 // CHECK:STDOUT: %.loc26_16: %i32 = bind_value %w // CHECK:STDOUT: return %.loc26_16 diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index 76d9b355c20a..714117648155 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -17,25 +17,25 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1, %Convert.10 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_3.1ba, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %struct: %struct_type.a.1 = struct_value (%int_3.2) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %struct: %struct_type.a.7cc = struct_value (%int_3.25b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,29 +48,29 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { -// CHECK:STDOUT: %return.patt: %struct_type.a.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %struct_type.a.1 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %struct_type.a.7cc = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %struct_type.a.7cc = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template = constants.%struct_type.a.1] -// CHECK:STDOUT: %return.param: ref %struct_type.a.1 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %struct_type.a.1 = return_slot %return.param +// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template = constants.%struct_type.a.7cc] +// CHECK:STDOUT: %return.param: ref %struct_type.a.7cc = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %struct_type.a.7cc = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() -> %struct_type.a.1 { +// CHECK:STDOUT: fn @Main() -> %struct_type.a.7cc { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc12_17.1: %struct_type.a.2 = struct_literal (%int_3) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc12_17.1: %struct_type.a.a6c = struct_literal (%int_3) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_3, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_17.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc12_17.3: %i32 = converted %int_3, %.loc12_17.2 [template = constants.%int_3.2] -// CHECK:STDOUT: %struct: %struct_type.a.1 = struct_value (%.loc12_17.3) [template = constants.%struct] -// CHECK:STDOUT: %.loc12_18: %struct_type.a.1 = converted %.loc12_17.1, %struct [template = constants.%struct] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_17.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc12_17.3: %i32 = converted %int_3, %.loc12_17.2 [template = constants.%int_3.25b] +// CHECK:STDOUT: %struct: %struct_type.a.7cc = struct_value (%.loc12_17.3) [template = constants.%struct] +// CHECK:STDOUT: %.loc12_18: %struct_type.a.7cc = converted %.loc12_17.1, %struct [template = constants.%struct] // CHECK:STDOUT: return %.loc12_18 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index 2a96f04459fd..1f2cb9a7741c 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -18,30 +18,30 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_15.1: Core.IntLiteral = int_value 15 [template] -// CHECK:STDOUT: %int_35.1: Core.IntLiteral = int_value 35 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_15.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_15.2: %i32 = int_value 15 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_35.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_35.2: %i32 = int_value 35 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_15.2, %int_35.2) [template] +// CHECK:STDOUT: %int_15.447: Core.IntLiteral = int_value 15 [template] +// CHECK:STDOUT: %int_35.c79: Core.IntLiteral = int_value 35 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.bc3: = bound_method %int_15.447, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.098: = specific_function %Convert.bound.bc3, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_15.761: %i32 = int_value 15 [template] +// CHECK:STDOUT: %Convert.bound.9e7: = bound_method %int_35.c79, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.dba: = specific_function %Convert.bound.9e7, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_35.545: %i32 = int_value 35 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_15.761, %int_35.545) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,41 +54,41 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [template = constants.%Main] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.471 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.471 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc12_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc12_20: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc12_20: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc12_23.1: %tuple.type.1 = tuple_literal (%i32.loc12_15, %i32.loc12_20) -// CHECK:STDOUT: %.loc12_23.2: type = converted %.loc12_23.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc12_23.1: %tuple.type.24b = tuple_literal (%i32.loc12_15, %i32.loc12_20) +// CHECK:STDOUT: %.loc12_23.2: type = converted %.loc12_23.1, constants.%tuple.type.471 [template = constants.%tuple.type.471] +// CHECK:STDOUT: %return.param: ref %tuple.type.471 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.471 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() -> %return.param_patt: %tuple.type.2 { +// CHECK:STDOUT: fn @Main() -> %return.param_patt: %tuple.type.471 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_15: Core.IntLiteral = int_value 15 [template = constants.%int_15.1] -// CHECK:STDOUT: %int_35: Core.IntLiteral = int_value 35 [template = constants.%int_35.1] -// CHECK:STDOUT: %.loc13_17.1: %tuple.type.3 = tuple_literal (%int_15, %int_35) -// CHECK:STDOUT: %impl.elem0.loc13_17.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_17.1: = bound_method %int_15, %impl.elem0.loc13_17.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc13_17.1: = specific_function %Convert.bound.loc13_17.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc13_17.1: init %i32 = call %Convert.specific_fn.loc13_17.1(%int_15) [template = constants.%int_15.2] -// CHECK:STDOUT: %.loc13_17.2: init %i32 = converted %int_15, %int.convert_checked.loc13_17.1 [template = constants.%int_15.2] +// CHECK:STDOUT: %int_15: Core.IntLiteral = int_value 15 [template = constants.%int_15.447] +// CHECK:STDOUT: %int_35: Core.IntLiteral = int_value 35 [template = constants.%int_35.c79] +// CHECK:STDOUT: %.loc13_17.1: %tuple.type.f94 = tuple_literal (%int_15, %int_35) +// CHECK:STDOUT: %impl.elem0.loc13_17.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_17.1: = bound_method %int_15, %impl.elem0.loc13_17.1 [template = constants.%Convert.bound.bc3] +// CHECK:STDOUT: %Convert.specific_fn.loc13_17.1: = specific_function %Convert.bound.loc13_17.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.098] +// CHECK:STDOUT: %int.convert_checked.loc13_17.1: init %i32 = call %Convert.specific_fn.loc13_17.1(%int_15) [template = constants.%int_15.761] +// CHECK:STDOUT: %.loc13_17.2: init %i32 = converted %int_15, %int.convert_checked.loc13_17.1 [template = constants.%int_15.761] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return, element0 -// CHECK:STDOUT: %.loc13_17.3: init %i32 = initialize_from %.loc13_17.2 to %tuple.elem0 [template = constants.%int_15.2] -// CHECK:STDOUT: %impl.elem0.loc13_17.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc13_17.2: = bound_method %int_35, %impl.elem0.loc13_17.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_17.2: = specific_function %Convert.bound.loc13_17.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_17.2: init %i32 = call %Convert.specific_fn.loc13_17.2(%int_35) [template = constants.%int_35.2] -// CHECK:STDOUT: %.loc13_17.4: init %i32 = converted %int_35, %int.convert_checked.loc13_17.2 [template = constants.%int_35.2] +// CHECK:STDOUT: %.loc13_17.3: init %i32 = initialize_from %.loc13_17.2 to %tuple.elem0 [template = constants.%int_15.761] +// CHECK:STDOUT: %impl.elem0.loc13_17.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc13_17.2: = bound_method %int_35, %impl.elem0.loc13_17.2 [template = constants.%Convert.bound.9e7] +// CHECK:STDOUT: %Convert.specific_fn.loc13_17.2: = specific_function %Convert.bound.loc13_17.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.dba] +// CHECK:STDOUT: %int.convert_checked.loc13_17.2: init %i32 = call %Convert.specific_fn.loc13_17.2(%int_35) [template = constants.%int_35.545] +// CHECK:STDOUT: %.loc13_17.4: init %i32 = converted %int_35, %int.convert_checked.loc13_17.2 [template = constants.%int_35.545] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return, element1 -// CHECK:STDOUT: %.loc13_17.5: init %i32 = initialize_from %.loc13_17.4 to %tuple.elem1 [template = constants.%int_35.2] -// CHECK:STDOUT: %.loc13_17.6: init %tuple.type.2 = tuple_init (%.loc13_17.3, %.loc13_17.5) to %return [template = constants.%tuple] -// CHECK:STDOUT: %.loc13_18: init %tuple.type.2 = converted %.loc13_17.1, %.loc13_17.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc13_17.5: init %i32 = initialize_from %.loc13_17.4 to %tuple.elem1 [template = constants.%int_35.545] +// CHECK:STDOUT: %.loc13_17.6: init %tuple.type.471 = tuple_init (%.loc13_17.3, %.loc13_17.5) to %return [template = constants.%tuple] +// CHECK:STDOUT: %.loc13_18: init %tuple.type.471 = converted %.loc13_17.1, %.loc13_17.6 [template = constants.%tuple] // CHECK:STDOUT: return %.loc13_18 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index ac097e4af131..9fa65d760d03 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -19,20 +19,20 @@ fn Main() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %Main.type: type = fn_type @Main [template] // CHECK:STDOUT: %Main: %Main.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -57,13 +57,13 @@ fn Main() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_11.2: %i32 = converted %int_0, %.loc12_11.1 [template = constants.%int_0.f61] // CHECK:STDOUT: return %.loc12_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/fail_assign_empty.carbon b/toolchain/check/testdata/struct/fail_assign_empty.carbon index 285bd994a813..0aba6431ce98 100644 --- a/toolchain/check/testdata/struct/fail_assign_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_empty.carbon @@ -24,7 +24,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index ce8779863d80..9e7c3ad16d03 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -60,9 +60,9 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] // CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %i32} [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] @@ -70,7 +70,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -103,8 +103,8 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: %return.param: ref = out_param runtime_param0 // CHECK:STDOUT: %return: ref = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref %struct_type.a.2 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.2 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.7cc = var x +// CHECK:STDOUT: %x: ref %struct_type.a.7cc = bind_name x, %x.var // CHECK:STDOUT: %y.var: ref %struct_type.b.c = var y // CHECK:STDOUT: %y: ref %struct_type.b.c = bind_name y, %y.var // CHECK:STDOUT: } @@ -114,7 +114,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1.loc27: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %.loc27: %struct_type.a.1 = struct_literal (%int_1.loc27) +// CHECK:STDOUT: %.loc27: %struct_type.a.a6c = struct_literal (%int_1.loc27) // CHECK:STDOUT: %v: = bind_name v, // CHECK:STDOUT: %int_1.loc36: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %int_2.loc36: Core.IntLiteral = int_value 2 [template = constants.%int_2] diff --git a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon index 0836172189b9..70dca602fd0d 100644 --- a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon @@ -26,13 +26,13 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.b.1: type = struct_type {.b: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct_type.b.2: type = struct_type {.b: %i32} [template] +// CHECK:STDOUT: %struct_type.b.a15: type = struct_type {.b: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.b.fc0: type = struct_type {.b: %i32} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -47,14 +47,14 @@ var y: {.b: i32} = x; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %x.var: ref %struct_type.a = var x // CHECK:STDOUT: %x: ref %struct_type.a = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %struct_type.b.2 = var y -// CHECK:STDOUT: %y: ref %struct_type.b.2 = bind_name y, %y.var +// CHECK:STDOUT: %y.var: ref %struct_type.b.fc0 = var y +// CHECK:STDOUT: %y: ref %struct_type.b.fc0 = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] -// CHECK:STDOUT: %.loc15: %struct_type.b.1 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc15: %struct_type.b.a15 = struct_literal (%int_1) // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: %x.ref: ref %struct_type.a = name_ref x, file.%x // CHECK:STDOUT: assign file.%y.var, diff --git a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon index b4d182974b0a..5d78f8bd5d60 100644 --- a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon @@ -25,7 +25,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index 3667d373f617..b3a844400b8b 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -26,8 +26,8 @@ var y: i32 = x.b; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 920cf175b327..3cc7466e2d74 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -19,23 +19,23 @@ var y: i32 = x.b; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.1, %Convert.10 [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %struct: %struct_type.a.1 = struct_value (%int_4.2) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %struct: %struct_type.a.7cc = struct_value (%int_4.2ec) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,25 +48,25 @@ var y: i32 = x.b; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %struct_type.a.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.1 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.7cc = var x +// CHECK:STDOUT: %x: ref %struct_type.a.7cc = bind_name x, %x.var // CHECK:STDOUT: %y.var: ref %i32 = var y // CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc11_27.1: %struct_type.a.2 = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc11_27.1: %struct_type.a.a6c = struct_literal (%int_4) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.1 = struct_init (%.loc11_27.2) to file.%x.var [template = constants.%struct] -// CHECK:STDOUT: %.loc11_28: init %struct_type.a.1 = converted %.loc11_27.1, %.loc11_27.3 [template = constants.%struct] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.7cc = struct_init (%.loc11_27.2) to file.%x.var [template = constants.%struct] +// CHECK:STDOUT: %.loc11_28: init %struct_type.a.7cc = converted %.loc11_27.1, %.loc11_27.3 [template = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_28 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.1 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.7cc = name_ref x, file.%x // CHECK:STDOUT: assign file.%y.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_too_few_values.carbon b/toolchain/check/testdata/struct/fail_too_few_values.carbon index ac4d51608b66..4b943142a288 100644 --- a/toolchain/check/testdata/struct/fail_too_few_values.carbon +++ b/toolchain/check/testdata/struct/fail_too_few_values.carbon @@ -25,7 +25,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_type_assign.carbon b/toolchain/check/testdata/struct/fail_type_assign.carbon index 46ae6394e651..c5cd444dda9d 100644 --- a/toolchain/check/testdata/struct/fail_type_assign.carbon +++ b/toolchain/check/testdata/struct/fail_type_assign.carbon @@ -26,8 +26,8 @@ var x: {.a: i32} = {.a: i32}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/fail_value_as_type.carbon b/toolchain/check/testdata/struct/fail_value_as_type.carbon index 0483713922be..70af13bab2cc 100644 --- a/toolchain/check/testdata/struct/fail_value_as_type.carbon +++ b/toolchain/check/testdata/struct/fail_value_as_type.carbon @@ -23,7 +23,7 @@ var x: {.a = 1}; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index 5677496e7553..37894ada6628 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -56,53 +56,53 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %struct.1: %struct_type.a.1 = struct_value (%int_0.2) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %struct_type.b.c.1: type = struct_type {.b: %i32, .c: %tuple.type.2} [template] -// CHECK:STDOUT: %struct_type.a.d.1: type = struct_type {.a: %struct_type.b.c.1, .d: %i32} [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %struct_type.b.c.2: type = struct_type {.b: Core.IntLiteral, .c: %tuple.type.3} [template] -// CHECK:STDOUT: %struct_type.a.d.3: type = struct_type {.a: %struct_type.b.c.2, .d: Core.IntLiteral} [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_0.2) [template] -// CHECK:STDOUT: %struct.2: %struct_type.b.c.1 = struct_value (%int_0.2, %tuple) [template] -// CHECK:STDOUT: %struct.3: %struct_type.a.d.1 = struct_value (%struct.2, %int_0.2) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %S: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic] -// CHECK:STDOUT: %S.patt: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %struct.96f: %struct_type.a.7cc = struct_value (%int_0.f61) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %struct_type.b.c.879: type = struct_type {.b: %i32, .c: %tuple.type.0e4} [template] +// CHECK:STDOUT: %struct_type.a.d.1e9: type = struct_type {.a: %struct_type.b.c.879, .d: %i32} [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %struct_type.b.c.9af: type = struct_type {.b: Core.IntLiteral, .c: %tuple.type.985} [template] +// CHECK:STDOUT: %struct_type.a.d.b82: type = struct_type {.a: %struct_type.b.c.9af, .d: Core.IntLiteral} [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_0.f61) [template] +// CHECK:STDOUT: %struct.d06: %struct_type.b.c.879 = struct_value (%int_0.f61, %tuple) [template] +// CHECK:STDOUT: %struct.34f: %struct_type.a.d.1e9 = struct_value (%struct.d06, %int_0.f61) [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %S: %struct_type.a.b.3de = bind_symbolic_name S, 0 [symbolic] +// CHECK:STDOUT: %S.patt: %struct_type.a.b.3de = symbolic_binding_pattern S, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%S) [symbolic] +// CHECK:STDOUT: %C.c61: type = class_type @C, @C(%S) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct.4: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%struct.4) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct.889: %struct_type.a.b.3de = struct_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %C.61d: type = class_type @C, @C(%struct.889) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -117,115 +117,115 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a_ref.var: ref %struct_type.a.1 = var a_ref -// CHECK:STDOUT: %a_ref: ref %struct_type.a.1 = bind_name a_ref, %a_ref.var -// CHECK:STDOUT: %b_ref.var: ref %struct_type.a.d.1 = var b_ref -// CHECK:STDOUT: %b_ref: ref %struct_type.a.d.1 = bind_name b_ref, %b_ref.var +// CHECK:STDOUT: %a_ref.var: ref %struct_type.a.7cc = var a_ref +// CHECK:STDOUT: %a_ref: ref %struct_type.a.7cc = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %b_ref.var: ref %struct_type.a.d.1e9 = var b_ref +// CHECK:STDOUT: %b_ref: ref %struct_type.a.d.1e9 = bind_name b_ref, %b_ref.var // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] { -// CHECK:STDOUT: %S.patt.loc8_9.1: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] -// CHECK:STDOUT: %S.param_patt: %struct_type.a.b.1 = value_param_pattern %S.patt.loc8_9.1, runtime_param [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] +// CHECK:STDOUT: %S.patt.loc8_9.1: %struct_type.a.b.3de = symbolic_binding_pattern S, 0 [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] +// CHECK:STDOUT: %S.param_patt: %struct_type.a.b.3de = value_param_pattern %S.patt.loc8_9.1, runtime_param [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %S.param: %struct_type.a.b.1 = value_param runtime_param -// CHECK:STDOUT: %.loc8: type = splice_block %struct_type.a.b [template = constants.%struct_type.a.b.1] { +// CHECK:STDOUT: %S.param: %struct_type.a.b.3de = value_param runtime_param +// CHECK:STDOUT: %.loc8: type = splice_block %struct_type.a.b [template = constants.%struct_type.a.b.3de] { // CHECK:STDOUT: %int_32.loc8_18: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_18: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc8_27: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc8_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.1] +// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template = constants.%struct_type.a.b.3de] // CHECK:STDOUT: } -// CHECK:STDOUT: %S.loc8_9.1: %struct_type.a.b.1 = bind_symbolic_name S, 0, %S.param [symbolic = %S.loc8_9.2 (constants.%S)] +// CHECK:STDOUT: %S.loc8_9.1: %struct_type.a.b.3de = bind_symbolic_name S, 0, %S.param [symbolic = %S.loc8_9.2 (constants.%S)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.61d = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.61d = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc9_28.1: %struct_type.a.b.2 = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc9_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_28.1: = bound_method %int_1, %impl.elem0.loc9_28.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc9_28.1: = specific_function %Convert.bound.loc9_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc9_28.1: init %i32 = call %Convert.specific_fn.loc9_28.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_28.2: %i32 = value_of_initializer %int.convert_checked.loc9_28.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_28.3: %i32 = converted %int_1, %.loc9_28.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc9_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_28.2: = bound_method %int_2, %impl.elem0.loc9_28.2 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc9_28.2: = specific_function %Convert.bound.loc9_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc9_28.2: init %i32 = call %Convert.specific_fn.loc9_28.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc9_28.4: %i32 = value_of_initializer %int.convert_checked.loc9_28.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc9_28.5: %i32 = converted %int_2, %.loc9_28.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%.loc9_28.3, %.loc9_28.5) [template = constants.%struct.4] -// CHECK:STDOUT: %.loc9_29: %struct_type.a.b.1 = converted %.loc9_28.1, %struct [template = constants.%struct.4] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct.4) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc9_28.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc9_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_28.1: = bound_method %int_1, %impl.elem0.loc9_28.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc9_28.1: = specific_function %Convert.bound.loc9_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc9_28.1: init %i32 = call %Convert.specific_fn.loc9_28.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_28.2: %i32 = value_of_initializer %int.convert_checked.loc9_28.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_28.3: %i32 = converted %int_1, %.loc9_28.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc9_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_28.2: = bound_method %int_2, %impl.elem0.loc9_28.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc9_28.2: = specific_function %Convert.bound.loc9_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc9_28.2: init %i32 = call %Convert.specific_fn.loc9_28.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc9_28.4: %i32 = value_of_initializer %int.convert_checked.loc9_28.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc9_28.5: %i32 = converted %int_2, %.loc9_28.4 [template = constants.%int_2.166] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%.loc9_28.3, %.loc9_28.5) [template = constants.%struct.889] +// CHECK:STDOUT: %.loc9_29: %struct_type.a.b.3de = converted %.loc9_28.1, %struct [template = constants.%struct.889] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%struct.889) [template = constants.%C.61d] +// CHECK:STDOUT: %return.param: ref %C.61d = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.61d = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(%S.loc8_9.1: %struct_type.a.b.1) { -// CHECK:STDOUT: %S.loc8_9.2: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic = %S.loc8_9.2 (constants.%S)] -// CHECK:STDOUT: %S.patt.loc8_9.2: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] +// CHECK:STDOUT: generic class @C(%S.loc8_9.1: %struct_type.a.b.3de) { +// CHECK:STDOUT: %S.loc8_9.2: %struct_type.a.b.3de = bind_symbolic_name S, 0 [symbolic = %S.loc8_9.2 (constants.%S)] +// CHECK:STDOUT: %S.patt.loc8_9.2: %struct_type.a.b.3de = symbolic_binding_pattern S, 0 [symbolic = %S.patt.loc8_9.2 (constants.%S.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.c61 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2; +// CHECK:STDOUT: fn @F() -> %C.61d; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0.loc4: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc4_31.1: %struct_type.a.2 = struct_literal (%int_0.loc4) -// CHECK:STDOUT: %impl.elem0.loc4: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc4: = bound_method %int_0.loc4, %impl.elem0.loc4 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc4: = specific_function %Convert.bound.loc4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %Convert.specific_fn.loc4(%int_0.loc4) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_31.2: init %i32 = converted %int_0.loc4, %int.convert_checked.loc4 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_31.3: init %struct_type.a.1 = struct_init (%.loc4_31.2) to file.%a_ref.var [template = constants.%struct.1] -// CHECK:STDOUT: %.loc4_32: init %struct_type.a.1 = converted %.loc4_31.1, %.loc4_31.3 [template = constants.%struct.1] +// CHECK:STDOUT: %int_0.loc4: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc4_31.1: %struct_type.a.a6c = struct_literal (%int_0.loc4) +// CHECK:STDOUT: %impl.elem0.loc4: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc4: = bound_method %int_0.loc4, %impl.elem0.loc4 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc4: = specific_function %Convert.bound.loc4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %Convert.specific_fn.loc4(%int_0.loc4) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_31.2: init %i32 = converted %int_0.loc4, %int.convert_checked.loc4 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_31.3: init %struct_type.a.7cc = struct_init (%.loc4_31.2) to file.%a_ref.var [template = constants.%struct.96f] +// CHECK:STDOUT: %.loc4_32: init %struct_type.a.7cc = converted %.loc4_31.1, %.loc4_31.3 [template = constants.%struct.96f] // CHECK:STDOUT: assign file.%a_ref.var, %.loc4_32 -// CHECK:STDOUT: %int_0.loc6_17: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %int_0.loc6_26: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc6_28.1: %tuple.type.3 = tuple_literal (%int_0.loc6_26) -// CHECK:STDOUT: %.loc6_29.1: %struct_type.b.c.2 = struct_literal (%int_0.loc6_17, %.loc6_28.1) -// CHECK:STDOUT: %int_0.loc6_37: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc6_38.1: %struct_type.a.d.3 = struct_literal (%.loc6_29.1, %int_0.loc6_37) -// CHECK:STDOUT: %impl.elem0.loc6_29: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc6_29: = bound_method %int_0.loc6_17, %impl.elem0.loc6_29 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc6_29: = specific_function %Convert.bound.loc6_29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc6_29: init %i32 = call %Convert.specific_fn.loc6_29(%int_0.loc6_17) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_29.2: init %i32 = converted %int_0.loc6_17, %int.convert_checked.loc6_29 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_38.2: ref %struct_type.b.c.1 = struct_access file.%b_ref.var, element0 +// CHECK:STDOUT: %int_0.loc6_17: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %int_0.loc6_26: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc6_28.1: %tuple.type.985 = tuple_literal (%int_0.loc6_26) +// CHECK:STDOUT: %.loc6_29.1: %struct_type.b.c.9af = struct_literal (%int_0.loc6_17, %.loc6_28.1) +// CHECK:STDOUT: %int_0.loc6_37: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc6_38.1: %struct_type.a.d.b82 = struct_literal (%.loc6_29.1, %int_0.loc6_37) +// CHECK:STDOUT: %impl.elem0.loc6_29: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc6_29: = bound_method %int_0.loc6_17, %impl.elem0.loc6_29 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc6_29: = specific_function %Convert.bound.loc6_29, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc6_29: init %i32 = call %Convert.specific_fn.loc6_29(%int_0.loc6_17) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_29.2: init %i32 = converted %int_0.loc6_17, %int.convert_checked.loc6_29 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_38.2: ref %struct_type.b.c.879 = struct_access file.%b_ref.var, element0 // CHECK:STDOUT: %.loc6_29.3: ref %i32 = struct_access %.loc6_38.2, element0 -// CHECK:STDOUT: %.loc6_29.4: init %i32 = initialize_from %.loc6_29.2 to %.loc6_29.3 [template = constants.%int_0.2] -// CHECK:STDOUT: %impl.elem0.loc6_28: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc6_28: = bound_method %int_0.loc6_26, %impl.elem0.loc6_28 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc6_28: = specific_function %Convert.bound.loc6_28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc6_28: init %i32 = call %Convert.specific_fn.loc6_28(%int_0.loc6_26) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_28.2: init %i32 = converted %int_0.loc6_26, %int.convert_checked.loc6_28 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_29.5: ref %tuple.type.2 = struct_access %.loc6_38.2, element1 -// CHECK:STDOUT: %.loc6_28.3: init %tuple.type.2 = tuple_init (%.loc6_28.2) to %.loc6_29.5 [template = constants.%tuple] -// CHECK:STDOUT: %.loc6_29.6: init %tuple.type.2 = converted %.loc6_28.1, %.loc6_28.3 [template = constants.%tuple] -// CHECK:STDOUT: %.loc6_29.7: init %tuple.type.2 = initialize_from %.loc6_29.6 to %.loc6_29.5 [template = constants.%tuple] -// CHECK:STDOUT: %.loc6_29.8: init %struct_type.b.c.1 = struct_init (%.loc6_29.4, %.loc6_29.7) to %.loc6_38.2 [template = constants.%struct.2] -// CHECK:STDOUT: %.loc6_38.3: init %struct_type.b.c.1 = converted %.loc6_29.1, %.loc6_29.8 [template = constants.%struct.2] -// CHECK:STDOUT: %impl.elem0.loc6_38: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc6_38: = bound_method %int_0.loc6_37, %impl.elem0.loc6_38 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc6_38: = specific_function %Convert.bound.loc6_38, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc6_38: init %i32 = call %Convert.specific_fn.loc6_38(%int_0.loc6_37) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_38.4: init %i32 = converted %int_0.loc6_37, %int.convert_checked.loc6_38 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc6_29.4: init %i32 = initialize_from %.loc6_29.2 to %.loc6_29.3 [template = constants.%int_0.f61] +// CHECK:STDOUT: %impl.elem0.loc6_28: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc6_28: = bound_method %int_0.loc6_26, %impl.elem0.loc6_28 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc6_28: = specific_function %Convert.bound.loc6_28, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc6_28: init %i32 = call %Convert.specific_fn.loc6_28(%int_0.loc6_26) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_28.2: init %i32 = converted %int_0.loc6_26, %int.convert_checked.loc6_28 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_29.5: ref %tuple.type.0e4 = struct_access %.loc6_38.2, element1 +// CHECK:STDOUT: %.loc6_28.3: init %tuple.type.0e4 = tuple_init (%.loc6_28.2) to %.loc6_29.5 [template = constants.%tuple] +// CHECK:STDOUT: %.loc6_29.6: init %tuple.type.0e4 = converted %.loc6_28.1, %.loc6_28.3 [template = constants.%tuple] +// CHECK:STDOUT: %.loc6_29.7: init %tuple.type.0e4 = initialize_from %.loc6_29.6 to %.loc6_29.5 [template = constants.%tuple] +// CHECK:STDOUT: %.loc6_29.8: init %struct_type.b.c.879 = struct_init (%.loc6_29.4, %.loc6_29.7) to %.loc6_38.2 [template = constants.%struct.d06] +// CHECK:STDOUT: %.loc6_38.3: init %struct_type.b.c.879 = converted %.loc6_29.1, %.loc6_29.8 [template = constants.%struct.d06] +// CHECK:STDOUT: %impl.elem0.loc6_38: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc6_38: = bound_method %int_0.loc6_37, %impl.elem0.loc6_38 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc6_38: = specific_function %Convert.bound.loc6_38, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc6_38: init %i32 = call %Convert.specific_fn.loc6_38(%int_0.loc6_37) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_38.4: init %i32 = converted %int_0.loc6_37, %int.convert_checked.loc6_38 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc6_38.5: ref %i32 = struct_access file.%b_ref.var, element1 -// CHECK:STDOUT: %.loc6_38.6: init %i32 = initialize_from %.loc6_38.4 to %.loc6_38.5 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc6_38.7: init %struct_type.a.d.1 = struct_init (%.loc6_38.3, %.loc6_38.6) to file.%b_ref.var [template = constants.%struct.3] -// CHECK:STDOUT: %.loc6_39: init %struct_type.a.d.1 = converted %.loc6_38.1, %.loc6_38.7 [template = constants.%struct.3] +// CHECK:STDOUT: %.loc6_38.6: init %i32 = initialize_from %.loc6_38.4 to %.loc6_38.5 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc6_38.7: init %struct_type.a.d.1e9 = struct_init (%.loc6_38.3, %.loc6_38.6) to file.%b_ref.var [template = constants.%struct.34f] +// CHECK:STDOUT: %.loc6_39: init %struct_type.a.d.1e9 = converted %.loc6_38.1, %.loc6_38.7 [template = constants.%struct.34f] // CHECK:STDOUT: assign file.%b_ref.var, %.loc6_39 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -235,9 +235,9 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %S.patt.loc8_9.2 => constants.%S // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%struct.4) { -// CHECK:STDOUT: %S.loc8_9.2 => constants.%struct.4 -// CHECK:STDOUT: %S.patt.loc8_9.2 => constants.%struct.4 +// CHECK:STDOUT: specific @C(constants.%struct.889) { +// CHECK:STDOUT: %S.loc8_9.2 => constants.%struct.889 +// CHECK:STDOUT: %S.patt.loc8_9.2 => constants.%struct.889 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit.impl.carbon @@ -246,45 +246,45 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %tuple.type.2} [template] -// CHECK:STDOUT: %struct_type.a.d.1: type = struct_type {.a: %struct_type.b.c, .d: %i32} [template] +// CHECK:STDOUT: %tuple.type.590: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %struct_type.b.c: type = struct_type {.b: %i32, .c: %tuple.type.590} [template] +// CHECK:STDOUT: %struct_type.a.d.b93: type = struct_type {.a: %struct_type.b.c, .d: %i32} [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %S: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic] -// CHECK:STDOUT: %S.patt: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%struct) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %struct_type.a.b.29a: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %S: %struct_type.a.b.29a = bind_symbolic_name S, 0 [symbolic] +// CHECK:STDOUT: %S.patt: %struct_type.a.b.29a = symbolic_binding_pattern S, 0 [symbolic] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.29a = struct_value (%int_1.059, %int_2.ed9) [template] +// CHECK:STDOUT: %C.c37: type = class_type @C, @C(%struct) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: ref %struct_type.a = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %import_ref.2: ref %struct_type.a.d.1 = import_ref Implicit//default, b_ref, loaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.cd5: ref %struct_type.a = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %import_ref.8492: ref %struct_type.a.d.b93 = import_ref Implicit//default, b_ref, loaded +// CHECK:STDOUT: %import_ref.c8a: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.f0f: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.252 -// CHECK:STDOUT: .ImplicitAs = %import_ref.255 +// CHECK:STDOUT: .Int = %import_ref.d69 +// CHECK:STDOUT: .ImplicitAs = %import_ref.edd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.253: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.254 = import_ref Implicit//default, inst1017 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.5c7 = import_ref Implicit//default, inst1017 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.cd5 +// CHECK:STDOUT: .b_ref = imports.%import_ref.8492 +// CHECK:STDOUT: .C = imports.%import_ref.c8a +// CHECK:STDOUT: .F = imports.%import_ref.f0f // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b @@ -295,61 +295,61 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %a.var: ref %struct_type.a = var a // CHECK:STDOUT: %a: ref %struct_type.a = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %struct_type.a.d.1 = var b -// CHECK:STDOUT: %b: ref %struct_type.a.d.1 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.2 = var c -// CHECK:STDOUT: %c: ref %C.2 = bind_name c, %c.var +// CHECK:STDOUT: %b.var: ref %struct_type.a.d.b93 = var b +// CHECK:STDOUT: %b: ref %struct_type.a.d.b93 = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.c37 = var c +// CHECK:STDOUT: %c: ref %C.c37 = bind_name c, %c.var // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(constants.%S: %struct_type.a.b.1) [from "implicit.carbon"] { -// CHECK:STDOUT: %S: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic = %S (constants.%S)] -// CHECK:STDOUT: %S.patt: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic = %S.patt (constants.%S.patt)] +// CHECK:STDOUT: generic class @C(constants.%S: %struct_type.a.b.29a) [from "implicit.carbon"] { +// CHECK:STDOUT: %S: %struct_type.a.b.29a = bind_symbolic_name S, 0 [symbolic = %S (constants.%S)] +// CHECK:STDOUT: %S.patt: %struct_type.a.b.29a = symbolic_binding_pattern S, 0 [symbolic = %S.patt (constants.%S.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.254 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.253 +// CHECK:STDOUT: .Self = imports.%import_ref.5c7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.c37 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %struct_type.a = name_ref a_ref, imports.%import_ref.1 +// CHECK:STDOUT: %a_ref.ref: ref %struct_type.a = name_ref a_ref, imports.%import_ref.cd5 // CHECK:STDOUT: %.loc4_20.1: ref %i32 = struct_access %a_ref.ref, element0 // CHECK:STDOUT: %.loc4_20.2: %i32 = bind_value %.loc4_20.1 // CHECK:STDOUT: %.loc4_20.3: init %struct_type.a = struct_init (%.loc4_20.2) to file.%a.var // CHECK:STDOUT: %.loc4_25: init %struct_type.a = converted %a_ref.ref, %.loc4_20.3 // CHECK:STDOUT: assign file.%a.var, %.loc4_25 -// CHECK:STDOUT: %b_ref.ref: ref %struct_type.a.d.1 = name_ref b_ref, imports.%import_ref.2 +// CHECK:STDOUT: %b_ref.ref: ref %struct_type.a.d.b93 = name_ref b_ref, imports.%import_ref.8492 // CHECK:STDOUT: %.loc5_47.1: ref %struct_type.b.c = struct_access %b_ref.ref, element0 // CHECK:STDOUT: %.loc5_47.2: ref %i32 = struct_access %.loc5_47.1, element0 // CHECK:STDOUT: %.loc5_47.3: %i32 = bind_value %.loc5_47.2 // CHECK:STDOUT: %.loc5_47.4: ref %struct_type.b.c = struct_access file.%b.var, element0 // CHECK:STDOUT: %.loc5_47.5: ref %i32 = struct_access %.loc5_47.4, element0 // CHECK:STDOUT: %.loc5_47.6: init %i32 = initialize_from %.loc5_47.3 to %.loc5_47.5 -// CHECK:STDOUT: %.loc5_47.7: ref %tuple.type.2 = struct_access %.loc5_47.1, element1 +// CHECK:STDOUT: %.loc5_47.7: ref %tuple.type.590 = struct_access %.loc5_47.1, element1 // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc5_47.7, element0 // CHECK:STDOUT: %.loc5_47.8: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %.loc5_47.9: ref %tuple.type.2 = struct_access %.loc5_47.4, element1 -// CHECK:STDOUT: %.loc5_47.10: init %tuple.type.2 = tuple_init (%.loc5_47.8) to %.loc5_47.9 -// CHECK:STDOUT: %.loc5_47.11: init %tuple.type.2 = converted %.loc5_47.7, %.loc5_47.10 -// CHECK:STDOUT: %.loc5_47.12: init %tuple.type.2 = initialize_from %.loc5_47.11 to %.loc5_47.9 +// CHECK:STDOUT: %.loc5_47.9: ref %tuple.type.590 = struct_access %.loc5_47.4, element1 +// CHECK:STDOUT: %.loc5_47.10: init %tuple.type.590 = tuple_init (%.loc5_47.8) to %.loc5_47.9 +// CHECK:STDOUT: %.loc5_47.11: init %tuple.type.590 = converted %.loc5_47.7, %.loc5_47.10 +// CHECK:STDOUT: %.loc5_47.12: init %tuple.type.590 = initialize_from %.loc5_47.11 to %.loc5_47.9 // CHECK:STDOUT: %.loc5_47.13: init %struct_type.b.c = struct_init (%.loc5_47.6, %.loc5_47.12) to %.loc5_47.4 // CHECK:STDOUT: %.loc5_47.14: init %struct_type.b.c = converted %.loc5_47.1, %.loc5_47.13 // CHECK:STDOUT: %.loc5_47.15: ref %i32 = struct_access %b_ref.ref, element1 // CHECK:STDOUT: %.loc5_47.16: %i32 = bind_value %.loc5_47.15 // CHECK:STDOUT: %.loc5_47.17: ref %i32 = struct_access file.%b.var, element1 // CHECK:STDOUT: %.loc5_47.18: init %i32 = initialize_from %.loc5_47.16 to %.loc5_47.17 -// CHECK:STDOUT: %.loc5_47.19: init %struct_type.a.d.1 = struct_init (%.loc5_47.14, %.loc5_47.18) to file.%b.var -// CHECK:STDOUT: %.loc5_52: init %struct_type.a.d.1 = converted %b_ref.ref, %.loc5_47.19 +// CHECK:STDOUT: %.loc5_47.19: init %struct_type.a.d.b93 = struct_init (%.loc5_47.14, %.loc5_47.18) to file.%b.var +// CHECK:STDOUT: %.loc5_52: init %struct_type.a.d.b93 = converted %b_ref.ref, %.loc5_47.19 // CHECK:STDOUT: assign file.%b.var, %.loc5_52 -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc6: ref %C.2 = splice_block file.%c.var {} -// CHECK:STDOUT: %F.call: init %C.2 = call %F.ref() to %.loc6 +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.f0f [template = constants.%F] +// CHECK:STDOUT: %.loc6: ref %C.c37 = splice_block file.%c.var {} +// CHECK:STDOUT: %F.call: init %C.c37 = call %F.ref() to %.loc6 // CHECK:STDOUT: assign file.%c.var, %F.call // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -374,37 +374,37 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [template] // CHECK:STDOUT: %S: %struct_type.a.b = bind_symbolic_name S, 0 [symbolic] // CHECK:STDOUT: %S.patt: %struct_type.a.b = symbolic_binding_pattern S, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b = struct_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%struct) [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b = struct_value (%int_1.059, %int_2.ed9) [template] +// CHECK:STDOUT: %C.c37: type = class_type @C, @C(%struct) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, a_ref, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, b_ref, unloaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.970 = import_ref Implicit//default, a_ref, unloaded +// CHECK:STDOUT: %import_ref.dfd = import_ref Implicit//default, b_ref, unloaded +// CHECK:STDOUT: %import_ref.c8a: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.f0f: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.253 = import_ref Implicit//default, inst1017 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.5c7 = import_ref Implicit//default, inst1017 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.970 +// CHECK:STDOUT: .b_ref = imports.%import_ref.dfd +// CHECK:STDOUT: .C = imports.%import_ref.c8a +// CHECK:STDOUT: .F = imports.%import_ref.f0f // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .c_bad = %c_bad // CHECK:STDOUT: } @@ -423,18 +423,18 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.253 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.252 +// CHECK:STDOUT: .Self = imports.%import_ref.5c7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.c37 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc11: ref %C.2 = temporary_storage -// CHECK:STDOUT: %F.call: init %C.2 = call %F.ref() to %.loc11 +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.f0f [template = constants.%F] +// CHECK:STDOUT: %.loc11: ref %C.c37 = temporary_storage +// CHECK:STDOUT: %F.call: init %C.c37 = call %F.ref() to %.loc11 // CHECK:STDOUT: assign file.%c_bad.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -459,73 +459,73 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %S: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic] -// CHECK:STDOUT: %S.patt: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %struct.1: %struct_type.a.b.1 = struct_value (%int_3.2, %int_4.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%struct.1) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %struct_type.a.b.29a: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %S: %struct_type.a.b.29a = bind_symbolic_name S, 0 [symbolic] +// CHECK:STDOUT: %S.patt: %struct_type.a.b.29a = symbolic_binding_pattern S, 0 [symbolic] +// CHECK:STDOUT: %int_3.781: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_4.1ad: %i32 = int_value 4 [template] +// CHECK:STDOUT: %struct.c02: %struct_type.a.b.29a = struct_value (%int_3.781, %int_4.1ad) [template] +// CHECK:STDOUT: %C.729: type = class_type @C, @C(%struct.c02) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_2: %i32 = int_value 2 [template] // CHECK:STDOUT: %int_1: %i32 = int_value 1 [template] -// CHECK:STDOUT: %struct.2: %struct_type.a.b.1 = struct_value (%int_1, %int_2) [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%struct.2) [template] +// CHECK:STDOUT: %struct.778: %struct_type.a.b.29a = struct_value (%int_1, %int_2) [template] +// CHECK:STDOUT: %C.c37: type = class_type @C, @C(%struct.778) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, a_ref, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, b_ref, unloaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.970 = import_ref Implicit//default, a_ref, unloaded +// CHECK:STDOUT: %import_ref.dfd = import_ref Implicit//default, b_ref, unloaded +// CHECK:STDOUT: %import_ref.c8a: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.f0f: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.254 +// CHECK:STDOUT: .ImplicitAs = %import_ref.edd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.253 = import_ref Implicit//default, inst1017 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.5c7 = import_ref Implicit//default, inst1017 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.970 +// CHECK:STDOUT: .b_ref = imports.%import_ref.dfd +// CHECK:STDOUT: .C = imports.%import_ref.c8a +// CHECK:STDOUT: .F = imports.%import_ref.f0f // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .c_bad = %c_bad // CHECK:STDOUT: } // CHECK:STDOUT: %Implicit.import = import Implicit // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %c_bad.var: ref %C.2 = var c_bad -// CHECK:STDOUT: %c_bad: ref %C.2 = bind_name c_bad, %c_bad.var +// CHECK:STDOUT: %c_bad.var: ref %C.729 = var c_bad +// CHECK:STDOUT: %c_bad: ref %C.729 = bind_name c_bad, %c_bad.var // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(constants.%S: %struct_type.a.b.1) [from "implicit.carbon"] { -// CHECK:STDOUT: %S: %struct_type.a.b.1 = bind_symbolic_name S, 0 [symbolic = %S (constants.%S)] -// CHECK:STDOUT: %S.patt: %struct_type.a.b.1 = symbolic_binding_pattern S, 0 [symbolic = %S.patt (constants.%S.patt)] +// CHECK:STDOUT: generic class @C(constants.%S: %struct_type.a.b.29a) [from "implicit.carbon"] { +// CHECK:STDOUT: %S: %struct_type.a.b.29a = bind_symbolic_name S, 0 [symbolic = %S (constants.%S)] +// CHECK:STDOUT: %S.patt: %struct_type.a.b.29a = symbolic_binding_pattern S, 0 [symbolic = %S.patt (constants.%S.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.253 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.252 +// CHECK:STDOUT: .Self = imports.%import_ref.5c7 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.3 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.c37 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc9_36: ref %C.3 = temporary_storage -// CHECK:STDOUT: %F.call: init %C.3 = call %F.ref() to %.loc9_36 -// CHECK:STDOUT: %.loc9_37: %C.2 = converted %F.call, [template = ] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.f0f [template = constants.%F] +// CHECK:STDOUT: %.loc9_36: ref %C.c37 = temporary_storage +// CHECK:STDOUT: %F.call: init %C.c37 = call %F.ref() to %.loc9_36 +// CHECK:STDOUT: %.loc9_37: %C.729 = converted %F.call, [template = ] // CHECK:STDOUT: assign file.%c_bad.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -535,16 +535,16 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %S.patt => constants.%S // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%struct.1) { -// CHECK:STDOUT: %S => constants.%struct.1 -// CHECK:STDOUT: %S.patt => constants.%struct.1 +// CHECK:STDOUT: specific @C(constants.%struct.c02) { +// CHECK:STDOUT: %S => constants.%struct.c02 +// CHECK:STDOUT: %S.patt => constants.%struct.c02 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%struct.2) { -// CHECK:STDOUT: %S => constants.%struct.2 -// CHECK:STDOUT: %S.patt => constants.%struct.2 +// CHECK:STDOUT: specific @C(constants.%struct.778) { +// CHECK:STDOUT: %S => constants.%struct.778 +// CHECK:STDOUT: %S.patt => constants.%struct.778 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index 7c6d0131c236..1f84dc272176 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -26,12 +26,12 @@ fn F() -> i32 { // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %struct_type.a.b.c.1: type = struct_type {.a: Core.IntLiteral, .b: %struct_type.x.y.z, .c: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct_type.a.b.c.611: type = struct_type {.a: Core.IntLiteral, .b: %struct_type.x.y.z, .c: Core.IntLiteral} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -78,7 +78,7 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc14_26.1: ref %struct_type.x.y.z = temporary_storage // CHECK:STDOUT: %G.call: init %struct_type.x.y.z = call %G.ref() to %.loc14_26.1 // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3] -// CHECK:STDOUT: %.loc14_35.1: %struct_type.a.b.c.1 = struct_literal (%int_1, %G.call, %int_3) +// CHECK:STDOUT: %.loc14_35.1: %struct_type.a.b.c.611 = struct_literal (%int_1, %G.call, %int_3) // CHECK:STDOUT: %.loc14_26.2: ref %struct_type.x.y.z = temporary %.loc14_26.1, %G.call // CHECK:STDOUT: %.loc14_26.3: ref %i32 = struct_access %.loc14_26.2, element0 // CHECK:STDOUT: %.loc14_26.4: %i32 = bind_value %.loc14_26.3 @@ -88,8 +88,8 @@ fn F() -> i32 { // CHECK:STDOUT: %.loc14_26.8: %i32 = bind_value %.loc14_26.7 // CHECK:STDOUT: %struct.loc14_26: %struct_type.x.y.z = struct_value (%.loc14_26.4, %.loc14_26.6, %.loc14_26.8) // CHECK:STDOUT: %.loc14_35.2: %struct_type.x.y.z = converted %G.call, %struct.loc14_26 -// CHECK:STDOUT: %struct.loc14_35: %struct_type.a.b.c.1 = struct_value (%int_1, %.loc14_35.2, %int_3) -// CHECK:STDOUT: %.loc14_35.3: %struct_type.a.b.c.1 = converted %.loc14_35.1, %struct.loc14_35 +// CHECK:STDOUT: %struct.loc14_35: %struct_type.a.b.c.611 = struct_value (%int_1, %.loc14_35.2, %int_3) +// CHECK:STDOUT: %.loc14_35.3: %struct_type.a.b.c.611 = converted %.loc14_35.1, %struct.loc14_35 // CHECK:STDOUT: %.loc14_36: %struct_type.x.y.z = struct_access %.loc14_35.3, element1 // CHECK:STDOUT: %.loc14_38: %i32 = struct_access %.loc14_36, element1 // CHECK:STDOUT: return %.loc14_38 diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index 19b9177ba7ad..42e5291679a4 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -17,25 +17,25 @@ var z: i32 = y; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: f64, .b: %i32} [template] +// CHECK:STDOUT: %struct_type.a.b.95f: type = struct_type {.a: f64, .b: %i32} [template] // CHECK:STDOUT: %float: f64 = float_literal 0 [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: f64, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.1, %Convert.10 [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.a.b.fbb: type = struct_type {.a: f64, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%float, %int_1.2) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.95f = struct_value (%float, %int_1.c60) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Float = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Float = %import_ref.20bd +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -49,8 +49,8 @@ var z: i32 = y; // CHECK:STDOUT: .z = %z // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %struct_type.a.b.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.b.1 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.b.95f = var x +// CHECK:STDOUT: %x: ref %struct_type.a.b.95f = bind_name x, %x.var // CHECK:STDOUT: %y.var: ref %i32 = var y // CHECK:STDOUT: %y: ref %i32 = bind_name y, %y.var // CHECK:STDOUT: %z.var: ref %i32 = var z @@ -60,21 +60,21 @@ var z: i32 = y; // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %float: f64 = float_literal 0 [template = constants.%float] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc11_46.1: %struct_type.a.b.2 = struct_literal (%float, %int_1) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc11_46.1: %struct_type.a.b.fbb = struct_literal (%float, %int_1) // CHECK:STDOUT: %.loc11_46.2: ref f64 = struct_access file.%x.var, element0 // CHECK:STDOUT: %.loc11_46.3: init f64 = initialize_from %float to %.loc11_46.2 [template = constants.%float] -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_46.4: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_46.4: init %i32 = converted %int_1, %int.convert_checked [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc11_46.5: ref %i32 = struct_access file.%x.var, element1 -// CHECK:STDOUT: %.loc11_46.6: init %i32 = initialize_from %.loc11_46.4 to %.loc11_46.5 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_46.7: init %struct_type.a.b.1 = struct_init (%.loc11_46.3, %.loc11_46.6) to file.%x.var [template = constants.%struct] -// CHECK:STDOUT: %.loc11_47: init %struct_type.a.b.1 = converted %.loc11_46.1, %.loc11_46.7 [template = constants.%struct] +// CHECK:STDOUT: %.loc11_46.6: init %i32 = initialize_from %.loc11_46.4 to %.loc11_46.5 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_46.7: init %struct_type.a.b.95f = struct_init (%.loc11_46.3, %.loc11_46.6) to file.%x.var [template = constants.%struct] +// CHECK:STDOUT: %.loc11_47: init %struct_type.a.b.95f = converted %.loc11_46.1, %.loc11_46.7 [template = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_47 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.1 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.95f = name_ref x, file.%x // CHECK:STDOUT: %.loc12_15.1: ref %i32 = struct_access %x.ref, element1 // CHECK:STDOUT: %.loc12_15.2: %i32 = bind_value %.loc12_15.1 // CHECK:STDOUT: assign file.%y.var, %.loc12_15.2 diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index ccb87b64c7a4..b51274f458c9 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -19,18 +19,18 @@ fn G() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %tuple.type.2, .b: %tuple.type.2} [template] +// CHECK:STDOUT: %struct_type.a.b.890: type = struct_type {.a: %tuple.type.dc6, .b: %tuple.type.dc6} [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -44,8 +44,8 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.dc6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.dc6 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] @@ -53,29 +53,29 @@ fn G() { // CHECK:STDOUT: %i32.loc11_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_25.1: %tuple.type.1 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) -// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) +// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.dc6 [template = constants.%tuple.type.dc6] +// CHECK:STDOUT: %return.param: ref %tuple.type.dc6 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.dc6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2; +// CHECK:STDOUT: fn @F() -> %tuple.type.dc6; // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %struct_type.a.b.1 = var v -// CHECK:STDOUT: %v: ref %struct_type.a.b.1 = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref %struct_type.a.b.890 = var v +// CHECK:STDOUT: %v: ref %struct_type.a.b.890 = bind_name v, %v.var // CHECK:STDOUT: %F.ref.loc14_61: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc14_74.1: ref %tuple.type.2 = struct_access %v.var, element0 -// CHECK:STDOUT: %F.call.loc14_63: init %tuple.type.2 = call %F.ref.loc14_61() to %.loc14_74.1 +// CHECK:STDOUT: %.loc14_74.1: ref %tuple.type.dc6 = struct_access %v.var, element0 +// CHECK:STDOUT: %F.call.loc14_63: init %tuple.type.dc6 = call %F.ref.loc14_61() to %.loc14_74.1 // CHECK:STDOUT: %F.ref.loc14_71: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %.loc14_74.2: ref %tuple.type.2 = struct_access %v.var, element1 -// CHECK:STDOUT: %F.call.loc14_73: init %tuple.type.2 = call %F.ref.loc14_71() to %.loc14_74.2 -// CHECK:STDOUT: %.loc14_74.3: %struct_type.a.b.1 = struct_literal (%F.call.loc14_63, %F.call.loc14_73) -// CHECK:STDOUT: %.loc14_74.4: init %struct_type.a.b.1 = struct_init (%F.call.loc14_63, %F.call.loc14_73) to %v.var -// CHECK:STDOUT: %.loc14_75: init %struct_type.a.b.1 = converted %.loc14_74.3, %.loc14_74.4 +// CHECK:STDOUT: %.loc14_74.2: ref %tuple.type.dc6 = struct_access %v.var, element1 +// CHECK:STDOUT: %F.call.loc14_73: init %tuple.type.dc6 = call %F.ref.loc14_71() to %.loc14_74.2 +// CHECK:STDOUT: %.loc14_74.3: %struct_type.a.b.890 = struct_literal (%F.call.loc14_63, %F.call.loc14_73) +// CHECK:STDOUT: %.loc14_74.4: init %struct_type.a.b.890 = struct_init (%F.call.loc14_63, %F.call.loc14_73) to %v.var +// CHECK:STDOUT: %.loc14_75: init %struct_type.a.b.890 = converted %.loc14_74.3, %.loc14_74.4 // CHECK:STDOUT: assign %v.var, %.loc14_75 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon b/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon index 89361dd98645..f024eae8ea6d 100644 --- a/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon +++ b/toolchain/check/testdata/struct/no_prelude/fail_assign_nested.carbon @@ -17,7 +17,7 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %empty_struct_type} [template] +// CHECK:STDOUT: %struct_type.a.225: type = struct_type {.a: %empty_struct_type} [template] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %empty_struct_type} [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -25,8 +25,8 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: package: = namespace [template] { // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref %struct_type.a.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.1 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.225 = var x +// CHECK:STDOUT: %x: ref %struct_type.a.225 = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index 8dc1fafd4b4e..5420508c05fd 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -16,23 +16,23 @@ var y: {.a: i32} = x; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.1: type = struct_type {.a: %i32} [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %struct_type.a.2: type = struct_type {.a: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.1, %Convert.10 [template] +// CHECK:STDOUT: %struct_type.a.7cc: type = struct_type {.a: %i32} [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %struct_type.a.a6c: type = struct_type {.a: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %struct: %struct_type.a.1 = struct_value (%int_4.2) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %struct: %struct_type.a.7cc = struct_value (%int_4.2ec) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -45,29 +45,29 @@ var y: {.a: i32} = x; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %struct_type.a.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.1 = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %struct_type.a.1 = var y -// CHECK:STDOUT: %y: ref %struct_type.a.1 = bind_name y, %y.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.7cc = var x +// CHECK:STDOUT: %x: ref %struct_type.a.7cc = bind_name x, %x.var +// CHECK:STDOUT: %y.var: ref %struct_type.a.7cc = var y +// CHECK:STDOUT: %y: ref %struct_type.a.7cc = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc11_27.1: %struct_type.a.2 = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc11_27.1: %struct_type.a.a6c = struct_literal (%int_4) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.1 = struct_init (%.loc11_27.2) to file.%x.var [template = constants.%struct] -// CHECK:STDOUT: %.loc11_28: init %struct_type.a.1 = converted %.loc11_27.1, %.loc11_27.3 [template = constants.%struct] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_27.3: init %struct_type.a.7cc = struct_init (%.loc11_27.2) to file.%x.var [template = constants.%struct] +// CHECK:STDOUT: %.loc11_28: init %struct_type.a.7cc = converted %.loc11_27.1, %.loc11_27.3 [template = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_28 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.1 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.7cc = name_ref x, file.%x // CHECK:STDOUT: %.loc12_20.1: ref %i32 = struct_access %x.ref, element0 // CHECK:STDOUT: %.loc12_20.2: %i32 = bind_value %.loc12_20.1 -// CHECK:STDOUT: %.loc12_20.3: init %struct_type.a.1 = struct_init (%.loc12_20.2) to file.%y.var -// CHECK:STDOUT: %.loc12_21: init %struct_type.a.1 = converted %x.ref, %.loc12_20.3 +// CHECK:STDOUT: %.loc12_20.3: init %struct_type.a.7cc = struct_init (%.loc12_20.2) to file.%y.var +// CHECK:STDOUT: %.loc12_21: init %struct_type.a.7cc = converted %x.ref, %.loc12_20.3 // CHECK:STDOUT: assign file.%y.var, %.loc12_21 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/partially_const.carbon b/toolchain/check/testdata/struct/partially_const.carbon index ca79c29015cf..c6ee512ca419 100644 --- a/toolchain/check/testdata/struct/partially_const.carbon +++ b/toolchain/check/testdata/struct/partially_const.carbon @@ -17,24 +17,24 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.c.1: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template] +// CHECK:STDOUT: %struct_type.a.b.c.1ce: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template] // CHECK:STDOUT: %Make.type: type = fn_type @Make [template] // CHECK:STDOUT: %Make: %Make.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %struct_type.a.b.c.2: type = struct_type {.a: Core.IntLiteral, .b: %i32, .c: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %struct_type.a.b.c.c6d: type = struct_type {.a: Core.IntLiteral, .b: %i32, .c: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -49,8 +49,8 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] { // CHECK:STDOUT: %n.patt: %i32 = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0 -// CHECK:STDOUT: %return.patt: %struct_type.a.b.c.1 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %struct_type.a.b.c.1 = out_param_pattern %return.patt, runtime_param1 +// CHECK:STDOUT: %return.patt: %struct_type.a.b.c.1ce = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %struct_type.a.b.c.1ce = out_param_pattern %return.patt, runtime_param1 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_25: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_25: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] @@ -58,42 +58,42 @@ fn Make(n: i32) -> {.a: i32, .b: i32, .c: i32} { // CHECK:STDOUT: %i32.loc11_34: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_43: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_43: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template = constants.%struct_type.a.b.c.1] +// CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [template = constants.%struct_type.a.b.c.1ce] // CHECK:STDOUT: %n.param: %i32 = value_param runtime_param0 // CHECK:STDOUT: %.loc11: type = splice_block %i32.loc11_12 [template = constants.%i32] { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref %struct_type.a.b.c.1 = out_param runtime_param1 -// CHECK:STDOUT: %return: ref %struct_type.a.b.c.1 = return_slot %return.param +// CHECK:STDOUT: %return.param: ref %struct_type.a.b.c.1ce = out_param runtime_param1 +// CHECK:STDOUT: %return: ref %struct_type.a.b.c.1ce = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Make(%n.param_patt: %i32) -> %return.param_patt: %struct_type.a.b.c.1 { +// CHECK:STDOUT: fn @Make(%n.param_patt: %i32) -> %return.param_patt: %struct_type.a.b.c.1ce { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0.loc12_16: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %int_0.loc12_16: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n -// CHECK:STDOUT: %int_0.loc12_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc12_33.1: %struct_type.a.b.c.2 = struct_literal (%int_0.loc12_16, %n.ref, %int_0.loc12_32) -// CHECK:STDOUT: %impl.elem0.loc12_33.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0.loc12_32: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc12_33.1: %struct_type.a.b.c.c6d = struct_literal (%int_0.loc12_16, %n.ref, %int_0.loc12_32) +// CHECK:STDOUT: %impl.elem0.loc12_33.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc12_33.1: = bound_method %int_0.loc12_16, %impl.elem0.loc12_33.1 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc12_33.1: = specific_function %Convert.bound.loc12_33.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc12_33.1: init %i32 = call %Convert.specific_fn.loc12_33.1(%int_0.loc12_16) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_33.2: init %i32 = converted %int_0.loc12_16, %int.convert_checked.loc12_33.1 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked.loc12_33.1: init %i32 = call %Convert.specific_fn.loc12_33.1(%int_0.loc12_16) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_33.2: init %i32 = converted %int_0.loc12_16, %int.convert_checked.loc12_33.1 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc12_33.3: ref %i32 = struct_access %return, element0 -// CHECK:STDOUT: %.loc12_33.4: init %i32 = initialize_from %.loc12_33.2 to %.loc12_33.3 [template = constants.%int_0.2] +// CHECK:STDOUT: %.loc12_33.4: init %i32 = initialize_from %.loc12_33.2 to %.loc12_33.3 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc12_33.5: ref %i32 = struct_access %return, element1 // CHECK:STDOUT: %.loc12_33.6: init %i32 = initialize_from %n.ref to %.loc12_33.5 -// CHECK:STDOUT: %impl.elem0.loc12_33.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0.loc12_33.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc12_33.2: = bound_method %int_0.loc12_32, %impl.elem0.loc12_33.2 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc12_33.2: = specific_function %Convert.bound.loc12_33.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc12_33.2: init %i32 = call %Convert.specific_fn.loc12_33.2(%int_0.loc12_32) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_33.7: init %i32 = converted %int_0.loc12_32, %int.convert_checked.loc12_33.2 [template = constants.%int_0.2] +// CHECK:STDOUT: %int.convert_checked.loc12_33.2: init %i32 = call %Convert.specific_fn.loc12_33.2(%int_0.loc12_32) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_33.7: init %i32 = converted %int_0.loc12_32, %int.convert_checked.loc12_33.2 [template = constants.%int_0.f61] // CHECK:STDOUT: %.loc12_33.8: ref %i32 = struct_access %return, element2 -// CHECK:STDOUT: %.loc12_33.9: init %i32 = initialize_from %.loc12_33.7 to %.loc12_33.8 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12_33.10: init %struct_type.a.b.c.1 = struct_init (%.loc12_33.4, %.loc12_33.6, %.loc12_33.9) to %return -// CHECK:STDOUT: %.loc12_34: init %struct_type.a.b.c.1 = converted %.loc12_33.1, %.loc12_33.10 +// CHECK:STDOUT: %.loc12_33.9: init %i32 = initialize_from %.loc12_33.7 to %.loc12_33.8 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12_33.10: init %struct_type.a.b.c.1ce = struct_init (%.loc12_33.4, %.loc12_33.6, %.loc12_33.9) to %return +// CHECK:STDOUT: %.loc12_34: init %struct_type.a.b.c.1ce = converted %.loc12_33.1, %.loc12_33.10 // CHECK:STDOUT: return %.loc12_34 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/reorder_fields.carbon b/toolchain/check/testdata/struct/reorder_fields.carbon index de946a0d9284..f0e59dec7d80 100644 --- a/toolchain/check/testdata/struct/reorder_fields.carbon +++ b/toolchain/check/testdata/struct/reorder_fields.carbon @@ -37,8 +37,8 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Float = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Float = %import_ref.20b // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index 81f541141b3f..27f6c2e96320 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -16,30 +16,30 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %tuple.type.2} [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: %tuple.type.3} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_2.2) [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %tuple) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %struct_type.a.b.d03: type = struct_type {.a: %i32, .b: %tuple.type.0e4} [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %struct_type.a.b.057: type = struct_type {.a: Core.IntLiteral, .b: %tuple.type.985} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_2.166) [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.d03 = struct_value (%int_1.c60, %tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -52,51 +52,51 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %struct_type.a.b.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.b.1 = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %struct_type.a.b.1 = var y -// CHECK:STDOUT: %y: ref %struct_type.a.b.1 = bind_name y, %y.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.b.d03 = var x +// CHECK:STDOUT: %x: ref %struct_type.a.b.d03 = bind_name x, %x.var +// CHECK:STDOUT: %y.var: ref %struct_type.a.b.d03 = var y +// CHECK:STDOUT: %y: ref %struct_type.a.b.d03 = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc11_49.1: %tuple.type.3 = tuple_literal (%int_2) -// CHECK:STDOUT: %.loc11_50.1: %struct_type.a.b.2 = struct_literal (%int_1, %.loc11_49.1) -// CHECK:STDOUT: %impl.elem0.loc11_50: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_50: = bound_method %int_1, %impl.elem0.loc11_50 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_50: = specific_function %Convert.bound.loc11_50, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_50: init %i32 = call %Convert.specific_fn.loc11_50(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_50.2: init %i32 = converted %int_1, %int.convert_checked.loc11_50 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc11_49.1: %tuple.type.985 = tuple_literal (%int_2) +// CHECK:STDOUT: %.loc11_50.1: %struct_type.a.b.057 = struct_literal (%int_1, %.loc11_49.1) +// CHECK:STDOUT: %impl.elem0.loc11_50: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_50: = bound_method %int_1, %impl.elem0.loc11_50 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_50: = specific_function %Convert.bound.loc11_50, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_50: init %i32 = call %Convert.specific_fn.loc11_50(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_50.2: init %i32 = converted %int_1, %int.convert_checked.loc11_50 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc11_50.3: ref %i32 = struct_access file.%x.var, element0 -// CHECK:STDOUT: %.loc11_50.4: init %i32 = initialize_from %.loc11_50.2 to %.loc11_50.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_49: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_49: = bound_method %int_2, %impl.elem0.loc11_49 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_49: = specific_function %Convert.bound.loc11_49, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_49: init %i32 = call %Convert.specific_fn.loc11_49(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_49.2: init %i32 = converted %int_2, %int.convert_checked.loc11_49 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_50.5: ref %tuple.type.2 = struct_access file.%x.var, element1 -// CHECK:STDOUT: %.loc11_49.3: init %tuple.type.2 = tuple_init (%.loc11_49.2) to %.loc11_50.5 [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_50.6: init %tuple.type.2 = converted %.loc11_49.1, %.loc11_49.3 [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_50.7: init %tuple.type.2 = initialize_from %.loc11_50.6 to %.loc11_50.5 [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_50.8: init %struct_type.a.b.1 = struct_init (%.loc11_50.4, %.loc11_50.7) to file.%x.var [template = constants.%struct] -// CHECK:STDOUT: %.loc11_51: init %struct_type.a.b.1 = converted %.loc11_50.1, %.loc11_50.8 [template = constants.%struct] +// CHECK:STDOUT: %.loc11_50.4: init %i32 = initialize_from %.loc11_50.2 to %.loc11_50.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_49: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_49: = bound_method %int_2, %impl.elem0.loc11_49 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_49: = specific_function %Convert.bound.loc11_49, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_49: init %i32 = call %Convert.specific_fn.loc11_49(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_49.2: init %i32 = converted %int_2, %int.convert_checked.loc11_49 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_50.5: ref %tuple.type.0e4 = struct_access file.%x.var, element1 +// CHECK:STDOUT: %.loc11_49.3: init %tuple.type.0e4 = tuple_init (%.loc11_49.2) to %.loc11_50.5 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_50.6: init %tuple.type.0e4 = converted %.loc11_49.1, %.loc11_49.3 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_50.7: init %tuple.type.0e4 = initialize_from %.loc11_50.6 to %.loc11_50.5 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_50.8: init %struct_type.a.b.d03 = struct_init (%.loc11_50.4, %.loc11_50.7) to file.%x.var [template = constants.%struct] +// CHECK:STDOUT: %.loc11_51: init %struct_type.a.b.d03 = converted %.loc11_50.1, %.loc11_50.8 [template = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc11_51 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.1 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.d03 = name_ref x, file.%x // CHECK:STDOUT: %.loc12_32.1: ref %i32 = struct_access %x.ref, element0 // CHECK:STDOUT: %.loc12_32.2: %i32 = bind_value %.loc12_32.1 // CHECK:STDOUT: %.loc12_32.3: ref %i32 = struct_access file.%y.var, element0 // CHECK:STDOUT: %.loc12_32.4: init %i32 = initialize_from %.loc12_32.2 to %.loc12_32.3 -// CHECK:STDOUT: %.loc12_32.5: ref %tuple.type.2 = struct_access %x.ref, element1 +// CHECK:STDOUT: %.loc12_32.5: ref %tuple.type.0e4 = struct_access %x.ref, element1 // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc12_32.5, element0 // CHECK:STDOUT: %.loc12_32.6: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %.loc12_32.7: ref %tuple.type.2 = struct_access file.%y.var, element1 -// CHECK:STDOUT: %.loc12_32.8: init %tuple.type.2 = tuple_init (%.loc12_32.6) to %.loc12_32.7 -// CHECK:STDOUT: %.loc12_32.9: init %tuple.type.2 = converted %.loc12_32.5, %.loc12_32.8 -// CHECK:STDOUT: %.loc12_32.10: init %tuple.type.2 = initialize_from %.loc12_32.9 to %.loc12_32.7 -// CHECK:STDOUT: %.loc12_32.11: init %struct_type.a.b.1 = struct_init (%.loc12_32.4, %.loc12_32.10) to file.%y.var -// CHECK:STDOUT: %.loc12_33: init %struct_type.a.b.1 = converted %x.ref, %.loc12_32.11 +// CHECK:STDOUT: %.loc12_32.7: ref %tuple.type.0e4 = struct_access file.%y.var, element1 +// CHECK:STDOUT: %.loc12_32.8: init %tuple.type.0e4 = tuple_init (%.loc12_32.6) to %.loc12_32.7 +// CHECK:STDOUT: %.loc12_32.9: init %tuple.type.0e4 = converted %.loc12_32.5, %.loc12_32.8 +// CHECK:STDOUT: %.loc12_32.10: init %tuple.type.0e4 = initialize_from %.loc12_32.9 to %.loc12_32.7 +// CHECK:STDOUT: %.loc12_32.11: init %struct_type.a.b.d03 = struct_init (%.loc12_32.4, %.loc12_32.10) to file.%y.var +// CHECK:STDOUT: %.loc12_33: init %struct_type.a.b.d03 = converted %x.ref, %.loc12_32.11 // CHECK:STDOUT: assign file.%y.var, %.loc12_33 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index 2c79a8c12666..30f43fede315 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -19,27 +19,27 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %struct_type.a.b.1: type = struct_type {.a: %i32, .b: %i32} [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %struct_type.a.b.2: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%int_1.2, %int_2.2) [template] +// CHECK:STDOUT: %struct_type.a.b.3de: type = struct_type {.a: %i32, .b: %i32} [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%int_1.c60, %int_2.166) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,55 +54,55 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %struct_type.a.b.1 = var x -// CHECK:STDOUT: %x: ref %struct_type.a.b.1 = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %struct_type.a.b.1 = var y -// CHECK:STDOUT: %y: ref %struct_type.a.b.1 = bind_name y, %y.var +// CHECK:STDOUT: %x.var: ref %struct_type.a.b.3de = var x +// CHECK:STDOUT: %x: ref %struct_type.a.b.3de = bind_name x, %x.var +// CHECK:STDOUT: %y.var: ref %struct_type.a.b.3de = var y +// CHECK:STDOUT: %y: ref %struct_type.a.b.3de = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc11_44.1: %struct_type.a.b.2 = struct_literal (%int_1.loc11, %int_2.loc11) -// CHECK:STDOUT: %impl.elem0.loc11_44.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_44.1: = bound_method %int_1.loc11, %impl.elem0.loc11_44.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_44.1: = specific_function %Convert.bound.loc11_44.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_44.1: init %i32 = call %Convert.specific_fn.loc11_44.1(%int_1.loc11) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_44.2: %i32 = value_of_initializer %int.convert_checked.loc11_44.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc11_44.3: %i32 = converted %int_1.loc11, %.loc11_44.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc11_44.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_44.2: = bound_method %int_2.loc11, %impl.elem0.loc11_44.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_44.2: = specific_function %Convert.bound.loc11_44.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_44.2: init %i32 = call %Convert.specific_fn.loc11_44.2(%int_2.loc11) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_44.4: %i32 = value_of_initializer %int.convert_checked.loc11_44.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_44.5: %i32 = converted %int_2.loc11, %.loc11_44.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %struct: %struct_type.a.b.1 = struct_value (%.loc11_44.3, %.loc11_44.5) [template = constants.%struct] -// CHECK:STDOUT: %.loc11_45: %struct_type.a.b.1 = converted %.loc11_44.1, %struct [template = constants.%struct] -// CHECK:STDOUT: %v: %struct_type.a.b.1 = bind_name v, %.loc11_45 -// CHECK:STDOUT: %v.ref: %struct_type.a.b.1 = name_ref v, %v -// CHECK:STDOUT: %w: %struct_type.a.b.1 = bind_name w, %v.ref -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc14_44.1: %struct_type.a.b.2 = struct_literal (%int_1.loc14, %int_2.loc14) -// CHECK:STDOUT: %impl.elem0.loc14_44.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_44.1: = bound_method %int_1.loc14, %impl.elem0.loc14_44.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_44.1: = specific_function %Convert.bound.loc14_44.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_44.1: init %i32 = call %Convert.specific_fn.loc14_44.1(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_44.2: init %i32 = converted %int_1.loc14, %int.convert_checked.loc14_44.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_1.loc11: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc11: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc11_44.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc11, %int_2.loc11) +// CHECK:STDOUT: %impl.elem0.loc11_44.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_44.1: = bound_method %int_1.loc11, %impl.elem0.loc11_44.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc11_44.1: = specific_function %Convert.bound.loc11_44.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc11_44.1: init %i32 = call %Convert.specific_fn.loc11_44.1(%int_1.loc11) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_44.2: %i32 = value_of_initializer %int.convert_checked.loc11_44.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc11_44.3: %i32 = converted %int_1.loc11, %.loc11_44.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc11_44.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_44.2: = bound_method %int_2.loc11, %impl.elem0.loc11_44.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_44.2: = specific_function %Convert.bound.loc11_44.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_44.2: init %i32 = call %Convert.specific_fn.loc11_44.2(%int_2.loc11) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_44.4: %i32 = value_of_initializer %int.convert_checked.loc11_44.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_44.5: %i32 = converted %int_2.loc11, %.loc11_44.4 [template = constants.%int_2.166] +// CHECK:STDOUT: %struct: %struct_type.a.b.3de = struct_value (%.loc11_44.3, %.loc11_44.5) [template = constants.%struct] +// CHECK:STDOUT: %.loc11_45: %struct_type.a.b.3de = converted %.loc11_44.1, %struct [template = constants.%struct] +// CHECK:STDOUT: %v: %struct_type.a.b.3de = bind_name v, %.loc11_45 +// CHECK:STDOUT: %v.ref: %struct_type.a.b.3de = name_ref v, %v +// CHECK:STDOUT: %w: %struct_type.a.b.3de = bind_name w, %v.ref +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2.loc14: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc14_44.1: %struct_type.a.b.cfd = struct_literal (%int_1.loc14, %int_2.loc14) +// CHECK:STDOUT: %impl.elem0.loc14_44.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_44.1: = bound_method %int_1.loc14, %impl.elem0.loc14_44.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc14_44.1: = specific_function %Convert.bound.loc14_44.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc14_44.1: init %i32 = call %Convert.specific_fn.loc14_44.1(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_44.2: init %i32 = converted %int_1.loc14, %int.convert_checked.loc14_44.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %.loc14_44.3: ref %i32 = struct_access file.%x.var, element0 -// CHECK:STDOUT: %.loc14_44.4: init %i32 = initialize_from %.loc14_44.2 to %.loc14_44.3 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_44.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_44.2: = bound_method %int_2.loc14, %impl.elem0.loc14_44.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_44.2: = specific_function %Convert.bound.loc14_44.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_44.2: init %i32 = call %Convert.specific_fn.loc14_44.2(%int_2.loc14) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_44.5: init %i32 = converted %int_2.loc14, %int.convert_checked.loc14_44.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc14_44.4: init %i32 = initialize_from %.loc14_44.2 to %.loc14_44.3 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_44.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_44.2: = bound_method %int_2.loc14, %impl.elem0.loc14_44.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc14_44.2: = specific_function %Convert.bound.loc14_44.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc14_44.2: init %i32 = call %Convert.specific_fn.loc14_44.2(%int_2.loc14) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_44.5: init %i32 = converted %int_2.loc14, %int.convert_checked.loc14_44.2 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc14_44.6: ref %i32 = struct_access file.%x.var, element1 -// CHECK:STDOUT: %.loc14_44.7: init %i32 = initialize_from %.loc14_44.5 to %.loc14_44.6 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc14_44.8: init %struct_type.a.b.1 = struct_init (%.loc14_44.4, %.loc14_44.7) to file.%x.var [template = constants.%struct] -// CHECK:STDOUT: %.loc14_45: init %struct_type.a.b.1 = converted %.loc14_44.1, %.loc14_44.8 [template = constants.%struct] +// CHECK:STDOUT: %.loc14_44.7: init %i32 = initialize_from %.loc14_44.5 to %.loc14_44.6 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc14_44.8: init %struct_type.a.b.3de = struct_init (%.loc14_44.4, %.loc14_44.7) to file.%x.var [template = constants.%struct] +// CHECK:STDOUT: %.loc14_45: init %struct_type.a.b.3de = converted %.loc14_44.1, %.loc14_44.8 [template = constants.%struct] // CHECK:STDOUT: assign file.%x.var, %.loc14_45 -// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.1 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %struct_type.a.b.3de = name_ref x, file.%x // CHECK:STDOUT: %.loc15_29.1: ref %i32 = struct_access %x.ref, element0 // CHECK:STDOUT: %.loc15_29.2: %i32 = bind_value %.loc15_29.1 // CHECK:STDOUT: %.loc15_29.3: ref %i32 = struct_access file.%y.var, element0 @@ -111,8 +111,8 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: %.loc15_29.6: %i32 = bind_value %.loc15_29.5 // CHECK:STDOUT: %.loc15_29.7: ref %i32 = struct_access file.%y.var, element1 // CHECK:STDOUT: %.loc15_29.8: init %i32 = initialize_from %.loc15_29.6 to %.loc15_29.7 -// CHECK:STDOUT: %.loc15_29.9: init %struct_type.a.b.1 = struct_init (%.loc15_29.4, %.loc15_29.8) to file.%y.var -// CHECK:STDOUT: %.loc15_30: init %struct_type.a.b.1 = converted %x.ref, %.loc15_29.9 +// CHECK:STDOUT: %.loc15_29.9: init %struct_type.a.b.3de = struct_init (%.loc15_29.4, %.loc15_29.8) to file.%y.var +// CHECK:STDOUT: %.loc15_30: init %struct_type.a.b.3de = converted %x.ref, %.loc15_29.9 // CHECK:STDOUT: assign file.%y.var, %.loc15_30 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/access/element_access.carbon b/toolchain/check/testdata/tuple/access/element_access.carbon index b349f83d4df1..c6223dcc05cf 100644 --- a/toolchain/check/testdata/tuple/access/element_access.carbon +++ b/toolchain/check/testdata/tuple/access/element_access.carbon @@ -17,24 +17,24 @@ var c: i32 = b.0; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.6a3, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_12.43d) [template] // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -48,33 +48,33 @@ var c: i32 = b.0; // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %tuple.type.2 = var b -// CHECK:STDOUT: %b: ref %tuple.type.2 = bind_name b, %b.var +// CHECK:STDOUT: %a.var: ref %tuple.type.0e4 = var a +// CHECK:STDOUT: %a: ref %tuple.type.0e4 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %tuple.type.0e4 = var b +// CHECK:STDOUT: %b: ref %tuple.type.0e4 = bind_name b, %b.var // CHECK:STDOUT: %c.var: ref %i32 = var c // CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %.loc11_21.1: %tuple.type.3 = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %.loc11_21.1: %tuple.type.985 = tuple_literal (%int_12) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_12, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_21.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_21.3: init %tuple.type.2 = tuple_init (%.loc11_21.2) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_22: init %tuple.type.2 = converted %.loc11_21.1, %.loc11_21.3 [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_21.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_21.3: init %tuple.type.0e4 = tuple_init (%.loc11_21.2) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_22: init %tuple.type.0e4 = converted %.loc11_21.1, %.loc11_21.3 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_22 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.0e4 = name_ref a, file.%a // CHECK:STDOUT: %tuple.elem0.loc12: ref %i32 = tuple_access %a.ref, element0 // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0.loc12 -// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.2 = tuple_init (%.loc12_17.1) to file.%b.var -// CHECK:STDOUT: %.loc12_18: init %tuple.type.2 = converted %a.ref, %.loc12_17.2 +// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.0e4 = tuple_init (%.loc12_17.1) to file.%b.var +// CHECK:STDOUT: %.loc12_18: init %tuple.type.0e4 = converted %a.ref, %.loc12_17.2 // CHECK:STDOUT: assign file.%b.var, %.loc12_18 -// CHECK:STDOUT: %b.ref: ref %tuple.type.2 = name_ref b, file.%b +// CHECK:STDOUT: %b.ref: ref %tuple.type.0e4 = name_ref b, file.%b // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %tuple.elem0.loc13: ref %i32 = tuple_access %b.ref, element0 // CHECK:STDOUT: %.loc13: %i32 = bind_value %tuple.elem0.loc13 diff --git a/toolchain/check/testdata/tuple/access/fail_access_error.carbon b/toolchain/check/testdata/tuple/access/fail_access_error.carbon index 6aff8d726a8a..7ad128b02fcd 100644 --- a/toolchain/check/testdata/tuple/access/fail_access_error.carbon +++ b/toolchain/check/testdata/tuple/access/fail_access_error.carbon @@ -19,27 +19,27 @@ var b: i32 = a.(oops); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2, %int_6.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_12.43d, %int_6.b03) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -52,35 +52,35 @@ var b: i32 = a.(oops); // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc11_27.1: %tuple.type.3 = tuple_literal (%int_12, %int_6) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %.loc11_27.1: %tuple.type.f94 = tuple_literal (%int_12, %int_6) +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.43d] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.2] +// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.b03] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.2 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_28: init %tuple.type.2 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.471 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_28: init %tuple.type.471 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %oops.ref: = name_ref oops, [template = ] // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_large_index.carbon b/toolchain/check/testdata/tuple/access/fail_large_index.carbon index 55ef25534fbd..997c3fef6988 100644 --- a/toolchain/check/testdata/tuple/access/fail_large_index.carbon +++ b/toolchain/check/testdata/tuple/access/fail_large_index.carbon @@ -25,25 +25,25 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_12.6a3, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_12.43d) [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -58,10 +58,10 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %tuple.type.2 = var b -// CHECK:STDOUT: %b: ref %tuple.type.2 = bind_name b, %b.var +// CHECK:STDOUT: %a.var: ref %tuple.type.0e4 = var a +// CHECK:STDOUT: %a: ref %tuple.type.0e4 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %tuple.type.0e4 = var b +// CHECK:STDOUT: %b: ref %tuple.type.0e4 = bind_name b, %b.var // CHECK:STDOUT: %c.var: ref %i32 = var c // CHECK:STDOUT: %c: ref %i32 = bind_name c, %c.var // CHECK:STDOUT: %d.var: ref %i32 = var d @@ -70,26 +70,26 @@ var d: i32 = b.(0x7FFF_FFFF); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %.loc11_21.1: %tuple.type.3 = tuple_literal (%int_12) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %.loc11_21.1: %tuple.type.985 = tuple_literal (%int_12) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_12, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_21.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_21.3: init %tuple.type.2 = tuple_init (%.loc11_21.2) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_22: init %tuple.type.2 = converted %.loc11_21.1, %.loc11_21.3 [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_21.2: init %i32 = converted %int_12, %int.convert_checked [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_21.3: init %tuple.type.0e4 = tuple_init (%.loc11_21.2) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_22: init %tuple.type.0e4 = converted %.loc11_21.1, %.loc11_21.3 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_22 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.0e4 = name_ref a, file.%a // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %a.ref, element0 // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.2 = tuple_init (%.loc12_17.1) to file.%b.var -// CHECK:STDOUT: %.loc12_18: init %tuple.type.2 = converted %a.ref, %.loc12_17.2 +// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.0e4 = tuple_init (%.loc12_17.1) to file.%b.var +// CHECK:STDOUT: %.loc12_18: init %tuple.type.0e4 = converted %a.ref, %.loc12_17.2 // CHECK:STDOUT: assign file.%b.var, %.loc12_18 -// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.2 = name_ref b, file.%b +// CHECK:STDOUT: %b.ref.loc17: ref %tuple.type.0e4 = name_ref b, file.%b // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: assign file.%c.var, -// CHECK:STDOUT: %b.ref.loc21: ref %tuple.type.2 = name_ref b, file.%b +// CHECK:STDOUT: %b.ref.loc21: ref %tuple.type.0e4 = name_ref b, file.%b // CHECK:STDOUT: %int_2147483647: Core.IntLiteral = int_value 2147483647 [template = constants.%int_2147483647] // CHECK:STDOUT: assign file.%d.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon index 6987daeb9c25..b5c7cef70844 100644 --- a/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_negative_indexing.carbon @@ -19,35 +19,35 @@ var b: i32 = a.(-10); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2, %int_6.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_12.43d, %int_6.b03) [template] // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template] -// CHECK:STDOUT: %Op.type.13: type = fn_type @Op.13 [template] -// CHECK:STDOUT: %impl_witness.21: = impl_witness (imports.%import_ref.254) [template] -// CHECK:STDOUT: %Op.type.14: type = fn_type @Op.14 [template] -// CHECK:STDOUT: %Op.14: %Op.type.14 = struct_value () [template] -// CHECK:STDOUT: %Op.bound: = bound_method %int_10, %Op.14 [template] +// CHECK:STDOUT: %Op.type.4d0: type = fn_type @Op.13 [template] +// CHECK:STDOUT: %impl_witness.6d9: = impl_witness (imports.%import_ref.aaf) [template] +// CHECK:STDOUT: %Op.type.9fe: type = fn_type @Op.14 [template] +// CHECK:STDOUT: %Op.b5b: %Op.type.9fe = struct_value () [template] +// CHECK:STDOUT: %Op.bound: = bound_method %int_10, %Op.b5b [template] // CHECK:STDOUT: %int_-10: Core.IntLiteral = int_value -10 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 -// CHECK:STDOUT: .Negate = %import_ref.252 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Negate = %import_ref.a96 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -60,37 +60,37 @@ var b: i32 = a.(-10); // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc11_27.1: %tuple.type.3 = tuple_literal (%int_12, %int_6) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %.loc11_27.1: %tuple.type.f94 = tuple_literal (%int_12, %int_6) +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.43d] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.2] +// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.b03] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.2 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_28: init %tuple.type.2 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.471 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_28: init %tuple.type.471 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %int_10: Core.IntLiteral = int_value 10 [template = constants.%int_10] -// CHECK:STDOUT: %impl.elem0.loc15: %Op.type.13 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Op.14] +// CHECK:STDOUT: %impl.elem0.loc15: %Op.type.4d0 = impl_witness_access constants.%impl_witness.6d9, element0 [template = constants.%Op.b5b] // CHECK:STDOUT: %Op.bound: = bound_method %int_10, %impl.elem0.loc15 [template = constants.%Op.bound] // CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %Op.bound(%int_10) [template = constants.%int_-10] // CHECK:STDOUT: %.loc15_17.1: Core.IntLiteral = value_of_initializer %int.snegate [template = constants.%int_-10] diff --git a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon index e31b215879fd..cd24d1efe7af 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_deterministic_type.carbon @@ -20,31 +20,31 @@ var c: i32 = a.(b); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -58,8 +58,8 @@ var c: i32 = a.(b); // CHECK:STDOUT: .c = %c // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: %c.var: ref %i32 = var c @@ -68,34 +68,34 @@ var c: i32 = a.(b); // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc11_26.1: %tuple.type.3 = tuple_literal (%int_2, %int_3) -// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_2, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_2, %int.convert_checked.loc11_26.1 [template = constants.%int_2.2] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc11_26.1: %tuple.type.f94 = tuple_literal (%int_2, %int_3) +// CHECK:STDOUT: %impl.elem0.loc11_26.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.1: = bound_method %int_2, %impl.elem0.loc11_26.1 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.1: = specific_function %Convert.bound.loc11_26.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc11_26.1: init %i32 = call %Convert.specific_fn.loc11_26.1(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc11_26.2: init %i32 = converted %int_2, %int.convert_checked.loc11_26.1 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_26.3: init %i32 = initialize_from %.loc11_26.2 to %tuple.elem0 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_3, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_26.4: init %i32 = converted %int_3, %int.convert_checked.loc11_26.2 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc11_26.3: init %i32 = initialize_from %.loc11_26.2 to %tuple.elem0 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc11_26.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_26.2: = bound_method %int_3, %impl.elem0.loc11_26.2 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc11_26.2: = specific_function %Convert.bound.loc11_26.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc11_26.2: init %i32 = call %Convert.specific_fn.loc11_26.2(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_26.4: init %i32 = converted %int_3, %int.convert_checked.loc11_26.2 [template = constants.%int_3.25b] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_26.5: init %i32 = initialize_from %.loc11_26.4 to %tuple.elem1 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc11_26.6: init %tuple.type.2 = tuple_init (%.loc11_26.3, %.loc11_26.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_27: init %tuple.type.2 = converted %.loc11_26.1, %.loc11_26.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_26.5: init %i32 = initialize_from %.loc11_26.4 to %tuple.elem1 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc11_26.6: init %tuple.type.471 = tuple_init (%.loc11_26.3, %.loc11_26.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_27: init %tuple.type.471 = converted %.loc11_26.1, %.loc11_26.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_27 -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_0, %impl.elem0.loc12 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked.loc12 [template = constants.%int_0.2] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc12: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc12: = bound_method %int_0, %impl.elem0.loc12 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc12: = specific_function %Convert.bound.loc12, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %Convert.specific_fn.loc12(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc12: init %i32 = converted %int_0, %int.convert_checked.loc12 [template = constants.%int_0.f61] // CHECK:STDOUT: assign file.%b.var, %.loc12 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %b.ref: ref %i32 = name_ref b, file.%b // CHECK:STDOUT: assign file.%c.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon index 5da84928cc4c..30526d2a6d90 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_int_indexing.carbon @@ -22,28 +22,28 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2, %int_6.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_12.43d, %int_6.b03) [template] // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -56,35 +56,35 @@ var b: i32 = a.(2.6); // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc11_27.1: %tuple.type.3 = tuple_literal (%int_12, %int_6) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %.loc11_27.1: %tuple.type.f94 = tuple_literal (%int_12, %int_6) +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.43d] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.2] +// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.b03] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.2 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_28: init %tuple.type.2 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.471 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_28: init %tuple.type.471 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %float: f64 = float_literal 2.6000000000000001 [template = constants.%float] // CHECK:STDOUT: %.loc18: Core.IntLiteral = converted %float, [template = ] // CHECK:STDOUT: assign file.%b.var, diff --git a/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon b/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon index fa71ced6384c..6422c747424a 100644 --- a/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon +++ b/toolchain/check/testdata/tuple/access/fail_non_tuple_access.carbon @@ -33,23 +33,23 @@ fn Main() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %array_type: type = array_type %int_2, %i32 [template] -// CHECK:STDOUT: %int_5.1: Core.IntLiteral = int_value 5 [template] +// CHECK:STDOUT: %int_5.64b: Core.IntLiteral = int_value 5 [template] // CHECK:STDOUT: %tuple.type: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.19), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.1, %Convert.10 [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_5.2: %i32 = int_value 5 [template] -// CHECK:STDOUT: %array: %array_type = tuple_value (%int_5.2, %int_5.2) [template] +// CHECK:STDOUT: %int_5.70b: %i32 = int_value 5 [template] +// CHECK:STDOUT: %array: %array_type = tuple_value (%int_5.70b, %int_5.70b) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .IndexWith = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.6 -// CHECK:STDOUT: .ImplicitAs = %import_ref.10 +// CHECK:STDOUT: .IndexWith = %import_ref.76d +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -70,25 +70,25 @@ fn Main() { // CHECK:STDOUT: %int_1.loc16: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %non_tuple.var: ref %array_type = var non_tuple // CHECK:STDOUT: %non_tuple: ref %array_type = bind_name non_tuple, %non_tuple.var -// CHECK:STDOUT: %int_5.loc18_30: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] -// CHECK:STDOUT: %int_5.loc18_33: Core.IntLiteral = int_value 5 [template = constants.%int_5.1] +// CHECK:STDOUT: %int_5.loc18_30: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] +// CHECK:STDOUT: %int_5.loc18_33: Core.IntLiteral = int_value 5 [template = constants.%int_5.64b] // CHECK:STDOUT: %.loc18_34.1: %tuple.type = tuple_literal (%int_5.loc18_30, %int_5.loc18_33) -// CHECK:STDOUT: %impl.elem0.loc18_34.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %impl.elem0.loc18_34.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc18_34.1: = bound_method %int_5.loc18_30, %impl.elem0.loc18_34.1 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc18_34.1: = specific_function %Convert.bound.loc18_34.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc18_34.1: init %i32 = call %Convert.specific_fn.loc18_34.1(%int_5.loc18_30) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc18_34.2: init %i32 = converted %int_5.loc18_30, %int.convert_checked.loc18_34.1 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc18_34.1: init %i32 = call %Convert.specific_fn.loc18_34.1(%int_5.loc18_30) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc18_34.2: init %i32 = converted %int_5.loc18_30, %int.convert_checked.loc18_34.1 [template = constants.%int_5.70b] // CHECK:STDOUT: %int_0.loc18: Core.IntLiteral = int_value 0 [template = constants.%int_0] // CHECK:STDOUT: %.loc18_34.3: ref %i32 = array_index %non_tuple.var, %int_0.loc18 -// CHECK:STDOUT: %.loc18_34.4: init %i32 = initialize_from %.loc18_34.2 to %.loc18_34.3 [template = constants.%int_5.2] -// CHECK:STDOUT: %impl.elem0.loc18_34.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %.loc18_34.4: init %i32 = initialize_from %.loc18_34.2 to %.loc18_34.3 [template = constants.%int_5.70b] +// CHECK:STDOUT: %impl.elem0.loc18_34.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound.loc18_34.2: = bound_method %int_5.loc18_33, %impl.elem0.loc18_34.2 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn.loc18_34.2: = specific_function %Convert.bound.loc18_34.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked.loc18_34.2: init %i32 = call %Convert.specific_fn.loc18_34.2(%int_5.loc18_33) [template = constants.%int_5.2] -// CHECK:STDOUT: %.loc18_34.5: init %i32 = converted %int_5.loc18_33, %int.convert_checked.loc18_34.2 [template = constants.%int_5.2] +// CHECK:STDOUT: %int.convert_checked.loc18_34.2: init %i32 = call %Convert.specific_fn.loc18_34.2(%int_5.loc18_33) [template = constants.%int_5.70b] +// CHECK:STDOUT: %.loc18_34.5: init %i32 = converted %int_5.loc18_33, %int.convert_checked.loc18_34.2 [template = constants.%int_5.70b] // CHECK:STDOUT: %int_1.loc18: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %.loc18_34.6: ref %i32 = array_index %non_tuple.var, %int_1.loc18 -// CHECK:STDOUT: %.loc18_34.7: init %i32 = initialize_from %.loc18_34.5 to %.loc18_34.6 [template = constants.%int_5.2] +// CHECK:STDOUT: %.loc18_34.7: init %i32 = initialize_from %.loc18_34.5 to %.loc18_34.6 [template = constants.%int_5.70b] // CHECK:STDOUT: %.loc18_34.8: init %array_type = array_init (%.loc18_34.4, %.loc18_34.7) to %non_tuple.var [template = constants.%array] // CHECK:STDOUT: %.loc18_35: init %array_type = converted %.loc18_34.1, %.loc18_34.8 [template = constants.%array] // CHECK:STDOUT: assign %non_tuple.var, %.loc18_35 diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon index 79cb2445ac05..bc20a84a0cc8 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_access.carbon @@ -19,28 +19,28 @@ var b: i32 = a.2; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2, %int_6.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_12.43d, %int_6.b03) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -53,35 +53,35 @@ var b: i32 = a.2; // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc11_27.1: %tuple.type.3 = tuple_literal (%int_12, %int_6) -// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %.loc11_27.1: %tuple.type.f94 = tuple_literal (%int_12, %int_6) +// CHECK:STDOUT: %impl.elem0.loc11_27.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.1: = bound_method %int_12, %impl.elem0.loc11_27.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.1: = specific_function %Convert.bound.loc11_27.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_27.1: init %i32 = call %Convert.specific_fn.loc11_27.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_27.2: init %i32 = converted %int_12, %int.convert_checked.loc11_27.1 [template = constants.%int_12.43d] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.2] +// CHECK:STDOUT: %.loc11_27.3: init %i32 = initialize_from %.loc11_27.2 to %tuple.elem0 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_27.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_27.2: = bound_method %int_6, %impl.elem0.loc11_27.2 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_27.2: = specific_function %Convert.bound.loc11_27.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_27.2: init %i32 = call %Convert.specific_fn.loc11_27.2(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.4: init %i32 = converted %int_6, %int.convert_checked.loc11_27.2 [template = constants.%int_6.b03] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.2 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_28: init %tuple.type.2 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_27.5: init %i32 = initialize_from %.loc11_27.4 to %tuple.elem1 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_27.6: init %tuple.type.471 = tuple_init (%.loc11_27.3, %.loc11_27.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_28: init %tuple.type.471 = converted %.loc11_27.1, %.loc11_27.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_28 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: assign file.%b.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon index 46694560c1dc..94829ac5cfb3 100644 --- a/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/fail_out_of_bound_not_literal.carbon @@ -19,21 +19,21 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_34.1: Core.IntLiteral = int_value 34 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_34.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_34.2: %i32 = int_value 34 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_12.2, %int_34.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_34.3f9: Core.IntLiteral = int_value 34 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.eae: = bound_method %int_34.3f9, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.767: = specific_function %Convert.bound.eae, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_34.bd3: %i32 = int_value 34 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_12.43d, %int_34.bd3) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %struct_type.index: type = struct_type {.index: Core.IntLiteral} [template] // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2) [template] @@ -41,8 +41,8 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -55,35 +55,35 @@ var b: i32 = a.({.index = 2}.index); // CHECK:STDOUT: .b = %b // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.471 = var a +// CHECK:STDOUT: %a: ref %tuple.type.471 = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [template = constants.%int_34.1] -// CHECK:STDOUT: %.loc11_28.1: %tuple.type.3 = tuple_literal (%int_12, %int_34) -// CHECK:STDOUT: %impl.elem0.loc11_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_28.1: = bound_method %int_12, %impl.elem0.loc11_28.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_28.1: = specific_function %Convert.bound.loc11_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_28.1: init %i32 = call %Convert.specific_fn.loc11_28.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_28.2: init %i32 = converted %int_12, %int.convert_checked.loc11_28.1 [template = constants.%int_12.2] +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [template = constants.%int_34.3f9] +// CHECK:STDOUT: %.loc11_28.1: %tuple.type.f94 = tuple_literal (%int_12, %int_34) +// CHECK:STDOUT: %impl.elem0.loc11_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_28.1: = bound_method %int_12, %impl.elem0.loc11_28.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_28.1: = specific_function %Convert.bound.loc11_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_28.1: init %i32 = call %Convert.specific_fn.loc11_28.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_28.2: init %i32 = converted %int_12, %int.convert_checked.loc11_28.1 [template = constants.%int_12.43d] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%a.var, element0 -// CHECK:STDOUT: %.loc11_28.3: init %i32 = initialize_from %.loc11_28.2 to %tuple.elem0 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_28.2: = bound_method %int_34, %impl.elem0.loc11_28.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_28.2: = specific_function %Convert.bound.loc11_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_28.2: init %i32 = call %Convert.specific_fn.loc11_28.2(%int_34) [template = constants.%int_34.2] -// CHECK:STDOUT: %.loc11_28.4: init %i32 = converted %int_34, %int.convert_checked.loc11_28.2 [template = constants.%int_34.2] +// CHECK:STDOUT: %.loc11_28.3: init %i32 = initialize_from %.loc11_28.2 to %tuple.elem0 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_28.2: = bound_method %int_34, %impl.elem0.loc11_28.2 [template = constants.%Convert.bound.eae] +// CHECK:STDOUT: %Convert.specific_fn.loc11_28.2: = specific_function %Convert.bound.loc11_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.767] +// CHECK:STDOUT: %int.convert_checked.loc11_28.2: init %i32 = call %Convert.specific_fn.loc11_28.2(%int_34) [template = constants.%int_34.bd3] +// CHECK:STDOUT: %.loc11_28.4: init %i32 = converted %int_34, %int.convert_checked.loc11_28.2 [template = constants.%int_34.bd3] // CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_28.5: init %i32 = initialize_from %.loc11_28.4 to %tuple.elem1 [template = constants.%int_34.2] -// CHECK:STDOUT: %.loc11_28.6: init %tuple.type.2 = tuple_init (%.loc11_28.3, %.loc11_28.5) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_29: init %tuple.type.2 = converted %.loc11_28.1, %.loc11_28.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_28.5: init %i32 = initialize_from %.loc11_28.4 to %tuple.elem1 [template = constants.%int_34.bd3] +// CHECK:STDOUT: %.loc11_28.6: init %tuple.type.471 = tuple_init (%.loc11_28.3, %.loc11_28.5) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_29: init %tuple.type.471 = converted %.loc11_28.1, %.loc11_28.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_29 -// CHECK:STDOUT: %a.ref: ref %tuple.type.2 = name_ref a, file.%a +// CHECK:STDOUT: %a.ref: ref %tuple.type.471 = name_ref a, file.%a // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %.loc15_28.1: %struct_type.index = struct_literal (%int_2) // CHECK:STDOUT: %struct: %struct_type.index = struct_value (%int_2) [template = constants.%struct] diff --git a/toolchain/check/testdata/tuple/access/index_not_literal.carbon b/toolchain/check/testdata/tuple/access/index_not_literal.carbon index 66b551ff555d..e2075bd344d0 100644 --- a/toolchain/check/testdata/tuple/access/index_not_literal.carbon +++ b/toolchain/check/testdata/tuple/access/index_not_literal.carbon @@ -18,50 +18,50 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (bool, %i32) [template] +// CHECK:STDOUT: %tuple.type.c2e: type = tuple_type (bool, %i32) [template] // CHECK:STDOUT: %true: bool = bool_literal true [template] -// CHECK:STDOUT: %int_34.1: Core.IntLiteral = int_value 34 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (bool, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %Convert.type.5: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.15), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_34.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_34.2: %i32 = int_value 34 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%true, %int_34.2) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %struct_type.index.1: type = struct_type {.index: Core.IntLiteral} [template] -// CHECK:STDOUT: %struct.1: %struct_type.index.1 = struct_value (%int_1.1) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %Convert.type.11: type = fn_type @Convert.4, @As(%i32) [template] -// CHECK:STDOUT: %impl_witness.21: = impl_witness (imports.%import_ref.28), @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.type.12: type = fn_type @Convert.5, @impl.3(%int_32) [template] -// CHECK:STDOUT: %Convert.12: %Convert.type.12 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_0.1, %Convert.12 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %impl_witness.23: = impl_witness (imports.%import_ref.19), @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.type.13: type = fn_type @Convert.3, @impl.2(%int_32) [template] -// CHECK:STDOUT: %Convert.13: %Convert.type.13 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_0.2, %Convert.13 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.3(%int_32) [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_1.1, %Convert.12 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.5(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %struct_type.index.2: type = struct_type {.index: %i32} [template] -// CHECK:STDOUT: %struct.2: %struct_type.index.2 = struct_value (%int_1.2) [template] -// CHECK:STDOUT: %Convert.bound.5: = bound_method %int_1.2, %Convert.13 [template] -// CHECK:STDOUT: %Convert.specific_fn.5: = specific_function %Convert.bound.5, @Convert.3(%int_32) [template] +// CHECK:STDOUT: %int_34.3f9: Core.IntLiteral = int_value 34 [template] +// CHECK:STDOUT: %tuple.type.3c2: type = tuple_type (bool, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %Convert.type.a9b: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.eae: = bound_method %int_34.3f9, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.767: = specific_function %Convert.bound.eae, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_34.bd3: %i32 = int_value 34 [template] +// CHECK:STDOUT: %tuple: %tuple.type.c2e = tuple_value (%true, %int_34.bd3) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %struct_type.index.b1b: type = struct_type {.index: Core.IntLiteral} [template] +// CHECK:STDOUT: %struct.972: %struct_type.index.b1b = struct_value (%int_1.5b8) [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %Convert.type.1b9: type = fn_type @Convert.4, @As(%i32) [template] +// CHECK:STDOUT: %impl_witness.c9a: = impl_witness (imports.%import_ref.6fa), @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.type.531: type = fn_type @Convert.5, @impl.3(%int_32) [template] +// CHECK:STDOUT: %Convert.6c4: %Convert.type.531 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.47b: = bound_method %int_0.5c6, %Convert.6c4 [template] +// CHECK:STDOUT: %Convert.specific_fn.e13: = specific_function %Convert.bound.47b, @Convert.5(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %impl_witness.dd3: = impl_witness (imports.%import_ref.a80), @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.type.d18: type = fn_type @Convert.3, @impl.2(%int_32) [template] +// CHECK:STDOUT: %Convert.079: %Convert.type.d18 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.64e: = bound_method %int_0.f61, %Convert.079 [template] +// CHECK:STDOUT: %Convert.specific_fn.f03: = specific_function %Convert.bound.64e, @Convert.3(%int_32) [template] +// CHECK:STDOUT: %Convert.bound.e50: = bound_method %int_1.5b8, %Convert.6c4 [template] +// CHECK:STDOUT: %Convert.specific_fn.f7a: = specific_function %Convert.bound.e50, @Convert.5(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %struct_type.index.bb3: type = struct_type {.index: %i32} [template] +// CHECK:STDOUT: %struct.a97: %struct_type.index.bb3 = struct_value (%int_1.c60) [template] +// CHECK:STDOUT: %Convert.bound.7d6: = bound_method %int_1.c60, %Convert.079 [template] +// CHECK:STDOUT: %Convert.specific_fn.08c: = specific_function %Convert.bound.7d6, @Convert.3(%int_32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Int = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 -// CHECK:STDOUT: .As = %import_ref.253 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .As = %import_ref.166 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -76,8 +76,8 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var +// CHECK:STDOUT: %a.var: ref %tuple.type.c2e = var a +// CHECK:STDOUT: %a: ref %tuple.type.c2e = bind_name a, %a.var // CHECK:STDOUT: %b.var: ref %i32 = var b // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: %c.var: ref bool = var c @@ -89,68 +89,68 @@ var d: i32 = a.({.index = 1 as i32}.index); // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true] -// CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [template = constants.%int_34.1] -// CHECK:STDOUT: %.loc11_31.1: %tuple.type.3 = tuple_literal (%true, %int_34) +// CHECK:STDOUT: %int_34: Core.IntLiteral = int_value 34 [template = constants.%int_34.3f9] +// CHECK:STDOUT: %.loc11_31.1: %tuple.type.3c2 = tuple_literal (%true, %int_34) // CHECK:STDOUT: %tuple.elem0.loc11: ref bool = tuple_access file.%a.var, element0 // CHECK:STDOUT: %.loc11_31.2: init bool = initialize_from %true to %tuple.elem0.loc11 [template = constants.%true] -// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_34, %impl.elem0.loc11 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_34) [template = constants.%int_34.2] -// CHECK:STDOUT: %.loc11_31.3: init %i32 = converted %int_34, %int.convert_checked.loc11 [template = constants.%int_34.2] +// CHECK:STDOUT: %impl.elem0.loc11: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11: = bound_method %int_34, %impl.elem0.loc11 [template = constants.%Convert.bound.eae] +// CHECK:STDOUT: %Convert.specific_fn.loc11: = specific_function %Convert.bound.loc11, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.767] +// CHECK:STDOUT: %int.convert_checked.loc11: init %i32 = call %Convert.specific_fn.loc11(%int_34) [template = constants.%int_34.bd3] +// CHECK:STDOUT: %.loc11_31.3: init %i32 = converted %int_34, %int.convert_checked.loc11 [template = constants.%int_34.bd3] // CHECK:STDOUT: %tuple.elem1.loc11: ref %i32 = tuple_access file.%a.var, element1 -// CHECK:STDOUT: %.loc11_31.4: init %i32 = initialize_from %.loc11_31.3 to %tuple.elem1.loc11 [template = constants.%int_34.2] -// CHECK:STDOUT: %.loc11_31.5: init %tuple.type.2 = tuple_init (%.loc11_31.2, %.loc11_31.4) to file.%a.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_32: init %tuple.type.2 = converted %.loc11_31.1, %.loc11_31.5 [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_31.4: init %i32 = initialize_from %.loc11_31.3 to %tuple.elem1.loc11 [template = constants.%int_34.bd3] +// CHECK:STDOUT: %.loc11_31.5: init %tuple.type.c2e = tuple_init (%.loc11_31.2, %.loc11_31.4) to file.%a.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_32: init %tuple.type.c2e = converted %.loc11_31.1, %.loc11_31.5 [template = constants.%tuple] // CHECK:STDOUT: assign file.%a.var, %.loc11_32 -// CHECK:STDOUT: %a.ref.loc12: ref %tuple.type.2 = name_ref a, file.%a -// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc12_28.1: %struct_type.index.1 = struct_literal (%int_1.loc12) -// CHECK:STDOUT: %struct.loc12: %struct_type.index.1 = struct_value (%int_1.loc12) [template = constants.%struct.1] -// CHECK:STDOUT: %.loc12_28.2: %struct_type.index.1 = converted %.loc12_28.1, %struct.loc12 [template = constants.%struct.1] -// CHECK:STDOUT: %.loc12_29: Core.IntLiteral = struct_access %.loc12_28.2, element0 [template = constants.%int_1.1] +// CHECK:STDOUT: %a.ref.loc12: ref %tuple.type.c2e = name_ref a, file.%a +// CHECK:STDOUT: %int_1.loc12: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc12_28.1: %struct_type.index.b1b = struct_literal (%int_1.loc12) +// CHECK:STDOUT: %struct.loc12: %struct_type.index.b1b = struct_value (%int_1.loc12) [template = constants.%struct.972] +// CHECK:STDOUT: %.loc12_28.2: %struct_type.index.b1b = converted %.loc12_28.1, %struct.loc12 [template = constants.%struct.972] +// CHECK:STDOUT: %.loc12_29: Core.IntLiteral = struct_access %.loc12_28.2, element0 [template = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc12: ref %i32 = tuple_access %a.ref.loc12, element1 // CHECK:STDOUT: %.loc12_15: %i32 = bind_value %tuple.elem1.loc12 // CHECK:STDOUT: assign file.%b.var, %.loc12_15 -// CHECK:STDOUT: %a.ref.loc13: ref %tuple.type.2 = name_ref a, file.%a -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] +// CHECK:STDOUT: %a.ref.loc13: ref %tuple.type.c2e = name_ref a, file.%a +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] // CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc13_20.1: %Convert.type.11 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Convert.12] -// CHECK:STDOUT: %Convert.bound.loc13_20.1: = bound_method %int_0, %impl.elem0.loc13_20.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc13_20.1: = specific_function %Convert.bound.loc13_20.1, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc13_20.1: init %i32 = call %Convert.specific_fn.loc13_20.1(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_20.1: %i32 = value_of_initializer %int.convert_checked.loc13_20.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc13_20.2: %i32 = converted %int_0, %.loc13_20.1 [template = constants.%int_0.2] -// CHECK:STDOUT: %impl.elem0.loc13_20.2: %Convert.type.5 = impl_witness_access constants.%impl_witness.23, element0 [template = constants.%Convert.13] -// CHECK:STDOUT: %Convert.bound.loc13_20.2: = bound_method %.loc13_20.2, %impl.elem0.loc13_20.2 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc13_20.2: = specific_function %Convert.bound.loc13_20.2, @Convert.3(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc13_20.2: init Core.IntLiteral = call %Convert.specific_fn.loc13_20.2(%.loc13_20.2) [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc13_20.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc13_20.2 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc13_20.4: Core.IntLiteral = converted %.loc13_20.2, %.loc13_20.3 [template = constants.%int_0.1] +// CHECK:STDOUT: %impl.elem0.loc13_20.1: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] +// CHECK:STDOUT: %Convert.bound.loc13_20.1: = bound_method %int_0, %impl.elem0.loc13_20.1 [template = constants.%Convert.bound.47b] +// CHECK:STDOUT: %Convert.specific_fn.loc13_20.1: = specific_function %Convert.bound.loc13_20.1, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn.e13] +// CHECK:STDOUT: %int.convert_checked.loc13_20.1: init %i32 = call %Convert.specific_fn.loc13_20.1(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_20.1: %i32 = value_of_initializer %int.convert_checked.loc13_20.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc13_20.2: %i32 = converted %int_0, %.loc13_20.1 [template = constants.%int_0.f61] +// CHECK:STDOUT: %impl.elem0.loc13_20.2: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] +// CHECK:STDOUT: %Convert.bound.loc13_20.2: = bound_method %.loc13_20.2, %impl.elem0.loc13_20.2 [template = constants.%Convert.bound.64e] +// CHECK:STDOUT: %Convert.specific_fn.loc13_20.2: = specific_function %Convert.bound.loc13_20.2, @Convert.3(constants.%int_32) [template = constants.%Convert.specific_fn.f03] +// CHECK:STDOUT: %int.convert_checked.loc13_20.2: init Core.IntLiteral = call %Convert.specific_fn.loc13_20.2(%.loc13_20.2) [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc13_20.3: Core.IntLiteral = value_of_initializer %int.convert_checked.loc13_20.2 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc13_20.4: Core.IntLiteral = converted %.loc13_20.2, %.loc13_20.3 [template = constants.%int_0.5c6] // CHECK:STDOUT: %tuple.elem0.loc13: ref bool = tuple_access %a.ref.loc13, element0 // CHECK:STDOUT: %.loc13_16: bool = bind_value %tuple.elem0.loc13 // CHECK:STDOUT: assign file.%c.var, %.loc13_16 -// CHECK:STDOUT: %a.ref.loc14: ref %tuple.type.2 = name_ref a, file.%a -// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %a.ref.loc14: ref %tuple.type.c2e = name_ref a, file.%a +// CHECK:STDOUT: %int_1.loc14: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %impl.elem0.loc14_29: %Convert.type.11 = impl_witness_access constants.%impl_witness.21, element0 [template = constants.%Convert.12] -// CHECK:STDOUT: %Convert.bound.loc14_29: = bound_method %int_1.loc14, %impl.elem0.loc14_29 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc14_29: = specific_function %Convert.bound.loc14_29, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc14_29: init %i32 = call %Convert.specific_fn.loc14_29(%int_1.loc14) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_29.1: %i32 = value_of_initializer %int.convert_checked.loc14_29 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_29.2: %i32 = converted %int_1.loc14, %.loc14_29.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc14_35.1: %struct_type.index.2 = struct_literal (%.loc14_29.2) -// CHECK:STDOUT: %struct.loc14: %struct_type.index.2 = struct_value (%.loc14_29.2) [template = constants.%struct.2] -// CHECK:STDOUT: %.loc14_35.2: %struct_type.index.2 = converted %.loc14_35.1, %struct.loc14 [template = constants.%struct.2] -// CHECK:STDOUT: %.loc14_36.1: %i32 = struct_access %.loc14_35.2, element0 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc14_36: %Convert.type.5 = impl_witness_access constants.%impl_witness.23, element0 [template = constants.%Convert.13] -// CHECK:STDOUT: %Convert.bound.loc14_36: = bound_method %.loc14_36.1, %impl.elem0.loc14_36 [template = constants.%Convert.bound.5] -// CHECK:STDOUT: %Convert.specific_fn.loc14_36: = specific_function %Convert.bound.loc14_36, @Convert.3(constants.%int_32) [template = constants.%Convert.specific_fn.5] -// CHECK:STDOUT: %int.convert_checked.loc14_36: init Core.IntLiteral = call %Convert.specific_fn.loc14_36(%.loc14_36.1) [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc14_36.2: Core.IntLiteral = value_of_initializer %int.convert_checked.loc14_36 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc14_36.3: Core.IntLiteral = converted %.loc14_36.1, %.loc14_36.2 [template = constants.%int_1.1] +// CHECK:STDOUT: %impl.elem0.loc14_29: %Convert.type.1b9 = impl_witness_access constants.%impl_witness.c9a, element0 [template = constants.%Convert.6c4] +// CHECK:STDOUT: %Convert.bound.loc14_29: = bound_method %int_1.loc14, %impl.elem0.loc14_29 [template = constants.%Convert.bound.e50] +// CHECK:STDOUT: %Convert.specific_fn.loc14_29: = specific_function %Convert.bound.loc14_29, @Convert.5(constants.%int_32) [template = constants.%Convert.specific_fn.f7a] +// CHECK:STDOUT: %int.convert_checked.loc14_29: init %i32 = call %Convert.specific_fn.loc14_29(%int_1.loc14) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_29.1: %i32 = value_of_initializer %int.convert_checked.loc14_29 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_29.2: %i32 = converted %int_1.loc14, %.loc14_29.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc14_35.1: %struct_type.index.bb3 = struct_literal (%.loc14_29.2) +// CHECK:STDOUT: %struct.loc14: %struct_type.index.bb3 = struct_value (%.loc14_29.2) [template = constants.%struct.a97] +// CHECK:STDOUT: %.loc14_35.2: %struct_type.index.bb3 = converted %.loc14_35.1, %struct.loc14 [template = constants.%struct.a97] +// CHECK:STDOUT: %.loc14_36.1: %i32 = struct_access %.loc14_35.2, element0 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc14_36: %Convert.type.a9b = impl_witness_access constants.%impl_witness.dd3, element0 [template = constants.%Convert.079] +// CHECK:STDOUT: %Convert.bound.loc14_36: = bound_method %.loc14_36.1, %impl.elem0.loc14_36 [template = constants.%Convert.bound.7d6] +// CHECK:STDOUT: %Convert.specific_fn.loc14_36: = specific_function %Convert.bound.loc14_36, @Convert.3(constants.%int_32) [template = constants.%Convert.specific_fn.08c] +// CHECK:STDOUT: %int.convert_checked.loc14_36: init Core.IntLiteral = call %Convert.specific_fn.loc14_36(%.loc14_36.1) [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc14_36.2: Core.IntLiteral = value_of_initializer %int.convert_checked.loc14_36 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc14_36.3: Core.IntLiteral = converted %.loc14_36.1, %.loc14_36.2 [template = constants.%int_1.5b8] // CHECK:STDOUT: %tuple.elem1.loc14: ref %i32 = tuple_access %a.ref.loc14, element1 // CHECK:STDOUT: %.loc14_15: %i32 = bind_value %tuple.elem1.loc14 // CHECK:STDOUT: assign file.%d.var, %.loc14_15 diff --git a/toolchain/check/testdata/tuple/access/return_value_access.carbon b/toolchain/check/testdata/tuple/access/return_value_access.carbon index 266270d67368..d9bb445f6bba 100644 --- a/toolchain/check/testdata/tuple/access/return_value_access.carbon +++ b/toolchain/check/testdata/tuple/access/return_value_access.carbon @@ -19,28 +19,28 @@ fn Run() -> i32 { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.1, %Convert.10 [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_0.2) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_0.f61) [template] // CHECK:STDOUT: %Run.type: type = fn_type @Run [template] // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,15 +54,15 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.0e4 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.0e4 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_16.1: %tuple.type.1 = tuple_literal (%i32) -// CHECK:STDOUT: %.loc11_16.2: type = converted %.loc11_16.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_16.1: %tuple.type.85c = tuple_literal (%i32) +// CHECK:STDOUT: %.loc11_16.2: type = converted %.loc11_16.1, constants.%tuple.type.0e4 [template = constants.%tuple.type.0e4] +// CHECK:STDOUT: %return.param: ref %tuple.type.0e4 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.0e4 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [template = constants.%Run] { // CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern @@ -77,28 +77,28 @@ fn Run() -> i32 { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2 { +// CHECK:STDOUT: fn @F() -> %tuple.type.0e4 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc11_30.1: %tuple.type.3 = tuple_literal (%int_0) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc11_30.1: %tuple.type.985 = tuple_literal (%int_0) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc11_30.3: %i32 = converted %int_0, %.loc11_30.2 [template = constants.%int_0.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc11_30.3) [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_31: %tuple.type.2 = converted %.loc11_30.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_0) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_30.2: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc11_30.3: %i32 = converted %int_0, %.loc11_30.2 [template = constants.%int_0.f61] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%.loc11_30.3) [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_31: %tuple.type.0e4 = converted %.loc11_30.1, %tuple [template = constants.%tuple] // CHECK:STDOUT: return %.loc11_31 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %F.call: init %tuple.type.2 = call %F.ref() -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc14_12.1: ref %tuple.type.2 = temporary_storage -// CHECK:STDOUT: %.loc14_12.2: ref %tuple.type.2 = temporary %.loc14_12.1, %F.call +// CHECK:STDOUT: %F.call: init %tuple.type.0e4 = call %F.ref() +// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc14_12.1: ref %tuple.type.0e4 = temporary_storage +// CHECK:STDOUT: %.loc14_12.2: ref %tuple.type.0e4 = temporary %.loc14_12.1, %F.call // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %.loc14_12.2, element0 // CHECK:STDOUT: %.loc14_13: %i32 = bind_value %tuple.elem0 // CHECK:STDOUT: return %.loc14_13 diff --git a/toolchain/check/testdata/tuple/fail_assign_nested.carbon b/toolchain/check/testdata/tuple/fail_assign_nested.carbon index 13beb1215939..a2bf8784ae4e 100644 --- a/toolchain/check/testdata/tuple/fail_assign_nested.carbon +++ b/toolchain/check/testdata/tuple/fail_assign_nested.carbon @@ -18,21 +18,21 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (%tuple.type.3, %tuple.type.3) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.c0a: type = tuple_type (%tuple.type.471, %tuple.type.471) [template] // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %tuple.type.6: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.37f: type = tuple_type (Core.IntLiteral, Core.IntLiteral, Core.IntLiteral) [template] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%tuple.type.6, %tuple.type.6) [template] +// CHECK:STDOUT: %tuple.type.e89: type = tuple_type (%tuple.type.37f, %tuple.type.37f) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -44,8 +44,8 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.4 = var x -// CHECK:STDOUT: %x: ref %tuple.type.4 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %tuple.type.c0a = var x +// CHECK:STDOUT: %x: ref %tuple.type.c0a = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -53,12 +53,12 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3] -// CHECK:STDOUT: %.loc14_44: %tuple.type.6 = tuple_literal (%int_1, %int_2, %int_3) +// CHECK:STDOUT: %.loc14_44: %tuple.type.37f = tuple_literal (%int_1, %int_2, %int_3) // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template = constants.%int_5] // CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6] -// CHECK:STDOUT: %.loc14_55: %tuple.type.6 = tuple_literal (%int_4, %int_5, %int_6) -// CHECK:STDOUT: %.loc14_56: %tuple.type.7 = tuple_literal (%.loc14_44, %.loc14_55) +// CHECK:STDOUT: %.loc14_55: %tuple.type.37f = tuple_literal (%int_4, %int_5, %int_6) +// CHECK:STDOUT: %.loc14_56: %tuple.type.e89 = tuple_literal (%.loc14_44, %.loc14_55) // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon index 0c98b6b72e75..ab2c6156a229 100644 --- a/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon +++ b/toolchain/check/testdata/tuple/fail_element_type_mismatch.carbon @@ -21,23 +21,23 @@ var x: (i32, i32) = (2, 65.89); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] // CHECK:STDOUT: %float: f64 = float_literal 65.890000000000001 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, f64) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.2c1: type = tuple_type (Core.IntLiteral, f64) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -49,22 +49,22 @@ var x: (i32, i32) = (2, 65.89); // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %tuple.type.471 = var x +// CHECK:STDOUT: %x: ref %tuple.type.471 = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] // CHECK:STDOUT: %float: f64 = float_literal 65.890000000000001 [template = constants.%float] -// CHECK:STDOUT: %.loc17_30.1: %tuple.type.3 = tuple_literal (%int_2, %float) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %.loc17_30.1: %tuple.type.2c1 = tuple_literal (%int_2, %float) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc17_30.2: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.2] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc17_30.2: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access file.%x.var, element0 -// CHECK:STDOUT: %.loc17_30.3: init %i32 = initialize_from %.loc17_30.2 to %tuple.elem0 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc17_30.3: init %i32 = initialize_from %.loc17_30.2 to %tuple.elem0 [template = constants.%int_2.166] // CHECK:STDOUT: %.loc17_30.4: %i32 = converted %float, [template = ] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon index 680fcaad880c..5cc12783cdc4 100644 --- a/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/tuple/fail_nested_incomplete.carbon @@ -30,7 +30,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/fail_too_few_element.carbon b/toolchain/check/testdata/tuple/fail_too_few_element.carbon index 09a838692fd2..28f609b23c9d 100644 --- a/toolchain/check/testdata/tuple/fail_too_few_element.carbon +++ b/toolchain/check/testdata/tuple/fail_too_few_element.carbon @@ -18,14 +18,14 @@ var x: (i32, i32) = (2, ); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -37,14 +37,14 @@ var x: (i32, i32) = (2, ); // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %tuple.type.471 = var x +// CHECK:STDOUT: %x: ref %tuple.type.471 = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] -// CHECK:STDOUT: %.loc14: %tuple.type.3 = tuple_literal (%int_2) +// CHECK:STDOUT: %.loc14: %tuple.type.985 = tuple_literal (%int_2) // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/fail_type_assign.carbon b/toolchain/check/testdata/tuple/fail_type_assign.carbon index 642cdb3420fa..7e8090878c10 100644 --- a/toolchain/check/testdata/tuple/fail_type_assign.carbon +++ b/toolchain/check/testdata/tuple/fail_type_assign.carbon @@ -21,14 +21,14 @@ var x: (i32, ) = (i32, ); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -40,15 +40,15 @@ var x: (i32, ) = (i32, ); // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %tuple.type.0e4 = var x +// CHECK:STDOUT: %x: ref %tuple.type.0e4 = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc17_24.1: %tuple.type.1 = tuple_literal (%i32) +// CHECK:STDOUT: %.loc17_24.1: %tuple.type.85c = tuple_literal (%i32) // CHECK:STDOUT: %.loc17_24.2: %i32 = converted %i32, [template = ] // CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/tuple/fail_value_as_type.carbon b/toolchain/check/testdata/tuple/fail_value_as_type.carbon index e3db2175a08d..83e2ee94c851 100644 --- a/toolchain/check/testdata/tuple/fail_value_as_type.carbon +++ b/toolchain/check/testdata/tuple/fail_value_as_type.carbon @@ -23,7 +23,7 @@ var x: (1, ); // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index a86ce4654ce5..66355dc8f4f0 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -58,56 +58,56 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %int_0.1: Core.IntLiteral = int_value 0 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_0.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_0.2: %i32 = int_value 0 [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.2 = tuple_value (%int_0.2) [template] -// CHECK:STDOUT: %tuple.type.5: type = tuple_type (type, type) [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%tuple.type.2, %i32) [template] -// CHECK:STDOUT: %tuple.type.8: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %tuple.type.9: type = tuple_type (%tuple.type.7, %tuple.type.8) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %tuple.type.11: type = tuple_type (%tuple.type.3, Core.IntLiteral) [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %int_3.1: Core.IntLiteral = int_value 3 [template] -// CHECK:STDOUT: %tuple.type.12: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %tuple.type.13: type = tuple_type (%tuple.type.11, %tuple.type.12) [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.7 = tuple_value (%tuple.1, %int_1.2) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %Convert.bound.4: = bound_method %int_3.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.4: = specific_function %Convert.bound.4, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %tuple.3: %tuple.type.8 = tuple_value (%int_2.2, %int_3.2) [template] -// CHECK:STDOUT: %tuple.4: %tuple.type.9 = tuple_value (%tuple.2, %tuple.3) [template] -// CHECK:STDOUT: %X: %tuple.type.8 = bind_symbolic_name X, 0 [symbolic] -// CHECK:STDOUT: %X.patt: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.b41: = bound_method %int_0.5c6, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c35: = specific_function %Convert.bound.b41, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_0.f61: %i32 = int_value 0 [template] +// CHECK:STDOUT: %tuple.2c2: %tuple.type.0e4 = tuple_value (%int_0.f61) [template] +// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template] +// CHECK:STDOUT: %tuple.type.0e1: type = tuple_type (%tuple.type.0e4, %i32) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.b19: type = tuple_type (%tuple.type.0e1, %tuple.type.471) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %tuple.type.186: type = tuple_type (%tuple.type.985, Core.IntLiteral) [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %int_3.1ba: Core.IntLiteral = int_value 3 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %tuple.type.d47: type = tuple_type (%tuple.type.186, %tuple.type.f94) [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple.20c: %tuple.type.0e1 = tuple_value (%tuple.2c2, %int_1.c60) [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] +// CHECK:STDOUT: %Convert.bound.0db: = bound_method %int_3.1ba, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.456: = specific_function %Convert.bound.0db, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_3.25b: %i32 = int_value 3 [template] +// CHECK:STDOUT: %tuple.44c: %tuple.type.471 = tuple_value (%int_2.166, %int_3.25b) [template] +// CHECK:STDOUT: %tuple.125: %tuple.type.b19 = tuple_value (%tuple.20c, %tuple.44c) [template] +// CHECK:STDOUT: %X: %tuple.type.471 = bind_symbolic_name X, 0 [symbolic] +// CHECK:STDOUT: %X.patt: %tuple.type.471 = symbolic_binding_pattern X, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] -// CHECK:STDOUT: %C.1: type = class_type @C, @C(%X) [symbolic] +// CHECK:STDOUT: %C.617: type = class_type @C, @C(%X) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.4: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %tuple.5: %tuple.type.8 = tuple_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%tuple.5) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %tuple.58e: %tuple.type.471 = tuple_value (%int_1.c60, %int_2.166) [template] +// CHECK:STDOUT: %C.614: type = class_type @C, @C(%tuple.58e) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -122,128 +122,128 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a_ref.var: ref %tuple.type.2 = var a_ref -// CHECK:STDOUT: %a_ref: ref %tuple.type.2 = bind_name a_ref, %a_ref.var -// CHECK:STDOUT: %b_ref.var: ref %tuple.type.9 = var b_ref -// CHECK:STDOUT: %b_ref: ref %tuple.type.9 = bind_name b_ref, %b_ref.var +// CHECK:STDOUT: %a_ref.var: ref %tuple.type.0e4 = var a_ref +// CHECK:STDOUT: %a_ref: ref %tuple.type.0e4 = bind_name a_ref, %a_ref.var +// CHECK:STDOUT: %b_ref.var: ref %tuple.type.b19 = var b_ref +// CHECK:STDOUT: %b_ref: ref %tuple.type.b19 = bind_name b_ref, %b_ref.var // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] { -// CHECK:STDOUT: %X.patt.loc7_9.1: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] -// CHECK:STDOUT: %X.param_patt: %tuple.type.8 = value_param_pattern %X.patt.loc7_9.1, runtime_param [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] +// CHECK:STDOUT: %X.patt.loc7_9.1: %tuple.type.471 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] +// CHECK:STDOUT: %X.param_patt: %tuple.type.471 = value_param_pattern %X.patt.loc7_9.1, runtime_param [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %X.param: %tuple.type.8 = value_param runtime_param -// CHECK:STDOUT: %.loc7_22.1: type = splice_block %.loc7_22.3 [template = constants.%tuple.type.8] { +// CHECK:STDOUT: %X.param: %tuple.type.471 = value_param runtime_param +// CHECK:STDOUT: %.loc7_22.1: type = splice_block %.loc7_22.3 [template = constants.%tuple.type.471] { // CHECK:STDOUT: %int_32.loc7_14: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7_14: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc7_19: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc7_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc7_22.2: %tuple.type.5 = tuple_literal (%i32.loc7_14, %i32.loc7_19) -// CHECK:STDOUT: %.loc7_22.3: type = converted %.loc7_22.2, constants.%tuple.type.8 [template = constants.%tuple.type.8] +// CHECK:STDOUT: %.loc7_22.2: %tuple.type.24b = tuple_literal (%i32.loc7_14, %i32.loc7_19) +// CHECK:STDOUT: %.loc7_22.3: type = converted %.loc7_22.2, constants.%tuple.type.471 [template = constants.%tuple.type.471] // CHECK:STDOUT: } -// CHECK:STDOUT: %X.loc7_9.1: %tuple.type.8 = bind_symbolic_name X, 0, %X.param [symbolic = %X.loc7_9.2 (constants.%X)] +// CHECK:STDOUT: %X.loc7_9.1: %tuple.type.471 = bind_symbolic_name X, 0, %X.param [symbolic = %X.loc7_9.2 (constants.%X)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %C.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %C.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %C.614 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %C.614 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic] -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc9_18.1: %tuple.type.12 = tuple_literal (%int_1, %int_2) -// CHECK:STDOUT: %impl.elem0.loc9_18.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_18.1: = bound_method %int_1, %impl.elem0.loc9_18.1 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc9_18.1: = specific_function %Convert.bound.loc9_18.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc9_18.1: init %i32 = call %Convert.specific_fn.loc9_18.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_18.2: %i32 = value_of_initializer %int.convert_checked.loc9_18.1 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc9_18.3: %i32 = converted %int_1, %.loc9_18.2 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc9_18.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc9_18.2: = bound_method %int_2, %impl.elem0.loc9_18.2 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc9_18.2: = specific_function %Convert.bound.loc9_18.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc9_18.2: init %i32 = call %Convert.specific_fn.loc9_18.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc9_18.4: %i32 = value_of_initializer %int.convert_checked.loc9_18.2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc9_18.5: %i32 = converted %int_2, %.loc9_18.4 [template = constants.%int_2.2] -// CHECK:STDOUT: %tuple: %tuple.type.8 = tuple_value (%.loc9_18.3, %.loc9_18.5) [template = constants.%tuple.5] -// CHECK:STDOUT: %.loc9_19: %tuple.type.8 = converted %.loc9_18.1, %tuple [template = constants.%tuple.5] -// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.5) [template = constants.%C.2] -// CHECK:STDOUT: %return.param: ref %C.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %C.2 = return_slot %return.param +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc9_18.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2) +// CHECK:STDOUT: %impl.elem0.loc9_18.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_18.1: = bound_method %int_1, %impl.elem0.loc9_18.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc9_18.1: = specific_function %Convert.bound.loc9_18.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc9_18.1: init %i32 = call %Convert.specific_fn.loc9_18.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_18.2: %i32 = value_of_initializer %int.convert_checked.loc9_18.1 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc9_18.3: %i32 = converted %int_1, %.loc9_18.2 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc9_18.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc9_18.2: = bound_method %int_2, %impl.elem0.loc9_18.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc9_18.2: = specific_function %Convert.bound.loc9_18.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc9_18.2: init %i32 = call %Convert.specific_fn.loc9_18.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc9_18.4: %i32 = value_of_initializer %int.convert_checked.loc9_18.2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc9_18.5: %i32 = converted %int_2, %.loc9_18.4 [template = constants.%int_2.166] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%.loc9_18.3, %.loc9_18.5) [template = constants.%tuple.58e] +// CHECK:STDOUT: %.loc9_19: %tuple.type.471 = converted %.loc9_18.1, %tuple [template = constants.%tuple.58e] +// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%tuple.58e) [template = constants.%C.614] +// CHECK:STDOUT: %return.param: ref %C.614 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %C.614 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(%X.loc7_9.1: %tuple.type.8) { -// CHECK:STDOUT: %X.loc7_9.2: %tuple.type.8 = bind_symbolic_name X, 0 [symbolic = %X.loc7_9.2 (constants.%X)] -// CHECK:STDOUT: %X.patt.loc7_9.2: %tuple.type.8 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] +// CHECK:STDOUT: generic class @C(%X.loc7_9.1: %tuple.type.471) { +// CHECK:STDOUT: %X.loc7_9.2: %tuple.type.471 = bind_symbolic_name X, 0 [symbolic = %X.loc7_9.2 (constants.%X)] +// CHECK:STDOUT: %X.patt.loc7_9.2: %tuple.type.471 = symbolic_binding_pattern X, 0 [symbolic = %X.patt.loc7_9.2 (constants.%X.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.4] +// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C.1 +// CHECK:STDOUT: .Self = constants.%C.617 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2; +// CHECK:STDOUT: fn @F() -> %C.614; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_0.loc4: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc4_24.1: %tuple.type.3 = tuple_literal (%int_0.loc4) -// CHECK:STDOUT: %impl.elem0.loc4: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc4: = bound_method %int_0.loc4, %impl.elem0.loc4 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc4: = specific_function %Convert.bound.loc4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %Convert.specific_fn.loc4(%int_0.loc4) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_24.2: init %i32 = converted %int_0.loc4, %int.convert_checked.loc4 [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc4_24.3: init %tuple.type.2 = tuple_init (%.loc4_24.2) to file.%a_ref.var [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc4_25: init %tuple.type.2 = converted %.loc4_24.1, %.loc4_24.3 [template = constants.%tuple.1] +// CHECK:STDOUT: %int_0.loc4: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc4_24.1: %tuple.type.985 = tuple_literal (%int_0.loc4) +// CHECK:STDOUT: %impl.elem0.loc4: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc4: = bound_method %int_0.loc4, %impl.elem0.loc4 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc4: = specific_function %Convert.bound.loc4, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc4: init %i32 = call %Convert.specific_fn.loc4(%int_0.loc4) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_24.2: init %i32 = converted %int_0.loc4, %int.convert_checked.loc4 [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc4_24.3: init %tuple.type.0e4 = tuple_init (%.loc4_24.2) to file.%a_ref.var [template = constants.%tuple.2c2] +// CHECK:STDOUT: %.loc4_25: init %tuple.type.0e4 = converted %.loc4_24.1, %.loc4_24.3 [template = constants.%tuple.2c2] // CHECK:STDOUT: assign file.%a_ref.var, %.loc4_25 -// CHECK:STDOUT: %int_0.loc5: Core.IntLiteral = int_value 0 [template = constants.%int_0.1] -// CHECK:STDOUT: %.loc5_47.1: %tuple.type.3 = tuple_literal (%int_0.loc5) -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] -// CHECK:STDOUT: %.loc5_51.1: %tuple.type.11 = tuple_literal (%.loc5_47.1, %int_1) -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1] -// CHECK:STDOUT: %.loc5_59.1: %tuple.type.12 = tuple_literal (%int_2, %int_3) -// CHECK:STDOUT: %.loc5_60.1: %tuple.type.13 = tuple_literal (%.loc5_51.1, %.loc5_59.1) -// CHECK:STDOUT: %impl.elem0.loc5_47: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc5_47: = bound_method %int_0.loc5, %impl.elem0.loc5_47 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc5_47: = specific_function %Convert.bound.loc5_47, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc5_47: init %i32 = call %Convert.specific_fn.loc5_47(%int_0.loc5) [template = constants.%int_0.2] -// CHECK:STDOUT: %.loc5_47.2: init %i32 = converted %int_0.loc5, %int.convert_checked.loc5_47 [template = constants.%int_0.2] -// CHECK:STDOUT: %tuple.elem0.loc5_60: ref %tuple.type.7 = tuple_access file.%b_ref.var, element0 -// CHECK:STDOUT: %tuple.elem0.loc5_51: ref %tuple.type.2 = tuple_access %tuple.elem0.loc5_60, element0 -// CHECK:STDOUT: %.loc5_47.3: init %tuple.type.2 = tuple_init (%.loc5_47.2) to %tuple.elem0.loc5_51 [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc5_51.2: init %tuple.type.2 = converted %.loc5_47.1, %.loc5_47.3 [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc5_51.3: init %tuple.type.2 = initialize_from %.loc5_51.2 to %tuple.elem0.loc5_51 [template = constants.%tuple.1] -// CHECK:STDOUT: %impl.elem0.loc5_51: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc5_51: = bound_method %int_1, %impl.elem0.loc5_51 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc5_51: = specific_function %Convert.bound.loc5_51, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc5_51: init %i32 = call %Convert.specific_fn.loc5_51(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc5_51.4: init %i32 = converted %int_1, %int.convert_checked.loc5_51 [template = constants.%int_1.2] +// CHECK:STDOUT: %int_0.loc5: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6] +// CHECK:STDOUT: %.loc5_47.1: %tuple.type.985 = tuple_literal (%int_0.loc5) +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] +// CHECK:STDOUT: %.loc5_51.1: %tuple.type.186 = tuple_literal (%.loc5_47.1, %int_1) +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [template = constants.%int_3.1ba] +// CHECK:STDOUT: %.loc5_59.1: %tuple.type.f94 = tuple_literal (%int_2, %int_3) +// CHECK:STDOUT: %.loc5_60.1: %tuple.type.d47 = tuple_literal (%.loc5_51.1, %.loc5_59.1) +// CHECK:STDOUT: %impl.elem0.loc5_47: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc5_47: = bound_method %int_0.loc5, %impl.elem0.loc5_47 [template = constants.%Convert.bound.b41] +// CHECK:STDOUT: %Convert.specific_fn.loc5_47: = specific_function %Convert.bound.loc5_47, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c35] +// CHECK:STDOUT: %int.convert_checked.loc5_47: init %i32 = call %Convert.specific_fn.loc5_47(%int_0.loc5) [template = constants.%int_0.f61] +// CHECK:STDOUT: %.loc5_47.2: init %i32 = converted %int_0.loc5, %int.convert_checked.loc5_47 [template = constants.%int_0.f61] +// CHECK:STDOUT: %tuple.elem0.loc5_60: ref %tuple.type.0e1 = tuple_access file.%b_ref.var, element0 +// CHECK:STDOUT: %tuple.elem0.loc5_51: ref %tuple.type.0e4 = tuple_access %tuple.elem0.loc5_60, element0 +// CHECK:STDOUT: %.loc5_47.3: init %tuple.type.0e4 = tuple_init (%.loc5_47.2) to %tuple.elem0.loc5_51 [template = constants.%tuple.2c2] +// CHECK:STDOUT: %.loc5_51.2: init %tuple.type.0e4 = converted %.loc5_47.1, %.loc5_47.3 [template = constants.%tuple.2c2] +// CHECK:STDOUT: %.loc5_51.3: init %tuple.type.0e4 = initialize_from %.loc5_51.2 to %tuple.elem0.loc5_51 [template = constants.%tuple.2c2] +// CHECK:STDOUT: %impl.elem0.loc5_51: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc5_51: = bound_method %int_1, %impl.elem0.loc5_51 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc5_51: = specific_function %Convert.bound.loc5_51, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc5_51: init %i32 = call %Convert.specific_fn.loc5_51(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc5_51.4: init %i32 = converted %int_1, %int.convert_checked.loc5_51 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem1.loc5_51: ref %i32 = tuple_access %tuple.elem0.loc5_60, element1 -// CHECK:STDOUT: %.loc5_51.5: init %i32 = initialize_from %.loc5_51.4 to %tuple.elem1.loc5_51 [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc5_51.6: init %tuple.type.7 = tuple_init (%.loc5_51.3, %.loc5_51.5) to %tuple.elem0.loc5_60 [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc5_60.2: init %tuple.type.7 = converted %.loc5_51.1, %.loc5_51.6 [template = constants.%tuple.2] -// CHECK:STDOUT: %impl.elem0.loc5_59.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc5_59.1: = bound_method %int_2, %impl.elem0.loc5_59.1 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc5_59.1: = specific_function %Convert.bound.loc5_59.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc5_59.1: init %i32 = call %Convert.specific_fn.loc5_59.1(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc5_59.2: init %i32 = converted %int_2, %int.convert_checked.loc5_59.1 [template = constants.%int_2.2] -// CHECK:STDOUT: %tuple.elem1.loc5_60: ref %tuple.type.8 = tuple_access file.%b_ref.var, element1 +// CHECK:STDOUT: %.loc5_51.5: init %i32 = initialize_from %.loc5_51.4 to %tuple.elem1.loc5_51 [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc5_51.6: init %tuple.type.0e1 = tuple_init (%.loc5_51.3, %.loc5_51.5) to %tuple.elem0.loc5_60 [template = constants.%tuple.20c] +// CHECK:STDOUT: %.loc5_60.2: init %tuple.type.0e1 = converted %.loc5_51.1, %.loc5_51.6 [template = constants.%tuple.20c] +// CHECK:STDOUT: %impl.elem0.loc5_59.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc5_59.1: = bound_method %int_2, %impl.elem0.loc5_59.1 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc5_59.1: = specific_function %Convert.bound.loc5_59.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc5_59.1: init %i32 = call %Convert.specific_fn.loc5_59.1(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc5_59.2: init %i32 = converted %int_2, %int.convert_checked.loc5_59.1 [template = constants.%int_2.166] +// CHECK:STDOUT: %tuple.elem1.loc5_60: ref %tuple.type.471 = tuple_access file.%b_ref.var, element1 // CHECK:STDOUT: %tuple.elem0.loc5_59: ref %i32 = tuple_access %tuple.elem1.loc5_60, element0 -// CHECK:STDOUT: %.loc5_59.3: init %i32 = initialize_from %.loc5_59.2 to %tuple.elem0.loc5_59 [template = constants.%int_2.2] -// CHECK:STDOUT: %impl.elem0.loc5_59.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc5_59.2: = bound_method %int_3, %impl.elem0.loc5_59.2 [template = constants.%Convert.bound.4] -// CHECK:STDOUT: %Convert.specific_fn.loc5_59.2: = specific_function %Convert.bound.loc5_59.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.4] -// CHECK:STDOUT: %int.convert_checked.loc5_59.2: init %i32 = call %Convert.specific_fn.loc5_59.2(%int_3) [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc5_59.4: init %i32 = converted %int_3, %int.convert_checked.loc5_59.2 [template = constants.%int_3.2] +// CHECK:STDOUT: %.loc5_59.3: init %i32 = initialize_from %.loc5_59.2 to %tuple.elem0.loc5_59 [template = constants.%int_2.166] +// CHECK:STDOUT: %impl.elem0.loc5_59.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc5_59.2: = bound_method %int_3, %impl.elem0.loc5_59.2 [template = constants.%Convert.bound.0db] +// CHECK:STDOUT: %Convert.specific_fn.loc5_59.2: = specific_function %Convert.bound.loc5_59.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.456] +// CHECK:STDOUT: %int.convert_checked.loc5_59.2: init %i32 = call %Convert.specific_fn.loc5_59.2(%int_3) [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc5_59.4: init %i32 = converted %int_3, %int.convert_checked.loc5_59.2 [template = constants.%int_3.25b] // CHECK:STDOUT: %tuple.elem1.loc5_59: ref %i32 = tuple_access %tuple.elem1.loc5_60, element1 -// CHECK:STDOUT: %.loc5_59.5: init %i32 = initialize_from %.loc5_59.4 to %tuple.elem1.loc5_59 [template = constants.%int_3.2] -// CHECK:STDOUT: %.loc5_59.6: init %tuple.type.8 = tuple_init (%.loc5_59.3, %.loc5_59.5) to %tuple.elem1.loc5_60 [template = constants.%tuple.3] -// CHECK:STDOUT: %.loc5_60.3: init %tuple.type.8 = converted %.loc5_59.1, %.loc5_59.6 [template = constants.%tuple.3] -// CHECK:STDOUT: %.loc5_60.4: init %tuple.type.9 = tuple_init (%.loc5_60.2, %.loc5_60.3) to file.%b_ref.var [template = constants.%tuple.4] -// CHECK:STDOUT: %.loc5_61: init %tuple.type.9 = converted %.loc5_60.1, %.loc5_60.4 [template = constants.%tuple.4] +// CHECK:STDOUT: %.loc5_59.5: init %i32 = initialize_from %.loc5_59.4 to %tuple.elem1.loc5_59 [template = constants.%int_3.25b] +// CHECK:STDOUT: %.loc5_59.6: init %tuple.type.471 = tuple_init (%.loc5_59.3, %.loc5_59.5) to %tuple.elem1.loc5_60 [template = constants.%tuple.44c] +// CHECK:STDOUT: %.loc5_60.3: init %tuple.type.471 = converted %.loc5_59.1, %.loc5_59.6 [template = constants.%tuple.44c] +// CHECK:STDOUT: %.loc5_60.4: init %tuple.type.b19 = tuple_init (%.loc5_60.2, %.loc5_60.3) to file.%b_ref.var [template = constants.%tuple.125] +// CHECK:STDOUT: %.loc5_61: init %tuple.type.b19 = converted %.loc5_60.1, %.loc5_60.4 [template = constants.%tuple.125] // CHECK:STDOUT: assign file.%b_ref.var, %.loc5_61 // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -253,9 +253,9 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %X.patt.loc7_9.2 => constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%tuple.5) { -// CHECK:STDOUT: %X.loc7_9.2 => constants.%tuple.5 -// CHECK:STDOUT: %X.patt.loc7_9.2 => constants.%tuple.5 +// CHECK:STDOUT: specific @C(constants.%tuple.58e) { +// CHECK:STDOUT: %X.loc7_9.2 => constants.%tuple.58e +// CHECK:STDOUT: %X.patt.loc7_9.2 => constants.%tuple.58e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit.impl.carbon @@ -263,45 +263,45 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %tuple.type.6: type = tuple_type (%tuple.type.2, %i32) [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %tuple.type.8: type = tuple_type (%tuple.type.6, %tuple.type.7) [template] +// CHECK:STDOUT: %tuple.type.590: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %tuple.type.7c4: type = tuple_type (%tuple.type.590, %i32) [template] +// CHECK:STDOUT: %tuple.type.e07: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.fce: type = tuple_type (%tuple.type.7c4, %tuple.type.e07) [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %X: %tuple.type.7 = bind_symbolic_name X, 0 [symbolic] -// CHECK:STDOUT: %X.patt: %tuple.type.7 = symbolic_binding_pattern X, 0 [symbolic] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %tuple: %tuple.type.7 = tuple_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%tuple) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple: %tuple.type.e07 = tuple_value (%int_1.059, %int_2.ed9) [template] +// CHECK:STDOUT: %C.fd9: type = class_type @C, @C(%tuple) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: ref %tuple.type.2 = import_ref Implicit//default, a_ref, loaded -// CHECK:STDOUT: %import_ref.2: ref %tuple.type.8 = import_ref Implicit//default, b_ref, loaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.c6d: ref %tuple.type.590 = import_ref Implicit//default, a_ref, loaded +// CHECK:STDOUT: %import_ref.1fe: ref %tuple.type.fce = import_ref Implicit//default, b_ref, loaded +// CHECK:STDOUT: %import_ref.c9b: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.0dc: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.252 -// CHECK:STDOUT: .ImplicitAs = %import_ref.255 +// CHECK:STDOUT: .Int = %import_ref.d69 +// CHECK:STDOUT: .ImplicitAs = %import_ref.edd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.253: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.254 = import_ref Implicit//default, inst1052 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.2e0 = import_ref Implicit//default, inst1052 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.c6d +// CHECK:STDOUT: .b_ref = imports.%import_ref.1fe +// CHECK:STDOUT: .C = imports.%import_ref.c9b +// CHECK:STDOUT: .F = imports.%import_ref.0dc // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .b = %b @@ -310,71 +310,71 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %Implicit.import = import Implicit // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %a.var: ref %tuple.type.2 = var a -// CHECK:STDOUT: %a: ref %tuple.type.2 = bind_name a, %a.var -// CHECK:STDOUT: %b.var: ref %tuple.type.8 = var b -// CHECK:STDOUT: %b: ref %tuple.type.8 = bind_name b, %b.var -// CHECK:STDOUT: %c.var: ref %C.2 = var c -// CHECK:STDOUT: %c: ref %C.2 = bind_name c, %c.var +// CHECK:STDOUT: %a.var: ref %tuple.type.590 = var a +// CHECK:STDOUT: %a: ref %tuple.type.590 = bind_name a, %a.var +// CHECK:STDOUT: %b.var: ref %tuple.type.fce = var b +// CHECK:STDOUT: %b: ref %tuple.type.fce = bind_name b, %b.var +// CHECK:STDOUT: %c.var: ref %C.fd9 = var c +// CHECK:STDOUT: %c: ref %C.fd9 = bind_name c, %c.var // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.7) [from "implicit.carbon"] { -// CHECK:STDOUT: %X: %tuple.type.7 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %X.patt: %tuple.type.7 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] +// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.e07) [from "implicit.carbon"] { +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.254 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.253 +// CHECK:STDOUT: .Self = imports.%import_ref.2e0 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.fd9 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a_ref.ref: ref %tuple.type.2 = name_ref a_ref, imports.%import_ref.1 +// CHECK:STDOUT: %a_ref.ref: ref %tuple.type.590 = name_ref a_ref, imports.%import_ref.c6d // CHECK:STDOUT: %tuple.elem0.loc4: ref %i32 = tuple_access %a_ref.ref, element0 // CHECK:STDOUT: %.loc4_17.1: %i32 = bind_value %tuple.elem0.loc4 -// CHECK:STDOUT: %.loc4_17.2: init %tuple.type.2 = tuple_init (%.loc4_17.1) to file.%a.var -// CHECK:STDOUT: %.loc4_22: init %tuple.type.2 = converted %a_ref.ref, %.loc4_17.2 +// CHECK:STDOUT: %.loc4_17.2: init %tuple.type.590 = tuple_init (%.loc4_17.1) to file.%a.var +// CHECK:STDOUT: %.loc4_22: init %tuple.type.590 = converted %a_ref.ref, %.loc4_17.2 // CHECK:STDOUT: assign file.%a.var, %.loc4_22 -// CHECK:STDOUT: %b_ref.ref: ref %tuple.type.8 = name_ref b_ref, imports.%import_ref.2 -// CHECK:STDOUT: %tuple.elem0.loc5_38.1: ref %tuple.type.6 = tuple_access %b_ref.ref, element0 -// CHECK:STDOUT: %tuple.elem0.loc5_38.2: ref %tuple.type.2 = tuple_access %tuple.elem0.loc5_38.1, element0 +// CHECK:STDOUT: %b_ref.ref: ref %tuple.type.fce = name_ref b_ref, imports.%import_ref.1fe +// CHECK:STDOUT: %tuple.elem0.loc5_38.1: ref %tuple.type.7c4 = tuple_access %b_ref.ref, element0 +// CHECK:STDOUT: %tuple.elem0.loc5_38.2: ref %tuple.type.590 = tuple_access %tuple.elem0.loc5_38.1, element0 // CHECK:STDOUT: %tuple.elem0.loc5_38.3: ref %i32 = tuple_access %tuple.elem0.loc5_38.2, element0 // CHECK:STDOUT: %.loc5_38.1: %i32 = bind_value %tuple.elem0.loc5_38.3 -// CHECK:STDOUT: %tuple.elem0.loc5_38.4: ref %tuple.type.6 = tuple_access file.%b.var, element0 -// CHECK:STDOUT: %tuple.elem0.loc5_38.5: ref %tuple.type.2 = tuple_access %tuple.elem0.loc5_38.4, element0 -// CHECK:STDOUT: %.loc5_38.2: init %tuple.type.2 = tuple_init (%.loc5_38.1) to %tuple.elem0.loc5_38.5 -// CHECK:STDOUT: %.loc5_38.3: init %tuple.type.2 = converted %tuple.elem0.loc5_38.2, %.loc5_38.2 -// CHECK:STDOUT: %.loc5_38.4: init %tuple.type.2 = initialize_from %.loc5_38.3 to %tuple.elem0.loc5_38.5 +// CHECK:STDOUT: %tuple.elem0.loc5_38.4: ref %tuple.type.7c4 = tuple_access file.%b.var, element0 +// CHECK:STDOUT: %tuple.elem0.loc5_38.5: ref %tuple.type.590 = tuple_access %tuple.elem0.loc5_38.4, element0 +// CHECK:STDOUT: %.loc5_38.2: init %tuple.type.590 = tuple_init (%.loc5_38.1) to %tuple.elem0.loc5_38.5 +// CHECK:STDOUT: %.loc5_38.3: init %tuple.type.590 = converted %tuple.elem0.loc5_38.2, %.loc5_38.2 +// CHECK:STDOUT: %.loc5_38.4: init %tuple.type.590 = initialize_from %.loc5_38.3 to %tuple.elem0.loc5_38.5 // CHECK:STDOUT: %tuple.elem1.loc5_38.1: ref %i32 = tuple_access %tuple.elem0.loc5_38.1, element1 // CHECK:STDOUT: %.loc5_38.5: %i32 = bind_value %tuple.elem1.loc5_38.1 // CHECK:STDOUT: %tuple.elem1.loc5_38.2: ref %i32 = tuple_access %tuple.elem0.loc5_38.4, element1 // CHECK:STDOUT: %.loc5_38.6: init %i32 = initialize_from %.loc5_38.5 to %tuple.elem1.loc5_38.2 -// CHECK:STDOUT: %.loc5_38.7: init %tuple.type.6 = tuple_init (%.loc5_38.4, %.loc5_38.6) to %tuple.elem0.loc5_38.4 -// CHECK:STDOUT: %.loc5_38.8: init %tuple.type.6 = converted %tuple.elem0.loc5_38.1, %.loc5_38.7 -// CHECK:STDOUT: %tuple.elem1.loc5_38.3: ref %tuple.type.7 = tuple_access %b_ref.ref, element1 +// CHECK:STDOUT: %.loc5_38.7: init %tuple.type.7c4 = tuple_init (%.loc5_38.4, %.loc5_38.6) to %tuple.elem0.loc5_38.4 +// CHECK:STDOUT: %.loc5_38.8: init %tuple.type.7c4 = converted %tuple.elem0.loc5_38.1, %.loc5_38.7 +// CHECK:STDOUT: %tuple.elem1.loc5_38.3: ref %tuple.type.e07 = tuple_access %b_ref.ref, element1 // CHECK:STDOUT: %tuple.elem0.loc5_38.6: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element0 // CHECK:STDOUT: %.loc5_38.9: %i32 = bind_value %tuple.elem0.loc5_38.6 -// CHECK:STDOUT: %tuple.elem1.loc5_38.4: ref %tuple.type.7 = tuple_access file.%b.var, element1 +// CHECK:STDOUT: %tuple.elem1.loc5_38.4: ref %tuple.type.e07 = tuple_access file.%b.var, element1 // CHECK:STDOUT: %tuple.elem0.loc5_38.7: ref %i32 = tuple_access %tuple.elem1.loc5_38.4, element0 // CHECK:STDOUT: %.loc5_38.10: init %i32 = initialize_from %.loc5_38.9 to %tuple.elem0.loc5_38.7 // CHECK:STDOUT: %tuple.elem1.loc5_38.5: ref %i32 = tuple_access %tuple.elem1.loc5_38.3, element1 // CHECK:STDOUT: %.loc5_38.11: %i32 = bind_value %tuple.elem1.loc5_38.5 // CHECK:STDOUT: %tuple.elem1.loc5_38.6: ref %i32 = tuple_access %tuple.elem1.loc5_38.4, element1 // CHECK:STDOUT: %.loc5_38.12: init %i32 = initialize_from %.loc5_38.11 to %tuple.elem1.loc5_38.6 -// CHECK:STDOUT: %.loc5_38.13: init %tuple.type.7 = tuple_init (%.loc5_38.10, %.loc5_38.12) to %tuple.elem1.loc5_38.4 -// CHECK:STDOUT: %.loc5_38.14: init %tuple.type.7 = converted %tuple.elem1.loc5_38.3, %.loc5_38.13 -// CHECK:STDOUT: %.loc5_38.15: init %tuple.type.8 = tuple_init (%.loc5_38.8, %.loc5_38.14) to file.%b.var -// CHECK:STDOUT: %.loc5_43: init %tuple.type.8 = converted %b_ref.ref, %.loc5_38.15 +// CHECK:STDOUT: %.loc5_38.13: init %tuple.type.e07 = tuple_init (%.loc5_38.10, %.loc5_38.12) to %tuple.elem1.loc5_38.4 +// CHECK:STDOUT: %.loc5_38.14: init %tuple.type.e07 = converted %tuple.elem1.loc5_38.3, %.loc5_38.13 +// CHECK:STDOUT: %.loc5_38.15: init %tuple.type.fce = tuple_init (%.loc5_38.8, %.loc5_38.14) to file.%b.var +// CHECK:STDOUT: %.loc5_43: init %tuple.type.fce = converted %b_ref.ref, %.loc5_38.15 // CHECK:STDOUT: assign file.%b.var, %.loc5_43 -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc6: ref %C.2 = splice_block file.%c.var {} -// CHECK:STDOUT: %F.call: init %C.2 = call %F.ref() to %.loc6 +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.0dc [template = constants.%F] +// CHECK:STDOUT: %.loc6: ref %C.fd9 = splice_block file.%c.var {} +// CHECK:STDOUT: %F.call: init %C.fd9 = call %F.ref() to %.loc6 // CHECK:STDOUT: assign file.%c.var, %F.call // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -399,37 +399,37 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic] -// CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %tuple.type.e07: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple: %tuple.type.1 = tuple_value (%int_1.2, %int_2.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%tuple) [template] +// CHECK:STDOUT: %int_2.ed9: %i32 = int_value 2 [template] +// CHECK:STDOUT: %int_1.059: %i32 = int_value 1 [template] +// CHECK:STDOUT: %tuple: %tuple.type.e07 = tuple_value (%int_1.059, %int_2.ed9) [template] +// CHECK:STDOUT: %C.fd9: type = class_type @C, @C(%tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, a_ref, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, b_ref, unloaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.b53 = import_ref Implicit//default, a_ref, unloaded +// CHECK:STDOUT: %import_ref.a35 = import_ref Implicit//default, b_ref, unloaded +// CHECK:STDOUT: %import_ref.c9b: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.0dc: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.253 = import_ref Implicit//default, inst1052 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.2e0 = import_ref Implicit//default, inst1052 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.b53 +// CHECK:STDOUT: .b_ref = imports.%import_ref.a35 +// CHECK:STDOUT: .C = imports.%import_ref.c9b +// CHECK:STDOUT: .F = imports.%import_ref.0dc // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .c_bad = %c_bad // CHECK:STDOUT: } @@ -440,26 +440,26 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %c_bad: ref = bind_name c_bad, %c_bad.var // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.1) [from "implicit.carbon"] { -// CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] +// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.e07) [from "implicit.carbon"] { +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.253 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.252 +// CHECK:STDOUT: .Self = imports.%import_ref.2e0 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.2 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.fd9 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc12: ref %C.2 = temporary_storage -// CHECK:STDOUT: %F.call: init %C.2 = call %F.ref() to %.loc12 +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.0dc [template = constants.%F] +// CHECK:STDOUT: %.loc12: ref %C.fd9 = temporary_storage +// CHECK:STDOUT: %F.call: init %C.fd9 = call %F.ref() to %.loc12 // CHECK:STDOUT: assign file.%c_bad.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -484,73 +484,73 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %empty_struct_type [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic] -// CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic] -// CHECK:STDOUT: %int_3.2: %i32 = int_value 3 [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.1 = tuple_value (%int_3.2, %int_4.2) [template] -// CHECK:STDOUT: %C.2: type = class_type @C, @C(%tuple.1) [template] +// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] +// CHECK:STDOUT: %tuple.type.e07: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic] +// CHECK:STDOUT: %int_3.781: %i32 = int_value 3 [template] +// CHECK:STDOUT: %int_4.1ad: %i32 = int_value 4 [template] +// CHECK:STDOUT: %tuple.96b: %tuple.type.e07 = tuple_value (%int_3.781, %int_4.1ad) [template] +// CHECK:STDOUT: %C.586: type = class_type @C, @C(%tuple.96b) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %int_2: %i32 = int_value 2 [template] // CHECK:STDOUT: %int_1: %i32 = int_value 1 [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.1 = tuple_value (%int_1, %int_2) [template] -// CHECK:STDOUT: %C.3: type = class_type @C, @C(%tuple.2) [template] +// CHECK:STDOUT: %tuple.b20: %tuple.type.e07 = tuple_value (%int_1, %int_2) [template] +// CHECK:STDOUT: %C.fd9: type = class_type @C, @C(%tuple.b20) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Implicit//default, a_ref, unloaded -// CHECK:STDOUT: %import_ref.2 = import_ref Implicit//default, b_ref, unloaded -// CHECK:STDOUT: %import_ref.3: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] -// CHECK:STDOUT: %import_ref.4: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.b53 = import_ref Implicit//default, a_ref, unloaded +// CHECK:STDOUT: %import_ref.a35 = import_ref Implicit//default, b_ref, unloaded +// CHECK:STDOUT: %import_ref.c9b: %C.type = import_ref Implicit//default, C, loaded [template = constants.%C.generic] +// CHECK:STDOUT: %import_ref.0dc: %F.type = import_ref Implicit//default, F, loaded [template = constants.%F] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.254 +// CHECK:STDOUT: .ImplicitAs = %import_ref.edd // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.252: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.3] -// CHECK:STDOUT: %import_ref.253 = import_ref Implicit//default, inst1052 [no loc], unloaded +// CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.2e0 = import_ref Implicit//default, inst1052 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .a_ref = imports.%import_ref.1 -// CHECK:STDOUT: .b_ref = imports.%import_ref.2 -// CHECK:STDOUT: .C = imports.%import_ref.3 -// CHECK:STDOUT: .F = imports.%import_ref.4 +// CHECK:STDOUT: .a_ref = imports.%import_ref.b53 +// CHECK:STDOUT: .b_ref = imports.%import_ref.a35 +// CHECK:STDOUT: .C = imports.%import_ref.c9b +// CHECK:STDOUT: .F = imports.%import_ref.0dc // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .c_bad = %c_bad // CHECK:STDOUT: } // CHECK:STDOUT: %Implicit.import = import Implicit // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %c_bad.var: ref %C.2 = var c_bad -// CHECK:STDOUT: %c_bad: ref %C.2 = bind_name c_bad, %c_bad.var +// CHECK:STDOUT: %c_bad.var: ref %C.586 = var c_bad +// CHECK:STDOUT: %c_bad: ref %C.586 = bind_name c_bad, %c_bad.var // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.1) [from "implicit.carbon"] { -// CHECK:STDOUT: %X: %tuple.type.1 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] -// CHECK:STDOUT: %X.patt: %tuple.type.1 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] +// CHECK:STDOUT: generic class @C(constants.%X: %tuple.type.e07) [from "implicit.carbon"] { +// CHECK:STDOUT: %X: %tuple.type.e07 = bind_symbolic_name X, 0 [symbolic = %X (constants.%X)] +// CHECK:STDOUT: %X.patt: %tuple.type.e07 = symbolic_binding_pattern X, 0 [symbolic = %X.patt (constants.%X.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.253 -// CHECK:STDOUT: complete_type_witness = imports.%import_ref.252 +// CHECK:STDOUT: .Self = imports.%import_ref.2e0 +// CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %C.3 [from "implicit.carbon"]; +// CHECK:STDOUT: fn @F() -> %C.fd9 [from "implicit.carbon"]; // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.4 [template = constants.%F] -// CHECK:STDOUT: %.loc10_26: ref %C.3 = temporary_storage -// CHECK:STDOUT: %F.call: init %C.3 = call %F.ref() to %.loc10_26 -// CHECK:STDOUT: %.loc10_27: %C.2 = converted %F.call, [template = ] +// CHECK:STDOUT: %F.ref: %F.type = name_ref F, imports.%import_ref.0dc [template = constants.%F] +// CHECK:STDOUT: %.loc10_26: ref %C.fd9 = temporary_storage +// CHECK:STDOUT: %F.call: init %C.fd9 = call %F.ref() to %.loc10_26 +// CHECK:STDOUT: %.loc10_27: %C.586 = converted %F.call, [template = ] // CHECK:STDOUT: assign file.%c_bad.var, // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -560,16 +560,16 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %X.patt => constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%tuple.1) { -// CHECK:STDOUT: %X => constants.%tuple.1 -// CHECK:STDOUT: %X.patt => constants.%tuple.1 +// CHECK:STDOUT: specific @C(constants.%tuple.96b) { +// CHECK:STDOUT: %X => constants.%tuple.96b +// CHECK:STDOUT: %X.patt => constants.%tuple.96b // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%tuple.2) { -// CHECK:STDOUT: %X => constants.%tuple.2 -// CHECK:STDOUT: %X.patt => constants.%tuple.2 +// CHECK:STDOUT: specific @C(constants.%tuple.b20) { +// CHECK:STDOUT: %X => constants.%tuple.b20 +// CHECK:STDOUT: %X.patt => constants.%tuple.b20 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/nested_tuple.carbon b/toolchain/check/testdata/tuple/nested_tuple.carbon index d466c214e9f4..cc56ac4a0f57 100644 --- a/toolchain/check/testdata/tuple/nested_tuple.carbon +++ b/toolchain/check/testdata/tuple/nested_tuple.carbon @@ -15,34 +15,34 @@ var x: ((i32, i32), i32) = ((12, 76), 6); // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (%tuple.type.3, %i32) [template] -// CHECK:STDOUT: %int_12.1: Core.IntLiteral = int_value 12 [template] -// CHECK:STDOUT: %int_76.1: Core.IntLiteral = int_value 76 [template] -// CHECK:STDOUT: %tuple.type.6: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %int_6.1: Core.IntLiteral = int_value 6 [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%tuple.type.6, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_12.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_12.2: %i32 = int_value 12 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_76.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_76.2: %i32 = int_value 76 [template] -// CHECK:STDOUT: %tuple.1: %tuple.type.3 = tuple_value (%int_12.2, %int_76.2) [template] -// CHECK:STDOUT: %Convert.bound.3: = bound_method %int_6.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.3: = specific_function %Convert.bound.3, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_6.2: %i32 = int_value 6 [template] -// CHECK:STDOUT: %tuple.2: %tuple.type.4 = tuple_value (%tuple.1, %int_6.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.5a7: type = tuple_type (%tuple.type.471, %i32) [template] +// CHECK:STDOUT: %int_12.6a3: Core.IntLiteral = int_value 12 [template] +// CHECK:STDOUT: %int_76.872: Core.IntLiteral = int_value 76 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %int_6.462: Core.IntLiteral = int_value 6 [template] +// CHECK:STDOUT: %tuple.type.acf: type = tuple_type (%tuple.type.f94, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.8aa: = bound_method %int_12.6a3, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.545: = specific_function %Convert.bound.8aa, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_12.43d: %i32 = int_value 12 [template] +// CHECK:STDOUT: %Convert.bound.169: = bound_method %int_76.872, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.5a1: = specific_function %Convert.bound.169, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_76.fed: %i32 = int_value 76 [template] +// CHECK:STDOUT: %tuple.664: %tuple.type.471 = tuple_value (%int_12.43d, %int_76.fed) [template] +// CHECK:STDOUT: %Convert.bound.b1c: = bound_method %int_6.462, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b26: = specific_function %Convert.bound.b1c, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_6.b03: %i32 = int_value 6 [template] +// CHECK:STDOUT: %tuple.1cb: %tuple.type.5a7 = tuple_value (%tuple.664, %int_6.b03) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,43 +54,43 @@ var x: ((i32, i32), i32) = ((12, 76), 6); // CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.4 = var x -// CHECK:STDOUT: %x: ref %tuple.type.4 = bind_name x, %x.var +// CHECK:STDOUT: %x.var: ref %tuple.type.5a7 = var x +// CHECK:STDOUT: %x: ref %tuple.type.5a7 = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.1] -// CHECK:STDOUT: %int_76: Core.IntLiteral = int_value 76 [template = constants.%int_76.1] -// CHECK:STDOUT: %.loc11_36.1: %tuple.type.6 = tuple_literal (%int_12, %int_76) -// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.1] -// CHECK:STDOUT: %.loc11_40.1: %tuple.type.7 = tuple_literal (%.loc11_36.1, %int_6) -// CHECK:STDOUT: %impl.elem0.loc11_36.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_36.1: = bound_method %int_12, %impl.elem0.loc11_36.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_36.1: = specific_function %Convert.bound.loc11_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_36.1: init %i32 = call %Convert.specific_fn.loc11_36.1(%int_12) [template = constants.%int_12.2] -// CHECK:STDOUT: %.loc11_36.2: init %i32 = converted %int_12, %int.convert_checked.loc11_36.1 [template = constants.%int_12.2] -// CHECK:STDOUT: %tuple.elem0.loc11_40: ref %tuple.type.3 = tuple_access file.%x.var, element0 +// CHECK:STDOUT: %int_12: Core.IntLiteral = int_value 12 [template = constants.%int_12.6a3] +// CHECK:STDOUT: %int_76: Core.IntLiteral = int_value 76 [template = constants.%int_76.872] +// CHECK:STDOUT: %.loc11_36.1: %tuple.type.f94 = tuple_literal (%int_12, %int_76) +// CHECK:STDOUT: %int_6: Core.IntLiteral = int_value 6 [template = constants.%int_6.462] +// CHECK:STDOUT: %.loc11_40.1: %tuple.type.acf = tuple_literal (%.loc11_36.1, %int_6) +// CHECK:STDOUT: %impl.elem0.loc11_36.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_36.1: = bound_method %int_12, %impl.elem0.loc11_36.1 [template = constants.%Convert.bound.8aa] +// CHECK:STDOUT: %Convert.specific_fn.loc11_36.1: = specific_function %Convert.bound.loc11_36.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.545] +// CHECK:STDOUT: %int.convert_checked.loc11_36.1: init %i32 = call %Convert.specific_fn.loc11_36.1(%int_12) [template = constants.%int_12.43d] +// CHECK:STDOUT: %.loc11_36.2: init %i32 = converted %int_12, %int.convert_checked.loc11_36.1 [template = constants.%int_12.43d] +// CHECK:STDOUT: %tuple.elem0.loc11_40: ref %tuple.type.471 = tuple_access file.%x.var, element0 // CHECK:STDOUT: %tuple.elem0.loc11_36: ref %i32 = tuple_access %tuple.elem0.loc11_40, element0 -// CHECK:STDOUT: %.loc11_36.3: init %i32 = initialize_from %.loc11_36.2 to %tuple.elem0.loc11_36 [template = constants.%int_12.2] -// CHECK:STDOUT: %impl.elem0.loc11_36.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_36.2: = bound_method %int_76, %impl.elem0.loc11_36.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_36.2: = specific_function %Convert.bound.loc11_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_36.2: init %i32 = call %Convert.specific_fn.loc11_36.2(%int_76) [template = constants.%int_76.2] -// CHECK:STDOUT: %.loc11_36.4: init %i32 = converted %int_76, %int.convert_checked.loc11_36.2 [template = constants.%int_76.2] +// CHECK:STDOUT: %.loc11_36.3: init %i32 = initialize_from %.loc11_36.2 to %tuple.elem0.loc11_36 [template = constants.%int_12.43d] +// CHECK:STDOUT: %impl.elem0.loc11_36.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_36.2: = bound_method %int_76, %impl.elem0.loc11_36.2 [template = constants.%Convert.bound.169] +// CHECK:STDOUT: %Convert.specific_fn.loc11_36.2: = specific_function %Convert.bound.loc11_36.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.5a1] +// CHECK:STDOUT: %int.convert_checked.loc11_36.2: init %i32 = call %Convert.specific_fn.loc11_36.2(%int_76) [template = constants.%int_76.fed] +// CHECK:STDOUT: %.loc11_36.4: init %i32 = converted %int_76, %int.convert_checked.loc11_36.2 [template = constants.%int_76.fed] // CHECK:STDOUT: %tuple.elem1.loc11_36: ref %i32 = tuple_access %tuple.elem0.loc11_40, element1 -// CHECK:STDOUT: %.loc11_36.5: init %i32 = initialize_from %.loc11_36.4 to %tuple.elem1.loc11_36 [template = constants.%int_76.2] -// CHECK:STDOUT: %.loc11_36.6: init %tuple.type.3 = tuple_init (%.loc11_36.3, %.loc11_36.5) to %tuple.elem0.loc11_40 [template = constants.%tuple.1] -// CHECK:STDOUT: %.loc11_40.2: init %tuple.type.3 = converted %.loc11_36.1, %.loc11_36.6 [template = constants.%tuple.1] -// CHECK:STDOUT: %impl.elem0.loc11_40: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_40: = bound_method %int_6, %impl.elem0.loc11_40 [template = constants.%Convert.bound.3] -// CHECK:STDOUT: %Convert.specific_fn.loc11_40: = specific_function %Convert.bound.loc11_40, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.3] -// CHECK:STDOUT: %int.convert_checked.loc11_40: init %i32 = call %Convert.specific_fn.loc11_40(%int_6) [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_40.3: init %i32 = converted %int_6, %int.convert_checked.loc11_40 [template = constants.%int_6.2] +// CHECK:STDOUT: %.loc11_36.5: init %i32 = initialize_from %.loc11_36.4 to %tuple.elem1.loc11_36 [template = constants.%int_76.fed] +// CHECK:STDOUT: %.loc11_36.6: init %tuple.type.471 = tuple_init (%.loc11_36.3, %.loc11_36.5) to %tuple.elem0.loc11_40 [template = constants.%tuple.664] +// CHECK:STDOUT: %.loc11_40.2: init %tuple.type.471 = converted %.loc11_36.1, %.loc11_36.6 [template = constants.%tuple.664] +// CHECK:STDOUT: %impl.elem0.loc11_40: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_40: = bound_method %int_6, %impl.elem0.loc11_40 [template = constants.%Convert.bound.b1c] +// CHECK:STDOUT: %Convert.specific_fn.loc11_40: = specific_function %Convert.bound.loc11_40, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b26] +// CHECK:STDOUT: %int.convert_checked.loc11_40: init %i32 = call %Convert.specific_fn.loc11_40(%int_6) [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_40.3: init %i32 = converted %int_6, %int.convert_checked.loc11_40 [template = constants.%int_6.b03] // CHECK:STDOUT: %tuple.elem1.loc11_40: ref %i32 = tuple_access file.%x.var, element1 -// CHECK:STDOUT: %.loc11_40.4: init %i32 = initialize_from %.loc11_40.3 to %tuple.elem1.loc11_40 [template = constants.%int_6.2] -// CHECK:STDOUT: %.loc11_40.5: init %tuple.type.4 = tuple_init (%.loc11_40.2, %.loc11_40.4) to file.%x.var [template = constants.%tuple.2] -// CHECK:STDOUT: %.loc11_41: init %tuple.type.4 = converted %.loc11_40.1, %.loc11_40.5 [template = constants.%tuple.2] +// CHECK:STDOUT: %.loc11_40.4: init %i32 = initialize_from %.loc11_40.3 to %tuple.elem1.loc11_40 [template = constants.%int_6.b03] +// CHECK:STDOUT: %.loc11_40.5: init %tuple.type.5a7 = tuple_init (%.loc11_40.2, %.loc11_40.4) to file.%x.var [template = constants.%tuple.1cb] +// CHECK:STDOUT: %.loc11_41: init %tuple.type.5a7 = converted %.loc11_40.1, %.loc11_40.5 [template = constants.%tuple.1cb] // CHECK:STDOUT: assign file.%x.var, %.loc11_41 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon b/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon index 04303b3a4279..f3af25b84716 100644 --- a/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon +++ b/toolchain/check/testdata/tuple/nested_tuple_in_place.carbon @@ -23,35 +23,35 @@ fn H() { // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.1: type = tuple_type (type, type, type) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32, %i32) [template] +// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [template] +// CHECK:STDOUT: %tuple.type.dc6: type = tuple_type (%i32, %i32, %i32) [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.4: type = tuple_type (%tuple.type.2, %tuple.type.2) [template] +// CHECK:STDOUT: %tuple.type.1aa: type = tuple_type (%tuple.type.dc6, %tuple.type.dc6) [template] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %tuple.type.7: type = tuple_type (%i32, %tuple.type.2, %i32) [template] -// CHECK:STDOUT: %int_1.1: Core.IntLiteral = int_value 1 [template] -// CHECK:STDOUT: %int_2.1: Core.IntLiteral = int_value 2 [template] -// CHECK:STDOUT: %tuple.type.9: type = tuple_type (Core.IntLiteral, %tuple.type.2, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_1.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_1.2: %i32 = int_value 1 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_2.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_2.2: %i32 = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.e6f: type = tuple_type (%i32, %tuple.type.dc6, %i32) [template] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] +// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template] +// CHECK:STDOUT: %tuple.type.3b6: type = tuple_type (Core.IntLiteral, %tuple.type.dc6, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.afd: = bound_method %int_1.5b8, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.b73: = specific_function %Convert.bound.afd, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_1.c60: %i32 = int_value 1 [template] +// CHECK:STDOUT: %Convert.bound.f0b: = bound_method %int_2.ecc, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.20e: = specific_function %Convert.bound.f0b, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_2.166: %i32 = int_value 2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -66,8 +66,8 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] { -// CHECK:STDOUT: %return.patt: %tuple.type.2 = return_slot_pattern -// CHECK:STDOUT: %return.param_patt: %tuple.type.2 = out_param_pattern %return.patt, runtime_param0 +// CHECK:STDOUT: %return.patt: %tuple.type.dc6 = return_slot_pattern +// CHECK:STDOUT: %return.param_patt: %tuple.type.dc6 = out_param_pattern %return.patt, runtime_param0 // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32.loc11_12: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_12: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] @@ -75,60 +75,60 @@ fn H() { // CHECK:STDOUT: %i32.loc11_17: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] // CHECK:STDOUT: %int_32.loc11_22: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc11_22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc11_25.1: %tuple.type.1 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) -// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.2 [template = constants.%tuple.type.2] -// CHECK:STDOUT: %return.param: ref %tuple.type.2 = out_param runtime_param0 -// CHECK:STDOUT: %return: ref %tuple.type.2 = return_slot %return.param +// CHECK:STDOUT: %.loc11_25.1: %tuple.type.ff9 = tuple_literal (%i32.loc11_12, %i32.loc11_17, %i32.loc11_22) +// CHECK:STDOUT: %.loc11_25.2: type = converted %.loc11_25.1, constants.%tuple.type.dc6 [template = constants.%tuple.type.dc6] +// CHECK:STDOUT: %return.param: ref %tuple.type.dc6 = out_param runtime_param0 +// CHECK:STDOUT: %return: ref %tuple.type.dc6 = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %tuple.type.2; +// CHECK:STDOUT: fn @F() -> %tuple.type.dc6; // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %tuple.type.4 = var v -// CHECK:STDOUT: %v: ref %tuple.type.4 = bind_name v, %v.var +// CHECK:STDOUT: %v.var: ref %tuple.type.1aa = var v +// CHECK:STDOUT: %v: ref %tuple.type.1aa = bind_name v, %v.var // CHECK:STDOUT: %F.ref.loc14_48: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %tuple.elem0: ref %tuple.type.2 = tuple_access %v.var, element0 -// CHECK:STDOUT: %F.call.loc14_50: init %tuple.type.2 = call %F.ref.loc14_48() to %tuple.elem0 +// CHECK:STDOUT: %tuple.elem0: ref %tuple.type.dc6 = tuple_access %v.var, element0 +// CHECK:STDOUT: %F.call.loc14_50: init %tuple.type.dc6 = call %F.ref.loc14_48() to %tuple.elem0 // CHECK:STDOUT: %F.ref.loc14_53: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.2 = tuple_access %v.var, element1 -// CHECK:STDOUT: %F.call.loc14_55: init %tuple.type.2 = call %F.ref.loc14_53() to %tuple.elem1 -// CHECK:STDOUT: %.loc14_56.1: %tuple.type.4 = tuple_literal (%F.call.loc14_50, %F.call.loc14_55) -// CHECK:STDOUT: %.loc14_56.2: init %tuple.type.4 = tuple_init (%F.call.loc14_50, %F.call.loc14_55) to %v.var -// CHECK:STDOUT: %.loc14_57: init %tuple.type.4 = converted %.loc14_56.1, %.loc14_56.2 +// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.dc6 = tuple_access %v.var, element1 +// CHECK:STDOUT: %F.call.loc14_55: init %tuple.type.dc6 = call %F.ref.loc14_53() to %tuple.elem1 +// CHECK:STDOUT: %.loc14_56.1: %tuple.type.1aa = tuple_literal (%F.call.loc14_50, %F.call.loc14_55) +// CHECK:STDOUT: %.loc14_56.2: init %tuple.type.1aa = tuple_init (%F.call.loc14_50, %F.call.loc14_55) to %v.var +// CHECK:STDOUT: %.loc14_57: init %tuple.type.1aa = converted %.loc14_56.1, %.loc14_56.2 // CHECK:STDOUT: assign %v.var, %.loc14_57 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %v.var: ref %tuple.type.7 = var v -// CHECK:STDOUT: %v: ref %tuple.type.7 = bind_name v, %v.var -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.1] +// CHECK:STDOUT: %v.var: ref %tuple.type.e6f = var v +// CHECK:STDOUT: %v: ref %tuple.type.e6f = bind_name v, %v.var +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1.5b8] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F] -// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.2 = tuple_access %v.var, element1 -// CHECK:STDOUT: %F.call: init %tuple.type.2 = call %F.ref() to %tuple.elem1 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.1] -// CHECK:STDOUT: %.loc18_50.1: %tuple.type.9 = tuple_literal (%int_1, %F.call, %int_2) -// CHECK:STDOUT: %impl.elem0.loc18_50.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_50.1: = bound_method %int_1, %impl.elem0.loc18_50.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc18_50.1: = specific_function %Convert.bound.loc18_50.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc18_50.1: init %i32 = call %Convert.specific_fn.loc18_50.1(%int_1) [template = constants.%int_1.2] -// CHECK:STDOUT: %.loc18_50.2: init %i32 = converted %int_1, %int.convert_checked.loc18_50.1 [template = constants.%int_1.2] +// CHECK:STDOUT: %tuple.elem1: ref %tuple.type.dc6 = tuple_access %v.var, element1 +// CHECK:STDOUT: %F.call: init %tuple.type.dc6 = call %F.ref() to %tuple.elem1 +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc] +// CHECK:STDOUT: %.loc18_50.1: %tuple.type.3b6 = tuple_literal (%int_1, %F.call, %int_2) +// CHECK:STDOUT: %impl.elem0.loc18_50.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_50.1: = bound_method %int_1, %impl.elem0.loc18_50.1 [template = constants.%Convert.bound.afd] +// CHECK:STDOUT: %Convert.specific_fn.loc18_50.1: = specific_function %Convert.bound.loc18_50.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.b73] +// CHECK:STDOUT: %int.convert_checked.loc18_50.1: init %i32 = call %Convert.specific_fn.loc18_50.1(%int_1) [template = constants.%int_1.c60] +// CHECK:STDOUT: %.loc18_50.2: init %i32 = converted %int_1, %int.convert_checked.loc18_50.1 [template = constants.%int_1.c60] // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %v.var, element0 -// CHECK:STDOUT: %.loc18_50.3: init %i32 = initialize_from %.loc18_50.2 to %tuple.elem0 [template = constants.%int_1.2] -// CHECK:STDOUT: %impl.elem0.loc18_50.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc18_50.2: = bound_method %int_2, %impl.elem0.loc18_50.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc18_50.2: = specific_function %Convert.bound.loc18_50.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc18_50.2: init %i32 = call %Convert.specific_fn.loc18_50.2(%int_2) [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_50.4: init %i32 = converted %int_2, %int.convert_checked.loc18_50.2 [template = constants.%int_2.2] +// CHECK:STDOUT: %.loc18_50.3: init %i32 = initialize_from %.loc18_50.2 to %tuple.elem0 [template = constants.%int_1.c60] +// CHECK:STDOUT: %impl.elem0.loc18_50.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc18_50.2: = bound_method %int_2, %impl.elem0.loc18_50.2 [template = constants.%Convert.bound.f0b] +// CHECK:STDOUT: %Convert.specific_fn.loc18_50.2: = specific_function %Convert.bound.loc18_50.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.20e] +// CHECK:STDOUT: %int.convert_checked.loc18_50.2: init %i32 = call %Convert.specific_fn.loc18_50.2(%int_2) [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_50.4: init %i32 = converted %int_2, %int.convert_checked.loc18_50.2 [template = constants.%int_2.166] // CHECK:STDOUT: %tuple.elem2: ref %i32 = tuple_access %v.var, element2 -// CHECK:STDOUT: %.loc18_50.5: init %i32 = initialize_from %.loc18_50.4 to %tuple.elem2 [template = constants.%int_2.2] -// CHECK:STDOUT: %.loc18_50.6: init %tuple.type.7 = tuple_init (%.loc18_50.3, %F.call, %.loc18_50.5) to %v.var -// CHECK:STDOUT: %.loc18_51: init %tuple.type.7 = converted %.loc18_50.1, %.loc18_50.6 +// CHECK:STDOUT: %.loc18_50.5: init %i32 = initialize_from %.loc18_50.4 to %tuple.elem2 [template = constants.%int_2.166] +// CHECK:STDOUT: %.loc18_50.6: init %tuple.type.e6f = tuple_init (%.loc18_50.3, %F.call, %.loc18_50.5) to %v.var +// CHECK:STDOUT: %.loc18_51: init %tuple.type.e6f = converted %.loc18_50.1, %.loc18_50.6 // CHECK:STDOUT: assign %v.var, %.loc18_51 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/one_element.carbon b/toolchain/check/testdata/tuple/one_element.carbon index 3b2c1509dc4c..2fe14a83ca21 100644 --- a/toolchain/check/testdata/tuple/one_element.carbon +++ b/toolchain/check/testdata/tuple/one_element.carbon @@ -16,23 +16,23 @@ var y: (i32,) = x; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32) [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.1, %Convert.10 [template] +// CHECK:STDOUT: %tuple.type.0e4: type = tuple_type (%i32) [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %tuple.type.985: type = tuple_type (Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.925 [template] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_4.2) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %tuple: %tuple.type.0e4 = tuple_value (%int_4.2ec) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -45,29 +45,29 @@ var y: (i32,) = x; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %tuple.type.2 = var y -// CHECK:STDOUT: %y: ref %tuple.type.2 = bind_name y, %y.var +// CHECK:STDOUT: %x.var: ref %tuple.type.0e4 = var x +// CHECK:STDOUT: %x: ref %tuple.type.0e4 = bind_name x, %x.var +// CHECK:STDOUT: %y.var: ref %tuple.type.0e4 = var y +// CHECK:STDOUT: %y: ref %tuple.type.0e4 = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %.loc11_20.1: %tuple.type.3 = tuple_literal (%int_4) -// CHECK:STDOUT: %impl.elem0: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] +// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %.loc11_20.1: %tuple.type.985 = tuple_literal (%int_4) +// CHECK:STDOUT: %impl.elem0: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] // CHECK:STDOUT: %Convert.bound: = bound_method %int_4, %impl.elem0 [template = constants.%Convert.bound] // CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.bound, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_20.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_20.3: init %tuple.type.2 = tuple_init (%.loc11_20.2) to file.%x.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_21: init %tuple.type.2 = converted %.loc11_20.1, %.loc11_20.3 [template = constants.%tuple] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %Convert.specific_fn(%int_4) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_20.2: init %i32 = converted %int_4, %int.convert_checked [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_20.3: init %tuple.type.0e4 = tuple_init (%.loc11_20.2) to file.%x.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_21: init %tuple.type.0e4 = converted %.loc11_20.1, %.loc11_20.3 [template = constants.%tuple] // CHECK:STDOUT: assign file.%x.var, %.loc11_21 -// CHECK:STDOUT: %x.ref: ref %tuple.type.2 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %tuple.type.0e4 = name_ref x, file.%x // CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %x.ref, element0 // CHECK:STDOUT: %.loc12_17.1: %i32 = bind_value %tuple.elem0 -// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.2 = tuple_init (%.loc12_17.1) to file.%y.var -// CHECK:STDOUT: %.loc12_18: init %tuple.type.2 = converted %x.ref, %.loc12_17.2 +// CHECK:STDOUT: %.loc12_17.2: init %tuple.type.0e4 = tuple_init (%.loc12_17.1) to file.%y.var +// CHECK:STDOUT: %.loc12_18: init %tuple.type.0e4 = converted %x.ref, %.loc12_17.2 // CHECK:STDOUT: assign file.%y.var, %.loc12_18 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/tuple/two_elements.carbon b/toolchain/check/testdata/tuple/two_elements.carbon index 3064805678b6..36c67b91b5b4 100644 --- a/toolchain/check/testdata/tuple/two_elements.carbon +++ b/toolchain/check/testdata/tuple/two_elements.carbon @@ -19,27 +19,27 @@ var y: (i32, i32) = x; // CHECK:STDOUT: constants { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %tuple.type.2: type = tuple_type (%i32, %i32) [template] -// CHECK:STDOUT: %int_4.1: Core.IntLiteral = int_value 4 [template] -// CHECK:STDOUT: %int_102.1: Core.IntLiteral = int_value 102 [template] -// CHECK:STDOUT: %tuple.type.3: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] -// CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] -// CHECK:STDOUT: %impl_witness.19: = impl_witness (imports.%import_ref.14), @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.type.10: type = fn_type @Convert.2, @impl.1(%int_32) [template] -// CHECK:STDOUT: %Convert.10: %Convert.type.10 = struct_value () [template] -// CHECK:STDOUT: %Convert.bound.1: = bound_method %int_4.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.1: = specific_function %Convert.bound.1, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_4.2: %i32 = int_value 4 [template] -// CHECK:STDOUT: %Convert.bound.2: = bound_method %int_102.1, %Convert.10 [template] -// CHECK:STDOUT: %Convert.specific_fn.2: = specific_function %Convert.bound.2, @Convert.2(%int_32) [template] -// CHECK:STDOUT: %int_102.2: %i32 = int_value 102 [template] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%int_4.2, %int_102.2) [template] +// CHECK:STDOUT: %tuple.type.471: type = tuple_type (%i32, %i32) [template] +// CHECK:STDOUT: %int_4.0c1: Core.IntLiteral = int_value 4 [template] +// CHECK:STDOUT: %int_102.b54: Core.IntLiteral = int_value 102 [template] +// CHECK:STDOUT: %tuple.type.f94: type = tuple_type (Core.IntLiteral, Core.IntLiteral) [template] +// CHECK:STDOUT: %Convert.type.cd1: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] +// CHECK:STDOUT: %impl_witness.5b0: = impl_witness (imports.%import_ref.723), @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.type.466: type = fn_type @Convert.2, @impl.1(%int_32) [template] +// CHECK:STDOUT: %Convert.925: %Convert.type.466 = struct_value () [template] +// CHECK:STDOUT: %Convert.bound.fe5: = bound_method %int_4.0c1, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.c6f: = specific_function %Convert.bound.fe5, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_4.2ec: %i32 = int_value 4 [template] +// CHECK:STDOUT: %Convert.bound.002: = bound_method %int_102.b54, %Convert.925 [template] +// CHECK:STDOUT: %Convert.specific_fn.9e2: = specific_function %Convert.bound.002, @Convert.2(%int_32) [template] +// CHECK:STDOUT: %int_102.54f: %i32 = int_value 102 [template] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%int_4.2ec, %int_102.54f) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .ImplicitAs = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -54,55 +54,55 @@ var y: (i32, i32) = x; // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %x.var: ref %tuple.type.2 = var x -// CHECK:STDOUT: %x: ref %tuple.type.2 = bind_name x, %x.var -// CHECK:STDOUT: %y.var: ref %tuple.type.2 = var y -// CHECK:STDOUT: %y: ref %tuple.type.2 = bind_name y, %y.var +// CHECK:STDOUT: %x.var: ref %tuple.type.471 = var x +// CHECK:STDOUT: %x: ref %tuple.type.471 = bind_name x, %x.var +// CHECK:STDOUT: %y.var: ref %tuple.type.471 = var y +// CHECK:STDOUT: %y: ref %tuple.type.471 = bind_name y, %y.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_4.loc11: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %int_102.loc11: Core.IntLiteral = int_value 102 [template = constants.%int_102.1] -// CHECK:STDOUT: %.loc11_28.1: %tuple.type.3 = tuple_literal (%int_4.loc11, %int_102.loc11) -// CHECK:STDOUT: %impl.elem0.loc11_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_28.1: = bound_method %int_4.loc11, %impl.elem0.loc11_28.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc11_28.1: = specific_function %Convert.bound.loc11_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc11_28.1: init %i32 = call %Convert.specific_fn.loc11_28.1(%int_4.loc11) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_28.2: %i32 = value_of_initializer %int.convert_checked.loc11_28.1 [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc11_28.3: %i32 = converted %int_4.loc11, %.loc11_28.2 [template = constants.%int_4.2] -// CHECK:STDOUT: %impl.elem0.loc11_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc11_28.2: = bound_method %int_102.loc11, %impl.elem0.loc11_28.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc11_28.2: = specific_function %Convert.bound.loc11_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc11_28.2: init %i32 = call %Convert.specific_fn.loc11_28.2(%int_102.loc11) [template = constants.%int_102.2] -// CHECK:STDOUT: %.loc11_28.4: %i32 = value_of_initializer %int.convert_checked.loc11_28.2 [template = constants.%int_102.2] -// CHECK:STDOUT: %.loc11_28.5: %i32 = converted %int_102.loc11, %.loc11_28.4 [template = constants.%int_102.2] -// CHECK:STDOUT: %tuple: %tuple.type.2 = tuple_value (%.loc11_28.3, %.loc11_28.5) [template = constants.%tuple] -// CHECK:STDOUT: %.loc11_29: %tuple.type.2 = converted %.loc11_28.1, %tuple [template = constants.%tuple] -// CHECK:STDOUT: %v: %tuple.type.2 = bind_name v, %.loc11_29 -// CHECK:STDOUT: %v.ref: %tuple.type.2 = name_ref v, %v -// CHECK:STDOUT: %w: %tuple.type.2 = bind_name w, %v.ref -// CHECK:STDOUT: %int_4.loc14: Core.IntLiteral = int_value 4 [template = constants.%int_4.1] -// CHECK:STDOUT: %int_102.loc14: Core.IntLiteral = int_value 102 [template = constants.%int_102.1] -// CHECK:STDOUT: %.loc14_28.1: %tuple.type.3 = tuple_literal (%int_4.loc14, %int_102.loc14) -// CHECK:STDOUT: %impl.elem0.loc14_28.1: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_28.1: = bound_method %int_4.loc14, %impl.elem0.loc14_28.1 [template = constants.%Convert.bound.1] -// CHECK:STDOUT: %Convert.specific_fn.loc14_28.1: = specific_function %Convert.bound.loc14_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.1] -// CHECK:STDOUT: %int.convert_checked.loc14_28.1: init %i32 = call %Convert.specific_fn.loc14_28.1(%int_4.loc14) [template = constants.%int_4.2] -// CHECK:STDOUT: %.loc14_28.2: init %i32 = converted %int_4.loc14, %int.convert_checked.loc14_28.1 [template = constants.%int_4.2] +// CHECK:STDOUT: %int_4.loc11: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %int_102.loc11: Core.IntLiteral = int_value 102 [template = constants.%int_102.b54] +// CHECK:STDOUT: %.loc11_28.1: %tuple.type.f94 = tuple_literal (%int_4.loc11, %int_102.loc11) +// CHECK:STDOUT: %impl.elem0.loc11_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_28.1: = bound_method %int_4.loc11, %impl.elem0.loc11_28.1 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc11_28.1: = specific_function %Convert.bound.loc11_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc11_28.1: init %i32 = call %Convert.specific_fn.loc11_28.1(%int_4.loc11) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_28.2: %i32 = value_of_initializer %int.convert_checked.loc11_28.1 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc11_28.3: %i32 = converted %int_4.loc11, %.loc11_28.2 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %impl.elem0.loc11_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc11_28.2: = bound_method %int_102.loc11, %impl.elem0.loc11_28.2 [template = constants.%Convert.bound.002] +// CHECK:STDOUT: %Convert.specific_fn.loc11_28.2: = specific_function %Convert.bound.loc11_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.9e2] +// CHECK:STDOUT: %int.convert_checked.loc11_28.2: init %i32 = call %Convert.specific_fn.loc11_28.2(%int_102.loc11) [template = constants.%int_102.54f] +// CHECK:STDOUT: %.loc11_28.4: %i32 = value_of_initializer %int.convert_checked.loc11_28.2 [template = constants.%int_102.54f] +// CHECK:STDOUT: %.loc11_28.5: %i32 = converted %int_102.loc11, %.loc11_28.4 [template = constants.%int_102.54f] +// CHECK:STDOUT: %tuple: %tuple.type.471 = tuple_value (%.loc11_28.3, %.loc11_28.5) [template = constants.%tuple] +// CHECK:STDOUT: %.loc11_29: %tuple.type.471 = converted %.loc11_28.1, %tuple [template = constants.%tuple] +// CHECK:STDOUT: %v: %tuple.type.471 = bind_name v, %.loc11_29 +// CHECK:STDOUT: %v.ref: %tuple.type.471 = name_ref v, %v +// CHECK:STDOUT: %w: %tuple.type.471 = bind_name w, %v.ref +// CHECK:STDOUT: %int_4.loc14: Core.IntLiteral = int_value 4 [template = constants.%int_4.0c1] +// CHECK:STDOUT: %int_102.loc14: Core.IntLiteral = int_value 102 [template = constants.%int_102.b54] +// CHECK:STDOUT: %.loc14_28.1: %tuple.type.f94 = tuple_literal (%int_4.loc14, %int_102.loc14) +// CHECK:STDOUT: %impl.elem0.loc14_28.1: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_28.1: = bound_method %int_4.loc14, %impl.elem0.loc14_28.1 [template = constants.%Convert.bound.fe5] +// CHECK:STDOUT: %Convert.specific_fn.loc14_28.1: = specific_function %Convert.bound.loc14_28.1, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.c6f] +// CHECK:STDOUT: %int.convert_checked.loc14_28.1: init %i32 = call %Convert.specific_fn.loc14_28.1(%int_4.loc14) [template = constants.%int_4.2ec] +// CHECK:STDOUT: %.loc14_28.2: init %i32 = converted %int_4.loc14, %int.convert_checked.loc14_28.1 [template = constants.%int_4.2ec] // CHECK:STDOUT: %tuple.elem0.loc14: ref %i32 = tuple_access file.%x.var, element0 -// CHECK:STDOUT: %.loc14_28.3: init %i32 = initialize_from %.loc14_28.2 to %tuple.elem0.loc14 [template = constants.%int_4.2] -// CHECK:STDOUT: %impl.elem0.loc14_28.2: %Convert.type.2 = impl_witness_access constants.%impl_witness.19, element0 [template = constants.%Convert.10] -// CHECK:STDOUT: %Convert.bound.loc14_28.2: = bound_method %int_102.loc14, %impl.elem0.loc14_28.2 [template = constants.%Convert.bound.2] -// CHECK:STDOUT: %Convert.specific_fn.loc14_28.2: = specific_function %Convert.bound.loc14_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.2] -// CHECK:STDOUT: %int.convert_checked.loc14_28.2: init %i32 = call %Convert.specific_fn.loc14_28.2(%int_102.loc14) [template = constants.%int_102.2] -// CHECK:STDOUT: %.loc14_28.4: init %i32 = converted %int_102.loc14, %int.convert_checked.loc14_28.2 [template = constants.%int_102.2] +// CHECK:STDOUT: %.loc14_28.3: init %i32 = initialize_from %.loc14_28.2 to %tuple.elem0.loc14 [template = constants.%int_4.2ec] +// CHECK:STDOUT: %impl.elem0.loc14_28.2: %Convert.type.cd1 = impl_witness_access constants.%impl_witness.5b0, element0 [template = constants.%Convert.925] +// CHECK:STDOUT: %Convert.bound.loc14_28.2: = bound_method %int_102.loc14, %impl.elem0.loc14_28.2 [template = constants.%Convert.bound.002] +// CHECK:STDOUT: %Convert.specific_fn.loc14_28.2: = specific_function %Convert.bound.loc14_28.2, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn.9e2] +// CHECK:STDOUT: %int.convert_checked.loc14_28.2: init %i32 = call %Convert.specific_fn.loc14_28.2(%int_102.loc14) [template = constants.%int_102.54f] +// CHECK:STDOUT: %.loc14_28.4: init %i32 = converted %int_102.loc14, %int.convert_checked.loc14_28.2 [template = constants.%int_102.54f] // CHECK:STDOUT: %tuple.elem1.loc14: ref %i32 = tuple_access file.%x.var, element1 -// CHECK:STDOUT: %.loc14_28.5: init %i32 = initialize_from %.loc14_28.4 to %tuple.elem1.loc14 [template = constants.%int_102.2] -// CHECK:STDOUT: %.loc14_28.6: init %tuple.type.2 = tuple_init (%.loc14_28.3, %.loc14_28.5) to file.%x.var [template = constants.%tuple] -// CHECK:STDOUT: %.loc14_29: init %tuple.type.2 = converted %.loc14_28.1, %.loc14_28.6 [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_28.5: init %i32 = initialize_from %.loc14_28.4 to %tuple.elem1.loc14 [template = constants.%int_102.54f] +// CHECK:STDOUT: %.loc14_28.6: init %tuple.type.471 = tuple_init (%.loc14_28.3, %.loc14_28.5) to file.%x.var [template = constants.%tuple] +// CHECK:STDOUT: %.loc14_29: init %tuple.type.471 = converted %.loc14_28.1, %.loc14_28.6 [template = constants.%tuple] // CHECK:STDOUT: assign file.%x.var, %.loc14_29 -// CHECK:STDOUT: %x.ref: ref %tuple.type.2 = name_ref x, file.%x +// CHECK:STDOUT: %x.ref: ref %tuple.type.471 = name_ref x, file.%x // CHECK:STDOUT: %tuple.elem0.loc15_21.1: ref %i32 = tuple_access %x.ref, element0 // CHECK:STDOUT: %.loc15_21.1: %i32 = bind_value %tuple.elem0.loc15_21.1 // CHECK:STDOUT: %tuple.elem0.loc15_21.2: ref %i32 = tuple_access file.%y.var, element0 @@ -111,8 +111,8 @@ var y: (i32, i32) = x; // CHECK:STDOUT: %.loc15_21.3: %i32 = bind_value %tuple.elem1.loc15_21.1 // CHECK:STDOUT: %tuple.elem1.loc15_21.2: ref %i32 = tuple_access file.%y.var, element1 // CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.3 to %tuple.elem1.loc15_21.2 -// CHECK:STDOUT: %.loc15_21.5: init %tuple.type.2 = tuple_init (%.loc15_21.2, %.loc15_21.4) to file.%y.var -// CHECK:STDOUT: %.loc15_22: init %tuple.type.2 = converted %x.ref, %.loc15_21.5 +// CHECK:STDOUT: %.loc15_21.5: init %tuple.type.471 = tuple_init (%.loc15_21.2, %.loc15_21.4) to file.%y.var +// CHECK:STDOUT: %.loc15_22: init %tuple.type.471 = converted %x.ref, %.loc15_21.5 // CHECK:STDOUT: assign file.%y.var, %.loc15_22 // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/var/fail_storage_is_literal.carbon b/toolchain/check/testdata/var/fail_storage_is_literal.carbon index 4e44271b69f4..2ce08aaf5be1 100644 --- a/toolchain/check/testdata/var/fail_storage_is_literal.carbon +++ b/toolchain/check/testdata/var/fail_storage_is_literal.carbon @@ -28,7 +28,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/where_expr/constraints.carbon b/toolchain/check/testdata/where_expr/constraints.carbon index 046133b6965d..6f10a3cac1e3 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -120,29 +120,29 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %J.type: type = facet_type <@J> [template] -// CHECK:STDOUT: %Self.1: %J.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.f9f: %J.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.2: %I.type = bind_symbolic_name Self, 0 [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, @I.%Member [template] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %assoc_type.579: type = assoc_entity_type %I.type, type [template] +// CHECK:STDOUT: %assoc0: %assoc_type.579 = assoc_entity element0, @I.%Member [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %I.type, %J.type [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, @I.%Second [template] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %assoc_type.4dd: type = assoc_entity_type %I.type, %J.type [template] +// CHECK:STDOUT: %assoc1: %assoc_type.4dd = assoc_entity element1, @I.%Second [template] +// CHECK:STDOUT: %.Self.258: %I.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where TODO> [template] // CHECK:STDOUT: %U: %I_where.type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: %I_where.type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %EqualEqual.type: type = fn_type @EqualEqual [template] // CHECK:STDOUT: %EqualEqual: %EqualEqual.type = struct_value () [template] -// CHECK:STDOUT: %.Self.2: %J.type = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_type.1: type = facet_access_type %.Self.2 [symbolic] +// CHECK:STDOUT: %.Self.968: %J.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_type.78d: type = facet_access_type %.Self.968 [symbolic] // CHECK:STDOUT: %J_where.type: type = facet_type <@J where TODO> [template] // CHECK:STDOUT: %V: %J_where.type = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %V.patt: %J_where.type = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %Impls.type: type = fn_type @Impls [template] // CHECK:STDOUT: %Impls: %Impls.type = struct_value () [template] -// CHECK:STDOUT: %.Self.as_type.2: type = facet_access_type %.Self.1 [symbolic] -// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.1 [symbolic] +// CHECK:STDOUT: %.Self.as_type.541: type = facet_access_type %.Self.258 [symbolic] +// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.258 [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic] // CHECK:STDOUT: %W: %I_where.type = bind_symbolic_name W, 0 [symbolic] // CHECK:STDOUT: %W.patt: %I_where.type = symbolic_binding_pattern W, 0 [symbolic] @@ -176,8 +176,8 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %U.param: %I_where.type = value_param runtime_param // CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.2 [template = constants.%I_where.type] { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.1] +// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.258] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.258] // CHECK:STDOUT: %.loc11_37: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_21.2: type = where_expr %.Self [template = constants.%I_where.type] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc11_37 @@ -192,11 +192,11 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %V.param: %J_where.type = value_param runtime_param // CHECK:STDOUT: %.loc13_16.1: type = splice_block %.loc13_16.2 [template = constants.%J_where.type] { // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic = constants.%.Self.2] -// CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self [symbolic = constants.%.Self.2] +// CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic = constants.%.Self.968] +// CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self [symbolic = constants.%.Self.968] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type.1] -// CHECK:STDOUT: %.loc13_22: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type.1] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type.78d] +// CHECK:STDOUT: %.loc13_22: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type.78d] // CHECK:STDOUT: %.loc13_16.2: type = where_expr %.Self [template = constants.%J_where.type] { // CHECK:STDOUT: requirement_impls %.loc13_22, %I.ref // CHECK:STDOUT: } @@ -210,13 +210,13 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %W.param: %I_where.type = value_param runtime_param // CHECK:STDOUT: %.loc15_14.1: type = splice_block %.loc15_14.2 [template = constants.%I_where.type] { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %.Self.ref.loc15_20: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.1] +// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.258] +// CHECK:STDOUT: %.Self.ref.loc15_20: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.258] // CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type] -// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref.loc15_20 [symbolic = constants.%.Self.as_type.2] -// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref.loc15_20, %.Self.as_type [symbolic = constants.%.Self.as_type.2] -// CHECK:STDOUT: %.Self.ref.loc15_38: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %Member.ref: %assoc_type.1 = name_ref Member, @I.%assoc0 [template = constants.%assoc0] +// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref.loc15_20 [symbolic = constants.%.Self.as_type.541] +// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref.loc15_20, %.Self.as_type [symbolic = constants.%.Self.as_type.541] +// CHECK:STDOUT: %.Self.ref.loc15_38: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.258] +// CHECK:STDOUT: %Member.ref: %assoc_type.579 = name_ref Member, @I.%assoc0 [template = constants.%assoc0] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref.loc15_38 [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %.loc15_50: %empty_tuple.type = tuple_literal () @@ -230,7 +230,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @J { -// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f9f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -238,11 +238,11 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %Member: type = assoc_const_decl Member [template] -// CHECK:STDOUT: %assoc0: %assoc_type.1 = assoc_entity element0, %Member [template = constants.%assoc0] +// CHECK:STDOUT: %assoc0: %assoc_type.579 = assoc_entity element0, %Member [template = constants.%assoc0] // CHECK:STDOUT: %Second: %J.type = assoc_const_decl Second [template] -// CHECK:STDOUT: %assoc1: %assoc_type.2 = assoc_entity element1, %Second [template = constants.%assoc1] +// CHECK:STDOUT: %assoc1: %assoc_type.4dd = assoc_entity element1, %Second [template = constants.%assoc1] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -291,11 +291,11 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %L.type: type = facet_type <@L> [template] -// CHECK:STDOUT: %Self.1: %L.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.863: %L.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %M.type: type = facet_type <@M> [template] -// CHECK:STDOUT: %Self.2: %M.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.443: %M.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %K.type: type = facet_type <@K> [template] -// CHECK:STDOUT: %Self.3: %K.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.744: %K.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %K.type, %L.type [template] // CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, @K.%Associated [template] // CHECK:STDOUT: %.Self: %K.type = bind_symbolic_name .Self [symbolic] @@ -352,7 +352,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @L { -// CHECK:STDOUT: %Self: %L.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %L.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.863] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -360,7 +360,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @M { -// CHECK:STDOUT: %Self: %M.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2] +// CHECK:STDOUT: %Self: %M.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.443] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -368,7 +368,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @K { -// CHECK:STDOUT: %Self: %K.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3] +// CHECK:STDOUT: %Self: %K.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.744] // CHECK:STDOUT: %Associated: %L.type = assoc_const_decl Associated [template] // CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %Associated [template = constants.%assoc0] // CHECK:STDOUT: @@ -404,7 +404,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -459,7 +459,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -516,7 +516,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -583,26 +583,26 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1: type = import_ref Main//state_constraints, J, loaded [template = constants.%J.type] -// CHECK:STDOUT: %import_ref.2 = import_ref Main//state_constraints, I, unloaded -// CHECK:STDOUT: %import_ref.3 = import_ref Main//state_constraints, EqualEqual, unloaded -// CHECK:STDOUT: %import_ref.4: %Impls.type = import_ref Main//state_constraints, Impls, loaded [template = constants.%Impls] -// CHECK:STDOUT: %import_ref.5 = import_ref Main//state_constraints, And, unloaded +// CHECK:STDOUT: %import_ref.b29: type = import_ref Main//state_constraints, J, loaded [template = constants.%J.type] +// CHECK:STDOUT: %import_ref.492 = import_ref Main//state_constraints, I, unloaded +// CHECK:STDOUT: %import_ref.61d = import_ref Main//state_constraints, EqualEqual, unloaded +// CHECK:STDOUT: %import_ref.fcb: %Impls.type = import_ref Main//state_constraints, Impls, loaded [template = constants.%Impls] +// CHECK:STDOUT: %import_ref.df6 = import_ref Main//state_constraints, And, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.7 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.6 = import_ref Main//state_constraints, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.17d = import_ref Main//state_constraints, inst17 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .J = imports.%import_ref.1 -// CHECK:STDOUT: .I = imports.%import_ref.2 -// CHECK:STDOUT: .EqualEqual = imports.%import_ref.3 -// CHECK:STDOUT: .Impls = imports.%import_ref.4 -// CHECK:STDOUT: .And = imports.%import_ref.5 +// CHECK:STDOUT: .J = imports.%import_ref.b29 +// CHECK:STDOUT: .I = imports.%import_ref.492 +// CHECK:STDOUT: .EqualEqual = imports.%import_ref.61d +// CHECK:STDOUT: .Impls = imports.%import_ref.fcb +// CHECK:STDOUT: .And = imports.%import_ref.df6 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .DoesNotImplI = %DoesNotImplI.decl @@ -614,7 +614,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {} // CHECK:STDOUT: impl_decl @impl [template] {} { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] -// CHECK:STDOUT: %J.ref: type = name_ref J, imports.%import_ref.1 [template = constants.%J.type] +// CHECK:STDOUT: %J.ref: type = name_ref J, imports.%import_ref.b29 [template = constants.%J.type] // CHECK:STDOUT: } // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: %DoesNotImplI.decl: %DoesNotImplI.type = fn_decl @DoesNotImplI [template = constants.%DoesNotImplI] {} {} @@ -624,7 +624,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: } { // CHECK:STDOUT: %Y.param: %J_where.type = value_param runtime_param // CHECK:STDOUT: %.loc26_22.1: type = splice_block %.loc26_22.2 [template = constants.%J_where.type] { -// CHECK:STDOUT: %J.ref: type = name_ref J, imports.%import_ref.1 [template = constants.%J.type] +// CHECK:STDOUT: %J.ref: type = name_ref J, imports.%import_ref.b29 [template = constants.%J.type] // CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.loc26_38: %empty_struct_type = struct_literal () @@ -639,7 +639,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: interface @J [from "state_constraints.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.6 +// CHECK:STDOUT: .Self = imports.%import_ref.17d // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: @@ -658,7 +658,7 @@ fn NotEmptyStruct() { // CHECK:STDOUT: // CHECK:STDOUT: fn @DoesNotImplI() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Impls.ref: %Impls.type = name_ref Impls, imports.%import_ref.4 [template = constants.%Impls] +// CHECK:STDOUT: %Impls.ref: %Impls.type = name_ref Impls, imports.%import_ref.fcb [template = constants.%Impls] // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C] // CHECK:STDOUT: %.loc23: %J_where.type = converted %C.ref, [template = ] // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index febdc5ac7668..2a6817470340 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -93,20 +93,20 @@ class D { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %I.type, type [template] // CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, @I.%Member [template] -// CHECK:STDOUT: %.Self.1: %I.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.258: %I.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %I_where.type: type = facet_type <@I where TODO> [template] // CHECK:STDOUT: %T: %I_where.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: %I_where.type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %PeriodSelf.type: type = fn_type @PeriodSelf [template] // CHECK:STDOUT: %PeriodSelf: %PeriodSelf.type = struct_value () [template] -// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.1 [symbolic] +// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.258 [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic] // CHECK:STDOUT: %U: %I_where.type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: %I_where.type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %PeriodMember.type: type = fn_type @PeriodMember [template] // CHECK:STDOUT: %PeriodMember: %PeriodMember.type = struct_value () [template] -// CHECK:STDOUT: %.Self.2: type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.644: type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %type_where: type = facet_type [template] // CHECK:STDOUT: %V: %type_where = bind_symbolic_name V, 0 [symbolic] // CHECK:STDOUT: %V.patt: %type_where = symbolic_binding_pattern V, 0 [symbolic] @@ -138,8 +138,8 @@ class D { // CHECK:STDOUT: %T.param: %I_where.type = value_param runtime_param // CHECK:STDOUT: %.loc8_21.1: type = splice_block %.loc8_21.2 [template = constants.%I_where.type] { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.1] +// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.258] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.258] // CHECK:STDOUT: %.loc8_37: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc8_21.2: type = where_expr %.Self [template = constants.%I_where.type] { // CHECK:STDOUT: requirement_equivalent %.Self.ref, %.loc8_37 @@ -154,8 +154,8 @@ class D { // CHECK:STDOUT: %U.param: %I_where.type = value_param runtime_param // CHECK:STDOUT: %.loc10_23.1: type = splice_block %.loc10_23.2 [template = constants.%I_where.type] { // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] -// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.1] +// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self.258] +// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self.258] // CHECK:STDOUT: %Member.ref: %assoc_type = name_ref Member, @I.%assoc0 [template = constants.%assoc0] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] @@ -172,8 +172,8 @@ class D { // CHECK:STDOUT: } { // CHECK:STDOUT: %V.param: %type_where = value_param runtime_param // CHECK:STDOUT: %.loc12_27.1: type = splice_block %.loc12_27.2 [template = constants.%type_where] { -// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic = constants.%.Self.2] -// CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self [symbolic = constants.%.Self.2] +// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic = constants.%.Self.644] +// CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self [symbolic = constants.%.Self.644] // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: %.loc12_27.2: type = where_expr %.Self [template = constants.%type_where] { // CHECK:STDOUT: requirement_impls %.Self.ref, %I.ref diff --git a/toolchain/check/testdata/where_expr/dot_self_index.carbon b/toolchain/check/testdata/where_expr/dot_self_index.carbon index ffbc4425c209..81c549a9b250 100644 --- a/toolchain/check/testdata/where_expr/dot_self_index.carbon +++ b/toolchain/check/testdata/where_expr/dot_self_index.carbon @@ -26,52 +26,52 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %W: type = bind_symbolic_name W, 0 [symbolic] // CHECK:STDOUT: %W.patt: type = symbolic_binding_pattern W, 0 [symbolic] -// CHECK:STDOUT: %Empty.type.1: type = generic_interface_type @Empty [template] +// CHECK:STDOUT: %Empty.type.d5a: type = generic_interface_type @Empty [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %Empty.generic: %Empty.type.1 = struct_value () [template] -// CHECK:STDOUT: %Empty.type.2: type = facet_type <@Empty, @Empty(%W)> [symbolic] -// CHECK:STDOUT: %Self: %Empty.type.2 = bind_symbolic_name Self, 1 [symbolic] -// CHECK:STDOUT: %assoc_type.1: type = assoc_entity_type %Empty.type.2, type [symbolic] -// CHECK:STDOUT: %assoc0.1: %assoc_type.1 = assoc_entity element0, @Empty.%A [symbolic] +// CHECK:STDOUT: %Empty.generic: %Empty.type.d5a = struct_value () [template] +// CHECK:STDOUT: %Empty.type.a54: type = facet_type <@Empty, @Empty(%W)> [symbolic] +// CHECK:STDOUT: %Self: %Empty.type.a54 = bind_symbolic_name Self, 1 [symbolic] +// CHECK:STDOUT: %assoc_type.263: type = assoc_entity_type %Empty.type.a54, type [symbolic] +// CHECK:STDOUT: %assoc0.78a: %assoc_type.263 = assoc_entity element0, @Empty.%A [symbolic] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %Empty.type.3: type = facet_type <@Empty, @Empty(%T)> [symbolic] -// CHECK:STDOUT: %.Self.1: %Empty.type.3 = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %require_complete.1: = require_complete_type %Empty.type.3 [symbolic] -// CHECK:STDOUT: %assoc_type.2: type = assoc_entity_type %Empty.type.3, type [symbolic] -// CHECK:STDOUT: %assoc0.2: %assoc_type.2 = assoc_entity element0, @Empty.%A [symbolic] -// CHECK:STDOUT: %.Self.as_wit.1: = facet_access_witness %.Self.1 [symbolic] -// CHECK:STDOUT: %impl.elem0.1: type = impl_witness_access %.Self.as_wit.1, element0 [symbolic] -// CHECK:STDOUT: %ptr.1: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %Empty_where.type.1: type = facet_type <@Empty, @Empty(%T) where %impl.elem0.1 = %ptr.1> [symbolic] +// CHECK:STDOUT: %Empty.type.f74: type = facet_type <@Empty, @Empty(%T)> [symbolic] +// CHECK:STDOUT: %.Self.ec8: %Empty.type.f74 = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %require_complete.9fb: = require_complete_type %Empty.type.f74 [symbolic] +// CHECK:STDOUT: %assoc_type.c52: type = assoc_entity_type %Empty.type.f74, type [symbolic] +// CHECK:STDOUT: %assoc0.292: %assoc_type.c52 = assoc_entity element0, @Empty.%A [symbolic] +// CHECK:STDOUT: %.Self.as_wit.b86: = facet_access_witness %.Self.ec8 [symbolic] +// CHECK:STDOUT: %impl.elem0.76f: type = impl_witness_access %.Self.as_wit.b86, element0 [symbolic] +// CHECK:STDOUT: %ptr.251: type = ptr_type %T [symbolic] +// CHECK:STDOUT: %Empty_where.type.963: type = facet_type <@Empty, @Empty(%T) where %impl.elem0.76f = %ptr.251> [symbolic] // CHECK:STDOUT: %V: type = bind_symbolic_name V, 1 [symbolic] // CHECK:STDOUT: %V.patt: type = symbolic_binding_pattern V, 1 [symbolic] // CHECK:STDOUT: %H.type: type = fn_type @H [template] // CHECK:STDOUT: %H: %H.type = struct_value () [template] -// CHECK:STDOUT: %require_complete.2: = require_complete_type %Empty_where.type.1 [symbolic] +// CHECK:STDOUT: %require_complete.067: = require_complete_type %Empty_where.type.963 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %Empty.type.4: type = facet_type <@Empty, @Empty(%i32)> [template] -// CHECK:STDOUT: %.Self.2: %Empty.type.4 = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %assoc_type.3: type = assoc_entity_type %Empty.type.4, type [template] -// CHECK:STDOUT: %assoc0.3: %assoc_type.3 = assoc_entity element0, @Empty.%A [template] -// CHECK:STDOUT: %.Self.as_wit.2: = facet_access_witness %.Self.2 [symbolic] -// CHECK:STDOUT: %impl.elem0.2: type = impl_witness_access %.Self.as_wit.2, element0 [symbolic] -// CHECK:STDOUT: %ptr.2: type = ptr_type %i32 [template] -// CHECK:STDOUT: %Empty_where.type.2: type = facet_type <@Empty, @Empty(%i32) where %impl.elem0.2 = %ptr.2> [template] +// CHECK:STDOUT: %Empty.type.4af: type = facet_type <@Empty, @Empty(%i32)> [template] +// CHECK:STDOUT: %.Self.a46: %Empty.type.4af = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %assoc_type.488: type = assoc_entity_type %Empty.type.4af, type [template] +// CHECK:STDOUT: %assoc0.7bc: %assoc_type.488 = assoc_entity element0, @Empty.%A [template] +// CHECK:STDOUT: %.Self.as_wit.c5e: = facet_access_witness %.Self.a46 [symbolic] +// CHECK:STDOUT: %impl.elem0.b4f: type = impl_witness_access %.Self.as_wit.c5e, element0 [symbolic] +// CHECK:STDOUT: %ptr.dc3: type = ptr_type %i32 [template] +// CHECK:STDOUT: %Empty_where.type.5d3: type = facet_type <@Empty, @Empty(%i32) where %impl.elem0.b4f = %ptr.dc3> [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %complete_type.2: = complete_type_witness %Empty.type.4 [template] +// CHECK:STDOUT: %complete_type.6c0: = complete_type_witness %Empty.type.4af [template] // CHECK:STDOUT: %H.specific_fn: = specific_function %H, @H(%i32, bool) [template] -// CHECK:STDOUT: %complete_type.3: = complete_type_witness %Empty_where.type.2 [template] +// CHECK:STDOUT: %complete_type.a60: = complete_type_witness %Empty_where.type.5d3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -85,7 +85,7 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Empty.decl: %Empty.type.1 = interface_decl @Empty [template = constants.%Empty.generic] { +// CHECK:STDOUT: %Empty.decl: %Empty.type.d5a = interface_decl @Empty [template = constants.%Empty.generic] { // CHECK:STDOUT: %W.patt.loc11_17.1: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_17.2 (constants.%W.patt)] // CHECK:STDOUT: %W.param_patt: type = value_param_pattern %W.patt.loc11_17.1, runtime_param [symbolic = %W.patt.loc11_17.2 (constants.%W.patt)] // CHECK:STDOUT: } { @@ -95,58 +95,58 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] { // CHECK:STDOUT: %T.patt.loc18_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_6.2 (constants.%T.patt)] // CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc18_6.1, runtime_param [symbolic = %T.patt.loc18_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %U.patt: @H.%Empty_where.type (%Empty_where.type.1) = binding_pattern U -// CHECK:STDOUT: %U.param_patt: @H.%Empty_where.type (%Empty_where.type.1) = value_param_pattern %U.patt, runtime_param0 +// CHECK:STDOUT: %U.patt: @H.%Empty_where.type (%Empty_where.type.963) = binding_pattern U +// CHECK:STDOUT: %U.param_patt: @H.%Empty_where.type (%Empty_where.type.963) = value_param_pattern %U.patt, runtime_param0 // CHECK:STDOUT: %V.patt.loc18_43.1: type = symbolic_binding_pattern V, 1 [symbolic = %V.patt.loc18_43.2 (constants.%V.patt)] // CHECK:STDOUT: %V.param_patt: type = value_param_pattern %V.patt.loc18_43.1, runtime_param [symbolic = %V.patt.loc18_43.2 (constants.%V.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %T.param: type = value_param runtime_param // CHECK:STDOUT: %T.loc18_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc18_6.2 (constants.%T)] -// CHECK:STDOUT: %U.param: @H.%Empty_where.type (%Empty_where.type.1) = value_param runtime_param0 -// CHECK:STDOUT: %.loc18_28.1: type = splice_block %.loc18_28.2 [symbolic = %Empty_where.type (constants.%Empty_where.type.1)] { -// CHECK:STDOUT: %Empty.ref: %Empty.type.1 = name_ref Empty, file.%Empty.decl [template = constants.%Empty.generic] +// CHECK:STDOUT: %U.param: @H.%Empty_where.type (%Empty_where.type.963) = value_param runtime_param0 +// CHECK:STDOUT: %.loc18_28.1: type = splice_block %.loc18_28.2 [symbolic = %Empty_where.type (constants.%Empty_where.type.963)] { +// CHECK:STDOUT: %Empty.ref: %Empty.type.d5a = name_ref Empty, file.%Empty.decl [template = constants.%Empty.generic] // CHECK:STDOUT: %T.ref.loc18_25: type = name_ref T, %T.loc18_6.1 [symbolic = %T.loc18_6.2 (constants.%T)] -// CHECK:STDOUT: %Empty.type.loc18_26.1: type = facet_type <@Empty, @Empty(constants.%T)> [symbolic = %Empty.type.loc18_26.2 (constants.%Empty.type.3)] -// CHECK:STDOUT: %.Self.1: @H.%Empty.type.loc18_26.2 (%Empty.type.3) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.1)] -// CHECK:STDOUT: %.Self.ref: @H.%Empty.type.loc18_26.2 (%Empty.type.3) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.1)] -// CHECK:STDOUT: %.loc18_34: @H.%assoc_type (%assoc_type.2) = specific_constant @Empty.%assoc0.loc12_15.1, @Empty(constants.%T) [symbolic = %assoc0 (constants.%assoc0.2)] -// CHECK:STDOUT: %A.ref: @H.%assoc_type (%assoc_type.2) = name_ref A, %.loc18_34 [symbolic = %assoc0 (constants.%assoc0.2)] -// CHECK:STDOUT: %.Self.as_wit.loc18_34.1: = facet_access_witness %.Self.ref [symbolic = %.Self.as_wit.loc18_34.2 (constants.%.Self.as_wit.1)] -// CHECK:STDOUT: %impl.elem0.loc18_34.1: type = impl_witness_access %.Self.as_wit.loc18_34.1, element0 [symbolic = %impl.elem0.loc18_34.2 (constants.%impl.elem0.1)] +// CHECK:STDOUT: %Empty.type.loc18_26.1: type = facet_type <@Empty, @Empty(constants.%T)> [symbolic = %Empty.type.loc18_26.2 (constants.%Empty.type.f74)] +// CHECK:STDOUT: %.Self.1: @H.%Empty.type.loc18_26.2 (%Empty.type.f74) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.ec8)] +// CHECK:STDOUT: %.Self.ref: @H.%Empty.type.loc18_26.2 (%Empty.type.f74) = name_ref .Self, %.Self.1 [symbolic = %.Self.2 (constants.%.Self.ec8)] +// CHECK:STDOUT: %.loc18_34: @H.%assoc_type (%assoc_type.c52) = specific_constant @Empty.%assoc0.loc12_15.1, @Empty(constants.%T) [symbolic = %assoc0 (constants.%assoc0.292)] +// CHECK:STDOUT: %A.ref: @H.%assoc_type (%assoc_type.c52) = name_ref A, %.loc18_34 [symbolic = %assoc0 (constants.%assoc0.292)] +// CHECK:STDOUT: %.Self.as_wit.loc18_34.1: = facet_access_witness %.Self.ref [symbolic = %.Self.as_wit.loc18_34.2 (constants.%.Self.as_wit.b86)] +// CHECK:STDOUT: %impl.elem0.loc18_34.1: type = impl_witness_access %.Self.as_wit.loc18_34.1, element0 [symbolic = %impl.elem0.loc18_34.2 (constants.%impl.elem0.76f)] // CHECK:STDOUT: %T.ref.loc18_39: type = name_ref T, %T.loc18_6.1 [symbolic = %T.loc18_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc18_40.1: type = ptr_type %T [symbolic = %ptr.loc18_40.2 (constants.%ptr.1)] -// CHECK:STDOUT: %.loc18_28.2: type = where_expr %.Self.1 [symbolic = %Empty_where.type (constants.%Empty_where.type.1)] { +// CHECK:STDOUT: %ptr.loc18_40.1: type = ptr_type %T [symbolic = %ptr.loc18_40.2 (constants.%ptr.251)] +// CHECK:STDOUT: %.loc18_28.2: type = where_expr %.Self.1 [symbolic = %Empty_where.type (constants.%Empty_where.type.963)] { // CHECK:STDOUT: requirement_rewrite %impl.elem0.loc18_34.1, %ptr.loc18_40.1 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %U: @H.%Empty_where.type (%Empty_where.type.1) = bind_name U, %U.param +// CHECK:STDOUT: %U: @H.%Empty_where.type (%Empty_where.type.963) = bind_name U, %U.param // CHECK:STDOUT: %V.param: type = value_param runtime_param // CHECK:STDOUT: %V.loc18_43.1: type = bind_symbolic_name V, 1, %V.param [symbolic = %V.loc18_43.2 (constants.%V)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] { -// CHECK:STDOUT: %U.patt: %Empty_where.type.2 = binding_pattern U -// CHECK:STDOUT: %U.param_patt: %Empty_where.type.2 = value_param_pattern %U.patt, runtime_param0 +// CHECK:STDOUT: %U.patt: %Empty_where.type.5d3 = binding_pattern U +// CHECK:STDOUT: %U.param_patt: %Empty_where.type.5d3 = value_param_pattern %U.patt, runtime_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %U.param: %Empty_where.type.2 = value_param runtime_param0 -// CHECK:STDOUT: %.loc20_20.1: type = splice_block %.loc20_20.2 [template = constants.%Empty_where.type.2] { -// CHECK:STDOUT: %Empty.ref: %Empty.type.1 = name_ref Empty, file.%Empty.decl [template = constants.%Empty.generic] +// CHECK:STDOUT: %U.param: %Empty_where.type.5d3 = value_param runtime_param0 +// CHECK:STDOUT: %.loc20_20.1: type = splice_block %.loc20_20.2 [template = constants.%Empty_where.type.5d3] { +// CHECK:STDOUT: %Empty.ref: %Empty.type.d5a = name_ref Empty, file.%Empty.decl [template = constants.%Empty.generic] // CHECK:STDOUT: %int_32.loc20_15: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc20_15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty, @Empty(constants.%i32)> [template = constants.%Empty.type.4] -// CHECK:STDOUT: %.Self: %Empty.type.4 = bind_symbolic_name .Self [symbolic = constants.%.Self.2] -// CHECK:STDOUT: %.Self.ref: %Empty.type.4 = name_ref .Self, %.Self [symbolic = constants.%.Self.2] -// CHECK:STDOUT: %.loc20_26: %assoc_type.3 = specific_constant @Empty.%assoc0.loc12_15.1, @Empty(constants.%i32) [template = constants.%assoc0.3] -// CHECK:STDOUT: %A.ref: %assoc_type.3 = name_ref A, %.loc20_26 [template = constants.%assoc0.3] -// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit.2] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0.2] +// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty, @Empty(constants.%i32)> [template = constants.%Empty.type.4af] +// CHECK:STDOUT: %.Self: %Empty.type.4af = bind_symbolic_name .Self [symbolic = constants.%.Self.a46] +// CHECK:STDOUT: %.Self.ref: %Empty.type.4af = name_ref .Self, %.Self [symbolic = constants.%.Self.a46] +// CHECK:STDOUT: %.loc20_26: %assoc_type.488 = specific_constant @Empty.%assoc0.loc12_15.1, @Empty(constants.%i32) [template = constants.%assoc0.7bc] +// CHECK:STDOUT: %A.ref: %assoc_type.488 = name_ref A, %.loc20_26 [template = constants.%assoc0.7bc] +// CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit.c5e] +// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0.b4f] // CHECK:STDOUT: %int_32.loc20_31: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc20_31: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.2] -// CHECK:STDOUT: %.loc20_20.2: type = where_expr %.Self [template = constants.%Empty_where.type.2] { +// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr.dc3] +// CHECK:STDOUT: %.loc20_20.2: type = where_expr %.Self [template = constants.%Empty_where.type.5d3] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %ptr // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %U: %Empty_where.type.2 = bind_name U, %U.param +// CHECK:STDOUT: %U: %Empty_where.type.5d3 = bind_name U, %U.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -155,15 +155,15 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %W.patt.loc11_17.2: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_17.2 (constants.%W.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty, @Empty(%W.loc11_17.2)> [symbolic = %Empty.type (constants.%Empty.type.2)] -// CHECK:STDOUT: %Self.2: %Empty.type.2 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] -// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Empty.%Empty.type (%Empty.type.2), type [symbolic = %assoc_type (constants.%assoc_type.1)] -// CHECK:STDOUT: %assoc0.loc12_15.2: @Empty.%assoc_type (%assoc_type.1) = assoc_entity element0, %A [symbolic = %assoc0.loc12_15.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty, @Empty(%W.loc11_17.2)> [symbolic = %Empty.type (constants.%Empty.type.a54)] +// CHECK:STDOUT: %Self.2: %Empty.type.a54 = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @Empty.%Empty.type (%Empty.type.a54), type [symbolic = %assoc_type (constants.%assoc_type.263)] +// CHECK:STDOUT: %assoc0.loc12_15.2: @Empty.%assoc_type (%assoc_type.263) = assoc_entity element0, %A [symbolic = %assoc0.loc12_15.2 (constants.%assoc0.78a)] // CHECK:STDOUT: // CHECK:STDOUT: interface { -// CHECK:STDOUT: %Self.1: @Empty.%Empty.type (%Empty.type.2) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] +// CHECK:STDOUT: %Self.1: @Empty.%Empty.type (%Empty.type.a54) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)] // CHECK:STDOUT: %A: type = assoc_const_decl A [template] -// CHECK:STDOUT: %assoc0.loc12_15.1: @Empty.%assoc_type (%assoc_type.1) = assoc_entity element0, %A [symbolic = %assoc0.loc12_15.2 (constants.%assoc0.1)] +// CHECK:STDOUT: %assoc0.loc12_15.1: @Empty.%assoc_type (%assoc_type.263) = assoc_entity element0, %A [symbolic = %assoc0.loc12_15.2 (constants.%assoc0.78a)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 @@ -175,33 +175,33 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: generic fn @H(%T.loc18_6.1: type, %V.loc18_43.1: type) { // CHECK:STDOUT: %T.loc18_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc18_6.2 (constants.%T)] // CHECK:STDOUT: %T.patt.loc18_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc18_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %Empty.type.loc18_26.2: type = facet_type <@Empty, @Empty(%T.loc18_6.2)> [symbolic = %Empty.type.loc18_26.2 (constants.%Empty.type.3)] -// CHECK:STDOUT: %.Self.2: @H.%Empty.type.loc18_26.2 (%Empty.type.3) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.1)] -// CHECK:STDOUT: %require_complete.loc18_34: = require_complete_type @H.%Empty.type.loc18_26.2 (%Empty.type.3) [symbolic = %require_complete.loc18_34 (constants.%require_complete.1)] -// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @H.%Empty.type.loc18_26.2 (%Empty.type.3), type [symbolic = %assoc_type (constants.%assoc_type.2)] -// CHECK:STDOUT: %assoc0: @H.%assoc_type (%assoc_type.2) = assoc_entity element0, @Empty.%A [symbolic = %assoc0 (constants.%assoc0.2)] -// CHECK:STDOUT: %.Self.as_wit.loc18_34.2: = facet_access_witness %.Self.2 [symbolic = %.Self.as_wit.loc18_34.2 (constants.%.Self.as_wit.1)] -// CHECK:STDOUT: %impl.elem0.loc18_34.2: type = impl_witness_access %.Self.as_wit.loc18_34.2, element0 [symbolic = %impl.elem0.loc18_34.2 (constants.%impl.elem0.1)] -// CHECK:STDOUT: %ptr.loc18_40.2: type = ptr_type @H.%T.loc18_6.2 (%T) [symbolic = %ptr.loc18_40.2 (constants.%ptr.1)] -// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc18_6.2) where %impl.elem0.loc18_34.2 (constants.%impl.elem0.1) = %ptr.loc18_40.2 (constants.%ptr.1)> [symbolic = %Empty_where.type (constants.%Empty_where.type.1)] +// CHECK:STDOUT: %Empty.type.loc18_26.2: type = facet_type <@Empty, @Empty(%T.loc18_6.2)> [symbolic = %Empty.type.loc18_26.2 (constants.%Empty.type.f74)] +// CHECK:STDOUT: %.Self.2: @H.%Empty.type.loc18_26.2 (%Empty.type.f74) = bind_symbolic_name .Self [symbolic = %.Self.2 (constants.%.Self.ec8)] +// CHECK:STDOUT: %require_complete.loc18_34: = require_complete_type @H.%Empty.type.loc18_26.2 (%Empty.type.f74) [symbolic = %require_complete.loc18_34 (constants.%require_complete.9fb)] +// CHECK:STDOUT: %assoc_type: type = assoc_entity_type @H.%Empty.type.loc18_26.2 (%Empty.type.f74), type [symbolic = %assoc_type (constants.%assoc_type.c52)] +// CHECK:STDOUT: %assoc0: @H.%assoc_type (%assoc_type.c52) = assoc_entity element0, @Empty.%A [symbolic = %assoc0 (constants.%assoc0.292)] +// CHECK:STDOUT: %.Self.as_wit.loc18_34.2: = facet_access_witness %.Self.2 [symbolic = %.Self.as_wit.loc18_34.2 (constants.%.Self.as_wit.b86)] +// CHECK:STDOUT: %impl.elem0.loc18_34.2: type = impl_witness_access %.Self.as_wit.loc18_34.2, element0 [symbolic = %impl.elem0.loc18_34.2 (constants.%impl.elem0.76f)] +// CHECK:STDOUT: %ptr.loc18_40.2: type = ptr_type @H.%T.loc18_6.2 (%T) [symbolic = %ptr.loc18_40.2 (constants.%ptr.251)] +// CHECK:STDOUT: %Empty_where.type: type = facet_type <@Empty, @Empty(%T.loc18_6.2) where %impl.elem0.loc18_34.2 (constants.%impl.elem0.76f) = %ptr.loc18_40.2 (constants.%ptr.251)> [symbolic = %Empty_where.type (constants.%Empty_where.type.963)] // CHECK:STDOUT: %V.loc18_43.2: type = bind_symbolic_name V, 1 [symbolic = %V.loc18_43.2 (constants.%V)] // CHECK:STDOUT: %V.patt.loc18_43.2: type = symbolic_binding_pattern V, 1 [symbolic = %V.patt.loc18_43.2 (constants.%V.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc18_17: = require_complete_type @H.%Empty_where.type (%Empty_where.type.1) [symbolic = %require_complete.loc18_17 (constants.%require_complete.2)] +// CHECK:STDOUT: %require_complete.loc18_17: = require_complete_type @H.%Empty_where.type (%Empty_where.type.963) [symbolic = %require_complete.loc18_17 (constants.%require_complete.067)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: @H.%Empty_where.type (%Empty_where.type.1), %V.param_patt: type) { +// CHECK:STDOUT: fn(%T.param_patt: type, %U.param_patt: @H.%Empty_where.type (%Empty_where.type.963), %V.param_patt: type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%U.param_patt: %Empty_where.type.2) { +// CHECK:STDOUT: fn @G(%U.param_patt: %Empty_where.type.5d3) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %H.ref: %H.type = name_ref H, file.%H.decl [template = constants.%H] // CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %U.ref: %Empty_where.type.2 = name_ref U, %U +// CHECK:STDOUT: %U.ref: %Empty_where.type.5d3 = name_ref U, %U // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc21_17.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc21_17.2: type = converted %bool.make_type, %.loc21_17.1 [template = bool] @@ -222,24 +222,24 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %W.patt.loc11_17.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Empty.type => constants.%Empty.type.3 +// CHECK:STDOUT: %Empty.type => constants.%Empty.type.f74 // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.2 -// CHECK:STDOUT: %assoc0.loc12_15.2 => constants.%assoc0.2 +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.c52 +// CHECK:STDOUT: %assoc0.loc12_15.2 => constants.%assoc0.292 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @H(constants.%T, constants.%V) { // CHECK:STDOUT: %T.loc18_6.2 => constants.%T // CHECK:STDOUT: %T.patt.loc18_6.2 => constants.%T -// CHECK:STDOUT: %Empty.type.loc18_26.2 => constants.%Empty.type.3 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.1 -// CHECK:STDOUT: %require_complete.loc18_34 => constants.%require_complete.1 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.2 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.2 -// CHECK:STDOUT: %.Self.as_wit.loc18_34.2 => constants.%.Self.as_wit.1 -// CHECK:STDOUT: %impl.elem0.loc18_34.2 => constants.%impl.elem0.1 -// CHECK:STDOUT: %ptr.loc18_40.2 => constants.%ptr.1 -// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.1 +// CHECK:STDOUT: %Empty.type.loc18_26.2 => constants.%Empty.type.f74 +// CHECK:STDOUT: %.Self.2 => constants.%.Self.ec8 +// CHECK:STDOUT: %require_complete.loc18_34 => constants.%require_complete.9fb +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.c52 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.292 +// CHECK:STDOUT: %.Self.as_wit.loc18_34.2 => constants.%.Self.as_wit.b86 +// CHECK:STDOUT: %impl.elem0.loc18_34.2 => constants.%impl.elem0.76f +// CHECK:STDOUT: %ptr.loc18_40.2 => constants.%ptr.251 +// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.963 // CHECK:STDOUT: %V.loc18_43.2 => constants.%V // CHECK:STDOUT: %V.patt.loc18_43.2 => constants.%V // CHECK:STDOUT: } @@ -251,28 +251,28 @@ fn G(U: Empty(i32) where .A = i32*) { // CHECK:STDOUT: %W.patt.loc11_17.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Empty.type => constants.%Empty.type.4 +// CHECK:STDOUT: %Empty.type => constants.%Empty.type.4af // CHECK:STDOUT: %Self.2 => constants.%Self -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.3 -// CHECK:STDOUT: %assoc0.loc12_15.2 => constants.%assoc0.3 +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.488 +// CHECK:STDOUT: %assoc0.loc12_15.2 => constants.%assoc0.7bc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @H(constants.%i32, bool) { // CHECK:STDOUT: %T.loc18_6.2 => constants.%i32 // CHECK:STDOUT: %T.patt.loc18_6.2 => constants.%i32 -// CHECK:STDOUT: %Empty.type.loc18_26.2 => constants.%Empty.type.4 -// CHECK:STDOUT: %.Self.2 => constants.%.Self.2 -// CHECK:STDOUT: %require_complete.loc18_34 => constants.%complete_type.2 -// CHECK:STDOUT: %assoc_type => constants.%assoc_type.3 -// CHECK:STDOUT: %assoc0 => constants.%assoc0.3 -// CHECK:STDOUT: %.Self.as_wit.loc18_34.2 => constants.%.Self.as_wit.2 -// CHECK:STDOUT: %impl.elem0.loc18_34.2 => constants.%impl.elem0.2 -// CHECK:STDOUT: %ptr.loc18_40.2 => constants.%ptr.2 -// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.2 +// CHECK:STDOUT: %Empty.type.loc18_26.2 => constants.%Empty.type.4af +// CHECK:STDOUT: %.Self.2 => constants.%.Self.a46 +// CHECK:STDOUT: %require_complete.loc18_34 => constants.%complete_type.6c0 +// CHECK:STDOUT: %assoc_type => constants.%assoc_type.488 +// CHECK:STDOUT: %assoc0 => constants.%assoc0.7bc +// CHECK:STDOUT: %.Self.as_wit.loc18_34.2 => constants.%.Self.as_wit.c5e +// CHECK:STDOUT: %impl.elem0.loc18_34.2 => constants.%impl.elem0.b4f +// CHECK:STDOUT: %ptr.loc18_40.2 => constants.%ptr.dc3 +// CHECK:STDOUT: %Empty_where.type => constants.%Empty_where.type.5d3 // CHECK:STDOUT: %V.loc18_43.2 => bool // CHECK:STDOUT: %V.patt.loc18_43.2 => bool // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc18_17 => constants.%complete_type.3 +// CHECK:STDOUT: %require_complete.loc18_17 => constants.%complete_type.a60 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index 0f5a2df858dc..9a9657bdbc78 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -304,19 +304,19 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %A.type, type [template] // CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, @A.%B [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, @A.%C [template] -// CHECK:STDOUT: %.Self.1: %A.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.3ca: %A.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %.Self.as_wit.1: = facet_access_witness %.Self.1 [symbolic] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.1, element0 [symbolic] +// CHECK:STDOUT: %.Self.as_wit.794: = facet_access_witness %.Self.3ca [symbolic] +// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.794, element0 [symbolic] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %A_where.type.1: type = facet_type <@A where %impl.elem0 = bool> [template] -// CHECK:STDOUT: %.Self.2: %A_where.type.1 = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_wit.2: = facet_access_witness %.Self.2 [symbolic] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit.2, element1 [symbolic] -// CHECK:STDOUT: %A_where.type.2: type = facet_type <@A where %impl.elem1 = %empty_tuple.type and %impl.elem0 = bool> [template] -// CHECK:STDOUT: %D: %A_where.type.2 = bind_symbolic_name D, 0 [symbolic] -// CHECK:STDOUT: %D.patt: %A_where.type.2 = symbolic_binding_pattern D, 0 [symbolic] +// CHECK:STDOUT: %A_where.type.ef9: type = facet_type <@A where %impl.elem0 = bool> [template] +// CHECK:STDOUT: %.Self.e46: %A_where.type.ef9 = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_wit.a35: = facet_access_witness %.Self.e46 [symbolic] +// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit.a35, element1 [symbolic] +// CHECK:STDOUT: %A_where.type.791: type = facet_type <@A where %impl.elem1 = %empty_tuple.type and %impl.elem0 = bool> [template] +// CHECK:STDOUT: %D: %A_where.type.791 = bind_symbolic_name D, 0 [symbolic] +// CHECK:STDOUT: %D.patt: %A_where.type.791 = symbolic_binding_pattern D, 0 [symbolic] // CHECK:STDOUT: %NestedRewrite.type: type = fn_type @NestedRewrite [template] // CHECK:STDOUT: %NestedRewrite: %NestedRewrite.type = struct_value () [template] // CHECK:STDOUT: } @@ -338,35 +338,35 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = interface_decl @A [template = constants.%A.type] {} {} // CHECK:STDOUT: %NestedRewrite.decl: %NestedRewrite.type = fn_decl @NestedRewrite [template = constants.%NestedRewrite] { -// CHECK:STDOUT: %D.patt.loc9_18.1: %A_where.type.2 = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] -// CHECK:STDOUT: %D.param_patt: %A_where.type.2 = value_param_pattern %D.patt.loc9_18.1, runtime_param [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] +// CHECK:STDOUT: %D.patt.loc9_18.1: %A_where.type.791 = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] +// CHECK:STDOUT: %D.param_patt: %A_where.type.791 = value_param_pattern %D.patt.loc9_18.1, runtime_param [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %D.param: %A_where.type.2 = value_param runtime_param -// CHECK:STDOUT: %.loc9_42.1: type = splice_block %.loc9_42.2 [template = constants.%A_where.type.2] { +// CHECK:STDOUT: %D.param: %A_where.type.791 = value_param runtime_param +// CHECK:STDOUT: %.loc9_42.1: type = splice_block %.loc9_42.2 [template = constants.%A_where.type.791] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A.type] -// CHECK:STDOUT: %.Self.1: %A.type = bind_symbolic_name .Self [symbolic = constants.%.Self.1] -// CHECK:STDOUT: %.Self.ref.loc9_31: %A.type = name_ref .Self, %.Self.1 [symbolic = constants.%.Self.1] +// CHECK:STDOUT: %.Self.1: %A.type = bind_symbolic_name .Self [symbolic = constants.%.Self.3ca] +// CHECK:STDOUT: %.Self.ref.loc9_31: %A.type = name_ref .Self, %.Self.1 [symbolic = constants.%.Self.3ca] // CHECK:STDOUT: %B.ref: %assoc_type = name_ref B, @A.%assoc0 [template = constants.%assoc0] -// CHECK:STDOUT: %.Self.as_wit.loc9_31: = facet_access_witness %.Self.ref.loc9_31 [symbolic = constants.%.Self.as_wit.1] +// CHECK:STDOUT: %.Self.as_wit.loc9_31: = facet_access_witness %.Self.ref.loc9_31 [symbolic = constants.%.Self.as_wit.794] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.loc9_31, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc9_36.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc9_36.2: type = converted %bool.make_type, %.loc9_36.1 [template = bool] -// CHECK:STDOUT: %.loc9_25: type = where_expr %.Self.1 [template = constants.%A_where.type.1] { +// CHECK:STDOUT: %.loc9_25: type = where_expr %.Self.1 [template = constants.%A_where.type.ef9] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_36.2 // CHECK:STDOUT: } -// CHECK:STDOUT: %.Self.2: %A_where.type.1 = bind_symbolic_name .Self [symbolic = constants.%.Self.2] -// CHECK:STDOUT: %.Self.ref.loc9_48: %A_where.type.1 = name_ref .Self, %.Self.2 [symbolic = constants.%.Self.2] +// CHECK:STDOUT: %.Self.2: %A_where.type.ef9 = bind_symbolic_name .Self [symbolic = constants.%.Self.e46] +// CHECK:STDOUT: %.Self.ref.loc9_48: %A_where.type.ef9 = name_ref .Self, %.Self.2 [symbolic = constants.%.Self.e46] // CHECK:STDOUT: %C.ref: %assoc_type = name_ref C, @A.%assoc1 [template = constants.%assoc1] -// CHECK:STDOUT: %.Self.as_wit.loc9_48: = facet_access_witness %.Self.ref.loc9_48 [symbolic = constants.%.Self.as_wit.2] +// CHECK:STDOUT: %.Self.as_wit.loc9_48: = facet_access_witness %.Self.ref.loc9_48 [symbolic = constants.%.Self.as_wit.a35] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit.loc9_48, element1 [symbolic = constants.%impl.elem1] // CHECK:STDOUT: %.loc9_54.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_54.2: type = converted %.loc9_54.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_42.2: type = where_expr %.Self.2 [template = constants.%A_where.type.2] { +// CHECK:STDOUT: %.loc9_42.2: type = where_expr %.Self.2 [template = constants.%A_where.type.791] { // CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc9_54.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %D.loc9_18.1: %A_where.type.2 = bind_symbolic_name D, 0, %D.param [symbolic = %D.loc9_18.2 (constants.%D)] +// CHECK:STDOUT: %D.loc9_18.1: %A_where.type.791 = bind_symbolic_name D, 0, %D.param [symbolic = %D.loc9_18.2 (constants.%D)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -384,11 +384,11 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: witness = (%B, %C) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @NestedRewrite(%D.loc9_18.1: %A_where.type.2) { -// CHECK:STDOUT: %D.loc9_18.2: %A_where.type.2 = bind_symbolic_name D, 0 [symbolic = %D.loc9_18.2 (constants.%D)] -// CHECK:STDOUT: %D.patt.loc9_18.2: %A_where.type.2 = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] +// CHECK:STDOUT: generic fn @NestedRewrite(%D.loc9_18.1: %A_where.type.791) { +// CHECK:STDOUT: %D.loc9_18.2: %A_where.type.791 = bind_symbolic_name D, 0 [symbolic = %D.loc9_18.2 (constants.%D)] +// CHECK:STDOUT: %D.patt.loc9_18.2: %A_where.type.791 = symbolic_binding_pattern D, 0 [symbolic = %D.patt.loc9_18.2 (constants.%D.patt)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%D.param_patt: %A_where.type.2); +// CHECK:STDOUT: fn(%D.param_patt: %A_where.type.791); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @NestedRewrite(constants.%D) { @@ -418,18 +418,18 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %H.patt: %E_where.type = symbolic_binding_pattern H, 0 [symbolic] // CHECK:STDOUT: %RepeatedRewrite.type: type = fn_type @RepeatedRewrite [template] // CHECK:STDOUT: %RepeatedRewrite: %RepeatedRewrite.type = struct_value () [template] -// CHECK:STDOUT: %OneRewrite.specific_fn.1: = specific_function %OneRewrite, @OneRewrite(%H) [symbolic] +// CHECK:STDOUT: %OneRewrite.specific_fn.a2b: = specific_function %OneRewrite, @OneRewrite(%H) [symbolic] // CHECK:STDOUT: %I: %E_where.type = bind_symbolic_name I, 0 [symbolic] // CHECK:STDOUT: %I.patt: %E_where.type = symbolic_binding_pattern I, 0 [symbolic] // CHECK:STDOUT: %OneRewriteAgain.type: type = fn_type @OneRewriteAgain [template] // CHECK:STDOUT: %OneRewriteAgain: %OneRewriteAgain.type = struct_value () [template] // CHECK:STDOUT: %RepeatedRewrite.specific_fn: = specific_function %RepeatedRewrite, @RepeatedRewrite(%I) [symbolic] -// CHECK:STDOUT: %OneRewrite.specific_fn.2: = specific_function %OneRewrite, @OneRewrite(%I) [symbolic] +// CHECK:STDOUT: %OneRewrite.specific_fn.74a: = specific_function %OneRewrite, @OneRewrite(%I) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -542,13 +542,13 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %H.patt.loc10_20.2: %E_where.type = symbolic_binding_pattern H, 0 [symbolic = %H.patt.loc10_20.2 (constants.%H.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.2: = specific_function constants.%OneRewrite, @OneRewrite(%H.loc10_20.2) [symbolic = %OneRewrite.specific_fn.loc11_3.2 (constants.%OneRewrite.specific_fn.1)] +// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.2: = specific_function constants.%OneRewrite, @OneRewrite(%H.loc10_20.2) [symbolic = %OneRewrite.specific_fn.loc11_3.2 (constants.%OneRewrite.specific_fn.a2b)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%H.param_patt: %E_where.type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %OneRewrite.ref: %OneRewrite.type = name_ref OneRewrite, file.%OneRewrite.decl [template = constants.%OneRewrite] // CHECK:STDOUT: %H.ref: %E_where.type = name_ref H, %H.loc10_20.1 [symbolic = %H.loc10_20.2 (constants.%H)] -// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.1: = specific_function %OneRewrite.ref, @OneRewrite(constants.%H) [symbolic = %OneRewrite.specific_fn.loc11_3.2 (constants.%OneRewrite.specific_fn.1)] +// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.1: = specific_function %OneRewrite.ref, @OneRewrite(constants.%H) [symbolic = %OneRewrite.specific_fn.loc11_3.2 (constants.%OneRewrite.specific_fn.a2b)] // CHECK:STDOUT: %OneRewrite.call: init %empty_tuple.type = call %OneRewrite.specific_fn.loc11_3.1() // CHECK:STDOUT: return // CHECK:STDOUT: } @@ -600,7 +600,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %H.patt.loc10_20.2 => constants.%I // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.2 => constants.%OneRewrite.specific_fn.2 +// CHECK:STDOUT: %OneRewrite.specific_fn.loc11_3.2 => constants.%OneRewrite.specific_fn.74a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @RepeatedRewrite(@OneRewriteAgain.%I.loc14_20.2) {} @@ -778,33 +778,33 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %O.type: type = facet_type <@O> [template] -// CHECK:STDOUT: %Self.1: %O.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.75a: %O.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %O.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type = assoc_entity element0, @O.%P [template] +// CHECK:STDOUT: %assoc0.20f: %assoc_type = assoc_entity element0, @O.%P [template] // CHECK:STDOUT: %.Self: %O.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %O_where.type.1: type = facet_type <@O where %impl.elem0 = %i32> [template] -// CHECK:STDOUT: %Q: %O_where.type.1 = bind_symbolic_name Q, 0 [symbolic] -// CHECK:STDOUT: %Q.patt: %O_where.type.1 = symbolic_binding_pattern Q, 0 [symbolic] +// CHECK:STDOUT: %O_where.type.a0c: type = facet_type <@O where %impl.elem0 = %i32> [template] +// CHECK:STDOUT: %Q: %O_where.type.a0c = bind_symbolic_name Q, 0 [symbolic] +// CHECK:STDOUT: %Q.patt: %O_where.type.a0c = symbolic_binding_pattern Q, 0 [symbolic] // CHECK:STDOUT: %WithInteger.type: type = fn_type @WithInteger [template] // CHECK:STDOUT: %WithInteger: %WithInteger.type = struct_value () [template] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %O_where.type.2: type = facet_type <@O where %impl.elem0 = bool> [template] -// CHECK:STDOUT: %R: %O_where.type.2 = bind_symbolic_name R, 0 [symbolic] -// CHECK:STDOUT: %R.patt: %O_where.type.2 = symbolic_binding_pattern R, 0 [symbolic] +// CHECK:STDOUT: %O_where.type.0f2: type = facet_type <@O where %impl.elem0 = bool> [template] +// CHECK:STDOUT: %R: %O_where.type.0f2 = bind_symbolic_name R, 0 [symbolic] +// CHECK:STDOUT: %R.patt: %O_where.type.0f2 = symbolic_binding_pattern R, 0 [symbolic] // CHECK:STDOUT: %WithBool.type: type = fn_type @WithBool [template] // CHECK:STDOUT: %WithBool: %WithBool.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.5 -// CHECK:STDOUT: .ImplicitAs = %import_ref.6 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -820,52 +820,52 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %O.decl: type = interface_decl @O [template = constants.%O.type] {} {} // CHECK:STDOUT: %WithInteger.decl: %WithInteger.type = fn_decl @WithInteger [template = constants.%WithInteger] { -// CHECK:STDOUT: %Q.patt.loc8_16.1: %O_where.type.1 = symbolic_binding_pattern Q, 0 [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] -// CHECK:STDOUT: %Q.param_patt: %O_where.type.1 = value_param_pattern %Q.patt.loc8_16.1, runtime_param [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] +// CHECK:STDOUT: %Q.patt.loc8_16.1: %O_where.type.a0c = symbolic_binding_pattern Q, 0 [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] +// CHECK:STDOUT: %Q.param_patt: %O_where.type.a0c = value_param_pattern %Q.patt.loc8_16.1, runtime_param [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Q.param: %O_where.type.1 = value_param runtime_param -// CHECK:STDOUT: %.loc8_22.1: type = splice_block %.loc8_22.2 [template = constants.%O_where.type.1] { +// CHECK:STDOUT: %Q.param: %O_where.type.a0c = value_param runtime_param +// CHECK:STDOUT: %.loc8_22.1: type = splice_block %.loc8_22.2 [template = constants.%O_where.type.a0c] { // CHECK:STDOUT: %O.ref: type = name_ref O, file.%O.decl [template = constants.%O.type] // CHECK:STDOUT: %.Self: %O.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %O.type = name_ref .Self, %.Self [symbolic = constants.%.Self] -// CHECK:STDOUT: %P.ref: %assoc_type = name_ref P, @O.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %P.ref: %assoc_type = name_ref P, @O.%assoc0 [template = constants.%assoc0.20f] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc8_22.2: type = where_expr %.Self [template = constants.%O_where.type.1] { +// CHECK:STDOUT: %.loc8_22.2: type = where_expr %.Self [template = constants.%O_where.type.a0c] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %i32 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %Q.loc8_16.1: %O_where.type.1 = bind_symbolic_name Q, 0, %Q.param [symbolic = %Q.loc8_16.2 (constants.%Q)] +// CHECK:STDOUT: %Q.loc8_16.1: %O_where.type.a0c = bind_symbolic_name Q, 0, %Q.param [symbolic = %Q.loc8_16.2 (constants.%Q)] // CHECK:STDOUT: } // CHECK:STDOUT: %WithBool.decl: %WithBool.type = fn_decl @WithBool [template = constants.%WithBool] { -// CHECK:STDOUT: %R.patt.loc10_13.1: %O_where.type.2 = symbolic_binding_pattern R, 0 [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] -// CHECK:STDOUT: %R.param_patt: %O_where.type.2 = value_param_pattern %R.patt.loc10_13.1, runtime_param [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] +// CHECK:STDOUT: %R.patt.loc10_13.1: %O_where.type.0f2 = symbolic_binding_pattern R, 0 [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] +// CHECK:STDOUT: %R.param_patt: %O_where.type.0f2 = value_param_pattern %R.patt.loc10_13.1, runtime_param [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %R.param: %O_where.type.2 = value_param runtime_param -// CHECK:STDOUT: %.loc10_19.1: type = splice_block %.loc10_19.2 [template = constants.%O_where.type.2] { +// CHECK:STDOUT: %R.param: %O_where.type.0f2 = value_param runtime_param +// CHECK:STDOUT: %.loc10_19.1: type = splice_block %.loc10_19.2 [template = constants.%O_where.type.0f2] { // CHECK:STDOUT: %O.ref: type = name_ref O, file.%O.decl [template = constants.%O.type] // CHECK:STDOUT: %.Self: %O.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %O.type = name_ref .Self, %.Self [symbolic = constants.%.Self] -// CHECK:STDOUT: %P.ref: %assoc_type = name_ref P, @O.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %P.ref: %assoc_type = name_ref P, @O.%assoc0 [template = constants.%assoc0.20f] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc10_30.1: type = value_of_initializer %bool.make_type [template = bool] // CHECK:STDOUT: %.loc10_30.2: type = converted %bool.make_type, %.loc10_30.1 [template = bool] -// CHECK:STDOUT: %.loc10_19.2: type = where_expr %.Self [template = constants.%O_where.type.2] { +// CHECK:STDOUT: %.loc10_19.2: type = where_expr %.Self [template = constants.%O_where.type.0f2] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc10_30.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %R.loc10_13.1: %O_where.type.2 = bind_symbolic_name R, 0, %R.param [symbolic = %R.loc10_13.2 (constants.%R)] +// CHECK:STDOUT: %R.loc10_13.1: %O_where.type.0f2 = bind_symbolic_name R, 0, %R.param [symbolic = %R.loc10_13.2 (constants.%R)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @O { -// CHECK:STDOUT: %Self: %O.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %O.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.75a] // CHECK:STDOUT: %P: type = assoc_const_decl P [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %P [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %P [template = constants.%assoc0.20f] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -873,29 +873,29 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: witness = (%P) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WithInteger(%Q.loc8_16.1: %O_where.type.1) { -// CHECK:STDOUT: %Q.loc8_16.2: %O_where.type.1 = bind_symbolic_name Q, 0 [symbolic = %Q.loc8_16.2 (constants.%Q)] -// CHECK:STDOUT: %Q.patt.loc8_16.2: %O_where.type.1 = symbolic_binding_pattern Q, 0 [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] +// CHECK:STDOUT: generic fn @WithInteger(%Q.loc8_16.1: %O_where.type.a0c) { +// CHECK:STDOUT: %Q.loc8_16.2: %O_where.type.a0c = bind_symbolic_name Q, 0 [symbolic = %Q.loc8_16.2 (constants.%Q)] +// CHECK:STDOUT: %Q.patt.loc8_16.2: %O_where.type.a0c = symbolic_binding_pattern Q, 0 [symbolic = %Q.patt.loc8_16.2 (constants.%Q.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%Q.param_patt: %O_where.type.1) { +// CHECK:STDOUT: fn(%Q.param_patt: %O_where.type.a0c) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WithBool(%R.loc10_13.1: %O_where.type.2) { -// CHECK:STDOUT: %R.loc10_13.2: %O_where.type.2 = bind_symbolic_name R, 0 [symbolic = %R.loc10_13.2 (constants.%R)] -// CHECK:STDOUT: %R.patt.loc10_13.2: %O_where.type.2 = symbolic_binding_pattern R, 0 [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] +// CHECK:STDOUT: generic fn @WithBool(%R.loc10_13.1: %O_where.type.0f2) { +// CHECK:STDOUT: %R.loc10_13.2: %O_where.type.0f2 = bind_symbolic_name R, 0 [symbolic = %R.loc10_13.2 (constants.%R)] +// CHECK:STDOUT: %R.patt.loc10_13.2: %O_where.type.0f2 = symbolic_binding_pattern R, 0 [symbolic = %R.patt.loc10_13.2 (constants.%R.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%R.param_patt: %O_where.type.2) { +// CHECK:STDOUT: fn(%R.param_patt: %O_where.type.0f2) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %WithInteger.ref: %WithInteger.type = name_ref WithInteger, file.%WithInteger.decl [template = constants.%WithInteger] -// CHECK:STDOUT: %R.ref: %O_where.type.2 = name_ref R, %R.loc10_13.1 [symbolic = %R.loc10_13.2 (constants.%R)] -// CHECK:STDOUT: %.loc21: %O_where.type.1 = converted %R.ref, [template = ] +// CHECK:STDOUT: %R.ref: %O_where.type.0f2 = name_ref R, %R.loc10_13.1 [symbolic = %R.loc10_13.2 (constants.%R)] +// CHECK:STDOUT: %.loc21: %O_where.type.a0c = converted %R.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -914,30 +914,30 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %S.type: type = facet_type <@S> [template] -// CHECK:STDOUT: %Self.1: %S.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.27b: %S.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %S.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type = assoc_entity element0, @S.%T [template] +// CHECK:STDOUT: %assoc0.e49: %assoc_type = assoc_entity element0, @S.%T [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, @S.%U [template] // CHECK:STDOUT: %.Self: %S.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic] -// CHECK:STDOUT: %S_where.type.1: type = facet_type <@S where %impl.elem0 = %empty_tuple.type> [template] -// CHECK:STDOUT: %V: %S_where.type.1 = bind_symbolic_name V, 0 [symbolic] -// CHECK:STDOUT: %V.patt: %S_where.type.1 = symbolic_binding_pattern V, 0 [symbolic] +// CHECK:STDOUT: %S_where.type.e40: type = facet_type <@S where %impl.elem0 = %empty_tuple.type> [template] +// CHECK:STDOUT: %V: %S_where.type.e40 = bind_symbolic_name V, 0 [symbolic] +// CHECK:STDOUT: %V.patt: %S_where.type.e40 = symbolic_binding_pattern V, 0 [symbolic] // CHECK:STDOUT: %WithT.type: type = fn_type @WithT [template] // CHECK:STDOUT: %WithT: %WithT.type = struct_value () [template] // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit, element1 [symbolic] -// CHECK:STDOUT: %S_where.type.2: type = facet_type <@S where %impl.elem1 = %empty_tuple.type> [template] -// CHECK:STDOUT: %W: %S_where.type.2 = bind_symbolic_name W, 0 [symbolic] -// CHECK:STDOUT: %W.patt: %S_where.type.2 = symbolic_binding_pattern W, 0 [symbolic] +// CHECK:STDOUT: %S_where.type.357: type = facet_type <@S where %impl.elem1 = %empty_tuple.type> [template] +// CHECK:STDOUT: %W: %S_where.type.357 = bind_symbolic_name W, 0 [symbolic] +// CHECK:STDOUT: %W.patt: %S_where.type.357 = symbolic_binding_pattern W, 0 [symbolic] // CHECK:STDOUT: %WithU.type: type = fn_type @WithU [template] // CHECK:STDOUT: %WithU: %WithU.type = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -953,31 +953,31 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %S.decl: type = interface_decl @S [template = constants.%S.type] {} {} // CHECK:STDOUT: %WithT.decl: %WithT.type = fn_decl @WithT [template = constants.%WithT] { -// CHECK:STDOUT: %V.patt.loc9_10.1: %S_where.type.1 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] -// CHECK:STDOUT: %V.param_patt: %S_where.type.1 = value_param_pattern %V.patt.loc9_10.1, runtime_param [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] +// CHECK:STDOUT: %V.patt.loc9_10.1: %S_where.type.e40 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] +// CHECK:STDOUT: %V.param_patt: %S_where.type.e40 = value_param_pattern %V.patt.loc9_10.1, runtime_param [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %V.param: %S_where.type.1 = value_param runtime_param -// CHECK:STDOUT: %.loc9_16.1: type = splice_block %.loc9_16.2 [template = constants.%S_where.type.1] { +// CHECK:STDOUT: %V.param: %S_where.type.e40 = value_param runtime_param +// CHECK:STDOUT: %.loc9_16.1: type = splice_block %.loc9_16.2 [template = constants.%S_where.type.e40] { // CHECK:STDOUT: %S.ref: type = name_ref S, file.%S.decl [template = constants.%S.type] // CHECK:STDOUT: %.Self: %S.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %S.type = name_ref .Self, %.Self [symbolic = constants.%.Self] -// CHECK:STDOUT: %T.ref: %assoc_type = name_ref T, @S.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %T.ref: %assoc_type = name_ref T, @S.%assoc0 [template = constants.%assoc0.e49] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %.loc9_28.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc9_28.2: type = converted %.loc9_28.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc9_16.2: type = where_expr %.Self [template = constants.%S_where.type.1] { +// CHECK:STDOUT: %.loc9_16.2: type = where_expr %.Self [template = constants.%S_where.type.e40] { // CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc9_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %V.loc9_10.1: %S_where.type.1 = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc9_10.2 (constants.%V)] +// CHECK:STDOUT: %V.loc9_10.1: %S_where.type.e40 = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc9_10.2 (constants.%V)] // CHECK:STDOUT: } // CHECK:STDOUT: %WithU.decl: %WithU.type = fn_decl @WithU [template = constants.%WithU] { -// CHECK:STDOUT: %W.patt.loc11_10.1: %S_where.type.2 = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] -// CHECK:STDOUT: %W.param_patt: %S_where.type.2 = value_param_pattern %W.patt.loc11_10.1, runtime_param [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] +// CHECK:STDOUT: %W.patt.loc11_10.1: %S_where.type.357 = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] +// CHECK:STDOUT: %W.param_patt: %S_where.type.357 = value_param_pattern %W.patt.loc11_10.1, runtime_param [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] // CHECK:STDOUT: } { -// CHECK:STDOUT: %W.param: %S_where.type.2 = value_param runtime_param -// CHECK:STDOUT: %.loc11_16.1: type = splice_block %.loc11_16.2 [template = constants.%S_where.type.2] { +// CHECK:STDOUT: %W.param: %S_where.type.357 = value_param runtime_param +// CHECK:STDOUT: %.loc11_16.1: type = splice_block %.loc11_16.2 [template = constants.%S_where.type.357] { // CHECK:STDOUT: %S.ref: type = name_ref S, file.%S.decl [template = constants.%S.type] // CHECK:STDOUT: %.Self: %S.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %S.type = name_ref .Self, %.Self [symbolic = constants.%.Self] @@ -986,18 +986,18 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit, element1 [symbolic = constants.%impl.elem1] // CHECK:STDOUT: %.loc11_28.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %.loc11_28.2: type = converted %.loc11_28.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type] -// CHECK:STDOUT: %.loc11_16.2: type = where_expr %.Self [template = constants.%S_where.type.2] { +// CHECK:STDOUT: %.loc11_16.2: type = where_expr %.Self [template = constants.%S_where.type.357] { // CHECK:STDOUT: requirement_rewrite %impl.elem1, %.loc11_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: } -// CHECK:STDOUT: %W.loc11_10.1: %S_where.type.2 = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc11_10.2 (constants.%W)] +// CHECK:STDOUT: %W.loc11_10.1: %S_where.type.357 = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc11_10.2 (constants.%W)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @S { -// CHECK:STDOUT: %Self: %S.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %S.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.27b] // CHECK:STDOUT: %T: type = assoc_const_decl T [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %T [template = constants.%assoc0.e49] // CHECK:STDOUT: %U: type = assoc_const_decl U [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, %U [template = constants.%assoc1] // CHECK:STDOUT: @@ -1008,29 +1008,29 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: witness = (%T, %U) // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WithT(%V.loc9_10.1: %S_where.type.1) { -// CHECK:STDOUT: %V.loc9_10.2: %S_where.type.1 = bind_symbolic_name V, 0 [symbolic = %V.loc9_10.2 (constants.%V)] -// CHECK:STDOUT: %V.patt.loc9_10.2: %S_where.type.1 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] +// CHECK:STDOUT: generic fn @WithT(%V.loc9_10.1: %S_where.type.e40) { +// CHECK:STDOUT: %V.loc9_10.2: %S_where.type.e40 = bind_symbolic_name V, 0 [symbolic = %V.loc9_10.2 (constants.%V)] +// CHECK:STDOUT: %V.patt.loc9_10.2: %S_where.type.e40 = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc9_10.2 (constants.%V.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%V.param_patt: %S_where.type.1) { +// CHECK:STDOUT: fn(%V.param_patt: %S_where.type.e40) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @WithU(%W.loc11_10.1: %S_where.type.2) { -// CHECK:STDOUT: %W.loc11_10.2: %S_where.type.2 = bind_symbolic_name W, 0 [symbolic = %W.loc11_10.2 (constants.%W)] -// CHECK:STDOUT: %W.patt.loc11_10.2: %S_where.type.2 = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] +// CHECK:STDOUT: generic fn @WithU(%W.loc11_10.1: %S_where.type.357) { +// CHECK:STDOUT: %W.loc11_10.2: %S_where.type.357 = bind_symbolic_name W, 0 [symbolic = %W.loc11_10.2 (constants.%W)] +// CHECK:STDOUT: %W.patt.loc11_10.2: %S_where.type.357 = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc11_10.2 (constants.%W.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: -// CHECK:STDOUT: fn(%W.param_patt: %S_where.type.2) { +// CHECK:STDOUT: fn(%W.param_patt: %S_where.type.357) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %WithT.ref: %WithT.type = name_ref WithT, file.%WithT.decl [template = constants.%WithT] -// CHECK:STDOUT: %W.ref: %S_where.type.2 = name_ref W, %W.loc11_10.1 [symbolic = %W.loc11_10.2 (constants.%W)] -// CHECK:STDOUT: %.loc22: %S_where.type.1 = converted %W.ref, [template = ] +// CHECK:STDOUT: %W.ref: %S_where.type.357 = name_ref W, %W.loc11_10.1 [symbolic = %W.loc11_10.2 (constants.%W)] +// CHECK:STDOUT: %.loc22: %S_where.type.e40 = converted %W.ref, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -1055,10 +1055,10 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %Equal: %Equal.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %N.type: type = facet_type <@N> [template] -// CHECK:STDOUT: %.Self.1: %N.type = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_wit.1: = facet_access_witness %.Self.1 [symbolic] -// CHECK:STDOUT: %impl.elem0.1: type = impl_witness_access %.Self.as_wit.1, element0 [symbolic] -// CHECK:STDOUT: %N_where.type: type = facet_type <@N where %impl.elem0.1 = %empty_struct_type> [template] +// CHECK:STDOUT: %.Self.9aa: %N.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_wit.cef: = facet_access_witness %.Self.9aa [symbolic] +// CHECK:STDOUT: %impl.elem0.51b: type = impl_witness_access %.Self.as_wit.cef, element0 [symbolic] +// CHECK:STDOUT: %N_where.type: type = facet_type <@N where %impl.elem0.51b = %empty_struct_type> [template] // CHECK:STDOUT: %T: %N_where.type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: %N_where.type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] @@ -1066,48 +1066,48 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %NestedRewrite.type: type = fn_type @NestedRewrite [template] // CHECK:STDOUT: %NestedRewrite: %NestedRewrite.type = struct_value () [template] // CHECK:STDOUT: %A.type: type = facet_type <@A> [template] -// CHECK:STDOUT: %.Self.2: %A.type = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_wit.2: = facet_access_witness %.Self.2 [symbolic] -// CHECK:STDOUT: %impl.elem0.2: type = impl_witness_access %.Self.as_wit.2, element0 [symbolic] -// CHECK:STDOUT: %A_where.type.1: type = facet_type <@A where %impl.elem0.2 = bool> [template] -// CHECK:STDOUT: %.Self.3: %A_where.type.1 = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_wit.3: = facet_access_witness %.Self.3 [symbolic] -// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit.3, element1 [symbolic] -// CHECK:STDOUT: %A_where.type.2: type = facet_type <@A where %impl.elem1 = %empty_tuple.type and %impl.elem0.2 = bool> [template] -// CHECK:STDOUT: %D: %A_where.type.2 = bind_symbolic_name D, 0 [symbolic] -// CHECK:STDOUT: %D.patt: %A_where.type.2 = symbolic_binding_pattern D, 0 [symbolic] +// CHECK:STDOUT: %.Self.3ca: %A.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_wit.794: = facet_access_witness %.Self.3ca [symbolic] +// CHECK:STDOUT: %impl.elem0.1d3: type = impl_witness_access %.Self.as_wit.794, element0 [symbolic] +// CHECK:STDOUT: %A_where.type.ef9: type = facet_type <@A where %impl.elem0.1d3 = bool> [template] +// CHECK:STDOUT: %.Self.e46: %A_where.type.ef9 = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_wit.a35: = facet_access_witness %.Self.e46 [symbolic] +// CHECK:STDOUT: %impl.elem1: type = impl_witness_access %.Self.as_wit.a35, element1 [symbolic] +// CHECK:STDOUT: %A_where.type.791: type = facet_type <@A where %impl.elem1 = %empty_tuple.type and %impl.elem0.1d3 = bool> [template] +// CHECK:STDOUT: %D: %A_where.type.791 = bind_symbolic_name D, 0 [symbolic] +// CHECK:STDOUT: %D.patt: %A_where.type.791 = symbolic_binding_pattern D, 0 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %import_ref.1 = import_ref Main//equal_constraint, N, unloaded -// CHECK:STDOUT: %import_ref.2: %Equal.type = import_ref Main//equal_constraint, Equal, loaded [template = constants.%Equal] -// CHECK:STDOUT: %import_ref.3 = import_ref Main//nested_rewrites, A, unloaded -// CHECK:STDOUT: %import_ref.4: %NestedRewrite.type = import_ref Main//nested_rewrites, NestedRewrite, loaded [template = constants.%NestedRewrite] +// CHECK:STDOUT: %import_ref.a90 = import_ref Main//equal_constraint, N, unloaded +// CHECK:STDOUT: %import_ref.439: %Equal.type = import_ref Main//equal_constraint, Equal, loaded [template = constants.%Equal] +// CHECK:STDOUT: %import_ref.fdd = import_ref Main//nested_rewrites, A, unloaded +// CHECK:STDOUT: %import_ref.b00: %NestedRewrite.type = import_ref Main//nested_rewrites, NestedRewrite, loaded [template = constants.%NestedRewrite] // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.8 -// CHECK:STDOUT: .ImplicitAs = %import_ref.9 -// CHECK:STDOUT: .Int = %import_ref.20 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %import_ref.5 = import_ref Main//equal_constraint, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.6 = import_ref Main//equal_constraint, loc5_15, unloaded -// CHECK:STDOUT: %import_ref.7 = import_ref Main//equal_constraint, P, unloaded -// CHECK:STDOUT: %import_ref.15 = import_ref Main//nested_rewrites, inst17 [no loc], unloaded -// CHECK:STDOUT: %import_ref.16 = import_ref Main//nested_rewrites, loc5_15, unloaded -// CHECK:STDOUT: %import_ref.17 = import_ref Main//nested_rewrites, loc6_15, unloaded -// CHECK:STDOUT: %import_ref.18 = import_ref Main//nested_rewrites, B, unloaded -// CHECK:STDOUT: %import_ref.19 = import_ref Main//nested_rewrites, C, unloaded +// CHECK:STDOUT: %import_ref.6a8 = import_ref Main//equal_constraint, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.d17 = import_ref Main//equal_constraint, loc5_15, unloaded +// CHECK:STDOUT: %import_ref.77a = import_ref Main//equal_constraint, P, unloaded +// CHECK:STDOUT: %import_ref.b09 = import_ref Main//nested_rewrites, inst17 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2a9 = import_ref Main//nested_rewrites, loc5_15, unloaded +// CHECK:STDOUT: %import_ref.508 = import_ref Main//nested_rewrites, loc6_15, unloaded +// CHECK:STDOUT: %import_ref.75c = import_ref Main//nested_rewrites, B, unloaded +// CHECK:STDOUT: %import_ref.aff = import_ref Main//nested_rewrites, C, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [template] { -// CHECK:STDOUT: .N = imports.%import_ref.1 -// CHECK:STDOUT: .Equal = imports.%import_ref.2 -// CHECK:STDOUT: .A = imports.%import_ref.3 -// CHECK:STDOUT: .NestedRewrite = imports.%import_ref.4 +// CHECK:STDOUT: .N = imports.%import_ref.a90 +// CHECK:STDOUT: .Equal = imports.%import_ref.439 +// CHECK:STDOUT: .A = imports.%import_ref.fdd +// CHECK:STDOUT: .NestedRewrite = imports.%import_ref.b00 // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Calls = %Calls.decl // CHECK:STDOUT: } @@ -1118,28 +1118,28 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: interface @N [from "equal_constraint.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.5 -// CHECK:STDOUT: .P = imports.%import_ref.6 -// CHECK:STDOUT: witness = (imports.%import_ref.7) +// CHECK:STDOUT: .Self = imports.%import_ref.6a8 +// CHECK:STDOUT: .P = imports.%import_ref.d17 +// CHECK:STDOUT: witness = (imports.%import_ref.77a) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A [from "nested_rewrites.carbon"] { // CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%import_ref.15 -// CHECK:STDOUT: .B = imports.%import_ref.16 -// CHECK:STDOUT: .C = imports.%import_ref.17 -// CHECK:STDOUT: witness = (imports.%import_ref.18, imports.%import_ref.19) +// CHECK:STDOUT: .Self = imports.%import_ref.b09 +// CHECK:STDOUT: .B = imports.%import_ref.2a9 +// CHECK:STDOUT: .C = imports.%import_ref.508 +// CHECK:STDOUT: witness = (imports.%import_ref.75c, imports.%import_ref.aff) // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Calls() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Equal.ref: %Equal.type = name_ref Equal, imports.%import_ref.2 [template = constants.%Equal] +// CHECK:STDOUT: %Equal.ref: %Equal.type = name_ref Equal, imports.%import_ref.439 [template = constants.%Equal] // CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool] // CHECK:STDOUT: %.loc19: %N_where.type = converted %bool.make_type, [template = ] -// CHECK:STDOUT: %NestedRewrite.ref: %NestedRewrite.type = name_ref NestedRewrite, imports.%import_ref.4 [template = constants.%NestedRewrite] +// CHECK:STDOUT: %NestedRewrite.ref: %NestedRewrite.type = name_ref NestedRewrite, imports.%import_ref.b00 [template = constants.%NestedRewrite] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32] -// CHECK:STDOUT: %.loc32: %A_where.type.2 = converted %i32, [template = ] +// CHECK:STDOUT: %.loc32: %A_where.type.791 = converted %i32, [template = ] // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1150,11 +1150,11 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: fn(%T.param_patt: %N_where.type); // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @NestedRewrite(constants.%D: %A_where.type.2) [from "nested_rewrites.carbon"] { -// CHECK:STDOUT: %D: %A_where.type.2 = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)] -// CHECK:STDOUT: %D.patt: %A_where.type.2 = symbolic_binding_pattern D, 0 [symbolic = %D.patt (constants.%D.patt)] +// CHECK:STDOUT: generic fn @NestedRewrite(constants.%D: %A_where.type.791) [from "nested_rewrites.carbon"] { +// CHECK:STDOUT: %D: %A_where.type.791 = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)] +// CHECK:STDOUT: %D.patt: %A_where.type.791 = symbolic_binding_pattern D, 0 [symbolic = %D.patt (constants.%D.patt)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%D.param_patt: %A_where.type.2); +// CHECK:STDOUT: fn(%D.param_patt: %A_where.type.791); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Equal(constants.%T) { @@ -1171,9 +1171,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] -// CHECK:STDOUT: %Self.1: %I.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.fb7: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %I.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type = assoc_entity element0, @I.%Member [template] +// CHECK:STDOUT: %assoc0.ea2: %assoc_type = assoc_entity element0, @I.%Member [template] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self [symbolic] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic] @@ -1185,7 +1185,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1208,7 +1208,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type] // CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self] // CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self] -// CHECK:STDOUT: %Member.ref: %assoc_type = name_ref Member, @I.%assoc0 [template = constants.%assoc0.1] +// CHECK:STDOUT: %Member.ref: %assoc_type = name_ref Member, @I.%assoc0 [template = constants.%assoc0.ea2] // CHECK:STDOUT: %.Self.as_wit: = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit] // CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2] @@ -1222,9 +1222,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { -// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.fb7] // CHECK:STDOUT: %Member: type = assoc_const_decl Member [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %Member [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %Member [template = constants.%assoc0.ea2] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1246,7 +1246,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = facet_type <@A> [template] -// CHECK:STDOUT: %Self.1: %A.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.2a0: %A.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] @@ -1256,7 +1256,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1280,7 +1280,7 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @A { -// CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2a0] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self @@ -1312,38 +1312,38 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %E.type: type = facet_type <@E> [template] -// CHECK:STDOUT: %Self.1: %E.type = bind_symbolic_name Self, 0 [symbolic] +// CHECK:STDOUT: %Self.342: %E.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %assoc_type: type = assoc_entity_type %E.type, type [template] -// CHECK:STDOUT: %assoc0.1: %assoc_type = assoc_entity element0, @E.%F [template] +// CHECK:STDOUT: %assoc0.4b1: %assoc_type = assoc_entity element0, @E.%F [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, @E.%G [template] -// CHECK:STDOUT: %.Self.1: %E.type = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.da5: %E.type = bind_symbolic_name .Self [symbolic] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] -// CHECK:STDOUT: %.Self.as_wit.1: = facet_access_witness %.Self.1 [symbolic] -// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.1, element0 [symbolic] +// CHECK:STDOUT: %.Self.as_wit.f42: = facet_access_witness %.Self.da5 [symbolic] +// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit.f42, element0 [symbolic] // CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template] // CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template] -// CHECK:STDOUT: %impl.elem1.1: type = impl_witness_access %.Self.as_wit.1, element1 [symbolic] -// CHECK:STDOUT: %E_where.type.1: type = facet_type <@E where %impl.elem1.1 = %empty_tuple.type and %impl.elem0 = bool> [template] +// CHECK:STDOUT: %impl.elem1.91f: type = impl_witness_access %.Self.as_wit.f42, element1 [symbolic] +// CHECK:STDOUT: %E_where.type.366: type = facet_type <@E where %impl.elem1.91f = %empty_tuple.type and %impl.elem0 = bool> [template] // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template] // CHECK:STDOUT: %Float.type: type = fn_type @Float [template] // CHECK:STDOUT: %Float: %Float.type = struct_value () [template] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] -// CHECK:STDOUT: %E_where.type.2: type = facet_type <@E where %impl.elem0 = %empty_struct_type> [template] -// CHECK:STDOUT: %.Self.2: %E_where.type.2 = bind_symbolic_name .Self [symbolic] -// CHECK:STDOUT: %.Self.as_wit.2: = facet_access_witness %.Self.2 [symbolic] -// CHECK:STDOUT: %impl.elem1.2: type = impl_witness_access %.Self.as_wit.2, element1 [symbolic] +// CHECK:STDOUT: %E_where.type.324: type = facet_type <@E where %impl.elem0 = %empty_struct_type> [template] +// CHECK:STDOUT: %.Self.665: %E_where.type.324 = bind_symbolic_name .Self [symbolic] +// CHECK:STDOUT: %.Self.as_wit.bb3: = facet_access_witness %.Self.665 [symbolic] +// CHECK:STDOUT: %impl.elem1.244: type = impl_witness_access %.Self.as_wit.bb3, element1 [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template] -// CHECK:STDOUT: %E_where.type.3: type = facet_type <@E where %impl.elem1.2 = %i32 and %impl.elem0 = %empty_struct_type> [template] -// CHECK:STDOUT: %E_where.type.4: type = facet_type <@E where %impl.elem0 = %impl.elem1.1> [template] +// CHECK:STDOUT: %E_where.type.dbc: type = facet_type <@E where %impl.elem1.244 = %i32 and %impl.elem0 = %empty_struct_type> [template] +// CHECK:STDOUT: %E_where.type.503: type = facet_type <@E where %impl.elem0 = %impl.elem1.91f> [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Bool = %import_ref.1 -// CHECK:STDOUT: .Float = %import_ref.2 -// CHECK:STDOUT: .ImplicitAs = %import_ref.3 -// CHECK:STDOUT: .Int = %import_ref.9 +// CHECK:STDOUT: .Bool = %import_ref.f7c +// CHECK:STDOUT: .Float = %import_ref.20b +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } @@ -1362,9 +1362,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: interface @E { -// CHECK:STDOUT: %Self: %E.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1] +// CHECK:STDOUT: %Self: %E.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.342] // CHECK:STDOUT: %F: type = assoc_const_decl F [template] -// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %F [template = constants.%assoc0.1] +// CHECK:STDOUT: %assoc0: %assoc_type = assoc_entity element0, %F [template = constants.%assoc0.4b1] // CHECK:STDOUT: %G: type = assoc_const_decl G [template] // CHECK:STDOUT: %assoc1: %assoc_type = assoc_entity element1, %G [template = constants.%assoc1] // CHECK:STDOUT: @@ -1379,14 +1379,14 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template = constants.%int_64] // CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [template = f64] -// CHECK:STDOUT: %.loc18: %E_where.type.1 = converted %float.make_type, [template = ] -// CHECK:STDOUT: %H: %E_where.type.1 = bind_name H, +// CHECK:STDOUT: %.loc18: %E_where.type.366 = converted %float.make_type, [template = ] +// CHECK:STDOUT: %H: %E_where.type.366 = bind_name H, // CHECK:STDOUT: %bool.make_type.loc27: init type = call constants.%Bool() [template = bool] -// CHECK:STDOUT: %.loc27: %E_where.type.3 = converted %bool.make_type.loc27, [template = ] -// CHECK:STDOUT: %J: %E_where.type.3 = bind_name J, +// CHECK:STDOUT: %.loc27: %E_where.type.dbc = converted %bool.make_type.loc27, [template = ] +// CHECK:STDOUT: %J: %E_where.type.dbc = bind_name J, // CHECK:STDOUT: %bool.make_type.loc35: init type = call constants.%Bool() [template = bool] -// CHECK:STDOUT: %.loc35: %E_where.type.4 = converted %bool.make_type.loc35, [template = ] -// CHECK:STDOUT: %K: %E_where.type.4 = bind_name K, +// CHECK:STDOUT: %.loc35: %E_where.type.503 = converted %bool.make_type.loc35, [template = ] +// CHECK:STDOUT: %K: %E_where.type.503 = bind_name K, // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/where_expr/fail_not_facet.carbon b/toolchain/check/testdata/where_expr/fail_not_facet.carbon index 149afd9513b7..b93cf0ad369b 100644 --- a/toolchain/check/testdata/where_expr/fail_not_facet.carbon +++ b/toolchain/check/testdata/where_expr/fail_not_facet.carbon @@ -51,8 +51,8 @@ var v: e where .x = 3; // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 -// CHECK:STDOUT: .Bool = %import_ref.5 +// CHECK:STDOUT: .Int = %import_ref.187 +// CHECK:STDOUT: .Bool = %import_ref.f7c // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/where_expr/non_generic.carbon b/toolchain/check/testdata/where_expr/non_generic.carbon index aa2d81a9ffe1..2bf7654c78ff 100644 --- a/toolchain/check/testdata/where_expr/non_generic.carbon +++ b/toolchain/check/testdata/where_expr/non_generic.carbon @@ -32,7 +32,7 @@ fn NotGenericF(U: I where .T == i32) {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .Int = %import_ref.1 +// CHECK:STDOUT: .Int = %import_ref.187 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/while/fail_bad_condition.carbon b/toolchain/check/testdata/while/fail_bad_condition.carbon index c8836c528c30..0f5099291589 100644 --- a/toolchain/check/testdata/while/fail_bad_condition.carbon +++ b/toolchain/check/testdata/while/fail_bad_condition.carbon @@ -28,7 +28,7 @@ fn While() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [template] { -// CHECK:STDOUT: .ImplicitAs = %import_ref.1 +// CHECK:STDOUT: .ImplicitAs = %import_ref.a69 // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } diff --git a/toolchain/lower/testdata/array/base.carbon b/toolchain/lower/testdata/array/base.carbon index 4d3ce6ed87f3..d006746e01bd 100644 --- a/toolchain/lower/testdata/array/base.carbon +++ b/toolchain/lower/testdata/array/base.carbon @@ -19,9 +19,9 @@ fn Run() { // CHECK:STDOUT: ; ModuleID = 'base.carbon' // CHECK:STDOUT: source_filename = "base.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @array.1.loc12_25 = internal constant [1 x i32] [i32 1] -// CHECK:STDOUT: @array.2.loc13_33 = internal constant [2 x double] [double 0x4026333333333334, double 2.200000e+00] -// CHECK:STDOUT: @array.3.loc14_41 = internal constant [5 x {}] zeroinitializer +// CHECK:STDOUT: @array.0e3.loc12_25 = internal constant [1 x i32] [i32 1] +// CHECK:STDOUT: @array.6a2.loc13_33 = internal constant [2 x double] [double 0x4026333333333334, double 2.200000e+00] +// CHECK:STDOUT: @array.1cb.loc14_41 = internal constant [5 x {}] zeroinitializer // CHECK:STDOUT: @tuple.loc15_37 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @main() !dbg !4 { @@ -33,18 +33,18 @@ fn Run() { // CHECK:STDOUT: %e.var = alloca [3 x i32], align 4, !dbg !7 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 4, ptr %a.var), !dbg !7 // CHECK:STDOUT: %.loc12_24.3.array.index = getelementptr inbounds [1 x i32], ptr %a.var, i32 0, i64 0, !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @array.1.loc12_25, i64 4, i1 false), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @array.0e3.loc12_25, i64 4, i1 false), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 16, ptr %b.var), !dbg !7 // CHECK:STDOUT: %.loc13_32.2.array.index = getelementptr inbounds [2 x double], ptr %b.var, i32 0, i64 0, !dbg !10 // CHECK:STDOUT: %.loc13_32.4.array.index = getelementptr inbounds [2 x double], ptr %b.var, i32 0, i64 1, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %b.var, ptr align 8 @array.2.loc13_33, i64 16, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %b.var, ptr align 8 @array.6a2.loc13_33, i64 16, i1 false), !dbg !11 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 0, ptr %c.var), !dbg !7 // CHECK:STDOUT: %.loc14_40.2.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 0, !dbg !12 // CHECK:STDOUT: %.loc14_40.4.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 1, !dbg !12 // CHECK:STDOUT: %.loc14_40.6.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 2, !dbg !12 // CHECK:STDOUT: %.loc14_40.8.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 3, !dbg !12 // CHECK:STDOUT: %.loc14_40.10.array.index = getelementptr inbounds [5 x {}], ptr %c.var, i32 0, i64 4, !dbg !12 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @array.3.loc14_41, i64 0, i1 false), !dbg !13 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %c.var, ptr align 1 @array.1cb.loc14_41, i64 0, i1 false), !dbg !13 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 12, ptr %d.var), !dbg !7 // CHECK:STDOUT: %tuple.elem0.loc15.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 0, !dbg !14 // CHECK:STDOUT: %tuple.elem1.loc15.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %d.var, i32 0, i32 1, !dbg !14 diff --git a/toolchain/lower/testdata/basics/numeric_literals.carbon b/toolchain/lower/testdata/basics/numeric_literals.carbon index ee9d8c92778f..d25f4c42c3b1 100644 --- a/toolchain/lower/testdata/basics/numeric_literals.carbon +++ b/toolchain/lower/testdata/basics/numeric_literals.carbon @@ -30,8 +30,8 @@ fn F() { // CHECK:STDOUT: ; ModuleID = 'numeric_literals.carbon' // CHECK:STDOUT: source_filename = "numeric_literals.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @array.1.loc19_4 = internal constant [4 x i32] [i32 8, i32 9, i32 8, i32 8] -// CHECK:STDOUT: @array.2.loc27_4 = internal constant [6 x double] [double 9.000000e-01, double 8.000000e+00, double 8.000000e+01, double 1.000000e+07, double 1.000000e+08, double 1.000000e-08] +// CHECK:STDOUT: @array.e55.loc19_4 = internal constant [4 x i32] [i32 8, i32 9, i32 8, i32 8] +// CHECK:STDOUT: @array.a2f.loc27_4 = internal constant [6 x double] [double 9.000000e-01, double 8.000000e+00, double 8.000000e+01, double 1.000000e+07, double 1.000000e+08, double 1.000000e-08] // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main() !dbg !4 { // CHECK:STDOUT: entry: @@ -42,7 +42,7 @@ fn F() { // CHECK:STDOUT: %.loc19_3.6.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 1, !dbg !8 // CHECK:STDOUT: %.loc19_3.9.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 2, !dbg !8 // CHECK:STDOUT: %.loc19_3.12.array.index = getelementptr inbounds [4 x i32], ptr %ints.var, i32 0, i64 3, !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %ints.var, ptr align 4 @array.1.loc19_4, i64 16, i1 false), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %ints.var, ptr align 4 @array.e55.loc19_4, i64 16, i1 false), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 48, ptr %floats.var), !dbg !7 // CHECK:STDOUT: %.loc27_3.2.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 0, !dbg !10 // CHECK:STDOUT: %.loc27_3.4.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 1, !dbg !10 @@ -50,7 +50,7 @@ fn F() { // CHECK:STDOUT: %.loc27_3.8.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 3, !dbg !10 // CHECK:STDOUT: %.loc27_3.10.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 4, !dbg !10 // CHECK:STDOUT: %.loc27_3.12.array.index = getelementptr inbounds [6 x double], ptr %floats.var, i32 0, i64 5, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %floats.var, ptr align 8 @array.2.loc27_4, i64 48, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %floats.var, ptr align 8 @array.a2f.loc27_4, i64 48, i1 false), !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/struct_param.carbon b/toolchain/lower/testdata/function/call/struct_param.carbon index 84798b5bfb9e..af4b3d968520 100644 --- a/toolchain/lower/testdata/function/call/struct_param.carbon +++ b/toolchain/lower/testdata/function/call/struct_param.carbon @@ -17,7 +17,7 @@ fn Main() { // CHECK:STDOUT: ; ModuleID = 'struct_param.carbon' // CHECK:STDOUT: source_filename = "struct_param.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @struct.2.loc14_34.6 = internal constant { i32, i32 } { i32 2, i32 3 } +// CHECK:STDOUT: @struct.eee.loc14_34.6 = internal constant { i32, i32 } { i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main({ i32 } %b, ptr %c) !dbg !4 { // CHECK:STDOUT: entry: @@ -26,7 +26,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CMain.Main() !dbg !8 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CF.Main({ i32 } { i32 1 }, ptr @struct.2.loc14_34.6), !dbg !9 +// CHECK:STDOUT: call void @_CF.Main({ i32 } { i32 1 }, ptr @struct.eee.loc14_34.6), !dbg !9 // CHECK:STDOUT: ret void, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/tuple_param.carbon b/toolchain/lower/testdata/function/call/tuple_param.carbon index ba7214abbe83..47a60e6d4139 100644 --- a/toolchain/lower/testdata/function/call/tuple_param.carbon +++ b/toolchain/lower/testdata/function/call/tuple_param.carbon @@ -17,7 +17,7 @@ fn Main() { // CHECK:STDOUT: ; ModuleID = 'tuple_param.carbon' // CHECK:STDOUT: source_filename = "tuple_param.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.2.loc14_20.6 = internal constant { i32, i32 } { i32 2, i32 3 } +// CHECK:STDOUT: @tuple.44c.loc14_20.6 = internal constant { i32, i32 } { i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main({ i32 } %b, ptr %c) !dbg !4 { // CHECK:STDOUT: entry: @@ -26,7 +26,7 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: define void @_CMain.Main() !dbg !8 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: call void @_CF.Main({ i32 } { i32 1 }, ptr @tuple.2.loc14_20.6), !dbg !9 +// CHECK:STDOUT: call void @_CF.Main({ i32 } { i32 1 }, ptr @tuple.44c.loc14_20.6), !dbg !9 // CHECK:STDOUT: ret void, !dbg !10 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon b/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon index 9e9864c26a2b..05ffc4c99ed8 100644 --- a/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon +++ b/toolchain/lower/testdata/function/call/tuple_param_with_return_slot.carbon @@ -19,7 +19,7 @@ fn Main() { // CHECK:STDOUT: ; ModuleID = 'tuple_param_with_return_slot.carbon' // CHECK:STDOUT: source_filename = "tuple_param_with_return_slot.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.2.loc16_20.6 = internal constant { i32, i32 } { i32 2, i32 3 } +// CHECK:STDOUT: @tuple.44c.loc16_20.6 = internal constant { i32, i32 } { i32 2, i32 3 } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CF.Main(ptr sret({ i32, i32, i32 }) %return, { i32 } %b, ptr %c) !dbg !4 { // CHECK:STDOUT: entry: @@ -40,7 +40,7 @@ fn Main() { // CHECK:STDOUT: define void @_CMain.Main() !dbg !12 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %.loc16_21.1.temp = alloca { i32, i32, i32 }, align 8, !dbg !13 -// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_21.1.temp, { i32 } { i32 1 }, ptr @tuple.2.loc16_20.6), !dbg !13 +// CHECK:STDOUT: call void @_CF.Main(ptr %.loc16_21.1.temp, { i32 } { i32 1 }, ptr @tuple.44c.loc16_20.6), !dbg !13 // CHECK:STDOUT: ret void, !dbg !14 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/lower/testdata/let/tuple.carbon b/toolchain/lower/testdata/let/tuple.carbon index 2828aa23e094..12e390360012 100644 --- a/toolchain/lower/testdata/let/tuple.carbon +++ b/toolchain/lower/testdata/let/tuple.carbon @@ -18,8 +18,8 @@ fn F() -> i32 { // CHECK:STDOUT: ; ModuleID = 'tuple.carbon' // CHECK:STDOUT: source_filename = "tuple.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.1.loc12_37 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } -// CHECK:STDOUT: @tuple.2.loc13_29 = internal constant { i32, i32 } { i32 4, i32 5 } +// CHECK:STDOUT: @tuple.3ea.loc12_37 = internal constant { i32, i32, i32 } { i32 1, i32 2, i32 3 } +// CHECK:STDOUT: @tuple.654.loc13_29 = internal constant { i32, i32 } { i32 4, i32 5 } // CHECK:STDOUT: // CHECK:STDOUT: define i32 @_CF.Main() !dbg !4 { // CHECK:STDOUT: entry: @@ -29,11 +29,11 @@ fn F() -> i32 { // CHECK:STDOUT: %tuple.elem0.loc12.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 0, !dbg !8 // CHECK:STDOUT: %tuple.elem1.loc12.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 1, !dbg !8 // CHECK:STDOUT: %tuple.elem2.loc12.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 2, !dbg !8 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @tuple.1.loc12_37, i64 12, i1 false), !dbg !9 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %a.var, ptr align 4 @tuple.3ea.loc12_37, i64 12, i1 false), !dbg !9 // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %b.var), !dbg !7 // CHECK:STDOUT: %tuple.elem0.loc13.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %tuple.elem1.loc13.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.2.loc13_29, i64 8, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.654.loc13_29, i64 8, i1 false), !dbg !11 // CHECK:STDOUT: %tuple.elem0.loc14_43.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 0, !dbg !12 // CHECK:STDOUT: %.loc14_43.1 = load i32, ptr %tuple.elem0.loc14_43.tuple.elem, align 4, !dbg !12 // CHECK:STDOUT: %tuple.elem1.loc14_43.tuple.elem = getelementptr inbounds nuw { i32, i32, i32 }, ptr %a.var, i32 0, i32 1, !dbg !12 diff --git a/toolchain/sem_ir/BUILD b/toolchain/sem_ir/BUILD index f2b7af3fab30..72e5dee71ab7 100644 --- a/toolchain/sem_ir/BUILD +++ b/toolchain/sem_ir/BUILD @@ -141,14 +141,21 @@ cc_library( cc_library( name = "inst_namer", - srcs = ["inst_namer.cpp"], - hdrs = ["inst_namer.h"], + srcs = [ + "inst_fingerprinter.cpp", + "inst_namer.cpp", + ], + hdrs = [ + "inst_fingerprinter.h", + "inst_namer.h", + ], deps = [ ":file", ":typed_insts", "//common:ostream", "//toolchain/base:kind_switch", "//toolchain/base:shared_value_stores", + "//toolchain/base:value_ids", "//toolchain/lex:tokenized_buffer", "//toolchain/parse:tree", "@llvm-project//llvm:Support", diff --git a/toolchain/sem_ir/inst.h b/toolchain/sem_ir/inst.h index ab616ed9cea5..17929a94183d 100644 --- a/toolchain/sem_ir/inst.h +++ b/toolchain/sem_ir/inst.h @@ -256,6 +256,21 @@ class Inst : public Printable { arg1_ = arg1; } + // Convert a field to its raw representation, used as `arg0_` / `arg1_`. + static constexpr auto ToRaw(AnyIdBase base) -> int32_t { return base.index; } + static constexpr auto ToRaw(IntId id) -> int32_t { return id.AsRaw(); } + + // Convert a field from its raw representation. + template + requires IdKind::Contains + static constexpr auto FromRaw(int32_t raw) -> T { + return T(raw); + } + template <> + constexpr auto FromRaw(int32_t raw) -> IntId { + return IntId::MakeRaw(raw); + } + auto Print(llvm::raw_ostream& out) const -> void; friend auto operator==(Inst lhs, Inst rhs) -> bool { @@ -274,21 +289,6 @@ class Inst : public Printable { explicit Inst(int32_t kind, TypeId type_id, int32_t arg0, int32_t arg1) : kind_(kind), type_id_(type_id), arg0_(arg0), arg1_(arg1) {} - // Convert a field to its raw representation, used as `arg0_` / `arg1_`. - static constexpr auto ToRaw(AnyIdBase base) -> int32_t { return base.index; } - static constexpr auto ToRaw(IntId id) -> int32_t { return id.AsRaw(); } - - // Convert a field from its raw representation. - template - requires IdKind::Contains - static constexpr auto FromRaw(int32_t raw) -> T { - return T(raw); - } - template <> - constexpr auto FromRaw(int32_t raw) -> IntId { - return IntId::MakeRaw(raw); - } - int32_t kind_; TypeId type_id_; diff --git a/toolchain/sem_ir/inst_fingerprinter.cpp b/toolchain/sem_ir/inst_fingerprinter.cpp new file mode 100644 index 000000000000..8140f7dbbc1d --- /dev/null +++ b/toolchain/sem_ir/inst_fingerprinter.cpp @@ -0,0 +1,347 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include "toolchain/sem_ir/inst_fingerprinter.h" + +#include "common/ostream.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StableHashing.h" +#include "toolchain/base/value_ids.h" +#include "toolchain/sem_ir/ids.h" +#include "toolchain/sem_ir/typed_insts.h" + +namespace Carbon::SemIR { + +namespace { +struct Worklist { + // The file containing the instruction we're currently processing. + const File* sem_ir; + // The instructions we need to compute fingerprints for. + llvm::SmallVector> todo; + // The contents of the current instruction as accumulated so far. This is used + // to build a Merkle tree containing a fingerprint for the current + // instruction. + llvm::SmallVector contents = {}; + // Known cached instruction fingerprints. Each item in `todo` will be added to + // the cache if not already present. + Map, uint64_t>* fingerprints; + + // Add an invalid marker to the contents. This is used when the entity + // contains an invalid ID. This uses an arbitrary fixed value that is assumed + // to be unlikely to collide with a valid value. + auto AddInvalid() -> void { contents.push_back(-1); } + + // Add a string to the contents. + auto AddString(llvm::StringRef string) { + contents.push_back(llvm::stable_hash_name(string)); + } + + // Each of the following `Add` functions adds a typed argument to the contents + // of the current instruction. If we don't yet have a fingerprint for the + // argument, it instead adds that argument to the worklist instead. + + auto Add(InstKind kind) -> void { + // TODO: Precompute or cache the hash of instruction IR names, or pick a + // scheme that doesn't change when IR names change. + AddString(kind.ir_name()); + } + + auto Add(IdentifierId ident_id) -> void { + AddString(sem_ir->identifiers().Get(ident_id)); + } + + auto Add(StringLiteralValueId lit_id) -> void { + AddString(sem_ir->string_literal_values().Get(lit_id)); + } + + auto Add(NameId name_id) -> void { + AddString(sem_ir->names().GetIRBaseName(name_id)); + } + + auto Add(EntityNameId entity_name_id) -> void { + if (!entity_name_id.is_valid()) { + AddInvalid(); + return; + } + Add(sem_ir->entity_names().Get(entity_name_id).name_id); + // TODO: Should we include the other parts of the entity name? + } + + auto AddInFile(const File* file, InstId inner_id) -> void { + if (!inner_id.is_valid()) { + AddInvalid(); + return; + } + if (auto lookup = fingerprints->Lookup(std::pair(file, inner_id))) { + contents.push_back(lookup.value()); + } else { + todo.push_back({file, inner_id}); + } + } + + auto Add(InstId inner_id) -> void { AddInFile(sem_ir, inner_id); } + + auto Add(ConstantId constant_id) -> void { + if (!constant_id.is_valid()) { + AddInvalid(); + return; + } + Add(sem_ir->constant_values().GetInstId(constant_id)); + } + + auto Add(TypeId type_id) -> void { + if (!type_id.is_valid()) { + AddInvalid(); + return; + } + Add(sem_ir->types().GetInstId(type_id)); + } + + template + auto AddBlock(llvm::ArrayRef block) -> void { + contents.push_back(block.size()); + for (auto inner_id : block) { + Add(inner_id); + } + } + + auto Add(InstBlockId inst_block_id) -> void { + if (!inst_block_id.is_valid()) { + AddInvalid(); + return; + } + AddBlock(sem_ir->inst_blocks().Get(inst_block_id)); + } + + auto Add(TypeBlockId type_block_id) -> void { + if (!type_block_id.is_valid()) { + AddInvalid(); + return; + } + AddBlock(sem_ir->type_blocks().Get(type_block_id)); + } + + auto Add(StructTypeField field) -> void { + Add(field.name_id); + Add(field.type_id); + } + + auto Add(StructTypeFieldsId struct_type_fields_id) -> void { + if (!struct_type_fields_id.is_valid()) { + AddInvalid(); + return; + } + AddBlock(sem_ir->struct_type_fields().Get(struct_type_fields_id)); + } + + auto Add(NameScopeId name_scope_id) -> void { + if (!name_scope_id.is_valid()) { + AddInvalid(); + return; + } + const auto& scope = sem_ir->name_scopes().Get(name_scope_id); + Add(scope.name_id()); + if (!sem_ir->name_scopes().IsPackage(name_scope_id) && + scope.parent_scope_id().is_valid()) { + Add(sem_ir->name_scopes().Get(scope.parent_scope_id()).inst_id()); + } + } + + auto AddEntity(const EntityWithParamsBase& entity) -> void { + Add(entity.name_id); + if (entity.parent_scope_id.is_valid()) { + Add(sem_ir->name_scopes().Get(entity.parent_scope_id).inst_id()); + } + } + + auto Add(FunctionId function_id) -> void { + AddEntity(sem_ir->functions().Get(function_id)); + } + + auto Add(ClassId class_id) -> void { + AddEntity(sem_ir->classes().Get(class_id)); + } + + auto Add(InterfaceId interface_id) -> void { + AddEntity(sem_ir->interfaces().Get(interface_id)); + } + + auto Add(ImplId impl_id) -> void { + const auto& impl = sem_ir->impls().Get(impl_id); + Add(impl.self_id); + Add(impl.constraint_id); + Add(impl.parent_scope_id); + } + + auto Add(FacetTypeId facet_type_id) -> void { + const auto& facet_type = sem_ir->facet_types().Get(facet_type_id); + for (auto [interface_id, specific_id] : facet_type.impls_constraints) { + Add(interface_id); + Add(specific_id); + } + for (auto [lhs_id, rhs_id] : facet_type.rewrite_constraints) { + Add(lhs_id); + Add(rhs_id); + } + contents.push_back(facet_type.other_requirements); + } + + auto Add(GenericId generic_id) -> void { + if (!generic_id.is_valid()) { + AddInvalid(); + return; + } + Add(sem_ir->generics().Get(generic_id).decl_id); + } + + auto Add(SpecificId specific_id) -> void { + if (!specific_id.is_valid()) { + AddInvalid(); + return; + } + const auto& specific = sem_ir->specifics().Get(specific_id); + Add(specific.generic_id); + Add(specific.args_id); + } + + auto Add(const llvm::APInt& value) -> void { + contents.push_back(value.getBitWidth()); + for (auto word : llvm::seq((value.getBitWidth() + 63) / 64)) { + // TODO: Is there a better way to copy the words from an APInt? + contents.push_back(value.extractBitsAsZExtValue(64, 64 * word)); + } + } + + auto Add(IntId int_id) -> void { Add(sem_ir->ints().Get(int_id)); } + + auto Add(FloatId float_id) -> void { + Add(sem_ir->floats().Get(float_id).bitcastToAPInt()); + } + + auto Add(LibraryNameId lib_name_id) -> void { + if (lib_name_id == LibraryNameId::Default) { + AddString(""); + } else if (lib_name_id == LibraryNameId::Error) { + AddString(""); + } else if (lib_name_id.is_valid()) { + Add(lib_name_id.AsStringLiteralValueId()); + } else { + AddInvalid(); + } + } + + auto Add(ImportIRId ir_id) -> void { + auto* ir = sem_ir->import_irs().Get(ir_id).sem_ir; + Add(ir->package_id()); + Add(ir->library_id()); + } + + auto Add(ImportIRInstId ir_inst_id) -> void { + auto ir_inst = sem_ir->import_ir_insts().Get(ir_inst_id); + AddInFile(sem_ir->import_irs().Get(ir_inst.ir_id).sem_ir, ir_inst.inst_id); + } + + template + requires(std::same_as || + std::same_as || + std::same_as || std::same_as || + std::same_as || std::same_as) + auto Add(T arg) { + // Index-like ID: just include the value directly. + contents.push_back(arg.index); + } + + template + requires(std::same_as || std::same_as || + std::same_as || std::same_as) + auto Add(T /*arg*/) { + CARBON_FATAL("Unexpected instruction operand kind {0}", typeid(T).name()); + } + + // Add an instruction argument to the contents of the current instruction. + template + auto AddWithKind(uint64_t arg, TypeEnum kind) -> void { + using AddFunction = void (*)(Worklist& worklist, uint64_t arg); + using Kind = decltype(kind); + + // Build a lookup table to add an argument of the given kind. + static constexpr std::array table = [] { + std::array table; + table[Kind::None.ToIndex()] = [](Worklist& /*worklist*/, + uint64_t /*arg*/) {}; + table[Kind::Invalid.ToIndex()] = [](Worklist& /*worklist*/, + uint64_t /*arg*/) { + CARBON_FATAL("Unexpected invalid argument kind"); + }; + ((table[Kind::template For.ToIndex()] = + [](Worklist& worklist, uint64_t arg) { + return worklist.Add(Inst::FromRaw(arg)); + }), + ...); + return table; + }(); + + table[kind.ToIndex()](*this, arg); + } + + // Ensure all the instructions on the todo list have fingerprints. + auto Run() -> void { + while (!todo.empty()) { + auto [next_sem_ir, next_inst_id] = todo.back(); + + // If we already have a fingerprint for this instruction, we have nothing + // to do. Just pop it from `todo`. + if (fingerprints->Contains(std::pair(next_sem_ir, next_inst_id))) { + todo.pop_back(); + continue; + } + + // Keep this instruction in `todo` for now. If we add more work, we'll + // finish that work and process this instruction again, and if not, we'll + // pop the instruction at the end of the loop. + size_t init_size = todo.size(); + auto inst = next_sem_ir->insts().Get(next_inst_id); + auto [arg0_kind, arg1_kind] = inst.ArgKinds(); + + // Prepare to fingerprint this instruction. + sem_ir = next_sem_ir; + contents.clear(); + + // Add the instruction's fields to the contents. + Add(inst.kind()); + + // Don't include the type if it's `type` or ``, because those types + // are self-referential. + if (inst.type_id() != TypeType::SingletonTypeId && + inst.type_id() != ErrorInst::SingletonTypeId) { + Add(inst.type_id()); + } + + AddWithKind(inst.arg0(), arg0_kind); + AddWithKind(inst.arg1(), arg1_kind); + + // If we didn't add any work, we have a fingerprint for this instruction; + // pop it from the todo list. Otherwise, we leave it on the todo list so + // we can compute its fingerprint once we've finished the work we added. + if (todo.size() == init_size) { + auto fingerprint = llvm::stable_hash_combine(contents); + fingerprints->Insert(std::pair(next_sem_ir, next_inst_id), fingerprint); + todo.pop_back(); + } + } + } +}; +} // namespace + +auto InstFingerprinter::GetOrCompute(const File* file, InstId inst_id) + -> uint64_t { + Worklist worklist = {.sem_ir = nullptr, + .todo = {{file, inst_id}}, + .fingerprints = &fingerprints_}; + worklist.Run(); + return fingerprints_.Lookup(std::pair(file, inst_id)).value(); +} + +} // namespace Carbon::SemIR diff --git a/toolchain/sem_ir/inst_fingerprinter.h b/toolchain/sem_ir/inst_fingerprinter.h new file mode 100644 index 000000000000..ff80ae9c7c81 --- /dev/null +++ b/toolchain/sem_ir/inst_fingerprinter.h @@ -0,0 +1,28 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#ifndef CARBON_TOOLCHAIN_SEM_IR_INST_FINGERPRINTER_H_ +#define CARBON_TOOLCHAIN_SEM_IR_INST_FINGERPRINTER_H_ + +#include "toolchain/sem_ir/file.h" +#include "toolchain/sem_ir/ids.h" + +namespace Carbon::SemIR { + +// Computes fingerprints for instructions. These fingerprints are intended to be +// stable across compilations and across minor changes to the compiler. +class InstFingerprinter { + public: + // Gets or computes a fingerprint for the given instruction. + auto GetOrCompute(const File* file, InstId inst_id) -> uint64_t; + + private: + // The fingerprint for each instruction that has had its fingerprint computed, + // indexed by the InstId's index. + Map, uint64_t> fingerprints_; +}; + +} // namespace Carbon::SemIR + +#endif // CARBON_TOOLCHAIN_SEM_IR_INST_FINGERPRINTER_H_ diff --git a/toolchain/sem_ir/inst_namer.cpp b/toolchain/sem_ir/inst_namer.cpp index d86c1ed2fc43..73de9b7e0700 100644 --- a/toolchain/sem_ir/inst_namer.cpp +++ b/toolchain/sem_ir/inst_namer.cpp @@ -7,11 +7,14 @@ #include "common/ostream.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StableHashing.h" #include "toolchain/base/kind_switch.h" #include "toolchain/base/shared_value_stores.h" +#include "toolchain/base/value_ids.h" #include "toolchain/lex/tokenized_buffer.h" #include "toolchain/parse/tree.h" #include "toolchain/sem_ir/builtin_function_kind.h" +#include "toolchain/sem_ir/entity_with_params_base.h" #include "toolchain/sem_ir/function.h" #include "toolchain/sem_ir/ids.h" #include "toolchain/sem_ir/inst_kind.h" @@ -207,9 +210,10 @@ auto InstNamer::Namespace::Name::str() const -> llvm::StringRef { return value->first(); } -auto InstNamer::Namespace::AllocateName(const InstNamer& inst_namer, - SemIR::LocId loc_id, std::string name) - -> Name { +auto InstNamer::Namespace::AllocateName( + const InstNamer& inst_namer, + std::variant loc_id_or_fingerprint, + std::string name) -> Name { // The best (shortest) name for this instruction so far, and the current // name for it. Name best; @@ -245,16 +249,30 @@ auto InstNamer::Namespace::AllocateName(const InstNamer& inst_namer, // Append location information to try to disambiguate. // TODO: Consider handling inst_id cases. - if (loc_id.is_node_id()) { - const auto& tree = inst_namer.sem_ir_->parse_tree(); - auto token = tree.node_token(loc_id.node_id()); - llvm::raw_string_ostream(name) - << ".loc" << tree.tokens().GetLineNumber(token); - add_name(); + if (LocId* loc_id = std::get_if(&loc_id_or_fingerprint)) { + if (loc_id->is_node_id()) { + const auto& tree = inst_namer.sem_ir_->parse_tree(); + auto token = tree.node_token(loc_id->node_id()); + llvm::raw_string_ostream(name) + << ".loc" << tree.tokens().GetLineNumber(token); + add_name(); - llvm::raw_string_ostream(name) - << "_" << tree.tokens().GetColumnNumber(token); - add_name(); + llvm::raw_string_ostream(name) + << "_" << tree.tokens().GetColumnNumber(token); + add_name(); + } + } else { + uint64_t fingerprint = std::get(loc_id_or_fingerprint); + llvm::raw_string_ostream out(name); + out << "."; + // Include names with 3-6 characters from the fingerprint. Then fall back to + // sequential numbering. + for (int n : llvm::seq(1, 7)) { + out.write_hex((fingerprint >> (64 - 4 * n)) & 0xF); + if (n >= 3) { + add_name(); + } + } } // Append numbers until we find an available name. @@ -399,9 +417,16 @@ auto InstNamer::CollectNamesInBlock(ScopeId top_scope_id, auto add_inst_name = [&](std::string name) { ScopeId old_scope_id = insts_[inst_id.index].first; if (old_scope_id == ScopeId::None) { + std::variant loc_id_or_fingerprint = + SemIR::LocId::Invalid; + if (scope_id == ScopeId::Constants || scope_id == ScopeId::ImportRefs) { + loc_id_or_fingerprint = fingerprinter_.GetOrCompute(sem_ir_, inst_id); + } else { + loc_id_or_fingerprint = sem_ir_->insts().GetLocId(inst_id); + } insts_[inst_id.index] = { - scope_id, scope.insts.AllocateName( - *this, sem_ir_->insts().GetLocId(inst_id), name)}; + scope_id, + scope.insts.AllocateName(*this, loc_id_or_fingerprint, name)}; } else { CARBON_CHECK(old_scope_id == scope_id, "Attempting to name inst in multiple scopes"); diff --git a/toolchain/sem_ir/inst_namer.h b/toolchain/sem_ir/inst_namer.h index 67fbd41be244..60ce436ef78e 100644 --- a/toolchain/sem_ir/inst_namer.h +++ b/toolchain/sem_ir/inst_namer.h @@ -10,6 +10,7 @@ #include "toolchain/parse/tree.h" #include "toolchain/sem_ir/file.h" #include "toolchain/sem_ir/ids.h" +#include "toolchain/sem_ir/inst_fingerprinter.h" namespace Carbon::SemIR { @@ -129,8 +130,10 @@ class InstNamer { return Name(allocated.insert({name, NameResult()}).first); } - auto AllocateName(const InstNamer& inst_namer, SemIR::LocId loc_id, - std::string name) -> Name; + auto AllocateName( + const InstNamer& inst_namer, + std::variant loc_id_or_fingerprint, + std::string name) -> Name; }; // A named scope that contains named entities. @@ -165,6 +168,7 @@ class InstNamer { auto CollectNamesInGeneric(ScopeId scope_id, GenericId generic_id) -> void; const File* sem_ir_; + InstFingerprinter fingerprinter_; // The namespace for entity names. Names within this namespace are prefixed // with `@` in formatted SemIR.