diff --git a/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon b/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon index 7dac2c8ea027..0227e04ea8fa 100644 --- a/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon +++ b/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon @@ -52,6 +52,9 @@ let d: c = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/export_name.carbon b/toolchain/check/testdata/alias/no_prelude/export_name.carbon index c14b254de1de..9f3f634b6001 100644 --- a/toolchain/check/testdata/alias/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/alias/no_prelude/export_name.carbon @@ -90,6 +90,9 @@ var d: D* = &c; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -104,6 +107,7 @@ var d: D* = &c; // CHECK:STDOUT: %import_ref.f42 = import_ref Main//base, C, unloaded // CHECK:STDOUT: %import_ref.05a: 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 { @@ -117,6 +121,9 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_orig.carbon @@ -131,6 +138,7 @@ var d: D* = &c; // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//base, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.909 = 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 { @@ -144,6 +152,9 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -158,6 +169,7 @@ var d: D* = &c; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.c3f: 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 { @@ -177,6 +189,9 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -234,6 +249,7 @@ var d: D* = &c; // CHECK:STDOUT: %import_ref.c3f: type = import_ref Main//export, D, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.06e: 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 { @@ -265,6 +281,9 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_orig.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/fail_aliased_name_in_diag.carbon b/toolchain/check/testdata/alias/no_prelude/fail_aliased_name_in_diag.carbon index fbc8732fd957..dbef88eeaeae 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_aliased_name_in_diag.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_aliased_name_in_diag.carbon @@ -60,11 +60,17 @@ let c_var: c = d; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon b/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon index 2b1b7d5eb95b..1ceb404f048a 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon @@ -76,5 +76,8 @@ extern alias C = Class; // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon b/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon index 4cde4fa881eb..2ca80de93e4d 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon @@ -69,6 +69,9 @@ alias b = C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/import.carbon b/toolchain/check/testdata/alias/no_prelude/import.carbon index 19350989d7f0..6cdc57bca169 100644 --- a/toolchain/check/testdata/alias/no_prelude/import.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import.carbon @@ -100,6 +100,9 @@ var c: () = a_alias_alias; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- class2.carbon @@ -116,6 +119,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %import_ref.204: 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 { @@ -143,6 +147,9 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class1.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- class3.carbon @@ -158,6 +165,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: %import_ref.3fd: 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 { @@ -181,6 +189,9 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "class2.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- var1.carbon diff --git a/toolchain/check/testdata/alias/no_prelude/import_access.carbon b/toolchain/check/testdata/alias/no_prelude/import_access.carbon index 777bc3553018..58ead31538d9 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_access.carbon @@ -74,6 +74,9 @@ var inst: Test.A = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- def.impl.carbon @@ -89,6 +92,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: %import_ref.f42 = import_ref Test//def, C, unloaded // CHECK:STDOUT: %import_ref.323: 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 { @@ -110,6 +114,9 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "def.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // 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 78ee22805865..495d9f4a654f 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_order.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_order.carbon @@ -67,6 +67,10 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.v [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .v = %.loc4_16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -88,6 +92,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %import_ref.610: type = import_ref Main//a, c, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.14f: 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: @@ -136,6 +141,10 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.146 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .v = imports.%import_ref.f99 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon b/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon index 6d820cd408b6..7cda047beb17 100644 --- a/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon +++ b/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon @@ -80,6 +80,10 @@ fn F() -> NS.a { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.v [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .v = %.loc11_16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 3f58e56ae5f7..8df4c4bfc9b5 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -270,6 +270,12 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: .y = %.loc6_8 +// CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -277,6 +283,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %A.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %A { @@ -403,6 +412,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %i32 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -473,6 +485,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %.loc4_19 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -480,6 +495,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %A.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -487,6 +505,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -494,6 +515,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %C.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -571,6 +595,11 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %.var.loc6: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: .y = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -578,6 +607,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %A.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -677,6 +709,11 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %.var.loc6: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: .y = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -684,6 +721,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %A.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y.871 [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -765,6 +805,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @Noncopyable { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Noncopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { @@ -776,6 +819,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %.loc9_27 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.560 [template = constants.%complete_type.ce5] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %A) { @@ -846,6 +892,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: class @Noncopyable { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Noncopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { @@ -857,6 +906,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %.loc9_27 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.560 [template = constants.%complete_type.ce5] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %A) { @@ -939,6 +991,10 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -946,6 +1002,9 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: adapt_decl %A.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/as/identity.carbon b/toolchain/check/testdata/as/identity.carbon index 2e5a00ceae3d..38ff358fdb74 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -96,6 +96,9 @@ fn Initializing() { // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Value(%n.param_patt: %X) { diff --git a/toolchain/check/testdata/as/no_prelude/tuple.carbon b/toolchain/check/testdata/as/no_prelude/tuple.carbon index 0b762538b336..2b42c40c4dfc 100644 --- a/toolchain/check/testdata/as/no_prelude/tuple.carbon +++ b/toolchain/check/testdata/as/no_prelude/tuple.carbon @@ -63,6 +63,9 @@ fn Var() { // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %X; diff --git a/toolchain/check/testdata/as/overloaded.carbon b/toolchain/check/testdata/as/overloaded.carbon index 955d7bcf781f..e11e87c8a0c4 100644 --- a/toolchain/check/testdata/as/overloaded.carbon +++ b/toolchain/check/testdata/as/overloaded.carbon @@ -151,6 +151,10 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: %.var: ref %X.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: .n = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: %i32]() -> %return.param_patt: %X { diff --git a/toolchain/check/testdata/builtins/bool/eq.carbon b/toolchain/check/testdata/builtins/bool/eq.carbon index 3e7eb2e6078d..46dd4101a34b 100644 --- a/toolchain/check/testdata/builtins/bool/eq.carbon +++ b/toolchain/check/testdata/builtins/bool/eq.carbon @@ -49,6 +49,7 @@ 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.342: 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] @@ -217,6 +218,9 @@ var d: C(false == false) = True(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.342 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,6 +279,7 @@ 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.342: 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] @@ -425,6 +430,9 @@ var d: C(false == false) = True(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.342 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/bool/neq.carbon b/toolchain/check/testdata/builtins/bool/neq.carbon index 63f406a0cc2b..4f3432f44d7a 100644 --- a/toolchain/check/testdata/builtins/bool/neq.carbon +++ b/toolchain/check/testdata/builtins/bool/neq.carbon @@ -49,6 +49,7 @@ 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.342: 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] @@ -217,6 +218,9 @@ var d: C(false != false) = False(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.342 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,6 +279,7 @@ 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.342: 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] @@ -425,6 +430,9 @@ var d: C(false != false) = False(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.342 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/float/eq.carbon b/toolchain/check/testdata/builtins/float/eq.carbon index cd35b3bc03db..6406805f1b81 100644 --- a/toolchain/check/testdata/builtins/float/eq.carbon +++ b/toolchain/check/testdata/builtins/float/eq.carbon @@ -157,11 +157,17 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Eq(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.eq"; diff --git a/toolchain/check/testdata/builtins/float/greater.carbon b/toolchain/check/testdata/builtins/float/greater.carbon index d0e38306e986..af5e568fc8cb 100644 --- a/toolchain/check/testdata/builtins/float/greater.carbon +++ b/toolchain/check/testdata/builtins/float/greater.carbon @@ -177,11 +177,17 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Greater(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.greater"; diff --git a/toolchain/check/testdata/builtins/float/greater_eq.carbon b/toolchain/check/testdata/builtins/float/greater_eq.carbon index efae08daf4f2..4d0520856317 100644 --- a/toolchain/check/testdata/builtins/float/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/float/greater_eq.carbon @@ -177,11 +177,17 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GreaterEq(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.greater_eq"; diff --git a/toolchain/check/testdata/builtins/float/less.carbon b/toolchain/check/testdata/builtins/float/less.carbon index 1eddec5b9ecc..89adb5624314 100644 --- a/toolchain/check/testdata/builtins/float/less.carbon +++ b/toolchain/check/testdata/builtins/float/less.carbon @@ -177,11 +177,17 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Less(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.less"; diff --git a/toolchain/check/testdata/builtins/float/less_eq.carbon b/toolchain/check/testdata/builtins/float/less_eq.carbon index 1138a0e976e2..7b9ae9cea29d 100644 --- a/toolchain/check/testdata/builtins/float/less_eq.carbon +++ b/toolchain/check/testdata/builtins/float/less_eq.carbon @@ -177,11 +177,17 @@ fn RuntimeCallIsValid(a: f64, b: f64) -> bool { // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @LessEq(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.less_eq"; diff --git a/toolchain/check/testdata/builtins/float/neq.carbon b/toolchain/check/testdata/builtins/float/neq.carbon index 06c9c60d0901..e2c6b9ca7895 100644 --- a/toolchain/check/testdata/builtins/float/neq.carbon +++ b/toolchain/check/testdata/builtins/float/neq.carbon @@ -157,11 +157,17 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: class @True { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%True // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%False // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Neq(%a.param_patt: f64, %b.param_patt: f64) -> bool = "float.neq"; diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index ac19ed573cdc..446cc071979f 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -237,6 +237,13 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius.251 [template = constants.%complete_type.5a5] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Circle +// CHECK:STDOUT: .radius [private] = %.loc5_21 +// CHECK:STDOUT: .SOME_INTERNAL_CONSTANT [private] = %SOME_INTERNAL_CONSTANT +// CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl +// CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { @@ -340,6 +347,10 @@ class A { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x [protected] = %.loc5_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -445,6 +456,13 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.radius [template = constants.%complete_type.5a5] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Circle +// CHECK:STDOUT: .radius [private] = %.loc5_21 +// CHECK:STDOUT: .GetRadius = %GetRadius.decl +// CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl +// CHECK:STDOUT: .Compute = %Compute.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetRadius[%self.param_patt: %Circle]() -> %i32 { @@ -541,6 +559,10 @@ class A { // CHECK:STDOUT: %x: %i32 = bind_name x, %.loc5_16.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -637,6 +659,11 @@ class A { // CHECK:STDOUT: %y: %i32 = bind_name y, %.loc6_24.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x [protected] = %x +// CHECK:STDOUT: .y [private] = %y // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -682,6 +709,11 @@ class A { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: .G [private] = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/adapter/adapt.carbon b/toolchain/check/testdata/class/adapter/adapt.carbon index 27f862bb53f8..2bb5267e5fa7 100644 --- a/toolchain/check/testdata/class/adapter/adapt.carbon +++ b/toolchain/check/testdata/class/adapter/adapt.carbon @@ -111,6 +111,11 @@ interface I { // CHECK:STDOUT: %.var.loc6: ref %SomeClass.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClass +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .b = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -118,6 +123,9 @@ interface I { // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClassAdapter // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @StructAdapter { @@ -129,6 +137,9 @@ interface I { // CHECK:STDOUT: adapt_decl %struct_type.a.b [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%StructAdapter // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_not_extend.carbon @@ -175,6 +186,10 @@ interface I { // CHECK:STDOUT: %F.decl: %F.type.967 = fn_decl @F.1 [template = constants.%F.9eb] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapted +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptNotExtend { @@ -182,6 +197,9 @@ interface I { // CHECK:STDOUT: adapt_decl %Adapted.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptNotExtend // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(); diff --git a/toolchain/check/testdata/class/adapter/adapt_copy.carbon b/toolchain/check/testdata/class/adapter/adapt_copy.carbon index 9af99f2190f4..757ab8991b81 100644 --- a/toolchain/check/testdata/class/adapter/adapt_copy.carbon +++ b/toolchain/check/testdata/class/adapter/adapt_copy.carbon @@ -199,6 +199,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: adapt_decl %i32 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptCopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %AdaptCopyable) -> %AdaptCopyable { @@ -339,6 +342,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: adapt_decl %.loc5_19 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.d07 [template = constants.%complete_type.65d] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptTuple // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %AdaptTuple) -> %return.param_patt: %AdaptTuple { @@ -486,6 +492,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: class @Noncopyable { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Noncopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptNoncopyable { @@ -493,6 +502,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: adapt_decl %Noncopyable.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptNoncopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%a.param_patt: %AdaptNoncopyable) -> %return.param_patt: %AdaptNoncopyable { @@ -563,6 +575,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: class @Noncopyable { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Noncopyable // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptNoncopyableIndirect { @@ -576,6 +591,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: adapt_decl %.loc9_32 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.c9a [template = constants.%complete_type.201] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptNoncopyableIndirect // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H(%a.param_patt: %AdaptNoncopyableIndirect) -> %return.param_patt: %AdaptNoncopyableIndirect { @@ -689,6 +707,9 @@ fn InTuple(c: (AdaptStruct, u32)) -> (AdaptStruct, u32) { // CHECK:STDOUT: adapt_decl %struct_type.e.f [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.e.f [template = constants.%complete_type.511] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptStruct // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @I(%g.param_patt: %AdaptStruct) -> %return.param_patt: %AdaptStruct { diff --git a/toolchain/check/testdata/class/adapter/extend_adapt.carbon b/toolchain/check/testdata/class/adapter/extend_adapt.carbon index 7b8bc8cbbeb9..b3aa99c5f6bf 100644 --- a/toolchain/check/testdata/class/adapter/extend_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/extend_adapt.carbon @@ -202,6 +202,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClassAdapter +// CHECK:STDOUT: extend %SomeClass.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { @@ -226,6 +230,13 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClass +// CHECK:STDOUT: .a = %.loc7_8 +// CHECK:STDOUT: .b = %.loc8_8 +// CHECK:STDOUT: .StaticMemberFunction = %StaticMemberFunction.decl +// CHECK:STDOUT: .AdapterMethod = %AdapterMethod.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @StaticMemberFunction(); @@ -302,6 +313,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClass +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -309,6 +324,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClassAdapter +// CHECK:STDOUT: extend %SomeClass.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[%self.param_patt: %SomeClass](); @@ -385,6 +404,11 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: %.var.loc6: ref %SomeClass.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClass +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .b = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -392,6 +416,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %SomeClass.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SomeClassAdapter +// CHECK:STDOUT: extend %SomeClass.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %SomeClassAdapter) -> %i32 { @@ -456,6 +484,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %struct_type.a.b [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%StructAdapter +// CHECK:STDOUT: extend %struct_type.a.b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %StructAdapter) -> %i32 { @@ -521,6 +553,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %.loc5_26 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %tuple.type.d07 [template = constants.%complete_type.65d] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%TupleAdapter +// CHECK:STDOUT: extend %.loc5_26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %TupleAdapter) -> %i32 { @@ -608,6 +644,10 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: adapt_decl %.loc7_27.2 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%IntAdapter +// CHECK:STDOUT: extend %.loc7_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeInt(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed"; 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 7509ed5e8131..9582ac463a91 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_bad_decl.carbon @@ -144,6 +144,9 @@ class C { // CHECK:STDOUT: adapt_decl [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Bad // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Use(%b.param_patt: %Bad) { @@ -194,6 +197,10 @@ class C { // CHECK:STDOUT: adapt_decl [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Bad +// CHECK:STDOUT: extend // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Use(%b.param_patt: %Bad) { @@ -238,6 +245,9 @@ class C { // CHECK:STDOUT: %.loc13: %empty_struct_type = struct_literal () // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_tuple.type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MultipleAdapts // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MultipleAdaptsSameType { @@ -247,6 +257,9 @@ class C { // CHECK:STDOUT: %.loc25: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_tuple.type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MultipleAdaptsSameType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_bad_scope.carbon @@ -302,5 +315,9 @@ class C { // CHECK:STDOUT: %I.decl: type = interface_decl @I.2 [template = constants.%I.type.e30] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_bad_type.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_bad_type.carbon index f9cf1987285f..7dbf6dda3676 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_bad_type.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_bad_type.carbon @@ -57,5 +57,8 @@ class AdaptIncomplete { // CHECK:STDOUT: adapt_decl [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptIncomplete // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_modifiers.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_modifiers.carbon index 95249c47e766..7ec8bc4b7809 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_modifiers.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_modifiers.carbon @@ -98,6 +98,9 @@ class C5 { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 { @@ -105,6 +108,9 @@ class C5 { // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { @@ -112,6 +118,9 @@ class C5 { // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C3 { @@ -119,6 +128,9 @@ class C5 { // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C4 { @@ -126,6 +138,10 @@ class C5 { // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C4 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C5 { @@ -133,5 +149,9 @@ class C5 { // CHECK:STDOUT: adapt_decl %B.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C5 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/fail_adapt_with_base.carbon b/toolchain/check/testdata/class/adapter/fail_adapt_with_base.carbon index b23599769480..d7ea6f24a391 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_with_base.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_with_base.carbon @@ -52,6 +52,9 @@ base class AdaptWithVirtual { // CHECK:STDOUT: class @Simple { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Simple // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithVirtual { @@ -59,6 +62,10 @@ base class AdaptWithVirtual { // CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple] // CHECK:STDOUT: adapt_decl %Simple.ref [template] // CHECK:STDOUT: complete_type_witness = +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptWithVirtual +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F(); 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 055853d4c10a..cfd4385be98b 100644 --- a/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/adapter/fail_adapt_with_subobjects.carbon @@ -109,6 +109,9 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithBase { @@ -118,6 +121,11 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base] // CHECK:STDOUT: %.loc15: %AdaptWithBase.elem = base_decl %Base.ref, element [template] // CHECK:STDOUT: complete_type_witness = +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptWithBase +// CHECK:STDOUT: .base = %.loc15 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_adapt_with_fields.carbon @@ -160,6 +168,10 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: } // CHECK:STDOUT: %.var: ref %AdaptWithField.elem = var // CHECK:STDOUT: complete_type_witness = +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptWithField +// CHECK:STDOUT: .n = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithFields { @@ -182,6 +194,12 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: } // CHECK:STDOUT: %.var.loc27: ref %AdaptWithFields.elem = var // CHECK:STDOUT: complete_type_witness = +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptWithFields +// CHECK:STDOUT: .a = %.loc25_8 +// CHECK:STDOUT: .b = %.loc26_8 +// CHECK:STDOUT: .c = %.loc27_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_adapt_with_base_and_fields.carbon @@ -219,6 +237,9 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithBaseAndFields { @@ -233,5 +254,11 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: %.loc16_11: type = converted %.loc16_10, constants.%empty_struct_type [template = constants.%empty_struct_type] // CHECK:STDOUT: adapt_decl %.loc16_11 [template] // CHECK:STDOUT: complete_type_witness = +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptWithBaseAndFields +// CHECK:STDOUT: .base = %.loc7 +// CHECK:STDOUT: .n = %.loc8_8 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/adapter/init_adapt.carbon b/toolchain/check/testdata/class/adapter/init_adapt.carbon index fdebedd7898f..5edc42253532 100644 --- a/toolchain/check/testdata/class/adapter/init_adapt.carbon +++ b/toolchain/check/testdata/class/adapter/init_adapt.carbon @@ -225,6 +225,11 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %.var.loc6: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .b = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { @@ -232,6 +237,9 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: adapt_decl %C.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptC // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeC() -> %C; @@ -403,6 +411,11 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: %.var.loc6: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .b = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { @@ -410,6 +423,9 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: adapt_decl %C.ref [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AdaptC // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeC() -> %C; diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index 88f8453669eb..17c479356cf3 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -139,6 +139,10 @@ class Derived { // CHECK:STDOUT: %.var: ref %Base.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.0a3 [template = constants.%complete_type.ba8] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .b = %.loc4_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -151,6 +155,12 @@ class Derived { // CHECK:STDOUT: %.var: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.f8f [template = constants.%complete_type.da6] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc8 +// CHECK:STDOUT: .d = %.loc10_8 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %Derived { @@ -240,6 +250,9 @@ class Derived { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -251,5 +264,9 @@ class Derived { // 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.860] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .d = %.loc7_8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_field.carbon b/toolchain/check/testdata/class/base_field.carbon index 79e2b3e362db..8e800056e3d4 100644 --- a/toolchain/check/testdata/class/base_field.carbon +++ b/toolchain/check/testdata/class/base_field.carbon @@ -101,6 +101,12 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %.var.loc14: ref %Base.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.ebc] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: .c = %.loc14_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -118,6 +124,13 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: %.var.loc21: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.6a7 [template = constants.%complete_type.401] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc18 +// CHECK:STDOUT: .d = %.loc20_8 +// CHECK:STDOUT: .e = %.loc21_8 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%p.param_patt: %ptr.404) -> %ptr.235 { diff --git a/toolchain/check/testdata/class/base_function_unqualified.carbon b/toolchain/check/testdata/class/base_function_unqualified.carbon index 65983bd650dc..0673d0c2c875 100644 --- a/toolchain/check/testdata/class/base_function_unqualified.carbon +++ b/toolchain/check/testdata/class/base_function_unqualified.carbon @@ -65,6 +65,10 @@ fn Derived.H() { // 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -74,6 +78,13 @@ fn Derived.H() { // 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.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc16 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); diff --git a/toolchain/check/testdata/class/base_method.carbon b/toolchain/check/testdata/class/base_method.carbon index 6c2ae4c9b287..273b1cd08804 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -120,6 +120,11 @@ fn Call(p: Derived*) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -127,6 +132,11 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %.loc22: %Derived.elem = base_decl %Base.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc22 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.11f]() { diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index 3579444ffb7b..0e3fe8b65a5d 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -176,6 +176,13 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc19 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { @@ -209,6 +216,11 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[%self.param_patt: %Base]() -> %i32; diff --git a/toolchain/check/testdata/class/base_method_shadow.carbon b/toolchain/check/testdata/class/base_method_shadow.carbon index d4a3ac659bf4..ae3d7ce703db 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -137,6 +137,10 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -156,6 +160,12 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc16 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -175,6 +185,12 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc21 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -182,6 +198,11 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %.loc26: %D.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .base = %.loc26 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.6db](); diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 3a15bd69690d..8c0bc4b66c0c 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -140,6 +140,12 @@ fn Run() -> i32 { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [template = constants.%complete_type.954] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .k = %.loc18_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%n.param_patt: %i32) -> %i32 { diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index b0f2450cc796..c36ff156ec92 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -66,6 +66,11 @@ class C { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .a = %.loc14_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %C) -> %i32 { diff --git a/toolchain/check/testdata/class/compound_field.carbon b/toolchain/check/testdata/class/compound_field.carbon index bb044d4dd457..252b5376309d 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -168,6 +168,12 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %.var.loc14: ref %Base.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [template = constants.%complete_type.ebc] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: .c = %.loc14_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -185,6 +191,13 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %.var.loc21: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e.6a7 [template = constants.%complete_type.401] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc18 +// CHECK:STDOUT: .d = %.loc20_8 +// CHECK:STDOUT: .e = %.loc21_8 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessDerived(%d.param_patt: %Derived) -> %i32 { diff --git a/toolchain/check/testdata/class/cross_package_import.carbon b/toolchain/check/testdata/class/cross_package_import.carbon index 6cad56964262..4d924c2cb4d9 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -127,6 +127,9 @@ var c: Other.C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- other_extern.carbon @@ -201,6 +204,7 @@ var c: Other.C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: type = import_ref Other//other_define, C, loaded [template = constants.%C] // 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 { @@ -225,6 +229,9 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -305,6 +312,7 @@ var c: Other.C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: type = import_ref Other//other_define, C, loaded [template = constants.%C] // 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 { @@ -329,6 +337,9 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -361,6 +372,7 @@ var c: Other.C = {}; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: type = import_ref Other//other_define, C, loaded [template = constants.%C] // 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 { @@ -385,6 +397,9 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "other_define.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // 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 58d3501593a3..82889589029c 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -209,6 +209,10 @@ fn ConvertInit() { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.ba9 [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -221,6 +225,12 @@ fn ConvertInit() { // CHECK:STDOUT: %.var: ref %B.elem.5c3 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.b44 [template = constants.%complete_type.725] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc16 +// CHECK:STDOUT: .b = %.loc17_8 +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -233,6 +243,12 @@ fn ConvertInit() { // CHECK:STDOUT: %.var: ref %C.elem.646 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.c.8e2 [template = constants.%complete_type.58a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc21 +// CHECK:STDOUT: .c = %.loc22_8 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertCToB(%p.param_patt: %ptr.019) -> %ptr.e79 { diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 9ba6268d9472..a28a52e1266c 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -219,6 +219,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { @@ -229,6 +232,10 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %.var: ref = var // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Contains +// CHECK:STDOUT: .a = %.loc15_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_var.carbon @@ -262,6 +269,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Var() { @@ -314,6 +324,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %Abstract) { @@ -357,6 +370,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter { @@ -364,6 +380,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: adapt_decl [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapter // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- define_and_call_abstract_param.carbon @@ -416,6 +435,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Param(%a.param_patt: %Abstract); @@ -480,6 +502,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -492,6 +517,12 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %.var: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.c44 [template = constants.%complete_type.32a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc8 +// CHECK:STDOUT: .d = %.loc10_8 +// CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %Derived { @@ -556,6 +587,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -568,6 +602,12 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %.var: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d [template = constants.%complete_type.32a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc8 +// CHECK:STDOUT: .d = %.loc10_8 +// CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Return(%a.param_patt: %Abstract) -> %return.param_patt: %Abstract { @@ -636,6 +676,10 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %.var: ref %Abstract.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -648,6 +692,12 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %.var: ref %Derived.elem.344 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.c44 [template = constants.%complete_type.32a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .d = %.loc11_8 +// CHECK:STDOUT: extend %Abstract.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%d.param_patt: %Derived) -> %i32 { @@ -690,6 +740,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -745,6 +798,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: class @Abstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnAbstract() -> %Abstract; diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index d2e0e6542428..94c90ae5a5a6 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -78,6 +78,11 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%a.loc16_13.2: %ptr) { diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index 961da001c456..4264c10a6d28 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -107,6 +107,11 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.e71](); diff --git a/toolchain/check/testdata/class/fail_base_bad_type.carbon b/toolchain/check/testdata/class/fail_base_bad_type.carbon index 64ce3f397fa6..d575bb1bdaef 100644 --- a/toolchain/check/testdata/class/fail_base_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_base_bad_type.carbon @@ -229,6 +229,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc9: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromError +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessMemberWithInvalidBaseError(%p.param_patt: %ptr) -> %i32 { @@ -292,6 +297,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc12_18: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromNonType +// CHECK:STDOUT: .base = %.loc12_18 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessMemberWithInvalidBasNonType(%p.param_patt: %ptr) -> %i32 { @@ -379,6 +389,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> 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.386] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromi32 +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: extend %i32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBasei32(%p.param_patt: %ptr.45c) -> %ptr.235 { @@ -479,6 +494,9 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @DeriveFromTuple { @@ -488,6 +506,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc11_23: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromTuple +// CHECK:STDOUT: .base = %.loc11_23 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseTuple(%p.param_patt: %ptr.340) -> %ptr.1ab { @@ -587,6 +610,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc11: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromStruct +// CHECK:STDOUT: .base = %.loc11 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseStruct(%p.param_patt: %ptr.df0) -> %ptr.3ee { @@ -682,6 +710,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc18: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromIncomplete +// CHECK:STDOUT: .base = %.loc18 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseIncomplete(%p.param_patt: %ptr.089) -> %ptr.c62 { @@ -803,6 +836,10 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.var: ref %Final.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Final +// CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @DeriveFromFinal { @@ -810,6 +847,11 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: %.loc13: %DeriveFromFinal.elem = base_decl %Final.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.dae [template = constants.%complete_type.970] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%DeriveFromFinal +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: extend %Final.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseFinal(%p.param_patt: %ptr.160) -> %ptr.5f6 { diff --git a/toolchain/check/testdata/class/fail_base_method_define.carbon b/toolchain/check/testdata/class/fail_base_method_define.carbon index b5e99ce5f535..2a6502ace813 100644 --- a/toolchain/check/testdata/class/fail_base_method_define.carbon +++ b/toolchain/check/testdata/class/fail_base_method_define.carbon @@ -78,12 +78,21 @@ fn D.C.F() {} // 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %F.decl: %F.type.b77 = fn_decl @F.2 [template = constants.%F.a5f] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -91,6 +100,12 @@ fn D.C.F() {} // 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.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .base = %.loc20 +// CHECK:STDOUT: .F = file.%F.decl +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(); diff --git a/toolchain/check/testdata/class/fail_base_misplaced.carbon b/toolchain/check/testdata/class/fail_base_misplaced.carbon index ece0ddd9258d..5778ee39c94e 100644 --- a/toolchain/check/testdata/class/fail_base_misplaced.carbon +++ b/toolchain/check/testdata/class/fail_base_misplaced.carbon @@ -71,12 +71,19 @@ class C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.2 [template = constants.%F.437] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() { diff --git a/toolchain/check/testdata/class/fail_base_modifiers.carbon b/toolchain/check/testdata/class/fail_base_modifiers.carbon index fbefcaa34734..9a15ec5572c9 100644 --- a/toolchain/check/testdata/class/fail_base_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_base_modifiers.carbon @@ -97,6 +97,9 @@ class C4 { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 { @@ -104,6 +107,11 @@ class C4 { // 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.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C1 +// CHECK:STDOUT: .base = %.loc18 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { @@ -111,6 +119,10 @@ class C4 { // 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.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C2 +// CHECK:STDOUT: .base = %.loc30 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C3 { @@ -118,6 +130,11 @@ class C4 { // 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.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C3 +// CHECK:STDOUT: .base = %.loc41 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C4 { @@ -125,5 +142,10 @@ class C4 { // CHECK:STDOUT: %.loc52: %C4.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C4 +// CHECK:STDOUT: .base = %.loc52 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_no_extend.carbon b/toolchain/check/testdata/class/fail_base_no_extend.carbon index 0e37dddaeac5..444d7fa2aee0 100644 --- a/toolchain/check/testdata/class/fail_base_no_extend.carbon +++ b/toolchain/check/testdata/class/fail_base_no_extend.carbon @@ -51,6 +51,9 @@ class C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -58,5 +61,9 @@ class C { // CHECK:STDOUT: %.loc18: %C.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_repeated.carbon b/toolchain/check/testdata/class/fail_base_repeated.carbon index 01082b1cef26..fcf11f3ba855 100644 --- a/toolchain/check/testdata/class/fail_base_repeated.carbon +++ b/toolchain/check/testdata/class/fail_base_repeated.carbon @@ -76,11 +76,17 @@ class D { // CHECK:STDOUT: class @B1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -89,6 +95,11 @@ class D { // 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.5ac] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc15 +// CHECK:STDOUT: extend %B1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -97,5 +108,10 @@ class D { // CHECK:STDOUT: %B1.ref.loc36: type = name_ref B1, file.%B1.decl [template = constants.%B1] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.5ac] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .base = %.loc28 +// CHECK:STDOUT: extend %B1.ref.loc28 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_unbound.carbon b/toolchain/check/testdata/class/fail_base_unbound.carbon index f7e2db9ed437..18610c194950 100644 --- a/toolchain/check/testdata/class/fail_base_unbound.carbon +++ b/toolchain/check/testdata/class/fail_base_unbound.carbon @@ -59,6 +59,9 @@ let b: B = C.base; // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -66,6 +69,11 @@ let b: B = C.base; // CHECK:STDOUT: %.loc14: %C.elem = base_decl %B.ref, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc14 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon index 60c1a86bc6b6..30446233fa89 100644 --- a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon +++ b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon @@ -87,6 +87,10 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -97,6 +101,10 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: %.var: ref %B.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [template = constants.%complete_type.ba8] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .b = %.loc16_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessBInA(%a.param_patt: %A) -> %i32 { diff --git a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon index 82d83ad80b7d..6cb4e4b8c7c4 100644 --- a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon +++ b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon @@ -63,6 +63,10 @@ fn Make() -> C { // CHECK:STDOUT: %.var: ref = var // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %.loc16_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/class/fail_derived_to_base.carbon b/toolchain/check/testdata/class/fail_derived_to_base.carbon index 83ff2d0dd5e0..73acf540dfc2 100644 --- a/toolchain/check/testdata/class/fail_derived_to_base.carbon +++ b/toolchain/check/testdata/class/fail_derived_to_base.carbon @@ -136,6 +136,10 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %.var: ref %A1.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A1 +// CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { @@ -146,6 +150,10 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %.var: ref %A2.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A2 +// CHECK:STDOUT: .a = %.loc16_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { @@ -158,6 +166,12 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: %.var: ref %B2.elem.4b2 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b.618 [template = constants.%complete_type.92f] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B2 +// CHECK:STDOUT: .base = %.loc20 +// CHECK:STDOUT: .b = %.loc21_8 +// CHECK:STDOUT: extend %A2.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; diff --git a/toolchain/check/testdata/class/fail_extend_cycle.carbon b/toolchain/check/testdata/class/fail_extend_cycle.carbon index ab29dacab3d8..1cc52dc8641c 100644 --- a/toolchain/check/testdata/class/fail_extend_cycle.carbon +++ b/toolchain/check/testdata/class/fail_extend_cycle.carbon @@ -68,6 +68,9 @@ base class A { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -75,6 +78,11 @@ base class 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.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc16 +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -87,5 +95,11 @@ base class A { // CHECK:STDOUT: %.var: ref = var // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 +// CHECK:STDOUT: .base = %.loc27 +// CHECK:STDOUT: .c = %.loc32_8 +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_field_modifiers.carbon b/toolchain/check/testdata/class/fail_field_modifiers.carbon index 19eba3cb0273..da6497ef5fee 100644 --- a/toolchain/check/testdata/class/fail_field_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_field_modifiers.carbon @@ -119,5 +119,12 @@ class Class { // CHECK:STDOUT: %m: %i32 = bind_name m, %.loc35_22.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .j = %.loc17_16 +// CHECK:STDOUT: .k = %.loc23_14 +// CHECK:STDOUT: .l = %l +// CHECK:STDOUT: .m = %m // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_generic_method.carbon b/toolchain/check/testdata/class/fail_generic_method.carbon index a2fb77f29fa1..7f5bc7e4426d 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -133,6 +133,11 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.a [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.f1b)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc14_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // 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 ffb3f1ae7de9..bdd0bc42cb25 100644 --- a/toolchain/check/testdata/class/fail_import_misuses.carbon +++ b/toolchain/check/testdata/class/fail_import_misuses.carbon @@ -74,6 +74,9 @@ var a: Incomplete; // CHECK:STDOUT: class @Empty { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Empty // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; @@ -96,6 +99,7 @@ var a: Incomplete; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -119,11 +123,17 @@ var a: Incomplete; // CHECK:STDOUT: // CHECK:STDOUT: class @Empty [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.fd7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete [from "a.carbon"]; diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index b979c26d7f5d..a0ef07a114bd 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -378,6 +378,10 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%IncompleteAddrSelf +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @.1() { @@ -498,5 +502,9 @@ class C { // CHECK:STDOUT: %.var: ref = var // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .c = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index 2bce4ac24f23..a6f42a95b784 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -90,6 +90,11 @@ fn F() { // CHECK:STDOUT: %.var.loc13: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index f07cf5a8defd..6625c075ef78 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -103,6 +103,11 @@ fn F() { // CHECK:STDOUT: %.var.loc13: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%p.param_patt: %ptr.e71); diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index a4f772294079..0f782712e36d 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -107,6 +107,10 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -117,6 +121,10 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: %.var: ref %B.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.72c [template = constants.%complete_type.2b9] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .a = %.loc16_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %ptr.6db](); diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index 7cc39fd24d6a..c913669636bf 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -75,6 +75,10 @@ fn T.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32; diff --git a/toolchain/check/testdata/class/fail_method.carbon b/toolchain/check/testdata/class/fail_method.carbon index 3a0d08b05808..d726c19f30d5 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -103,6 +103,11 @@ fn F(c: Class) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .NoSelf = %NoSelf.decl +// CHECK:STDOUT: .WithSelf = %WithSelf.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @NoSelf(); diff --git a/toolchain/check/testdata/class/fail_method_modifiers.carbon b/toolchain/check/testdata/class/fail_method_modifiers.carbon index cfb972856cf4..1ae45fb8f132 100644 --- a/toolchain/check/testdata/class/fail_method_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_method_modifiers.carbon @@ -115,6 +115,11 @@ base class BaseClass { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FinalClass +// CHECK:STDOUT: .Abstract = %Abstract.decl +// CHECK:STDOUT: .Virtual = %Virtual.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractClass { @@ -136,6 +141,11 @@ base class BaseClass { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AbstractClass +// CHECK:STDOUT: .Default = %Default.decl +// CHECK:STDOUT: .Final = %Final.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @BaseClass { @@ -149,6 +159,10 @@ base class BaseClass { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%BaseClass +// CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Abstract.1[%self.param_patt: %FinalClass](); diff --git a/toolchain/check/testdata/class/fail_method_redefinition.carbon b/toolchain/check/testdata/class/fail_method_redefinition.carbon index fe67182ef340..79f7d6053145 100644 --- a/toolchain/check/testdata/class/fail_method_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_method_redefinition.carbon @@ -53,6 +53,10 @@ class Class { // CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.d22] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_modifiers.carbon b/toolchain/check/testdata/class/fail_modifiers.carbon index 2df159ace7bf..4759d38c1186 100644 --- a/toolchain/check/testdata/class/fail_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_modifiers.carbon @@ -165,21 +165,33 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: class @TwoAbstract { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%TwoAbstract // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Virtual { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Virtual // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongOrder { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%WrongOrder // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractAndBase { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AbstractAndBase // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractWithDefinition { @@ -188,6 +200,11 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: %.loc92: = vtable (%F.decl, %G.decl) [template = constants.%.9a5] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AbstractWithDefinition +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: abstract fn @F() { diff --git a/toolchain/check/testdata/class/fail_out_of_line_decl.carbon b/toolchain/check/testdata/class/fail_out_of_line_decl.carbon index 83a60d3e2cfd..3088bd8022aa 100644 --- a/toolchain/check/testdata/class/fail_out_of_line_decl.carbon +++ b/toolchain/check/testdata/class/fail_out_of_line_decl.carbon @@ -46,6 +46,10 @@ fn C.F() {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = file.%F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon index 16d448522b2b..4d9a34d7a59c 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -65,6 +65,10 @@ class Y { // CHECK:STDOUT: %B.decl: type = class_decl @B.2 [template = constants.%B.29a] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A.466 +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { @@ -72,17 +76,28 @@ class Y { // CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.d5b] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.2 { // CHECK:STDOUT: %B.decl: type = class_decl @B.1 [template = constants.%B.d5b] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A.197 +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B.d5b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.2; @@ -91,10 +106,16 @@ class Y { // CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.65d] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Y // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.65d // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index e53962ab90de..38de3fd672c0 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -95,6 +95,13 @@ fn Class.I() {} // CHECK:STDOUT: %I.decl: %I.type.2b6 = fn_decl @I.1 [template = constants.%I.c9a] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .I = %I.decl +// CHECK:STDOUT: .G = file.%G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.2 { @@ -103,6 +110,12 @@ fn Class.I() {} // CHECK:STDOUT: %I.decl: %I.type.b27 = fn_decl @I.2 [template = constants.%I.a7f] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index 47d9fcf295a0..92a2a0dca3bd 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -84,6 +84,10 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index c4eb6bd1a58b..a27498f8b5b8 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -137,6 +137,11 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongSelf { @@ -150,6 +155,10 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%WrongSelf +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(%self.param_patt: %Class) { diff --git a/toolchain/check/testdata/class/fail_self_param.carbon b/toolchain/check/testdata/class/fail_self_param.carbon index 37be623c5cc0..1233d387a460 100644 --- a/toolchain/check/testdata/class/fail_self_param.carbon +++ b/toolchain/check/testdata/class/fail_self_param.carbon @@ -68,6 +68,9 @@ var v: C(0); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self_type_member.carbon b/toolchain/check/testdata/class/fail_self_type_member.carbon index a6a7bbca9e9d..79bec632ff11 100644 --- a/toolchain/check/testdata/class/fail_self_type_member.carbon +++ b/toolchain/check/testdata/class/fail_self_type_member.carbon @@ -45,6 +45,10 @@ fn F() -> bool { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .b = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> bool; diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index c6101ffeda3f..78c3fe730405 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -86,6 +86,11 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [template = constants.%complete_type.d48] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .field = %.loc12_12 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index a96d8075c103..da894fb1cd4e 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -74,6 +74,10 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .n = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%c.param_patt: %Class) -> %i32 { diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 5ca309f7ea2b..d2d166e63268 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -79,6 +79,11 @@ fn Run() { // CHECK:STDOUT: %.var.loc13: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .j = %.loc12_8 +// CHECK:STDOUT: .k = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index 74c8dabd257d..4202f908c4d3 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -80,6 +80,11 @@ fn Test() { // CHECK:STDOUT: %.var.loc13: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [template = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .j = %.loc12_8 +// CHECK:STDOUT: .k = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Test() { diff --git a/toolchain/check/testdata/class/generic/adapt.carbon b/toolchain/check/testdata/class/generic/adapt.carbon index 2b227bdbca17..93cab46a40df 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -205,6 +205,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %.var: ref @C.%C.elem (%C.elem.66c) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -216,6 +220,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: adapt_decl %C [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapter // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%a.param_patt: %Adapter) -> %i32 { @@ -287,8 +294,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.b5f: = import_ref Main//adapt_specific_type, loc6_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.433)] +// CHECK:STDOUT: %import_ref.4c0 = import_ref Main//adapt_specific_type, inst27 [no loc], unloaded // CHECK:STDOUT: %import_ref.262: @C.%C.elem (%C.elem.66c) = import_ref Main//adapt_specific_type, loc5_8, loaded [template = %.22b] // CHECK:STDOUT: %import_ref.709: = import_ref Main//adapt_specific_type, loc10_1, loaded [template = constants.%complete_type.c07] +// CHECK:STDOUT: %import_ref.feb = import_ref Main//adapt_specific_type, inst45 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -319,6 +328,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter [from "adapt_specific_type.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.709 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.feb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "adapt_specific_type.carbon"] { @@ -334,6 +346,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.b5f +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 +// CHECK:STDOUT: .x = imports.%import_ref.262 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -456,6 +472,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %.var: ref @C.%C.elem (%C.elem.66c) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -467,6 +487,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: adapt_decl %C [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapter +// CHECK:STDOUT: extend %C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%a.param_patt: %Adapter) -> %i32 { @@ -564,6 +588,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %.var: ref @C.%C.elem (%C.elem.66c) = var // CHECK:STDOUT: %complete_type.loc9_1.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc9_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc9_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .x = %.loc8_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -575,6 +603,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: adapt_decl %C [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapter +// CHECK:STDOUT: extend %C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { @@ -629,8 +661,11 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.b5f: = import_ref Main//extend_adapt_specific_type_library, loc9_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.433)] +// CHECK:STDOUT: %import_ref.4c0 = import_ref Main//extend_adapt_specific_type_library, inst27 [no loc], unloaded // CHECK:STDOUT: %import_ref.262: @C.%C.elem (%C.elem.66c) = import_ref Main//extend_adapt_specific_type_library, loc8_8, loaded [template = %.22b] // CHECK:STDOUT: %import_ref.709: = import_ref Main//extend_adapt_specific_type_library, loc13_1, loaded [template = constants.%complete_type.c07] +// CHECK:STDOUT: %import_ref.feb = import_ref Main//extend_adapt_specific_type_library, inst45 [no loc], unloaded +// CHECK:STDOUT: %import_ref.19d12e.2: type = import_ref Main//extend_adapt_specific_type_library, loc12_21, loaded [template = constants.%C.239] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -660,6 +695,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter [from "extend_adapt_specific_type_library.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.709 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.feb +// CHECK:STDOUT: extend imports.%import_ref.19d12e.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "extend_adapt_specific_type_library.carbon"] { @@ -675,6 +714,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.b5f +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 +// CHECK:STDOUT: .x = imports.%import_ref.262 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -713,6 +756,7 @@ 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.0e3: type = class_type @Adapter, @Adapter(%T) [symbolic] // CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %complete_type.f87: = complete_type_witness %T [symbolic] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template] @@ -781,6 +825,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // 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.f87)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapter.0e3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -844,6 +891,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.fb3: = import_ref Main//adapt_generic_type, loc6_1, loaded [symbolic = @Adapter.%complete_type (constants.%complete_type.f87)] +// CHECK:STDOUT: %import_ref.9a3 = import_ref Main//adapt_generic_type, inst27 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -907,6 +955,9 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.fb3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.9a3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -918,6 +969,10 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .n = %.loc11_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedConvert(%a.param_patt: %Adapter.e4c) -> %i32 { diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index 4b1a2aefc851..8123fef8b81a 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -176,6 +176,10 @@ fn H() { // CHECK:STDOUT: %.var: ref @Base.%Base.elem (%Base.elem.9af) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base.370 +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -187,6 +191,10 @@ fn H() { // CHECK:STDOUT: %.var: ref %Param.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.0f9] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Param +// CHECK:STDOUT: .y = %.loc9_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -196,6 +204,11 @@ fn H() { // CHECK:STDOUT: %.loc13: %Derived.elem = base_decl %Base, element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.8bc [template = constants.%complete_type.b07] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: extend %Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @DoubleFieldAccess(%d.param_patt: %Derived) -> %i32 { @@ -268,10 +281,15 @@ fn H() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.e8d: = import_ref Main//extend_generic_base, loc10_1, loaded [template = constants.%complete_type.09d] +// CHECK:STDOUT: %import_ref.446 = import_ref Main//extend_generic_base, inst45 [no loc], unloaded // CHECK:STDOUT: %import_ref.a92: %Param.elem = import_ref Main//extend_generic_base, loc9_8, loaded [template = %.be7] // CHECK:STDOUT: %import_ref.b5f: = import_ref Main//extend_generic_base, loc6_1, loaded [symbolic = @Base.%complete_type (constants.%complete_type.433)] +// CHECK:STDOUT: %import_ref.8e0 = import_ref Main//extend_generic_base, inst27 [no loc], unloaded // CHECK:STDOUT: %import_ref.7f7: @Base.%Base.elem (%Base.elem.9af) = import_ref Main//extend_generic_base, loc5_8, loaded [template = %.e66] // CHECK:STDOUT: %import_ref.bd0: = import_ref Main//extend_generic_base, loc14_1, loaded [template = constants.%complete_type.b07] +// CHECK:STDOUT: %import_ref.f6c = import_ref Main//extend_generic_base, inst82 [no loc], unloaded +// CHECK:STDOUT: %import_ref.d24 = import_ref Main//extend_generic_base, loc13_27, unloaded +// CHECK:STDOUT: %import_ref.77a301.2: type = import_ref Main//extend_generic_base, loc13_26, loaded [template = constants.%Base.7a8] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -303,10 +321,19 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class @Derived [from "extend_generic_base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.bd0 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.f6c +// CHECK:STDOUT: .base = imports.%import_ref.d24 +// CHECK:STDOUT: extend imports.%import_ref.77a301.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Param [from "extend_generic_base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.e8d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.446 +// CHECK:STDOUT: .y = imports.%import_ref.a92 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Base(constants.%T: type) [from "extend_generic_base.carbon"] { @@ -322,6 +349,10 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.b5f +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.8e0 +// CHECK:STDOUT: .x = imports.%import_ref.7f7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -364,6 +395,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.f2e: 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] @@ -413,6 +445,11 @@ fn H() { // CHECK:STDOUT: %.loc9: = base_decl , element0 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -420,6 +457,10 @@ fn H() { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { @@ -456,6 +497,7 @@ 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.75b6d8.1: type = class_type @X, @X(%U) [symbolic] // CHECK:STDOUT: %G.type.56f312.1: type = fn_type @G, @X(%U) [symbolic] // CHECK:STDOUT: %G.b504c4.1: %G.type.56f312.1 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -542,6 +584,10 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X.75b6d8.1 +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -564,6 +610,11 @@ fn H() { // CHECK:STDOUT: %.loc9: @C.%C.elem (%C.elem.3f4) = base_decl %X.loc9_19.1, element0 [template] // CHECK:STDOUT: %complete_type.loc10_1.1: = complete_type_witness %struct_type.base.f5f [symbolic = %complete_type.loc10_1.2 (constants.%complete_type.768)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc10_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: extend %X.loc9_19.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -735,8 +786,12 @@ fn H() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Main//extend_generic_symbolic_base, loc6_1, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.e8e = import_ref Main//extend_generic_symbolic_base, inst27 [no loc], unloaded // CHECK:STDOUT: %import_ref.b8a: @X.%G.type (%G.type.56f312.1) = import_ref Main//extend_generic_symbolic_base, loc5_15, loaded [symbolic = @X.%G (constants.%G.b504c4.1)] // CHECK:STDOUT: %import_ref.93f: = import_ref Main//extend_generic_symbolic_base, loc10_1, loaded [symbolic = @C.%complete_type (constants.%complete_type.768)] +// CHECK:STDOUT: %import_ref.4c0 = import_ref Main//extend_generic_symbolic_base, inst68 [no loc], unloaded +// CHECK:STDOUT: %import_ref.65d = import_ref Main//extend_generic_symbolic_base, loc9_20, unloaded +// CHECK:STDOUT: %import_ref.561eb2.2: type = import_ref Main//extend_generic_symbolic_base, loc9_19, loaded [symbolic = @C.%X (constants.%X.75b6d8.2)] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -766,6 +821,11 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.93f +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 +// CHECK:STDOUT: .base = imports.%import_ref.65d +// CHECK:STDOUT: extend imports.%import_ref.561eb2.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -779,6 +839,10 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.e8e +// CHECK:STDOUT: .G = imports.%import_ref.b8a // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/basic.carbon b/toolchain/check/testdata/class/generic/basic.carbon index cf67e1cae6d3..61c2cce1ed09 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -136,6 +136,12 @@ class Declaration(T:! type); // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem) = var // CHECK:STDOUT: %complete_type.loc22_1.1: = complete_type_witness %struct_type.k [symbolic = %complete_type.loc22_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc22_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .GetAddr = %GetAddr.decl +// CHECK:STDOUT: .GetValue = %GetValue.decl +// CHECK:STDOUT: .k = %.loc21_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/call.carbon b/toolchain/check/testdata/class/generic/call.carbon index bf66ce2e4fc9..3eed31485ebf 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -98,6 +98,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.8cf: %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.ab2: type = class_type @Class, @Class(%T, %N.356) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [template] @@ -201,6 +202,9 @@ class Outer(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class.ab2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,6 +244,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.8cf: %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.356) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [template] @@ -300,6 +305,9 @@ class Outer(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -321,6 +329,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.8cf: %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.356) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %ptr: type = ptr_type %i32 [template] @@ -385,6 +394,9 @@ class Outer(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -406,6 +418,7 @@ class Outer(T:! type) { // CHECK:STDOUT: %N.patt.8cf: %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.356) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [template] @@ -470,6 +483,9 @@ class Outer(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -565,6 +581,10 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer.9d6 +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -628,6 +648,13 @@ class Outer(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner.c71 +// CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon index be5c11260fd8..ad581c12ecfe 100644 --- a/toolchain/check/testdata/class/generic/complete_in_conversion.carbon +++ b/toolchain/check/testdata/class/generic/complete_in_conversion.carbon @@ -151,6 +151,9 @@ fn F(a: A(0)*) { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @A(%N.loc6_9.1: %i32) { @@ -179,6 +182,12 @@ fn F(a: A(0)*) { // CHECK:STDOUT: %.var: ref @A.%A.elem.loc12 (%A.elem.d60) = var // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.base.n [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.547)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A.dd3 +// CHECK:STDOUT: .base = %.loc7 +// CHECK:STDOUT: .n = %.loc12_8 +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/field.carbon b/toolchain/check/testdata/class/generic/field.carbon index 658b7ffbb003..16555a422221 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -167,6 +167,10 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem.e262de.1) = var // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %struct_type.x.2ac3f0.1 [symbolic = %complete_type.loc13_1.2 (constants.%complete_type.4339b3.1)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class.fe1b2d.1 +// CHECK:STDOUT: .x = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/import.carbon b/toolchain/check/testdata/class/generic/import.carbon index 5bf368f521de..b16d5fa1db7e 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -193,6 +193,11 @@ class Class(U:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%CompleteClass.f97 +// CHECK:STDOUT: .n = %.loc7_8 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -288,6 +293,9 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.a68] +// CHECK:STDOUT: %import_ref.3c0 = import_ref Main//foo, inst37 [no loc], unloaded +// CHECK:STDOUT: %import_ref.051 = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %import_ref.570 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -339,6 +347,10 @@ class Class(U:! type) { // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.x [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -354,6 +366,11 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.eb1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.3c0 +// CHECK:STDOUT: .n = imports.%import_ref.051 +// CHECK:STDOUT: .F = imports.%import_ref.570 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -450,6 +467,7 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.54b] +// CHECK:STDOUT: %import_ref.3c0 = import_ref Main//foo, inst37 [no loc], unloaded // CHECK:STDOUT: %import_ref.e76: @CompleteClass.%CompleteClass.elem (%CompleteClass.elem.28a) = import_ref Main//foo, loc7_8, loaded [template = %.364] // CHECK:STDOUT: %import_ref.a52: @CompleteClass.%F.type (%F.type.14f) = import_ref Main//foo, loc8_17, loaded [symbolic = @CompleteClass.%F (constants.%F.874)] // CHECK:STDOUT: } @@ -497,6 +515,11 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.eb1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.3c0 +// CHECK:STDOUT: .n = imports.%import_ref.e76 +// CHECK:STDOUT: .F = imports.%import_ref.a52 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -632,6 +655,9 @@ class Class(U:! type) { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.eb1: = import_ref Main//foo, loc9_1, loaded [template = constants.%complete_type.a68] +// CHECK:STDOUT: %import_ref.3c0 = import_ref Main//foo, inst37 [no loc], unloaded +// CHECK:STDOUT: %import_ref.051 = import_ref Main//foo, loc7_8, unloaded +// CHECK:STDOUT: %import_ref.570 = import_ref Main//foo, loc8_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -659,6 +685,11 @@ class Class(U:! type) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.eb1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.3c0 +// CHECK:STDOUT: .n = imports.%import_ref.051 +// CHECK:STDOUT: .F = imports.%import_ref.570 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -741,6 +772,7 @@ 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: %.e41: type = class_type @.1, @.1(%U) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -793,6 +825,10 @@ class Class(U:! type) { // CHECK:STDOUT: %.var: ref = var // CHECK:STDOUT: %complete_type: = complete_type_witness [template = ] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.e41 +// CHECK:STDOUT: .x = %.loc17_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/init.carbon b/toolchain/check/testdata/class/generic/init.carbon index dba94b05cb9a..19c01d75f542 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -147,6 +147,10 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem.e26) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.k.b21 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.b9e)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class.fe1 +// CHECK:STDOUT: .k = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -345,6 +349,9 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // 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.f87)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Adapt.2e4 // CHECK:STDOUT: } // 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 b8b3af71ceb2..15c09b98bd0f 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -236,6 +236,12 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc8_1.2 (constants.%complete_type.433)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc8_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class.fe1 +// CHECK:STDOUT: .x = %.loc3_8 +// CHECK:STDOUT: .Get = %Get.decl +// CHECK:STDOUT: .GetAddr = %GetAddr.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -473,6 +479,10 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } // 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 197eab27595e..5d3f43da9a24 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -132,6 +132,12 @@ class C(T:! type) { // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem) = var // CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.n [symbolic = %complete_type.loc14_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc14_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .n = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,6 +259,11 @@ class C(T:! type) { // CHECK:STDOUT: %.var: ref @C.%C.elem (%C.elem) = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.data [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .data = %.loc12_11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/member_lookup.carbon b/toolchain/check/testdata/class/generic/member_lookup.carbon index 0ec270c57bf7..af47353abd8e 100644 --- a/toolchain/check/testdata/class/generic/member_lookup.carbon +++ b/toolchain/check/testdata/class/generic/member_lookup.carbon @@ -226,6 +226,10 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %.var: ref @Base.%Base.elem (%Base.elem.9af) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.f69 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.eaf)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base.370 +// CHECK:STDOUT: .b = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -255,6 +259,12 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %.var: ref @Derived.%Derived.elem.loc10 (%Derived.elem.6d2) = var // CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.37c [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.8ad)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc11_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived.85c +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .d = %.loc10_8 +// CHECK:STDOUT: extend %Base.loc9_22.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -547,6 +557,10 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %.var: ref @Base.%Base.elem (%Base.elem.9af) = var // CHECK:STDOUT: %complete_type.loc6_1.1: = complete_type_witness %struct_type.b.f69 [symbolic = %complete_type.loc6_1.2 (constants.%complete_type.eaf)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc6_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base.370 +// CHECK:STDOUT: .b = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -576,6 +590,12 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 { // CHECK:STDOUT: %.var: ref @Derived.%Derived.elem.loc10 (%Derived.elem.6d2) = var // CHECK:STDOUT: %complete_type.loc11_1.1: = complete_type_witness %struct_type.base.d.37c [symbolic = %complete_type.loc11_1.2 (constants.%complete_type.8ad)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc11_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived.85c +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .d = %.loc10_8 +// CHECK:STDOUT: extend %Base.loc9_22.1 // CHECK:STDOUT: } // 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 331797634b1b..3e9b381688f6 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -232,6 +232,12 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %.var: ref @Class.%Class.elem (%Class.elem) = var // CHECK:STDOUT: %complete_type.loc8_1.1: = complete_type_witness %struct_type.n [symbolic = %complete_type.loc8_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc8_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .n = %.loc7_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -303,6 +309,7 @@ fn Generic(T:! ()).WrongType() {} // 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: type = class_type @A, @A(%T) [symbolic] // CHECK:STDOUT: %N: %T = bind_symbolic_name N, 1 [symbolic] // CHECK:STDOUT: %N.patt: %T = symbolic_binding_pattern N, 1 [symbolic] // CHECK:STDOUT: %B.type: type = generic_class_type @B, @A(%T) [symbolic] @@ -378,6 +385,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -409,6 +420,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -496,6 +511,10 @@ fn Generic(T:! ()).WrongType() {} // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NotGeneric +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -524,6 +543,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [template] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template] +// CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T) [symbolic] // CHECK:STDOUT: %TooFew.type: type = fn_type @TooFew, @Generic(%T) [symbolic] // CHECK:STDOUT: %TooFew: %TooFew.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -567,6 +587,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %TooFew.decl: @Generic.%TooFew.type (%TooFew.type) = fn_decl @TooFew [symbolic = @Generic.%TooFew (constants.%TooFew)] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Generic +// CHECK:STDOUT: .TooFew = %TooFew.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -596,6 +620,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [template] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template] +// CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T) [symbolic] // CHECK:STDOUT: %TooMany.type: type = fn_type @TooMany, @Generic(%T) [symbolic] // CHECK:STDOUT: %TooMany: %TooMany.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -646,6 +671,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %TooMany.decl: @Generic.%TooMany.type (%TooMany.type) = fn_decl @TooMany [symbolic = @Generic.%TooMany (constants.%TooMany)] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Generic +// CHECK:STDOUT: .TooMany = %TooMany.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -692,6 +721,7 @@ fn Generic(T:! ()).WrongType() {} // 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.8b3) [symbolic] // CHECK:STDOUT: %WrongType.type: type = fn_type @WrongType, @Generic(%T.8b3) [symbolic] // CHECK:STDOUT: %WrongType: %WrongType.type = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -744,6 +774,10 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: %WrongType.decl: @Generic.%WrongType.type (%WrongType.type) = fn_decl @WrongType [symbolic = @Generic.%WrongType (constants.%WrongType)] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Generic +// CHECK:STDOUT: .WrongType = %WrongType.decl // CHECK:STDOUT: } // 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 404cc98593f7..2657982b205c 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -35,6 +35,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // 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.fe1: 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.24b: type = tuple_type (type, type) [template] @@ -135,11 +136,17 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc14_13.1: type) { @@ -190,6 +197,11 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class.fe1 +// CHECK:STDOUT: .Get = %Get.decl +// CHECK:STDOUT: .GetNoDeduce = %GetNoDeduce.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/redeclare.carbon b/toolchain/check/testdata/class/generic/redeclare.carbon index e2958dedece1..f283a07b85dd 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -94,6 +94,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Generic.type: type = generic_class_type @Generic [template] // CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template] +// CHECK:STDOUT: %Generic: type = class_type @Generic, @Generic(%T) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -136,6 +137,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Generic // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -152,6 +156,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: %.e41: 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: } @@ -190,6 +195,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.e41 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -213,6 +221,7 @@ class E(U:! type) {} // CHECK:STDOUT: %N.patt.51c: %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: %.943: type = class_type @.1, @.1(%T, %N.f22) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -274,6 +283,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.943 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -302,6 +314,7 @@ 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: %.c28: type = class_type @.1, @.1(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -362,6 +375,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.c28 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -390,6 +406,7 @@ class E(U:! type) {} // CHECK:STDOUT: %T.patt.8e2: %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: %.f5e: type = class_type @.1, @.1(%T.51e) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -444,6 +461,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.f5e // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -468,6 +488,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: %.e41: 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: } @@ -517,6 +538,9 @@ class E(U:! type) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.e41 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/self.carbon b/toolchain/check/testdata/class/generic/self.carbon index a25da0f6899a..17fefa902e89 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -98,6 +98,12 @@ class Class(T:! type) { // CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .MakeSelf = %MakeSelf.decl +// CHECK:STDOUT: .MakeClass = %MakeClass.decl +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/stringify.carbon b/toolchain/check/testdata/class/generic/stringify.carbon index af6be2f423ea..37931f1ea9bb 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -140,11 +140,17 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: class @NoParams { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NoParams // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @EmptyParams { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%EmptyParams // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -162,10 +168,12 @@ 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.9d6: 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.eae: type = generic_class_type @Inner, @Outer(%T) [symbolic] // CHECK:STDOUT: %Inner.generic.137: %Inner.type.eae = struct_value () [symbolic] +// CHECK:STDOUT: %Inner.c71: type = class_type @Inner, @Inner(%T, %U) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %ptr.c28: type = ptr_type %empty_struct_type [template] @@ -256,6 +264,10 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer.9d6 +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -268,6 +280,9 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner.c71 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -317,6 +332,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %N.patt.8e2: %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.506: type = class_type @C, @C(%N.51e) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_123.fff: Core.IntLiteral = int_value 123 [template] @@ -385,6 +401,9 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.506 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -421,6 +440,7 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // 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.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] @@ -520,6 +540,11 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: %.var.loc6: ref %D.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .b = %.loc6_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @E(%F.loc9_9.1: %D) { @@ -531,6 +556,9 @@ var g: E({.a = 1, .b = 2}) = {} as E({.a = 3, .b = 4} as D); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%E // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic_method.carbon b/toolchain/check/testdata/class/generic_method.carbon index 4eaec09bdc8d..4072131571e6 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -109,6 +109,11 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.a [symbolic = %complete_type.loc14_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc14_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index 52176790d86a..ea961ca257b2 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -97,6 +97,9 @@ fn Run() { // CHECK:STDOUT: class @Empty { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Empty // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field { @@ -107,6 +110,10 @@ fn Run() { // CHECK:STDOUT: %.var: ref %Field.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Field +// CHECK:STDOUT: .x = %.loc8_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared { @@ -132,6 +139,11 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%ForwardDeclared +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; @@ -192,12 +204,18 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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.709: = import_ref Main//a, loc9_1, loaded [template = constants.%complete_type.c07] +// CHECK:STDOUT: %import_ref.845 = import_ref Main//a, inst21 [no loc], unloaded // CHECK:STDOUT: %import_ref.4d2: %Field.elem = import_ref Main//a, loc8_8, loaded [template = %.d33] // 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, inst59 [no loc], unloaded // CHECK:STDOUT: %import_ref.760: %F.type = import_ref Main//a, loc14_21, loaded [template = constants.%F] // CHECK:STDOUT: %import_ref.26e: %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, inst59 [no loc], unloaded +// CHECK:STDOUT: %import_ref.42a = import_ref Main//a, loc14_21, unloaded +// CHECK:STDOUT: %import_ref.67a = import_ref Main//a, loc15_27, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -216,18 +234,35 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Empty [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.fd7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.709 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.845 +// CHECK:STDOUT: .x = imports.%import_ref.4d2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.1 [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.39e731.1 +// CHECK:STDOUT: .F = imports.%import_ref.760 +// CHECK:STDOUT: .G = imports.%import_ref.26e // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.2 [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.39e731.2 +// CHECK:STDOUT: .F = imports.%import_ref.42a +// CHECK:STDOUT: .G = imports.%import_ref.67a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete [from "a.carbon"]; diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 6d7eab576b3f..f819c88b6b00 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -103,6 +103,13 @@ fn Run() { // CHECK:STDOUT: %.var.loc9: ref %Base.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.unused [template = constants.%complete_type.20c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .Unused = %Unused.decl +// CHECK:STDOUT: .x = %.loc8_8 +// CHECK:STDOUT: .unused = %.loc9_13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Child { @@ -110,6 +117,11 @@ fn Run() { // 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.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Child +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Base](); @@ -164,9 +176,15 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.239: = import_ref Main//a, loc10_1, loaded [template = constants.%complete_type.90f] +// CHECK:STDOUT: %import_ref.1f3 = import_ref Main//a, inst16 [no loc], unloaded // CHECK:STDOUT: %import_ref.e8f: %F.type = import_ref Main//a, loc5_21, loaded [template = constants.%F] +// CHECK:STDOUT: %import_ref.8bf = import_ref Main//a, loc6_26, unloaded // CHECK:STDOUT: %import_ref.e67: %Base.elem = import_ref Main//a, loc8_8, loaded [template = %.720] +// CHECK:STDOUT: %import_ref.2e4 = 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, inst76 [no loc], unloaded +// CHECK:STDOUT: %import_ref.7e5 = import_ref Main//a, loc13_20, unloaded +// CHECK:STDOUT: %import_ref.a21640.2: type = import_ref Main//a, loc13_16, loaded [template = constants.%Base] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -183,10 +201,22 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Child [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.c5f +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.9a9 +// CHECK:STDOUT: .base = imports.%import_ref.7e5 +// CHECK:STDOUT: extend imports.%import_ref.a21640.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.239 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .F = imports.%import_ref.e8f +// CHECK:STDOUT: .Unused = imports.%import_ref.8bf +// CHECK:STDOUT: .x = imports.%import_ref.e67 +// CHECK:STDOUT: .unused = imports.%import_ref.2e4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/import_forward_decl.carbon b/toolchain/check/testdata/class/import_forward_decl.carbon index d90ed5e8cfa4..443e16bece5c 100644 --- a/toolchain/check/testdata/class/import_forward_decl.carbon +++ b/toolchain/check/testdata/class/import_forward_decl.carbon @@ -74,5 +74,8 @@ class ForwardDecl { // CHECK:STDOUT: class @ForwardDecl { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%ForwardDecl // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index a9451ce6a177..a979dd90b492 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -127,6 +127,9 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -146,6 +149,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -181,6 +185,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -212,6 +219,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -247,6 +255,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -281,6 +292,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -316,6 +328,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -350,6 +365,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -385,6 +401,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -421,6 +440,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -458,6 +478,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -494,6 +517,7 @@ var ptr: E* = &val; // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -531,6 +555,9 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index e0d98a90134e..8218dc035797 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -60,6 +60,10 @@ fn Run() { // CHECK:STDOUT: %.var: ref %Cycle.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Cycle +// CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -80,6 +84,8 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -95,6 +101,10 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.72d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.3a6 +// CHECK:STDOUT: .a = imports.%import_ref.4e0 // 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 69f78f0e2a4c..1d7b36078dfe 100644 --- a/toolchain/check/testdata/class/import_struct_cyle.carbon +++ b/toolchain/check/testdata/class/import_struct_cyle.carbon @@ -79,6 +79,10 @@ fn Run() { // CHECK:STDOUT: %.var: ref %Cycle.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Cycle +// CHECK:STDOUT: .c = %.loc10_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -102,6 +106,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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: @@ -119,6 +124,10 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @Cycle [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.b93 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.3a6 +// CHECK:STDOUT: .c = imports.%import_ref.455 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 53eee50f2a87..99a75d01a29e 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -278,6 +278,11 @@ class B { // CHECK:STDOUT: %.var.loc6: ref %Shape.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.y [template = constants.%complete_type.70a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Shape +// CHECK:STDOUT: .x [protected] = %.loc5_18 +// CHECK:STDOUT: .y [protected] = %.loc6_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Circle { @@ -303,6 +308,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ed [template = constants.%complete_type.a2b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Circle +// CHECK:STDOUT: .base = %.loc10 +// CHECK:STDOUT: .GetPosition = %GetPosition.decl +// CHECK:STDOUT: extend %Shape.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Circle]() -> %return.param_patt: %tuple.type.d07 { @@ -380,6 +391,10 @@ class B { // CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.1 [template = constants.%F.485] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -396,6 +411,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -417,6 +438,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc14 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(); @@ -510,6 +537,11 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .SOME_CONSTANT [protected] = %SOME_CONSTANT +// CHECK:STDOUT: .SomeProtectedFunction [protected] = %SomeProtectedFunction.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -535,6 +567,13 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc12 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeProtectedFunction() -> %i32 { @@ -610,6 +649,10 @@ class B { // CHECK:STDOUT: %.var: ref %Shape.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.0f9] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Shape +// CHECK:STDOUT: .y [private] = %.loc5_16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Square { @@ -631,6 +674,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ed [template = constants.%complete_type.a2b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Square +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .GetPosition = %GetPosition.decl +// CHECK:STDOUT: extend %Shape.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Square]() -> %i32 { @@ -674,6 +723,11 @@ class B { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -723,6 +777,11 @@ class B { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F [protected] = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -776,6 +835,10 @@ 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .F [private] = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -784,6 +847,12 @@ class B { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -837,6 +906,10 @@ 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .F [protected] = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -845,6 +918,12 @@ class B { // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -942,6 +1021,11 @@ class B { // CHECK:STDOUT: %SOME_PRIVATE_CONSTANT: %i32 = bind_name SOME_PRIVATE_CONSTANT, %.loc6_44.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .SOME_PROTECTED_CONSTANT [protected] = %SOME_PROTECTED_CONSTANT +// CHECK:STDOUT: .SOME_PRIVATE_CONSTANT [private] = %SOME_PRIVATE_CONSTANT // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Internal { @@ -962,6 +1046,10 @@ class B { // CHECK:STDOUT: %INTERNAL_CONSTANT: %i32 = bind_name INTERNAL_CONSTANT, %.loc10_42.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Internal +// CHECK:STDOUT: .INTERNAL_CONSTANT [protected] = %INTERNAL_CONSTANT // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -995,6 +1083,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.internal.6f5 [template = constants.%complete_type.d77] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .internal [private] = %.loc14_23 +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .SomeFunc = %SomeFunc.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32 { @@ -1060,6 +1154,10 @@ class B { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x [private] = %.loc5_16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1075,6 +1173,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %B]() { @@ -1129,6 +1233,10 @@ class B { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .x [protected] = %.loc5_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1144,6 +1252,12 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %B]() { diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index e324a2da78c3..03d0e18e7636 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -119,6 +119,11 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %.var.loc13: ref %Class.elem.0c0 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.next [template = constants.%complete_type.78f] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .n = %.loc12_8 +// CHECK:STDOUT: .next = %.loc13_11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make(%n.param_patt: %i32, %next.param_patt: %ptr.e71) -> %return.param_patt: %Class { diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index 32aa269fd9d1..e55deb488845 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -85,6 +85,11 @@ fn F() -> i32 { // CHECK:STDOUT: %.var.loc13: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 106751b65afd..7cdf2058de53 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -93,6 +93,11 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %.var.loc13: ref %Inner.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { @@ -108,6 +113,11 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: %.var.loc20: ref %Outer.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.d.dce [template = constants.%complete_type.8b6] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer +// CHECK:STDOUT: .c = %.loc19_8 +// CHECK:STDOUT: .d = %.loc20_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeInner() -> %Inner; diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index 9a7ad50f033f..03606446b89c 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -81,6 +81,10 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -99,6 +103,11 @@ class A { // CHECK:STDOUT: %.var: ref %B.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.033 [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .n = %.loc19_12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 800af4b54050..b68cfa2a829b 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -291,6 +291,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.0bf [template = constants.%complete_type.954] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .A = %A +// CHECK:STDOUT: .k = %.loc17_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class]() -> %i32 { diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index 0afcaa7d0afb..431a5bf57d51 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -123,6 +123,15 @@ fn F(a: Outer*) { // CHECK:STDOUT: %.var.loc38: ref %Outer.elem.fe9 = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.po.qo.pi [template = constants.%complete_type.e99] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: .po = %.loc36_9 +// CHECK:STDOUT: .qo = %.loc37_9 +// CHECK:STDOUT: .pi = %.loc38_9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { @@ -144,6 +153,13 @@ fn F(a: Outer*) { // 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.7ae] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner +// CHECK:STDOUT: .pi = %.loc19_11 +// CHECK:STDOUT: .po = %.loc20_11 +// CHECK:STDOUT: .qi = %.loc21_11 +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() { diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 8f4a28bcd6c0..96670c3a60c9 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -88,6 +88,10 @@ fn G(o: 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { @@ -98,6 +102,10 @@ fn G(o: Outer) { // CHECK:STDOUT: %.var: ref %Inner.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner +// CHECK:STDOUT: .n = %.loc13_10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%oi.param_patt: %Inner) -> %i32 { diff --git a/toolchain/check/testdata/class/no_prelude/export_name.carbon b/toolchain/check/testdata/class/no_prelude/export_name.carbon index 24bf60d024c5..ced9ac5912ec 100644 --- a/toolchain/check/testdata/class/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/class/no_prelude/export_name.carbon @@ -56,6 +56,9 @@ var c: C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -69,6 +72,7 @@ var c: C = {}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -81,6 +85,9 @@ var c: C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -95,6 +102,7 @@ var c: C = {}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -114,6 +122,9 @@ var c: C = {}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // 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 ebdb64529443..e21ffe685178 100644 --- a/toolchain/check/testdata/class/no_prelude/extern.carbon +++ b/toolchain/check/testdata/class/no_prelude/extern.carbon @@ -345,6 +345,9 @@ extern class C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_fn_in_extern.carbon @@ -385,6 +388,9 @@ extern class C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_extern_decl.carbon @@ -439,6 +445,10 @@ extern class C; // CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D; @@ -462,6 +472,9 @@ extern class C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_decl.carbon @@ -593,6 +606,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // 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 { @@ -605,6 +619,9 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_import_def.carbon @@ -617,6 +634,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: imports { // 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 { @@ -629,5 +647,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // 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 efc04c4c8c32..bddc31fe878a 100644 --- a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon @@ -67,13 +67,17 @@ fn F(T:! type) { // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [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.2ce: 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.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %GenericNoParams.72f: type = class_type @GenericNoParams [template] +// CHECK:STDOUT: %GenericNoParams.fbf: 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.3ce: type = generic_class_type @GenericAndParams.2, @C(%T) [symbolic] // CHECK:STDOUT: %GenericAndParams.generic.54a: %GenericAndParams.type.3ce = struct_value () [symbolic] +// CHECK:STDOUT: %GenericAndParams.425: 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] @@ -177,11 +181,17 @@ fn F(T:! type) { // CHECK:STDOUT: class @NotGenericNoParams { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NotGenericNoParams // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NotGenericButParams { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NotGenericButParams // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @GenericAndParams.1(%T.loc6_24.1: type) { @@ -193,6 +203,9 @@ fn F(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%GenericAndParams.2ce // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -215,6 +228,11 @@ fn F(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl +// CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -224,6 +242,9 @@ fn F(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%GenericNoParams.fbf // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -236,12 +257,18 @@ fn F(T:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%GenericAndParams.425 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -316,6 +343,7 @@ fn F(T:! type) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %A.type: type = generic_class_type @A [template] // CHECK:STDOUT: %A.generic: %A.type = struct_value () [template] +// 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: } @@ -330,6 +358,9 @@ fn F(T:! type) { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_non_generic_params.carbon @@ -364,6 +395,9 @@ fn F(T:! type) { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc11_6.1: type) { diff --git a/toolchain/check/testdata/class/no_prelude/implicit_import.carbon b/toolchain/check/testdata/class/no_prelude/implicit_import.carbon index 7fe0a52fd775..24211decf9eb 100644 --- a/toolchain/check/testdata/class/no_prelude/implicit_import.carbon +++ b/toolchain/check/testdata/class/no_prelude/implicit_import.carbon @@ -119,6 +119,9 @@ class B {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redecl_after_def.carbon @@ -139,6 +142,9 @@ class B {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redecl_after_def.impl.carbon @@ -151,6 +157,7 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // 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 { @@ -164,6 +171,9 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redef_after_def.carbon @@ -184,6 +194,9 @@ class B {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redef_after_def.impl.carbon @@ -198,6 +211,7 @@ class B {} // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -211,11 +225,17 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "redef_after_def.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- def_alias.carbon @@ -265,5 +285,8 @@ class B {} // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 // 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 490fc6fe46d1..e7d61f875396 100644 --- a/toolchain/check/testdata/class/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/class/no_prelude/import_access.carbon @@ -154,6 +154,9 @@ private class Redecl {} // CHECK:STDOUT: class @Def { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Def // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- forward_with_def.carbon @@ -175,6 +178,9 @@ private class Redecl {} // CHECK:STDOUT: class @ForwardWithDef { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%ForwardWithDef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- forward.carbon @@ -204,6 +210,7 @@ private class Redecl {} // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.c21: 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 { @@ -224,6 +231,9 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: class @Def [from "def.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4ce // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -311,6 +321,7 @@ private class Redecl {} // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.142: 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 { @@ -331,6 +342,9 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardWithDef [from "forward_with_def.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.414 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -445,6 +459,9 @@ private class Redecl {} // CHECK:STDOUT: class @Forward { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Forward // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %ptr) { @@ -539,5 +556,8 @@ private class Redecl {} // CHECK:STDOUT: class @Redecl { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Redecl // CHECK:STDOUT: } // CHECK:STDOUT: 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 321322a9e8de..b32bbbafbfeb 100644 --- a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon @@ -121,6 +121,10 @@ var x: () = D.C.F(); // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -152,6 +156,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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.2cf = import_ref Main//a, loc5_10, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -164,6 +170,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .F = imports.%import_ref.2cf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- d.carbon @@ -191,6 +201,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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.230 = import_ref Main//c, inst21 [indirect], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -208,10 +220,18 @@ var x: () = D.C.F(); // CHECK:STDOUT: %C: type = bind_alias C, imports.%import_ref.06e [template = constants.%C] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .C = %C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.230 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- f.carbon @@ -241,6 +261,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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.943: %F.type = import_ref Main//a, loc5_10, loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -264,6 +285,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .F = imports.%import_ref.943 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; @@ -291,6 +316,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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.5d3: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -314,6 +340,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.5d3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; @@ -341,6 +371,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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.5d3: %F.type = import_ref Main//c, inst21 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -364,6 +395,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .F = imports.%import_ref.5d3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; @@ -392,8 +427,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.b0a: 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.bf1: 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.c85: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -417,10 +454,18 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .C = imports.%import_ref.bf1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "e.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .F = imports.%import_ref.c85 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; @@ -450,8 +495,10 @@ var x: () = D.C.F(); // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.b0a: 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.bf1: 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.c85: %F.type = import_ref Main//e, inst24 [indirect], loaded [template = constants.%F] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -475,10 +522,18 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "e.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .C = imports.%import_ref.bf1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "e.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .F = imports.%import_ref.c85 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() [from "a.carbon"]; diff --git a/toolchain/check/testdata/class/no_prelude/no_definition_in_impl_file.carbon b/toolchain/check/testdata/class/no_prelude/no_definition_in_impl_file.carbon index eae7928e8f08..159883668d55 100644 --- a/toolchain/check/testdata/class/no_prelude/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/class/no_prelude/no_definition_in_impl_file.carbon @@ -111,6 +111,9 @@ class D; // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_decl_in_api.carbon diff --git a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon index f36708933da5..689bd4d049d3 100644 --- a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon @@ -190,8 +190,10 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_class_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] +// CHECK:STDOUT: %Foo: type = class_type @Foo, @Foo(%a) [symbolic] // CHECK:STDOUT: %Bar.type: type = generic_class_type @Bar [template] // CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [template] +// CHECK:STDOUT: %Bar: type = class_type @Bar, @Bar(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -241,6 +243,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -252,6 +257,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Foo // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -264,6 +272,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Bar // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -287,6 +298,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_class_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] +// CHECK:STDOUT: %Foo: type = class_type @Foo, @Foo(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -316,6 +328,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_17.1: %C) { @@ -327,6 +342,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Foo // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -347,6 +365,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: %.cb8: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -376,6 +395,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -394,6 +416,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.cb8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -417,6 +442,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_class_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] +// CHECK:STDOUT: %Foo: type = class_type @Foo, @Foo(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -446,6 +472,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -457,6 +486,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Foo // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -510,6 +542,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -546,14 +581,17 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_class_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] +// CHECK:STDOUT: %Foo: type = class_type @Foo, @Foo(%a) [symbolic] // CHECK:STDOUT: %Bar.type: type = generic_class_type @Bar [template] // CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [template] +// CHECK:STDOUT: %Bar: type = class_type @Bar, @Bar(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//two_file, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.05a: 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 { @@ -585,6 +623,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -596,6 +637,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Foo // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -608,6 +652,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Bar // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -635,6 +682,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: %.cb8: type = class_type @.1, @.1(%b) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -667,6 +715,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -685,6 +736,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.cb8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -710,6 +764,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: %.cb8: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -742,6 +797,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -760,6 +818,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.cb8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -785,6 +846,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: %.cb8: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -817,6 +879,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -835,6 +900,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.cb8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -879,6 +947,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -903,11 +974,13 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_class_type @Foo [template] // CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template] +// CHECK:STDOUT: %Foo: type = class_type @Foo, @Foo(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -932,6 +1005,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -943,6 +1019,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Foo // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -964,6 +1043,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: %.8e9: type = class_type @.1, @.1(%a) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1000,6 +1080,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %const) { @@ -1018,6 +1101,9 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.8e9 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1086,6 +1172,11 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt: %ptr.11f](); diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index f364c1e26857..ec7b9143654f 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -157,6 +157,12 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .n = %.loc14_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt.loc17_21: %ptr.e71](%self.param_patt.loc17_36: %i32) { diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index e08f4202aa9f..cdde983e293e 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -73,6 +73,10 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.1 [template = constants.%F.1f2] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MemberNamedSelf { @@ -92,11 +96,19 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MemberNamedSelf +// CHECK:STDOUT: .r#Self = %Self.decl +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Self { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Self // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() { diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index 5829ff320100..70487827ebb5 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -83,6 +83,10 @@ fn Class.F[self: Self](b: bool) {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class](%b.param_patt: bool) { diff --git a/toolchain/check/testdata/class/redeclaration_introducer.carbon b/toolchain/check/testdata/class/redeclaration_introducer.carbon index 70f54143d62c..e89f987d00f7 100644 --- a/toolchain/check/testdata/class/redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/redeclaration_introducer.carbon @@ -52,15 +52,24 @@ abstract class C {} // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 8f0401d376c0..f901a4e500ac 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -79,6 +79,11 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index 82fbfc1786d3..60bbcb41f41c 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -79,6 +79,11 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32 { diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index ecd227923398..a0a51470ae31 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -137,6 +137,12 @@ class A { // CHECK:STDOUT: %.var: ref %A.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.ba9 [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: .AF = %AF.decl +// CHECK:STDOUT: .a = %.loc46_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -149,6 +155,12 @@ class A { // CHECK:STDOUT: %.var: ref %B.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b.0a3 [template = constants.%complete_type.ba8] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: .BF = %BF.decl +// CHECK:STDOUT: .b = %.loc16_10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -162,6 +174,12 @@ class A { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.b66 [template = constants.%complete_type.836] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: .CF = %CF.decl +// CHECK:STDOUT: .c = %.loc42_10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -174,6 +192,12 @@ class A { // CHECK:STDOUT: %.var: ref %D.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d.b7b [template = constants.%complete_type.860] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .DF = %DF.decl +// CHECK:STDOUT: .d = %.loc24_12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @BF(); diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index ad83ee9d2965..5fedbf685985 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -108,6 +108,11 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() -> %i32 { diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 2ae6fef6942b..074bb2d27167 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -147,6 +147,12 @@ class Class { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: .n = %.loc8_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class]() -> %i32 { @@ -212,6 +218,10 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class]() -> ; diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index 0c6e7f422824..e36b3c50d1d8 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -136,6 +136,10 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %.var: ref %Base.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [template = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -169,6 +173,13 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc16 +// CHECK:STDOUT: .SelfBase = %SelfBase.decl +// CHECK:STDOUT: .AddrSelfBase = %AddrSelfBase.decl +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @SelfBase[%self.param_patt: %Base]() -> %i32 { diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index 597bc0d1b922..a7cbb49803f5 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -99,6 +99,12 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %.var: ref %Class.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.p [template = constants.%complete_type.56d] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: .p = %.loc18_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class]() -> %i32 { diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 0ee2aff8bd1e..0447a9aae2d4 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -72,6 +72,10 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32; diff --git a/toolchain/check/testdata/class/syntactic_merge_literal.carbon b/toolchain/check/testdata/class/syntactic_merge_literal.carbon index d81a614d04fa..db43ce589f02 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -40,6 +40,7 @@ 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.506: type = class_type @C, @C(%a) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_1000.ff9: Core.IntLiteral = int_value 1000 [template] @@ -55,6 +56,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: %b.patt: %C.262 = 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] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -131,6 +133,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.506 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -143,6 +148,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -170,6 +178,7 @@ 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.506: type = class_type @C, @C(%a) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_1000.ff9: Core.IntLiteral = int_value 1000 [template] @@ -187,6 +196,7 @@ class D(b:! C(1_000)) {} // 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: %.3d2: type = class_type @.1, @.1(%b) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -263,6 +273,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.506 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -282,6 +295,9 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.3d2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/todo_access_modifiers.carbon b/toolchain/check/testdata/class/todo_access_modifiers.carbon index a08f4442c3cc..be1d6e5763a3 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -66,6 +66,13 @@ class Access { // CHECK:STDOUT: %.var.loc19: ref %Access.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.l [template = constants.%complete_type.48a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Access +// CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: .G [protected] = %G.decl +// CHECK:STDOUT: .k [private] = %.loc17_16 +// CHECK:STDOUT: .l [protected] = %.loc19_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); diff --git a/toolchain/check/testdata/class/virtual_modifiers.carbon b/toolchain/check/testdata/class/virtual_modifiers.carbon index 78a82416f8d1..46078101ea78 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -205,6 +205,10 @@ class Derived { // CHECK:STDOUT: %.loc6: = vtable (%H.decl) [template = constants.%.c3d] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { @@ -213,6 +217,11 @@ class Derived { // CHECK:STDOUT: %.loc12: = vtable (%J.decl, %K.decl) [template = constants.%.2b2] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: .J = %J.decl +// CHECK:STDOUT: .K = %K.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @H(); @@ -248,6 +257,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.917: 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.2cc = import_ref Modifiers//default, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -269,10 +280,20 @@ class Derived { // CHECK:STDOUT: %.loc9: = vtable (%H.decl) [template = constants.%.dce] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.0e2] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc7 +// CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "modifiers.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.05e +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .H = imports.%import_ref.2cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl fn @H.1(); @@ -308,6 +329,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.917: 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.2cc = import_ref Modifiers//default, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -329,10 +352,20 @@ class Derived { // CHECK:STDOUT: %.loc9: = vtable (constants.%H, %F.decl) [template = constants.%.02f] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.0e2] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .base = %.loc8 +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "modifiers.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.05e +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .H = imports.%import_ref.2cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F(); @@ -362,6 +395,8 @@ class Derived { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.917: 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] +// CHECK:STDOUT: %import_ref.1f3 = import_ref Modifiers//default, inst16 [no loc], unloaded +// CHECK:STDOUT: %import_ref.2cc = import_ref Modifiers//default, loc5_17, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -377,6 +412,10 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: class @Base [from "modifiers.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.05e +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1f3 +// CHECK:STDOUT: .H = imports.%import_ref.2cc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -443,6 +482,10 @@ class Derived { // CHECK:STDOUT: %.loc6: = vtable (%F.decl) [template = constants.%.593] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A1 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { @@ -452,6 +495,12 @@ class Derived { // CHECK:STDOUT: %.loc11: = vtable (%F.decl) [template = constants.%.943] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [template = constants.%complete_type.a6f] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A2 +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %A1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -509,6 +558,10 @@ class Derived { // CHECK:STDOUT: %.loc6: = vtable (%F.decl) [template = constants.%.bc5] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B1 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { @@ -518,6 +571,12 @@ class Derived { // CHECK:STDOUT: %.loc11: = vtable (%F.decl) [template = constants.%.579] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.508 [template = constants.%complete_type.5ac] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B2 +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %B1.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -527,6 +586,12 @@ class Derived { // CHECK:STDOUT: %.loc16: = vtable (%F.decl) [template = constants.%.5f6] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.421 [template = constants.%complete_type.066] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .base = %.loc14 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %B2.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -568,6 +633,10 @@ class Derived { // CHECK:STDOUT: %.loc10: = vtable () [template = constants.%.f2b] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl fn @F(); @@ -642,6 +711,12 @@ class Derived { // CHECK:STDOUT: %.loc9: = vtable (%F.decl) [template = constants.%.5ee] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.m1.m2 [template = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .m1 = %.loc5_9 +// CHECK:STDOUT: .m2 = %.loc6_9 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -767,6 +842,9 @@ class Derived { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -776,6 +854,12 @@ class Derived { // CHECK:STDOUT: %.loc10: = vtable () [template = constants.%.f2b] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr.base [template = constants.%complete_type.336] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc8 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl fn @F(); @@ -828,6 +912,10 @@ class Derived { // CHECK:STDOUT: %.loc6: = vtable (%F.decl) [template = constants.%.6ec] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AbstractBase +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractIntermediate { @@ -836,6 +924,11 @@ class Derived { // CHECK:STDOUT: %.loc10: = vtable (constants.%F.6e9) [template = constants.%.6ec] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.efd [template = constants.%complete_type.2d3] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AbstractIntermediate +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: extend %AbstractBase.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -845,6 +938,12 @@ class Derived { // CHECK:STDOUT: %.loc15: = vtable (%F.decl) [template = constants.%.88d] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.da5 [template = constants.%complete_type.f8c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %AbstractIntermediate.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: abstract fn @F.1(); @@ -899,6 +998,10 @@ class Derived { // CHECK:STDOUT: %.loc6: = vtable (%F.decl) [template = constants.%.def] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [template = constants.%complete_type.513] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%VirtualBase +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @VirtualIntermediate { @@ -907,6 +1010,11 @@ class Derived { // CHECK:STDOUT: %.loc10: = vtable (constants.%F.3e7) [template = constants.%.def] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.61e [template = constants.%complete_type.f09] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%VirtualIntermediate +// CHECK:STDOUT: .base = %.loc9 +// CHECK:STDOUT: extend %VirtualBase.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -916,6 +1024,12 @@ class Derived { // CHECK:STDOUT: %.loc15: = vtable (%F.decl) [template = constants.%.88d] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.43c [template = constants.%complete_type.fa6] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Derived +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: extend %VirtualIntermediate.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index 855ed159efb1..875efe7cc796 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -209,6 +209,9 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -399,6 +402,9 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc6_6.1: Core.IntLiteral) { @@ -567,6 +573,9 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type, %N.loc6_16.1: Core.IntLiteral) { @@ -733,6 +742,9 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -927,11 +939,17 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc7_6.1: Core.IntLiteral) { @@ -1115,6 +1133,9 @@ fn G() -> i32 { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc6_6.1: %i32) { diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 3b9e707c1745..54e9980b7856 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -160,12 +160,18 @@ fn G() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { @@ -334,12 +340,18 @@ fn G() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%I.ff1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { @@ -550,6 +562,10 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Outer.9d6 +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -562,17 +578,26 @@ fn G() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner.c71 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc13_6.1: type, %U.loc13_16.1: type) { @@ -810,6 +835,9 @@ fn G() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%WithNontype.8a6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 650c883d7d0d..4e11b0be0465 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -145,11 +145,17 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type, %U.loc7_16.1: type) { @@ -225,6 +231,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: %Pair.patt: %tuple.type.d07 = 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.920: type = class_type @HasPair, @HasPair(%Pair) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = 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] @@ -371,6 +378,9 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%HasPair.920 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -526,11 +536,17 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { diff --git a/toolchain/check/testdata/deduce/type_operator.carbon b/toolchain/check/testdata/deduce/type_operator.carbon index eae445e3a04d..d99dc93fa9ea 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -141,6 +141,9 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -281,6 +284,9 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -423,6 +429,9 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -561,6 +570,9 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { 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 86ea8873b6f7..c8ece830142d 100644 --- a/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon +++ b/toolchain/check/testdata/function/builtin/no_prelude/adapted_type.carbon @@ -148,6 +148,9 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: adapt_decl %.loc7_21.2 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness Core.IntLiteral [template = constants.%complete_type.972] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MyIntLiteral // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MyInt32 { @@ -175,6 +178,10 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type.f8a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MyInt32 +// CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @IntLiteral() -> type = "int_literal.make_type"; @@ -247,6 +254,9 @@ fn Int(N: MyIntLiteral) -> type = "int.make_type_signed"; // CHECK:STDOUT: adapt_decl %.loc5_11 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MyIntLiteral // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param_patt: %MyIntLiteral) -> type; diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index 7e998ef5fe2d..ace1e8e05059 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -30,7 +30,9 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // 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.8b3) [symbolic] // CHECK:STDOUT: %Inner.b32: type = class_type @Inner [template] +// CHECK:STDOUT: %Inner.6e0: type = class_type @Inner, @Inner(%F.8b3) [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.8b3) [symbolic] @@ -95,6 +97,10 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: %Inner.decl: type = class_decl @Inner [template = constants.%Inner.b32] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: .Inner = %Inner.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -127,6 +133,11 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Inner.6e0 +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon index c614f15f43d5..7126f935e371 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon @@ -202,6 +202,11 @@ extern library "basic" fn F(); // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); 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 07c075df466e..9e90661ba12a 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 @@ -156,6 +156,9 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnCUnused() -> %C; @@ -203,6 +206,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %import_ref.e1f: %ReturnDUsed.type = import_ref Main//incomplete_return, ReturnDUsed, loaded [template = constants.%ReturnDUsed] // CHECK:STDOUT: %import_ref.2ce = 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 { @@ -224,6 +228,9 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "fail_incomplete_return.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallFAndGIncomplete() { 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 d7f09a524296..ae96692ca1c7 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/name_poisoning.carbon @@ -384,11 +384,17 @@ fn F() { // CHECK:STDOUT: class @C.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f79 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C.2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.9f4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C.9f4); @@ -434,6 +440,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C); @@ -472,11 +481,17 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.fb7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C); @@ -563,6 +578,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C); @@ -594,6 +612,9 @@ fn F() { // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -613,11 +634,19 @@ fn F() { // CHECK:STDOUT: %.var: ref %D.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.C1 [template = constants.%complete_type.ec1] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .F1 = %F1.decl +// CHECK:STDOUT: .C2 = %C2.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C1); @@ -657,6 +686,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C); @@ -707,6 +739,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1() -> %C; @@ -759,11 +794,17 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.fb7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C); @@ -787,10 +828,13 @@ fn F() { // CHECK:STDOUT: %D2.type: type = facet_type <@D2> [template] // CHECK:STDOUT: %Self.8cf: %D2.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: %D3.b65: type = class_type @D3 [template] +// CHECK:STDOUT: %D3.68e: type = class_type @D3, @D3(%Self.8cf) [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F, @D3(%Self.8cf) [symbolic] // CHECK:STDOUT: %F: %F.type = struct_value () [symbolic] // CHECK:STDOUT: %.c1e: type = class_type @.1 [template] +// CHECK:STDOUT: %.180: type = class_type @.1, @.1(%Self.8cf) [symbolic] // CHECK:STDOUT: %.9af: type = class_type @.2 [template] +// CHECK:STDOUT: %.5c1: type = class_type @.2, @.2(%Self.8cf) [symbolic] // CHECK:STDOUT: %.6ae: type = class_type @.3 [template] // CHECK:STDOUT: %.1c0: type = class_type @.4 [template] // CHECK:STDOUT: %.type: type = facet_type <@.6> [template] @@ -841,6 +885,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D1 { @@ -848,6 +895,10 @@ fn F() { // CHECK:STDOUT: %.decl: type = class_decl @.3 [template = constants.%.6ae] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D1 +// CHECK:STDOUT: .D2 = %D2.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @D3(@D2.%Self: %D2.type) { @@ -868,6 +919,10 @@ fn F() { // CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.c1e] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D3.68e +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -877,6 +932,9 @@ fn F() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.180 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -886,22 +944,34 @@ fn F() { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.5c1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.3 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.6ae // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.4 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.1c0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.5 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.4b5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(@D2.%Self: %D2.type) { @@ -941,6 +1011,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- ignored_poison_in_import.carbon @@ -972,6 +1045,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- poison.impl.carbon @@ -1004,6 +1080,9 @@ fn F() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- using_poisoned_name_in_impl.carbon @@ -1061,6 +1140,10 @@ fn F() { // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: extend @impl.%C.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F1(%x.param_patt: %C.type); @@ -1074,6 +1157,7 @@ fn F() { // CHECK:STDOUT: %B: %B.type = struct_value () [template] // CHECK:STDOUT: %B.assoc_type: type = assoc_entity_type %A.type, %B.type [template] // CHECK:STDOUT: %assoc0: %B.assoc_type = assoc_entity element0, @A.%B.decl [template] +// CHECK:STDOUT: %X: type = class_type @X [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file {} @@ -1093,6 +1177,10 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: complete_type_witness = invalid +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: extend .inst27.loc8_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @B(@A.%Self: %A.type) { @@ -1137,11 +1225,17 @@ fn F() { // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.a95 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.fb7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%x.param_patt: ); @@ -1171,6 +1265,9 @@ fn F() { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1182,11 +1279,18 @@ fn F() { // CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.96d] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.v [template = constants.%complete_type.57e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .v = %.loc9_10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.96d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { 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 f49f0bf8d18d..88ac06739939 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon @@ -228,6 +228,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -277,6 +280,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo[](%a.param_patt: %C) { @@ -323,6 +329,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -369,6 +378,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -419,6 +431,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -441,6 +456,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//two_file, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.05a: 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 { @@ -472,6 +488,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) [from "two_file.carbon"] { @@ -526,6 +545,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -577,6 +599,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -630,6 +655,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Foo(%a.loc7_8.1: %C) { @@ -702,6 +730,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo() -> %return.param_patt: %C { @@ -741,6 +772,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -758,6 +792,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -782,6 +817,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) [from "alias_two_file.carbon"] { @@ -836,6 +874,9 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %const); diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index eb41ee84e446..ce3706a3e413 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -564,6 +564,9 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @ExplicitAndAlsoDeduced(%T.loc6_27.1: type) { diff --git a/toolchain/check/testdata/function/generic/no_prelude/call.carbon b/toolchain/check/testdata/function/generic/no_prelude/call.carbon index b72b2f0baf1e..726d7a70cbe5 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/call.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/call.carbon @@ -158,6 +158,9 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Function(%T.loc4_13.1: type) { @@ -374,6 +377,9 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Function(%T.loc4_13.1: type) { 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 fd5ef6055406..fd79af23e2da 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon @@ -151,6 +151,9 @@ fn H() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H() { diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index cda144380bda..4892f7f4f98f 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -28,6 +28,7 @@ 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.af6: type = class_type @Wrap, @Wrap(%T) [symbolic] // CHECK:STDOUT: %Make.type.652: type = fn_type @Make, @Wrap(%T) [symbolic] // CHECK:STDOUT: %Make.eb2: %Make.type.652 = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] @@ -107,6 +108,10 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Wrap.af6 +// CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -118,6 +123,10 @@ fn G() { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.arr.5f2 [template = constants.%complete_type.22a] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .arr = %.loc15_18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(@Wrap.%T.loc11_12.1: type) { diff --git a/toolchain/check/testdata/generic/complete_type.carbon b/toolchain/check/testdata/generic/complete_type.carbon index d91098db33d1..37cffd5c0386 100644 --- a/toolchain/check/testdata/generic/complete_type.carbon +++ b/toolchain/check/testdata/generic/complete_type.carbon @@ -140,6 +140,9 @@ fn G() { F(B); } // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @A(%T.loc6_9.1: type) { @@ -161,6 +164,10 @@ fn G() { F(B); } // CHECK:STDOUT: %.var: ref @A.%A.elem (%A.elem.1ce) = var // CHECK:STDOUT: %complete_type.loc14_1.1: = complete_type_witness %struct_type.v.ff1 [symbolic = %complete_type.loc14_1.2 (constants.%complete_type.460)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc14_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A.130 +// CHECK:STDOUT: .v = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -235,6 +242,9 @@ fn G() { F(B); } // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { diff --git a/toolchain/check/testdata/generic/local.carbon b/toolchain/check/testdata/generic/local.carbon index 49c770904d0d..51564f17226c 100644 --- a/toolchain/check/testdata/generic/local.carbon +++ b/toolchain/check/testdata/generic/local.carbon @@ -114,6 +114,10 @@ class C(C:! type) { // CHECK:STDOUT: %.var: ref @C.%C.elem (%C.elem.cca) = var // CHECK:STDOUT: %complete_type.loc7_3.1: = complete_type_witness %struct_type.x.2ac [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.4339)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f06 +// CHECK:STDOUT: .x = %.loc6_10 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -181,6 +185,7 @@ class C(C:! type) { // CHECK:STDOUT: %C.patt: type = symbolic_binding_pattern C, 0 [symbolic] // CHECK:STDOUT: %.type: type = generic_class_type @.1 [template] // CHECK:STDOUT: %.generic: %.type = struct_value () [template] +// CHECK:STDOUT: %.de1: type = class_type @.1, @.1(%C) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -210,6 +215,9 @@ class C(C:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%.de1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -237,6 +245,7 @@ class C(C:! type) { // CHECK:STDOUT: %C.patt: type = symbolic_binding_pattern C, 0 [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.generic: %C.type = struct_value () [template] +// CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%C.8b3) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: } @@ -272,6 +281,9 @@ class C(C:! type) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/global/class_obj.carbon b/toolchain/check/testdata/global/class_obj.carbon index e6502bdb6db1..1ac5e9b602fc 100644 --- a/toolchain/check/testdata/global/class_obj.carbon +++ b/toolchain/check/testdata/global/class_obj.carbon @@ -47,6 +47,9 @@ var a: A = {}; // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/global/class_with_fun.carbon b/toolchain/check/testdata/global/class_with_fun.carbon index 6631c5113658..94131bc5dcba 100644 --- a/toolchain/check/testdata/global/class_with_fun.carbon +++ b/toolchain/check/testdata/global/class_with_fun.carbon @@ -62,6 +62,9 @@ var a: A = {}; // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ret_a() -> %return.param_patt: %A { 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 c754614d2884..83a26aee75d9 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -119,6 +119,10 @@ class C { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .n = %.loc54_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %i32); diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index 69d4d05dc2c0..2faaa1f5039a 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -98,6 +98,10 @@ fn G(c: C) { // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.%HasF.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { diff --git a/toolchain/check/testdata/impl/extend_impl_generic.carbon b/toolchain/check/testdata/impl/extend_impl_generic.carbon index dc446e9214d1..2c66f9853431 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -183,6 +183,10 @@ class X(U:! type) { // CHECK:STDOUT: %.var: ref %Param.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Param +// CHECK:STDOUT: .x = %.loc9_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -195,6 +199,10 @@ class X(U:! type) { // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.9bf] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.1.%HasF.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.901)) { @@ -449,6 +457,10 @@ class X(U:! type) { // CHECK:STDOUT: %.loc9: type = specific_constant @impl.%I.type.loc9_21.1, @impl(constants.%U) [symbolic = %I.type (constants.%I.type.325e65.2)] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: extend %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon index 73a4a91b0fa8..ffe072e16986 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -144,6 +144,10 @@ class C { // CHECK:STDOUT: %.loc20: type = specific_constant @impl.%GenericInterface.type.loc20_54.1, @impl(constants.%T) [symbolic = constants.%GenericInterface.type.3fe] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@GenericInterface.%T.loc11_28.1: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.3fe)) { 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 433e5c3d9891..76f085334581 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -111,6 +111,10 @@ class E { // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -121,6 +125,10 @@ class E { // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: extend @impl.2.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { @@ -131,5 +139,9 @@ class E { // CHECK:STDOUT: %impl_witness: = impl_witness () [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%E +// CHECK:STDOUT: extend @impl.3.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon index 054e9a148f8e..20e25dbc3cb4 100644 --- a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon @@ -61,5 +61,9 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: 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 a2a3c2bf579f..677dc835a48d 100644 --- a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon @@ -80,6 +80,11 @@ interface I { // CHECK:STDOUT: %.loc24: 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.6b4 +// CHECK:STDOUT: extend %.loc24 +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon index 01461cbb3cae..b1ef9c94c65b 100644 --- a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon @@ -99,6 +99,11 @@ fn F(c: C) { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.%I.ref +// CHECK:STDOUT: has_error // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %C) { 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 8c238d044fc4..540f4fe8a950 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -826,6 +826,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NoF // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FNotFunction { @@ -836,6 +839,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FNotFunction // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @F.16; @@ -848,6 +854,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FAlias // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraParam { @@ -858,6 +867,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FExtraParam // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraImplicitParam { @@ -868,6 +880,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FExtraImplicitParam // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraReturnType { @@ -878,6 +893,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FExtraReturnType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingParam { @@ -888,6 +906,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FMissingParam // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingImplicitParam { @@ -898,6 +919,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FMissingImplicitParam // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingReturnType { @@ -908,6 +932,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FMissingReturnType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentParamType { @@ -918,6 +945,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FDifferentParamType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentImplicitParamType { @@ -928,6 +958,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FDifferentImplicitParamType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentReturnType { @@ -938,6 +971,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FDifferentReturnType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentParamName { @@ -948,6 +984,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%FDifferentParamName // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadParam { @@ -958,6 +997,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SelfNestedBadParam // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadReturnType { @@ -968,6 +1010,9 @@ class SelfNestedBadReturnType { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SelfNestedBadReturnType // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { diff --git a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon index 691f6ee3c9ab..3443045e63b6 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -34,6 +34,7 @@ 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.b36: type = class_type @C, @C(%T, %X) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %I.type: type = facet_type <@I> [template] @@ -142,6 +143,9 @@ impl i32 as I { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.b36 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/fail_todo_use_assoc_const.carbon b/toolchain/check/testdata/impl/fail_todo_use_assoc_const.carbon index 55541d667732..a8dff3086fc2 100644 --- a/toolchain/check/testdata/impl/fail_todo_use_assoc_const.carbon +++ b/toolchain/check/testdata/impl/fail_todo_use_assoc_const.carbon @@ -262,6 +262,9 @@ impl () as I where .N = 2 { // CHECK:STDOUT: adapt_decl %.loc28_11 [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@J.%Self: %J.type) { diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index f2c8182ea986..28385c31c29d 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -85,6 +85,9 @@ class C { // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@Simple.%Self: %Simple.type) { diff --git a/toolchain/check/testdata/impl/lookup/alias.carbon b/toolchain/check/testdata/impl/lookup/alias.carbon index 1027955ce228..178d2171cb7d 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -103,6 +103,10 @@ fn G(c: C) { // CHECK:STDOUT: %G: %F.assoc_type = bind_alias G, @HasF.%assoc0 [template = constants.%assoc0] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .G = %G // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { 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 196807c82ac6..95fdc52ffca9 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 @@ -89,6 +89,10 @@ fn F(c: C) { // CHECK:STDOUT: %F: %F.assoc_type = bind_alias F, @I.%assoc0 [template = constants.%assoc0] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { 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 0e2e31fdbc01..795af4c863ba 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -122,6 +122,10 @@ impl C as I { // 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: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.1.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { diff --git a/toolchain/check/testdata/impl/lookup/generic.carbon b/toolchain/check/testdata/impl/lookup/generic.carbon index 5f2dbe5b3b56..adf6e9d744b0 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -599,6 +599,9 @@ fn G(x: A) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1157,11 +1160,17 @@ fn G(x: A) { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.901)) { diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index d04c7fd86e61..f6947b14fef9 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -139,6 +139,10 @@ fn F(c: C) -> i32 { // 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { 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 e5d09a5cf8fc..2fdfba5b12b4 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon @@ -282,6 +282,10 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %.var: ref @A.%A.elem (%A.elem.1ceb36.1) = var // CHECK:STDOUT: %complete_type.loc4_1.1: = complete_type_witness %struct_type.n.848971.1 [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.84bb3d.1)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc4_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A.13025a.1 +// CHECK:STDOUT: .n = %.loc3_8 // CHECK:STDOUT: } // 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 75ba7860f63f..ace64b502b8a 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon @@ -244,6 +244,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { @@ -299,6 +302,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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.91b: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] // CHECK:STDOUT: %import_ref.28c = import_ref PackageA//default, inst15 [no loc], unloaded // CHECK:STDOUT: %import_ref.798 = import_ref PackageA//default, loc5_9, unloaded @@ -378,10 +382,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G.1(@HasG.%Self: %HasG.type) { @@ -446,6 +456,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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.91b: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] // CHECK:STDOUT: %import_ref.28c = import_ref PackageA//default, inst15 [no loc], unloaded // CHECK:STDOUT: %import_ref.5f1: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] @@ -488,6 +499,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCF(%c.param_patt: %C) { @@ -542,12 +556,14 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.b0a: 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.91b: type = import_ref PackageA//default, HasF, loaded [template = constants.%HasF.type] // CHECK:STDOUT: %import_ref.28c = import_ref PackageA//default, inst15 [no loc], unloaded // CHECK:STDOUT: %import_ref.5f1: %F.assoc_type = import_ref PackageA//default, loc5_9, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.8fe = import_ref PackageA//default, F, unloaded // CHECK:STDOUT: %import_ref.0e8 = 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.29a: type = import_ref PackageA//default, loc11_6, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [template = constants.%HasF.type] // CHECK:STDOUT: %import_ref.fa0 = import_ref PackageB//default, loc13_25, unloaded @@ -621,10 +637,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDF(%d.param_patt: %D) { @@ -679,6 +701,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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.924: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] // CHECK:STDOUT: %import_ref.5d8 = import_ref PackageB//default, inst17 [no loc], unloaded // CHECK:STDOUT: %import_ref.d8a: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] @@ -694,6 +717,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] // CHECK:STDOUT: %import_ref.7db = 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.aa9f8a.1: type = import_ref PackageB//default, loc18_6, loaded [template = constants.%D] // CHECK:STDOUT: %import_ref.831: type = import_ref PackageB//default, loc18_19, loaded [template = constants.%HasF.type] // CHECK:STDOUT: %import_ref.231 = import_ref PackageB//default, loc23_16, unloaded @@ -758,10 +782,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCG(%c.param_patt: %C) { @@ -813,12 +843,14 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.b0aa: 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.924: type = import_ref PackageB//default, HasG, loaded [template = constants.%HasG.type] // CHECK:STDOUT: %import_ref.5d8 = import_ref PackageB//default, inst17 [no loc], unloaded // CHECK:STDOUT: %import_ref.d8a: %G.assoc_type = import_ref PackageB//default, loc7_9, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.992 = import_ref PackageB//default, G, unloaded // CHECK:STDOUT: %import_ref.fa0 = 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.dfb: type = import_ref PackageB//default, loc13_14, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [template = constants.%HasG.type] // CHECK:STDOUT: %import_ref.7db = import_ref PackageB//default, loc18_25, unloaded @@ -882,10 +914,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "package_b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "package_b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDG(%d.param_patt: %D) { @@ -1050,6 +1088,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic] // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template] // CHECK:STDOUT: %AnyParam.generic: %AnyParam.type = struct_value () [template] +// CHECK:STDOUT: %AnyParam: type = class_type @AnyParam, @AnyParam(%T, %X) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %Y.type: type = facet_type <@Y> [template] @@ -1102,6 +1141,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%AnyParam // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1165,6 +1207,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8b7: %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.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %import_ref.d7e: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] // CHECK:STDOUT: %import_ref.dc1 = import_ref PackageHasParam//default, inst40 [no loc], unloaded // CHECK:STDOUT: %import_ref.df6: %K.assoc_type = import_ref PackageHasParam//default, loc7_10, loaded [template = constants.%assoc0] @@ -1239,6 +1282,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.601 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1351,6 +1397,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8b7: %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.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %import_ref.3e7: %GenericInterface.type.0da = import_ref PackageGenericInterface//default, GenericInterface, loaded [template = constants.%GenericInterface.generic] // CHECK:STDOUT: %import_ref.c3b = import_ref PackageGenericInterface//default, inst28 [no loc], unloaded // CHECK:STDOUT: %import_ref.d7e: type = import_ref PackageHasParam//default, Y, loaded [template = constants.%Y.type] @@ -1410,6 +1457,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.601 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1497,6 +1547,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // 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.f2e: 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] @@ -1653,6 +1704,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1717,6 +1771,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.740: %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.4c0 = import_ref HasExtraInterfaces//default, inst57 [no loc], unloaded // CHECK:STDOUT: %import_ref.df2: type = import_ref HasExtraInterfaces//default, I, loaded [template = constants.%I.type] // CHECK:STDOUT: %import_ref.e5d = import_ref HasExtraInterfaces//default, inst63 [no loc], unloaded // CHECK:STDOUT: %import_ref.fd4: %F.assoc_type = import_ref HasExtraInterfaces//default, loc14_21, loaded [template = constants.%assoc0] @@ -1822,6 +1877,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: 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 60ff95baf065..9339080fa058 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/specific_args.carbon @@ -66,6 +66,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // 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] +// CHECK:STDOUT: %C: 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: %X: type = class_type @X [template] @@ -127,12 +128,18 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(@I.%T.loc4_13.1: type, @I.%Self.1: @I.%I.type (%I.type.325)) { @@ -187,6 +194,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %import_ref.148 = import_ref Main//types, C, unloaded // CHECK:STDOUT: %import_ref.686: 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.884 = import_ref Main//types, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.182 = import_ref Main//types, loc4_31, unloaded // CHECK:STDOUT: %import_ref.87f: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)] @@ -242,10 +250,16 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: class @InInterfaceArgs { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%InInterfaceArgs // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.325) [from "types.carbon"] { @@ -319,11 +333,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %import_ref.686: type = import_ref Main//types, X, loaded [template = constants.%X] // CHECK:STDOUT: %import_ref.33d: 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.884 = import_ref Main//types, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.4ed: @I.%F.assoc_type (%F.assoc_type.003) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.ed59f4.2)] // CHECK:STDOUT: %import_ref.e3f = import_ref Main//types, F, unloaded // CHECK:STDOUT: %import_ref.479b0f.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.f9f: = import_ref Main//impl_in_interface_args, loc7_30, loaded [template = constants.%impl_witness] // CHECK:STDOUT: %import_ref.956: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [template = constants.%X] // CHECK:STDOUT: %import_ref.e8c: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [template = constants.%I.type.e45] @@ -375,10 +391,16 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @InInterfaceArgs [from "impl_in_interface_args.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.bf8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%x.param_patt: %X) { @@ -459,11 +481,13 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %import_ref.bb9: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic] // CHECK:STDOUT: %import_ref.686: 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.4c0 = import_ref Main//types, inst49 [no loc], unloaded // CHECK:STDOUT: %import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.182 = import_ref Main//types, loc4_31, unloaded // CHECK:STDOUT: %import_ref.87f: @I.%F.type (%F.type.2ae) = import_ref Main//types, F, loaded [symbolic = @I.%F (constants.%F.bb2)] // CHECK:STDOUT: %import_ref.479 = 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 { @@ -517,6 +541,9 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: class @InClassArgs { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%InClassArgs // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) [from "types.carbon"] { @@ -527,11 +554,17 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %I.type.325) [from "types.carbon"] { @@ -618,12 +651,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: %import_ref.686: type = import_ref Main//types, X, loaded [template = constants.%X] // CHECK:STDOUT: %import_ref.4a9: 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.4c0 = 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.884 = import_ref Main//types, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.4ed: @I.%F.assoc_type (%F.assoc_type.003) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%assoc0 (constants.%assoc0.ed59f4.2)] // CHECK:STDOUT: %import_ref.e3f = import_ref Main//types, F, unloaded // CHECK:STDOUT: %import_ref.479b0f.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.6de: = import_ref Main//impl_in_class_args, loc7_29, loaded [template = constants.%impl_witness] // CHECK:STDOUT: %import_ref.d6e: type = import_ref Main//impl_in_class_args, loc7_19, loaded [template = constants.%C.23b] // CHECK:STDOUT: %import_ref.208: type = import_ref Main//impl_in_class_args, loc7_27, loaded [template = constants.%I.type.45c] @@ -685,15 +721,24 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); } // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @InClassArgs [from "impl_in_class_args.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.683 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X [from "types.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.acf // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @H(%c.param_patt: %C.23b) { diff --git a/toolchain/check/testdata/impl/lookup/transitive.carbon b/toolchain/check/testdata/impl/lookup/transitive.carbon index f6fffa1dcc89..ee3edead2abc 100644 --- a/toolchain/check/testdata/impl/lookup/transitive.carbon +++ b/toolchain/check/testdata/impl/lookup/transitive.carbon @@ -149,6 +149,9 @@ fn Call() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(constants.%Self: %I.type) [from "i.carbon"] { @@ -182,6 +185,7 @@ fn Call() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -204,6 +208,9 @@ fn Call() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "c.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Get() -> %C; @@ -237,6 +244,7 @@ fn Call() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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.e5d = import_ref Main//i, inst17 [no loc], unloaded // CHECK:STDOUT: %import_ref.b5b: %F.assoc_type = import_ref Main//i, loc4_21, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.8b9 = import_ref Main//i, F, unloaded @@ -271,6 +279,9 @@ fn Call() { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "get.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Call() { diff --git a/toolchain/check/testdata/impl/multiple_extend.carbon b/toolchain/check/testdata/impl/multiple_extend.carbon index f3eb6832b26b..34c0384e4b85 100644 --- a/toolchain/check/testdata/impl/multiple_extend.carbon +++ b/toolchain/check/testdata/impl/multiple_extend.carbon @@ -271,6 +271,11 @@ fn P(o: O) { // CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%G.decl) [template = constants.%impl_witness.42a] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.1.%HasF.ref +// CHECK:STDOUT: extend @impl.2.%HasG.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { @@ -432,6 +437,11 @@ fn P(o: O) { // CHECK:STDOUT: %impl_witness.loc16: = impl_witness (@impl.2.%A.decl) [template = constants.%impl_witness.baf] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: extend @impl.1.%HasA1.ref +// CHECK:STDOUT: extend @impl.2.%HasA2.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @A.1(@HasA1.%Self: %HasA1.type) { @@ -550,6 +560,10 @@ fn P(o: O) { // 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.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { @@ -562,6 +576,12 @@ fn P(o: O) { // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%I.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%E +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: extend @impl.%HasI.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @I.1(@HasI.%Self: %HasI.type) { @@ -680,6 +700,10 @@ fn P(o: O) { // CHECK:STDOUT: %K.decl: %K.type.5a4 = fn_decl @K.1 [template = constants.%K.801] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: .K = %K.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @L { @@ -692,6 +716,12 @@ fn P(o: O) { // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%K.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%L +// CHECK:STDOUT: .base = %.loc13 +// CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: extend @impl.%HasK.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @K.1() { @@ -834,6 +864,10 @@ fn P(o: O) { // CHECK:STDOUT: %N.decl: %N.type.fbf = fn_decl @N.1 [template = constants.%N.897] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NBase +// CHECK:STDOUT: .N = %N.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O { @@ -852,6 +886,14 @@ fn P(o: O) { // CHECK:STDOUT: %N.decl: %N.type.8b4 = fn_decl @N.6 [template = constants.%N.cc3] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.9c6 [template = constants.%complete_type.121] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%O +// CHECK:STDOUT: .base = %.loc17 +// CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: extend %NBase.ref +// CHECK:STDOUT: extend @impl.1.%HasN1.ref +// CHECK:STDOUT: extend @impl.2.%HasN2.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @N.1() { diff --git a/toolchain/check/testdata/impl/no_prelude/basic.carbon b/toolchain/check/testdata/impl/no_prelude/basic.carbon index 7466d93fa76f..d590329f79ee 100644 --- a/toolchain/check/testdata/impl/no_prelude/basic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/basic.carbon @@ -72,6 +72,9 @@ impl C as Simple { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@Simple.%Self: %Simple.type) { diff --git a/toolchain/check/testdata/impl/no_prelude/error_recovery.carbon b/toolchain/check/testdata/impl/no_prelude/error_recovery.carbon index 4c0a7ec1a95c..ee1e77d0aaff 100644 --- a/toolchain/check/testdata/impl/no_prelude/error_recovery.carbon +++ b/toolchain/check/testdata/impl/no_prelude/error_recovery.carbon @@ -60,5 +60,8 @@ impl forall [T: type] C as I { } // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon b/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon index 3b81f9d77810..5eb00681c7a9 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon +++ b/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon @@ -82,5 +82,8 @@ impl AC as AI {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon b/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon index 585bf45f1edf..53ad869fe142 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon @@ -95,5 +95,8 @@ impl C as J {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: 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 785e4b17a0fa..286d49653dab 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_builtin_call.carbon @@ -295,6 +295,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: adapt_decl %.loc12_15.2 [template] // CHECK:STDOUT: %complete_type.loc13_1.1: = complete_type_witness %iN.builtin [symbolic = %complete_type.loc13_1.2 (constants.%complete_type)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%MyInt // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -444,6 +447,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %import_ref.370: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [template = constants.%MyInt.generic] // CHECK:STDOUT: %import_ref.1a7: %Double.type = import_ref Main//generic_impl, Double, loaded [template = constants.%Double] // CHECK:STDOUT: %import_ref.9e9: = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.a87)] +// CHECK:STDOUT: %import_ref.697 = import_ref Main//generic_impl, inst89 [no loc], unloaded // CHECK:STDOUT: %import_ref.07c = import_ref Main//generic_impl, inst15 [no loc], unloaded // CHECK:STDOUT: %import_ref.6d9: %Op.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.044 = import_ref Main//generic_impl, Op, unloaded @@ -539,6 +543,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.9e9 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.697 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -894,6 +901,10 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %i32.builtin [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%OtherInt +// CHECK:STDOUT: .ToLiteral = %ToLiteral.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @IntLiteral() -> type = "int_literal.make_type"; @@ -1028,6 +1039,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: %import_ref.466: type = import_ref Main//convert_symbolic, OtherInt, loaded [template = constants.%OtherInt] // CHECK:STDOUT: %import_ref.10c: %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.8f7 = import_ref Main//convert_symbolic, loc13_45, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1073,6 +1086,10 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt); // CHECK:STDOUT: // CHECK:STDOUT: class @OtherInt [from "convert_symbolic.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.b03 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.d11 +// CHECK:STDOUT: .ToLiteral = imports.%import_ref.8f7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%n.param_patt: Core.IntLiteral) -> type = "int.make_type_signed" [from "convert_symbolic.carbon"]; 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 73348105bf2c..5d134d406381 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon @@ -87,6 +87,10 @@ fn G(c: C) { // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: extend @impl.%I.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { @@ -126,6 +130,8 @@ fn G(c: C) { // CHECK:STDOUT: %import_ref.541 = import_ref Main//extend_impl_library, I, unloaded // CHECK:STDOUT: %import_ref.3b0: 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.3019d1.1: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type] // CHECK:STDOUT: %import_ref.e5d = import_ref Main//extend_impl_library, inst15 [no loc], unloaded // CHECK:STDOUT: %import_ref.b5b: %F.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.8b9 = import_ref Main//extend_impl_library, F, unloaded @@ -165,6 +171,10 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "extend_impl_library.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: extend imports.%import_ref.3019d1.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%c.param_patt: %C) { diff --git a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon index b00d44131ed2..8c548c6793ca 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon @@ -219,6 +219,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { @@ -296,6 +299,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %import_ref.003 = import_ref Main//import_generic, loc8_33, unloaded // CHECK:STDOUT: %import_ref.884 = 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.29aca8.1: type = import_ref Main//import_generic, loc8_24, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.4be: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @impl.1.%I.type (constants.%I.type.325)] // CHECK:STDOUT: %import_ref.4e1 = import_ref Main//import_generic, loc12_35, unloaded @@ -462,6 +466,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "import_generic.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { @@ -660,6 +667,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(constants.%T) { @@ -736,6 +746,7 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: %import_ref.0eb: %J.type.2b8 = import_ref Main//import_generic_decl, J, loaded [template = constants.%J.generic] // CHECK:STDOUT: %import_ref.ff5 = 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.aa9f8a.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [template = constants.%D] // CHECK:STDOUT: %import_ref.ded: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @impl.1.%J.type (constants.%J.type.b72)] // CHECK:STDOUT: %import_ref.aa9f8a.2: type = import_ref Main//import_generic_decl, loc17_24, loaded [template = constants.%D] @@ -891,6 +902,9 @@ impl forall [T:! type] D as J(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "fail_import_generic_decl.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @J(constants.%T) { diff --git a/toolchain/check/testdata/impl/no_prelude/import_interface_assoc_const.carbon b/toolchain/check/testdata/impl/no_prelude/import_interface_assoc_const.carbon index 14b1cc699c5b..a8afdc7df5f2 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_interface_assoc_const.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_interface_assoc_const.carbon @@ -311,6 +311,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redecl.carbon @@ -393,6 +396,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redecl_adds_rewrites.carbon @@ -465,6 +471,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C3 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_mismatch.carbon @@ -549,6 +558,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C4 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_mismatch_bad_value.carbon @@ -666,6 +678,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C5 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_missing_on_definition.carbon @@ -738,6 +753,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C6 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_two_different.carbon @@ -814,6 +832,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C7 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_two_different_first_bad.carbon @@ -886,6 +907,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C8 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_two_different_second_bad.carbon @@ -957,6 +981,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @C9 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_two_different_both_bad.carbon @@ -1027,6 +1054,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @CA { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%CA // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- repeated.carbon @@ -1102,6 +1132,9 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @CB { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%CB // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- non-type.carbon @@ -1177,5 +1210,8 @@ impl CC as NonType where .Y = {.a = {}} { } // CHECK:STDOUT: class @CC { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%CC // CHECK:STDOUT: } // CHECK:STDOUT: 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 d84eec6d3b5c..f6c0f06cc7b0 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon @@ -128,6 +128,9 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -205,6 +208,7 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %import_ref.bb9: %C.type = import_ref Main//import_generic, C, loaded [template = constants.%C.generic] // CHECK:STDOUT: %import_ref.df2: 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.4c0 = import_ref Main//import_generic, inst25 [no loc], unloaded // CHECK:STDOUT: %import_ref.e5d = import_ref Main//import_generic, inst31 [no loc], unloaded // CHECK:STDOUT: %import_ref.b5b: %F.assoc_type = import_ref Main//import_generic, loc7_9, loaded [template = constants.%assoc0] // CHECK:STDOUT: %import_ref.8b9 = import_ref Main//import_generic, F, unloaded @@ -283,6 +287,9 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.4c0 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon index 277dc4bab0ba..a379bf39e249 100644 --- a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon +++ b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon @@ -181,16 +181,25 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.1(@Action.%T.loc4_18.1: type, @Action.%Self.1: @Action.%Action.type (%Action.type.cca)) { @@ -279,10 +288,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %import_ref.bde = import_ref Main//action, F, unloaded // CHECK:STDOUT: %import_ref.71c: = 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.ddc = import_ref Main//action, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.f86: @Action.%Op.assoc_type (%Op.assoc_type.2ba) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.9b9b19.2)] // CHECK:STDOUT: %import_ref.ae2 = 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.984: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.cb0] // CHECK:STDOUT: %import_ref.7b5 = import_ref Main//action, loc13_11, unloaded @@ -338,10 +349,16 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "action.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.54a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "action.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.1(constants.%T: type, constants.%Self: %Action.type.cca) [from "action.carbon"] { @@ -427,15 +444,18 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %import_ref.bde = import_ref Main//action, F, unloaded // CHECK:STDOUT: %import_ref.7a1 = 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.ddc = import_ref Main//action, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.f86: @Action.%Op.assoc_type (%Op.assoc_type.2ba) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.9b9b19.2)] // CHECK:STDOUT: %import_ref.ae2 = 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.984: type = import_ref Main//action, loc12_6, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.cb0] // CHECK:STDOUT: %import_ref.7b5 = import_ref Main//action, loc13_11, unloaded // CHECK:STDOUT: %import_ref.0e3753.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 { @@ -487,14 +507,23 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "action.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.54a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "action.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "action.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op(constants.%T: type, constants.%Self: %Action.type.cca) [from "action.carbon"] { @@ -649,11 +678,17 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make.1(@Factory.%T.loc4_19.1: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.c96)) { @@ -728,10 +763,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %import_ref.dd8: type = import_ref Main//factory, B, loaded [template = constants.%B] // CHECK:STDOUT: %import_ref.72b: = 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.fbb = import_ref Main//factory, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.b0a: @Factory.%Make.assoc_type (%Make.assoc_type.4d9) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.9270f3.2)] // CHECK:STDOUT: %import_ref.c20 = 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.984: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.a5d] // CHECK:STDOUT: %import_ref.a27 = import_ref Main//factory, loc12_17, unloaded @@ -790,10 +827,16 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "factory.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.54a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "factory.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make.1(constants.%T: type, constants.%Self: %Factory.type.c96) [from "factory.carbon"] { @@ -881,10 +924,12 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: %import_ref.81b = import_ref Main//factory, B, unloaded // CHECK:STDOUT: %import_ref.3e9 = 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.fbb = import_ref Main//factory, inst26 [no loc], unloaded // CHECK:STDOUT: %import_ref.b0a: @Factory.%Make.assoc_type (%Make.assoc_type.4d9) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.9270f3.2)] // CHECK:STDOUT: %import_ref.c20 = 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.984: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A] // CHECK:STDOUT: %import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.a5d] // CHECK:STDOUT: %import_ref.a27 = import_ref Main//factory, loc12_17, unloaded @@ -945,15 +990,24 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: class @B [from "factory.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.54a // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "factory.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.da3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(constants.%T: type, constants.%Self: %Factory.type.c96) [from "factory.carbon"] { 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 49d7b4aeaec7..91dcee839377 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon @@ -92,6 +92,9 @@ class A { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { @@ -102,6 +105,9 @@ class A { // CHECK:STDOUT: %impl_witness: = impl_witness (@impl.%Make.decl) [template = constants.%impl_witness] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make.1(@DefaultConstructible.%Self: %DefaultConstructible.type) { 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 0a8abda5c80b..bdcf0480443d 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon @@ -291,11 +291,17 @@ impl D as SelfNested { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@UseSelf.%Self: %UseSelf.type) { diff --git a/toolchain/check/testdata/impl/redeclaration.carbon b/toolchain/check/testdata/impl/redeclaration.carbon index e35a2663683e..dc32e633855c 100644 --- a/toolchain/check/testdata/impl/redeclaration.carbon +++ b/toolchain/check/testdata/impl/redeclaration.carbon @@ -82,5 +82,8 @@ impl i32 as I {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // 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 c8c608ccf8ef..1a07750c9b6a 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 @@ -301,6 +301,10 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.7e5 +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // 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 710962050822..3349993f779f 100644 --- a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon +++ b/toolchain/check/testdata/interface/no_prelude/default_fn.carbon @@ -78,6 +78,10 @@ class C { // 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] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { diff --git a/toolchain/check/testdata/interface/no_prelude/generic.carbon b/toolchain/check/testdata/interface/no_prelude/generic.carbon index bc3e2953c23f..a12f26ffc74f 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic.carbon @@ -250,6 +250,9 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -269,6 +272,9 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: %impl_witness.loc15: = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.49b] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@WithAssocFn.%T.loc8_23.1: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.ce6)) { @@ -462,11 +468,17 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc9_6.1: %Generic.type.c7c) { diff --git a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon index cb555b497831..a75f90e43530 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon @@ -175,6 +175,9 @@ impl C as AddWith(C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self: %AddWith.type.bc7) [from "a.carbon"] { 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 959b55342d9c..59d4ac217d65 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon @@ -65,6 +65,7 @@ interface A(T: type) {} // CHECK:STDOUT: %Self.2f4: %GenericAndParams.type.73e = 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.f2e: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %GenericNoParams.type.f90: type = facet_type <@GenericNoParams> [template] // CHECK:STDOUT: %GenericNoParams.type.b79: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic] // CHECK:STDOUT: %Self.0f6: %GenericNoParams.type.b79 = bind_symbolic_name Self, 1 [symbolic] @@ -259,12 +260,20 @@ interface A(T: type) {} // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.f2e +// CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl +// CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GenericAndParams.1(constants.%T) { diff --git a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon index 1c609cb75ffa..710cc796cbdd 100644 --- a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon @@ -285,6 +285,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -359,6 +362,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -435,6 +441,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -507,6 +516,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -575,6 +587,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -615,6 +630,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %import_ref.c61: %Foo.type = import_ref Main//two_file, Foo, loaded [template = constants.%Foo.generic] // CHECK:STDOUT: %import_ref.feb: %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 { @@ -694,6 +710,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -792,6 +811,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -876,6 +898,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -960,6 +985,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1012,6 +1040,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1039,6 +1070,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.c61: %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 { @@ -1087,6 +1119,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "alias_two_file.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1176,6 +1211,9 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { diff --git a/toolchain/check/testdata/let/compile_time_bindings.carbon b/toolchain/check/testdata/let/compile_time_bindings.carbon index db90c4062ed6..5804abfddb9b 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -214,6 +214,11 @@ impl i32 as Empty { // CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %.loc10_17.2 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -273,6 +278,11 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .x = %x +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -375,6 +385,12 @@ impl i32 as Empty { // CHECK:STDOUT: %d: %tuple.type.2d5 = bind_name d, %.loc22_37.5 // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %a +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .d = %d // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%b.loc10_8.2: %tuple.type.9fb) { @@ -554,6 +570,11 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .x = .inst29.loc14_7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -823,6 +844,11 @@ impl i32 as Empty { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%I +// CHECK:STDOUT: .T = %T +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> ; diff --git a/toolchain/check/testdata/namespace/fail_not_top_level.carbon b/toolchain/check/testdata/namespace/fail_not_top_level.carbon index 98ec03b5da0e..43b965fd3048 100644 --- a/toolchain/check/testdata/namespace/fail_not_top_level.carbon +++ b/toolchain/check/testdata/namespace/fail_not_top_level.carbon @@ -93,6 +93,10 @@ interface I { // CHECK:STDOUT: %F.decl: %F.type.1cc = fn_decl @F.3 [template = constants.%F.f49] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .N = %N // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1() { diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 28744f41d99f..7334315a1480 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -71,6 +71,9 @@ fn Run() { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -97,6 +100,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // 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 { @@ -126,10 +130,16 @@ fn Run() { // CHECK:STDOUT: class @B { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.ca8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param_patt: %A { @@ -165,6 +175,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.f04: %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: %import_ref.a85: = import_ref Other//b, NS1, loaded // CHECK:STDOUT: %NS1: = namespace %import_ref.a85, [template] { // CHECK:STDOUT: .A = %import_ref.257 @@ -187,6 +198,9 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: class @A [from "b.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8db +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.bbd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { diff --git a/toolchain/check/testdata/operators/overloaded/add.carbon b/toolchain/check/testdata/operators/overloaded/add.carbon index 19ff68899396..9e2ceb3ef524 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index 8e2319f68030..bbd86f1943b9 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index 929f4e5f7f43..c0e579bda95d 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -101,6 +101,9 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C]() -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index da19c2df14cc..17d162d4abb5 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index 06603c5c45be..1d7815127abf 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index 81f31f640da4..0884a448c1c0 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -89,6 +89,9 @@ fn TestOp() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index 0aa8987c9abb..2e20f873226f 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index e32385723dcb..2ca2706bc8ca 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -223,6 +223,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Equal.2[%self.param_patt: %C](%other.param_patt: %C) -> bool; @@ -330,6 +333,9 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestEqual(%a.param_patt: %D, %b.param_patt: %D) -> bool { @@ -489,11 +495,17 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Equal.2[%self.param_patt: %C](%other.param_patt: %C) -> bool; 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 aca915ded687..c33481ba2866 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -166,6 +166,9 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index f4e6084620b2..92a708395aad 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -122,6 +122,9 @@ fn TestRef(b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestUnary(%a.param_patt: %C) -> %return.param_patt: %C { 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 1b754b53c7a1..f2800e314c41 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 @@ -190,11 +190,17 @@ fn TestAssign(b: D) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %C; diff --git a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon index bddc7555a707..58e26a58977f 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -196,6 +196,10 @@ fn Test() { // CHECK:STDOUT: %.var: ref %X.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: .n = %.loc12_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: %i32]() -> %return.param_patt: %X { diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index 3c77ca730168..513bedeec654 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -89,6 +89,9 @@ fn TestOp() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[addr %self.param_patt: %ptr.019](); diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index 8a2acc484e7a..0925a7ec1b37 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -183,16 +183,25 @@ let x: i32 = c[0]; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ElementType { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%ElementType.e6b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SubscriptType { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.8ee) -> %return.param_patt: %ElementType.e6b { @@ -477,16 +486,25 @@ let x: i32 = c[0]; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ElementType { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%ElementType.e6b // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SubscriptType { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%SubscriptType.8ee // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.8ee) -> %return.param_patt: %ElementType.e6b { @@ -563,6 +581,9 @@ let x: i32 = c[0]; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/operators/overloaded/left_shift.carbon b/toolchain/check/testdata/operators/overloaded/left_shift.carbon index 84842e8883cf..cdc509ee7903 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index d31fcc3a706f..16021fcbbce1 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index 0711df118483..adfd5b69b715 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index 3af979b80254..4e0d31773bd4 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -101,6 +101,9 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C]() -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon index 730fbdf62c5a..fcc828cf1c01 100644 --- a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon @@ -78,6 +78,9 @@ fn F() { ()[()]; } // CHECK:STDOUT: class @IndexWith { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%IndexWith // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/operators/overloaded/ordered.carbon b/toolchain/check/testdata/operators/overloaded/ordered.carbon index 21eba8658196..82a68a357525 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -309,6 +309,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Less.2[%self.param_patt: %C](%other.param_patt: %C) -> bool; @@ -490,6 +493,9 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestLess(%a.param_patt: %D, %b.param_patt: %D) -> bool { diff --git a/toolchain/check/testdata/operators/overloaded/right_shift.carbon b/toolchain/check/testdata/operators/overloaded/right_shift.carbon index 122724639082..215a068b58fd 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index ea9cba9852ce..d22cf586b456 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -176,6 +176,9 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.2[%self.param_patt: %C](%other.param_patt: %C) -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index f958b06e7c56..b110de5354c3 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -246,6 +246,10 @@ fn Main() { // CHECK:STDOUT: %Foo.decl: %Foo.type = fn_decl @Foo [template = constants.%Foo] {} {} // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .Foo = %Foo.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo() { 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 3594bd8c76b5..4c84486bdf8b 100644 --- a/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon +++ b/toolchain/check/testdata/packages/no_prelude/cross_package_export.carbon @@ -217,6 +217,10 @@ alias C = Other.C; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- conflict.carbon @@ -289,6 +293,8 @@ alias C = Other.C; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -301,6 +307,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_copy.carbon @@ -315,6 +325,8 @@ alias C = Other.C; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -327,6 +339,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_indirect.carbon @@ -341,6 +357,8 @@ alias C = Other.C; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -353,6 +371,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export_import.carbon @@ -374,6 +396,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -396,6 +420,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -431,6 +459,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -453,6 +483,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -488,6 +522,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -510,6 +546,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -543,6 +583,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.06e: 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 { @@ -565,6 +607,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -599,6 +645,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.06e: 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 { @@ -621,6 +669,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -654,6 +706,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.f43: type = import_ref Other//export_name_indirect, C, loaded [template = constants.%C] // 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 { @@ -676,6 +730,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name_indirect.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -715,6 +773,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.06e: 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 { @@ -737,6 +797,10 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -832,6 +896,8 @@ alias C = Other.C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.06e: 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 { @@ -847,5 +913,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // 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 3b41f8453368..f0be8b2558c6 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_import.carbon @@ -196,6 +196,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -283,6 +287,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -302,6 +308,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -335,6 +345,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.f68: 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 { @@ -355,6 +367,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -384,6 +400,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -403,6 +421,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -432,6 +454,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -451,6 +475,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -480,6 +508,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -499,6 +529,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -528,6 +562,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -547,6 +583,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -576,6 +616,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -595,6 +637,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -624,6 +670,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -643,6 +691,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -683,6 +735,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -702,6 +756,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -732,6 +790,8 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %import_ref.39e = import_ref Main//use_non_export_then_base, c, unloaded // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -752,6 +812,10 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // 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 892f9add93f9..12445d363530 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon @@ -145,6 +145,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.9be] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -155,6 +159,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %.var: ref %D.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.9f4] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .y = %.loc9_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_import.carbon @@ -185,6 +193,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//base, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.e8f = 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 { @@ -198,6 +208,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon @@ -213,6 +227,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %import_ref.3b0: type = import_ref Main//base, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.e8f = 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 { @@ -226,6 +242,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -255,6 +275,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -274,6 +296,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -303,6 +329,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -322,6 +350,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -351,6 +383,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -370,6 +404,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -433,6 +471,8 @@ var d: D = {.y = ()}; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -452,6 +492,10 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -486,7 +530,11 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %import_ref.06e: type = import_ref Main//export_import_then_name, C, loaded [template = constants.%C] // CHECK:STDOUT: %import_ref.b0a: 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, inst27 [no loc], unloaded +// CHECK:STDOUT: %import_ref.950 = import_ref Main//base, loc9_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -515,10 +563,18 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_import_then_name.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .y = imports.%import_ref.950 // 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 8be5f65af369..19c164cb2774 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_name.carbon @@ -235,6 +235,10 @@ private export C; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.x [template = constants.%complete_type.9be] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { @@ -245,6 +249,10 @@ private export C; // CHECK:STDOUT: %.var: ref %NSC.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.y [template = constants.%complete_type.9f4] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%NSC +// CHECK:STDOUT: .y = %.loc10_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -267,7 +275,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1a1: 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, inst28 [no loc], unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -282,10 +294,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.31c +// CHECK:STDOUT: .y = imports.%import_ref.be6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_reexporting.carbon @@ -326,7 +346,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.231: 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 { @@ -341,10 +365,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -376,7 +408,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.231: 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 { @@ -408,10 +444,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -458,7 +502,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.bb8: type = import_ref Main//export_export, NSC, loaded [template = constants.%NSC] // 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 { @@ -491,10 +539,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.c12 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1cb +// CHECK:STDOUT: .y = imports.%import_ref.b18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -541,7 +597,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.bb8: type = import_ref Main//export_export, NSC, loaded [template = constants.%NSC] // 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 { @@ -573,10 +633,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export_export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.328 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.db8 +// CHECK:STDOUT: .x = imports.%import_ref.3ef // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export_export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.c12 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.1cb +// CHECK:STDOUT: .y = imports.%import_ref.b18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -636,6 +704,9 @@ private export C; // CHECK:STDOUT: class @Local { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Local // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_export_member.carbon @@ -654,6 +725,8 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.461 // CHECK:STDOUT: } // 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 { @@ -666,6 +739,10 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -691,7 +768,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1a1: 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, inst28 [no loc], unloaded +// CHECK:STDOUT: %import_ref.be6 = import_ref Main//base, loc10_8, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -723,10 +804,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.5ab +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.31c +// CHECK:STDOUT: .y = imports.%import_ref.be6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -773,7 +862,11 @@ private export C; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.231: 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 { @@ -805,10 +898,18 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC [from "export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.63c +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.f0b +// CHECK:STDOUT: .y = imports.%import_ref.ebc // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -863,6 +964,8 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.461 // CHECK:STDOUT: } // 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 { @@ -876,6 +979,10 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -892,6 +999,8 @@ private export C; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.06e: 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 { @@ -911,6 +1020,10 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "repeat_export.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.ad3 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.6a9 +// CHECK:STDOUT: .x = imports.%import_ref.f67 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -942,6 +1055,8 @@ private export C; // CHECK:STDOUT: .NSC = %import_ref.461 // CHECK:STDOUT: } // 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 { @@ -955,5 +1070,9 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "base.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.56d +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .x = imports.%import_ref.276 // 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 9c7dbe9e0d8e..cf8f05782c59 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 @@ -59,6 +59,10 @@ export C.n; // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .n = %.loc5_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_b.carbon @@ -73,6 +77,8 @@ export C.n; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.3b0: 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 { @@ -84,5 +90,9 @@ export C.n; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "a.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.9fc +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2c4 +// CHECK:STDOUT: .n = imports.%import_ref.4cb // CHECK:STDOUT: } // CHECK:STDOUT: 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 b0cd9ef45567..e2d1dd1ef351 100644 --- a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon +++ b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon @@ -183,6 +183,9 @@ import Other library "o1"; // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- c2.carbon @@ -203,6 +206,9 @@ import Other library "o1"; // CHECK:STDOUT: class @C2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- ns.carbon @@ -226,6 +232,9 @@ import Other library "o1"; // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- o1.carbon @@ -246,6 +255,9 @@ import Other library "o1"; // CHECK:STDOUT: class @O1 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%O1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- o2.carbon @@ -266,6 +278,9 @@ import Other library "o1"; // CHECK:STDOUT: class @O2 { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%O2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- local_other.carbon @@ -286,6 +301,9 @@ import Other library "o1"; // CHECK:STDOUT: class @Other { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Other // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- mix_current_package.carbon @@ -316,7 +334,9 @@ import Other library "o1"; // CHECK:STDOUT: %import_ref.0d9: type = import_ref Main//mix_current_package, C1, loaded [template = constants.%C1] // CHECK:STDOUT: %import_ref.09c: 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 { @@ -346,10 +366,16 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.eb7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 [from "c2.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.5b0 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -390,6 +416,7 @@ import Other library "o1"; // CHECK:STDOUT: imports { // CHECK:STDOUT: %import_ref.0d9: 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 { @@ -410,6 +437,9 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C1 [from "c1.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.eb7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -453,6 +483,7 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.1c4: type = import_ref Main//use_ns, C, loaded [template = constants.%C] // 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 { @@ -476,6 +507,9 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @C [from "ns.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2dd // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -522,8 +556,10 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.880: type = import_ref Other//o1, O1, loaded [template = constants.%O1] // 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.328: type = import_ref Other//o2, O2, loaded [template = constants.%O2] // 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 { @@ -559,10 +595,16 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.1 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.481 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O2 [from "o2.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f24d3.2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.2eb // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -609,6 +651,7 @@ import Other library "o1"; // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.880: type = import_ref Other//o1, O1, loaded [template = constants.%O1] // 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 { @@ -633,6 +676,9 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: class @O1 [from "o1.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.481 // 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 42e955b4af8f..a4fe5a6406cd 100644 --- a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon @@ -516,6 +516,10 @@ var n: {} = i32; // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%Core +// CHECK:STDOUT: .Int = %Int.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Int(%T.loc6_10.2: type, %N.loc6_20.2: @Int.%T.loc6_10.1 (%T)) { diff --git a/toolchain/check/testdata/pointer/arrow.carbon b/toolchain/check/testdata/pointer/arrow.carbon index 20357db04e16..61fad39d19d5 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -82,6 +82,11 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: %.var: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .Member = %Member.decl +// CHECK:STDOUT: .field = %.loc13_12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Member[%self.param_patt: %C](); 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 034613765e76..7e5ddbc0e76a 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -116,6 +116,11 @@ fn G() -> C { // CHECK:STDOUT: %.var.loc23_23: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %.loc23_16 +// CHECK:STDOUT: .b = %.loc23_28 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { 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 bcfb4f071445..5b2b3ce5e7e2 100644 --- a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +++ b/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon @@ -271,6 +271,7 @@ 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.116: type = class_type @C, @C(%N) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %D: type = class_type @D [template] @@ -734,6 +735,9 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.116 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -750,6 +754,11 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %.var.loc7_23: ref %D.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.m.566 [template = constants.%complete_type.682] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .n = %.loc7_16 +// CHECK:STDOUT: .m = %.loc7_28 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed" [from "core.carbon"]; @@ -1134,8 +1143,12 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.b0a: 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.f9e: %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.d9b = import_ref P//library, inst42 [no loc], unloaded // CHECK:STDOUT: %import_ref.ff5 = import_ref Core//default, inst49 [no loc], unloaded // CHECK:STDOUT: %import_ref.589: @ImplicitAs.%Convert.assoc_type (%Convert.assoc_type.c0e) = import_ref Core//default, loc9_32, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.5048c6.2)] // CHECK:STDOUT: %import_ref.e69 = import_ref Core//default, Convert, unloaded @@ -1266,6 +1279,11 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: class @D [from "library.carbon"] { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.7e5 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.cab +// CHECK:STDOUT: .n = imports.%import_ref.a99 +// CHECK:STDOUT: .m = imports.%import_ref.9d2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%N: %i32.builtin) [from "library.carbon"] { @@ -1276,6 +1294,9 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.d9b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index ac8f41d9f787..1a30cd762453 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -106,6 +106,11 @@ fn G() -> i32 { // CHECK:STDOUT: %.var.loc13: ref %C.elem = var // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.501 [template = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param_patt: %C { diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index eabfbe302101..5f6d07030cd5 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -83,6 +83,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %S.patt: %struct_type.a.b.501 = 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.775: type = class_type @C, @C(%S) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [template] @@ -198,6 +199,9 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.775 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -311,6 +315,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.b8b = import_ref Implicit//default, inst1073 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -393,6 +398,9 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.b8b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -481,6 +489,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.b8b = import_ref Implicit//default, inst1073 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -517,6 +526,9 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.b8b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -589,6 +601,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc8_34, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.b8b = import_ref Implicit//default, inst1073 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -640,6 +653,9 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.b8b // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index 5d092d3ca8cd..5001ec9394d4 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -99,6 +99,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %X.patt: %tuple.type.d07 = 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.54f: type = class_type @C, @C(%X) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [template] // CHECK:STDOUT: %tuple.21c: %tuple.type.d07 = tuple_value (%int_1.5d2, %int_2.ef8) [template] @@ -213,6 +214,9 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C.54f // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -340,6 +344,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.964 = import_ref Implicit//default, inst1108 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -429,6 +434,9 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.964 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -526,6 +534,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.964 = import_ref Implicit//default, inst1108 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -563,6 +572,9 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.964 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -635,6 +647,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: %import_ref.8f2: = import_ref Implicit//default, loc7_26, loaded [template = constants.%complete_type.357] +// CHECK:STDOUT: %import_ref.964 = import_ref Implicit//default, inst1108 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -686,6 +699,9 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: complete_type_witness = imports.%import_ref.8f2 +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = imports.%import_ref.964 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index d4e8c65dfb22..a1baada195af 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -67,6 +67,9 @@ fn F(x: X) { // CHECK:STDOUT: class @X { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%x.param_patt: %X) { diff --git a/toolchain/check/testdata/where_expr/constraints.carbon b/toolchain/check/testdata/where_expr/constraints.carbon index a35a48c0bf0c..e3d785c87009 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -652,6 +652,9 @@ fn NotEmptyStruct() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @DoesNotImplI() { diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index 3d52a462bd0f..45f6a91d5d2b 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -425,6 +425,10 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return.param_patt: %C { @@ -470,6 +474,10 @@ class D { // CHECK:STDOUT: } // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> { diff --git a/toolchain/check/testdata/where_expr/equal_rewrite.carbon b/toolchain/check/testdata/where_expr/equal_rewrite.carbon index 9534392ab9b4..c53696014930 100644 --- a/toolchain/check/testdata/where_expr/equal_rewrite.carbon +++ b/toolchain/check/testdata/where_expr/equal_rewrite.carbon @@ -1310,6 +1310,9 @@ let K: (E where .F = .Self.G) = bool; // CHECK:STDOUT: class @D { // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [template = constants.%complete_type] // CHECK:STDOUT: complete_type_witness = %complete_type +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index 71d35aed634c..e9705fec0862 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -281,6 +281,7 @@ class FormatterImpl { FormatName(class_info.complete_type_witness_id); out_ << "\n"; + FormatNameScope(class_info.scope_id, "!members:\n"); CloseBrace(); } else { Semicolon();