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 7a1df001bf91..29e92c854ace 100644 --- a/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon +++ b/toolchain/check/testdata/alias/no_prelude/alias_of_alias.carbon @@ -46,6 +46,7 @@ let d: c = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 2d94efaf6cb1..5e40b73ede28 100644 --- a/toolchain/check/testdata/alias/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/alias/no_prelude/export_name.carbon @@ -91,12 +91,15 @@ var d: D* = &c; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -117,12 +120,15 @@ var d: D* = &c; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_orig.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -143,6 +149,7 @@ var d: D* = &c; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -150,6 +157,7 @@ var d: D* = &c; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -172,6 +180,7 @@ var d: D* = &c; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -216,6 +225,7 @@ var d: D* = &c; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -246,6 +256,7 @@ var d: D* = &c; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 30cb57538135..7b3ce9c9ddef 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 @@ -52,6 +52,7 @@ let c_var: c = d; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -59,6 +60,7 @@ let c_var: c = d; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 8dfcc2101c50..e19ad43b6f30 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_modifiers.carbon @@ -77,5 +77,6 @@ extern alias C = Class; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 e8a5270ee375..2f9ad7adb6e2 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_name_conflict.carbon @@ -62,6 +62,7 @@ alias b = C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 225bdb34df19..706acb2e8f4c 100644 --- a/toolchain/check/testdata/alias/no_prelude/import.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import.carbon @@ -95,12 +95,15 @@ var c: () = a_alias_alias; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- class2.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %.3: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -131,12 +134,15 @@ var c: () = a_alias_alias; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- class3.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %.3: type = ptr_type %C [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -162,6 +168,7 @@ var c: () = a_alias_alias; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 bd885ef95a77..fcac795c57ea 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_access.carbon @@ -75,6 +75,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- def.impl.carbon @@ -82,6 +83,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -107,6 +109,7 @@ var inst: Test.A = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 902225cd7b3f..0d985b67074a 100644 --- a/toolchain/check/testdata/alias/no_prelude/import_order.carbon +++ b/toolchain/check/testdata/alias/no_prelude/import_order.carbon @@ -68,6 +68,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .v = %.loc4_16 +// CHECK:STDOUT: complete_type_witness = %.loc4_22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -76,6 +77,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.v: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %.4: type = unbound_element_type %C, %empty_tuple.type [template] @@ -122,6 +124,7 @@ var a_val: a = {.v = b_val.v}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .v = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 8f48bbf3bd98..94a6009d1c01 100644 --- a/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon +++ b/toolchain/check/testdata/alias/no_prelude/in_namespace.carbon @@ -68,6 +68,7 @@ fn F() -> NS.a { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .v = %.loc11_16 +// CHECK:STDOUT: complete_type_witness = %.loc11_22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return: %C { diff --git a/toolchain/check/testdata/as/adapter_conversion.carbon b/toolchain/check/testdata/as/adapter_conversion.carbon index 4cf6b947dedb..9561654e841f 100644 --- a/toolchain/check/testdata/as/adapter_conversion.carbon +++ b/toolchain/check/testdata/as/adapter_conversion.carbon @@ -197,6 +197,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: .y = %.loc6_8 // CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -206,6 +207,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return: %A { @@ -333,6 +335,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -407,6 +410,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc4_21 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -416,6 +420,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -425,6 +430,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -434,6 +440,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -518,6 +525,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x = %.loc5_8 // CHECK:STDOUT: .y = %.loc6_8 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -527,6 +535,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -639,6 +648,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -648,6 +658,7 @@ var b: B = {.x = 1} as B; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc10 // 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 72570b893bd9..445c754ad6a0 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -96,6 +96,7 @@ fn Initializing() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 faf01c5eb85f..80f4559dc246 100644 --- a/toolchain/check/testdata/as/no_prelude/tuple.carbon +++ b/toolchain/check/testdata/as/no_prelude/tuple.carbon @@ -65,6 +65,7 @@ fn Var() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc13 // 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 a81667943740..5cb5330ce522 100644 --- a/toolchain/check/testdata/as/overloaded.carbon +++ b/toolchain/check/testdata/as/overloaded.carbon @@ -158,6 +158,7 @@ let n: i32 = ((4 as i32) as X) as i32; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: .n = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: %i32]() -> %return: %X { diff --git a/toolchain/check/testdata/builtins/float/eq.carbon b/toolchain/check/testdata/builtins/float/eq.carbon index ccc10b2e8a28..4a3b022ebb2b 100644 --- a/toolchain/check/testdata/builtins/float/eq.carbon +++ b/toolchain/check/testdata/builtins/float/eq.carbon @@ -150,6 +150,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -157,6 +158,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.eq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc5 // 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 ada27a1a1a45..92aa05638ffb 100644 --- a/toolchain/check/testdata/builtins/float/greater.carbon +++ b/toolchain/check/testdata/builtins/float/greater.carbon @@ -169,6 +169,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -176,6 +177,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 e244b86c4ff7..4678f30a58bc 100644 --- a/toolchain/check/testdata/builtins/float/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/float/greater_eq.carbon @@ -169,6 +169,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -176,6 +177,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 d5923b778dad..1d80430a6cc9 100644 --- a/toolchain/check/testdata/builtins/float/less.carbon +++ b/toolchain/check/testdata/builtins/float/less.carbon @@ -169,6 +169,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -176,6 +177,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 d769d01a4d69..c7b4e898a68c 100644 --- a/toolchain/check/testdata/builtins/float/less_eq.carbon +++ b/toolchain/check/testdata/builtins/float/less_eq.carbon @@ -169,6 +169,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -176,6 +177,7 @@ fn RuntimeCall(a: f64, b: f64) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 e82dd10ccbae..39c1e787d8e9 100644 --- a/toolchain/check/testdata/builtins/float/neq.carbon +++ b/toolchain/check/testdata/builtins/float/neq.carbon @@ -150,6 +150,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -157,6 +158,7 @@ fn WrongResult(a: f64, b: f64) -> f64 = "float.neq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc5 // 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/builtins/int/eq.carbon b/toolchain/check/testdata/builtins/int/eq.carbon index b5329d02f83a..9970cfb841c6 100644 --- a/toolchain/check/testdata/builtins/int/eq.carbon +++ b/toolchain/check/testdata/builtins/int/eq.carbon @@ -162,6 +162,7 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -169,6 +170,7 @@ fn WrongResult(a: i32, b: i32) -> i32 = "int.eq"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Eq(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.eq"; diff --git a/toolchain/check/testdata/builtins/int/greater.carbon b/toolchain/check/testdata/builtins/int/greater.carbon index 5b9aabcdd3a4..2c8d9aac79c1 100644 --- a/toolchain/check/testdata/builtins/int/greater.carbon +++ b/toolchain/check/testdata/builtins/int/greater.carbon @@ -184,6 +184,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -191,6 +192,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Greater(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.greater"; diff --git a/toolchain/check/testdata/builtins/int/greater_eq.carbon b/toolchain/check/testdata/builtins/int/greater_eq.carbon index ef19d8210de6..a58b22ba47d7 100644 --- a/toolchain/check/testdata/builtins/int/greater_eq.carbon +++ b/toolchain/check/testdata/builtins/int/greater_eq.carbon @@ -184,6 +184,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -191,6 +192,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GreaterEq(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.greater_eq"; diff --git a/toolchain/check/testdata/builtins/int/less.carbon b/toolchain/check/testdata/builtins/int/less.carbon index c190fd080f56..5c6a427345e6 100644 --- a/toolchain/check/testdata/builtins/int/less.carbon +++ b/toolchain/check/testdata/builtins/int/less.carbon @@ -184,6 +184,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -191,6 +192,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Less(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.less"; diff --git a/toolchain/check/testdata/builtins/int/less_eq.carbon b/toolchain/check/testdata/builtins/int/less_eq.carbon index 9a4dfe406b01..37fa9ebc9105 100644 --- a/toolchain/check/testdata/builtins/int/less_eq.carbon +++ b/toolchain/check/testdata/builtins/int/less_eq.carbon @@ -184,6 +184,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -191,6 +192,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @LessEq(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.less_eq"; diff --git a/toolchain/check/testdata/builtins/int/neq.carbon b/toolchain/check/testdata/builtins/int/neq.carbon index 27e3edb47c9d..98be3f18f8de 100644 --- a/toolchain/check/testdata/builtins/int/neq.carbon +++ b/toolchain/check/testdata/builtins/int/neq.carbon @@ -153,6 +153,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%True +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @False { @@ -160,6 +161,7 @@ fn RuntimeCall(a: i32, b: i32) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%False +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Neq(%a.param_patt: %i32, %b.param_patt: %i32) -> bool = "int.neq"; diff --git a/toolchain/check/testdata/class/access_modifers.carbon b/toolchain/check/testdata/class/access_modifers.carbon index 19ebebcc852e..adfa357f3592 100644 --- a/toolchain/check/testdata/class/access_modifers.carbon +++ b/toolchain/check/testdata/class/access_modifers.carbon @@ -243,6 +243,7 @@ class A { // CHECK:STDOUT: .SOME_INTERNAL_CONSTANT [private] = %SOME_INTERNAL_CONSTANT // CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl // CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeInternalFunction() -> %i32 { @@ -346,6 +347,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x [protected] = %.loc5_18 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -462,6 +464,7 @@ class A { // CHECK:STDOUT: .GetRadius = %GetRadius.decl // CHECK:STDOUT: .SomeInternalFunction [private] = %SomeInternalFunction.decl // CHECK:STDOUT: .Compute = %Compute.decl +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetRadius[%self.param_patt: %Circle]() -> %i32 { @@ -556,6 +559,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x = %x +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -645,6 +649,7 @@ class A { // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x [protected] = %x // CHECK:STDOUT: .y [private] = %y +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -696,6 +701,7 @@ class A { // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .F [private] = %F.decl // CHECK:STDOUT: .G [private] = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/adapt.carbon b/toolchain/check/testdata/class/adapt.carbon index e4a17e63f5c6..dcaafe825880 100644 --- a/toolchain/check/testdata/class/adapt.carbon +++ b/toolchain/check/testdata/class/adapt.carbon @@ -98,6 +98,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: .Self = constants.%SomeClass // CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: .b = %.loc6_8 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -107,6 +108,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @StructAdapter { @@ -124,6 +126,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%StructAdapter +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_not_extend.carbon @@ -173,6 +176,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapted // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptNotExtend { @@ -182,6 +186,7 @@ fn F(a: AdaptNotExtend) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptNotExtend +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(); diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index 2cec975e15ff..9256a6dd5843 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -147,6 +147,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .b = %.loc4_8 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -164,6 +165,7 @@ class Derived { // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: .d = %.loc10_8 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return: %Derived { @@ -257,6 +259,7 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -271,5 +274,6 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .d = %.loc7_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_field.carbon b/toolchain/check/testdata/class/base_field.carbon index 9127cf743458..57918c884b53 100644 --- a/toolchain/check/testdata/class/base_field.carbon +++ b/toolchain/check/testdata/class/base_field.carbon @@ -108,6 +108,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: .c = %.loc14_8 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -131,6 +132,7 @@ fn Access(p: Derived*) -> i32* { // CHECK:STDOUT: .d = %.loc20_8 // CHECK:STDOUT: .e = %.loc21_8 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%p.param_patt: %.10) -> %.11 { diff --git a/toolchain/check/testdata/class/base_function_unqualified.carbon b/toolchain/check/testdata/class/base_function_unqualified.carbon index 440b0e3f0b60..896c458e92a2 100644 --- a/toolchain/check/testdata/class/base_function_unqualified.carbon +++ b/toolchain/check/testdata/class/base_function_unqualified.carbon @@ -68,6 +68,7 @@ fn Derived.H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -83,6 +84,7 @@ fn Derived.H() { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 f7e1121f7a89..b65ba56e111a 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -120,6 +120,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -131,6 +132,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .base = %.loc22 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt: %.3]() { diff --git a/toolchain/check/testdata/class/base_method_qualified.carbon b/toolchain/check/testdata/class/base_method_qualified.carbon index 5e3ce4eb90bf..504ac88410b2 100644 --- a/toolchain/check/testdata/class/base_method_qualified.carbon +++ b/toolchain/check/testdata/class/base_method_qualified.carbon @@ -188,6 +188,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { @@ -229,6 +230,7 @@ fn PassDerivedToBaseIndirect(p: Derived*) -> i32 { // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc16 // 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 8ec252a24214..e497e75d093b 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -130,6 +130,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -152,6 +153,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: .base = %.loc16 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -174,6 +176,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: .base = %.loc21 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -185,6 +188,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .base = %.loc26 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %.1](); diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index cff857382f6a..71647b1e024c 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -153,6 +153,7 @@ fn Run() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .k = %.loc18_8 +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 e2ff6d641475..6bf5c1556402 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -74,6 +74,7 @@ class C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .a = %.loc14_8 +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 36e4dcd027e9..bca73271f205 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -179,6 +179,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 // CHECK:STDOUT: .c = %.loc14_8 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -202,6 +203,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: .d = %.loc20_8 // CHECK:STDOUT: .e = %.loc21_8 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc22 // 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 8e6e8437c747..db16c087bb98 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -128,6 +128,7 @@ var c: Other.C = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- other_extern.carbon @@ -187,6 +188,7 @@ var c: Other.C = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -220,6 +222,7 @@ var c: Other.C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -278,6 +281,7 @@ var c: Other.C = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -312,6 +316,7 @@ var c: Other.C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -328,6 +333,7 @@ var c: Other.C = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -362,6 +368,7 @@ var c: Other.C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 3711be528259..2074e58b7a84 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -206,6 +206,7 @@ fn ConvertInit() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -223,6 +224,7 @@ fn ConvertInit() { // CHECK:STDOUT: .base = %.loc16 // CHECK:STDOUT: .b = %.loc17_8 // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -240,6 +242,7 @@ fn ConvertInit() { // CHECK:STDOUT: .base = %.loc21 // CHECK:STDOUT: .c = %.loc22_8 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertCToB(%p.param_patt: %.17) -> %.18 { diff --git a/toolchain/check/testdata/class/extend_adapt.carbon b/toolchain/check/testdata/class/extend_adapt.carbon index d43443bfcced..b6cc48631b9b 100644 --- a/toolchain/check/testdata/class/extend_adapt.carbon +++ b/toolchain/check/testdata/class/extend_adapt.carbon @@ -206,6 +206,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter // CHECK:STDOUT: extend %SomeClass.ref +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClass { @@ -236,6 +237,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: .b = %.loc8_8 // CHECK:STDOUT: .StaticMemberFunction = %StaticMemberFunction.decl // CHECK:STDOUT: .AdapterMethod = %AdapterMethod.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @StaticMemberFunction(); @@ -315,6 +317,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClass // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -325,6 +328,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter // CHECK:STDOUT: extend %SomeClass.ref +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[%self.param_patt: %SomeClass](); @@ -409,6 +413,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: .Self = constants.%SomeClass // CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: .b = %.loc6_8 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SomeClassAdapter { @@ -419,6 +424,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SomeClassAdapter // CHECK:STDOUT: extend %SomeClass.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %SomeClassAdapter) -> %i32 { @@ -494,6 +500,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%StructAdapter // CHECK:STDOUT: extend %.loc5_33 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %StructAdapter) -> %i32 { @@ -570,6 +577,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%TupleAdapter // CHECK:STDOUT: extend %.loc5_26.5 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %TupleAdapter) -> %i32 { @@ -661,6 +669,7 @@ fn F(a: IntAdapter) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IntAdapter // CHECK:STDOUT: extend %.loc7_27.2 +// CHECK:STDOUT: complete_type_witness = %.loc8 // 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/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 758e3570b5d2..33dce70601f8 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -220,6 +220,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Contains { @@ -230,6 +231,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Contains // CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_var.carbon @@ -265,6 +267,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Var() { @@ -315,6 +318,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%a.param_patt: %Abstract) { @@ -357,6 +361,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Adapter { @@ -366,6 +371,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- define_and_call_abstract_param.carbon @@ -420,6 +426,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Param(%a.param_patt: %Abstract); @@ -488,6 +495,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -505,6 +513,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: .d = %.loc10_8 // CHECK:STDOUT: extend %Abstract.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return: %Derived { @@ -573,6 +582,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -590,6 +600,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: .d = %.loc10_8 // CHECK:STDOUT: extend %Abstract.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Return(%a.param_patt: %Abstract) -> %return: %Abstract { @@ -665,6 +676,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -682,6 +694,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .d = %.loc11_8 // CHECK:STDOUT: extend %Abstract.ref +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%d.param_patt: %Derived) -> %i32 { @@ -726,6 +739,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -780,6 +794,7 @@ fn CallReturnAbstract() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Abstract +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnAbstract() -> %Abstract; diff --git a/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon b/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon index a7335cdef47b..deb74c245a48 100644 --- a/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon +++ b/toolchain/check/testdata/class/fail_adapt_bad_decl.carbon @@ -145,6 +145,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Bad +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Use(%b.param_patt: %Bad) { @@ -198,6 +199,7 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Bad // CHECK:STDOUT: extend +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Use(%b.param_patt: %Bad) { @@ -244,6 +246,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%MultipleAdapts +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MultipleAdaptsSameType { @@ -255,6 +258,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%MultipleAdaptsSameType +// CHECK:STDOUT: complete_type_witness = %.loc26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_bad_scope.carbon @@ -313,5 +317,6 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .I = %I.decl +// CHECK:STDOUT: complete_type_witness = %.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_adapt_bad_type.carbon b/toolchain/check/testdata/class/fail_adapt_bad_type.carbon index 702fcf9e6a81..3e99441a7a80 100644 --- a/toolchain/check/testdata/class/fail_adapt_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_adapt_bad_type.carbon @@ -58,5 +58,6 @@ class AdaptIncomplete { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptIncomplete +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_adapt_modifiers.carbon b/toolchain/check/testdata/class/fail_adapt_modifiers.carbon index e65850414416..46863d944b24 100644 --- a/toolchain/check/testdata/class/fail_adapt_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_adapt_modifiers.carbon @@ -99,6 +99,7 @@ class C5 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 { @@ -108,6 +109,7 @@ class C5 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C1 +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { @@ -117,6 +119,7 @@ class C5 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C2 +// CHECK:STDOUT: complete_type_witness = %.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C3 { @@ -126,6 +129,7 @@ class C5 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C3 +// CHECK:STDOUT: complete_type_witness = %.loc35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C4 { @@ -136,6 +140,7 @@ class C5 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C4 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc46 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C5 { @@ -146,5 +151,6 @@ class C5 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C5 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc56 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_adapt_with_base.carbon b/toolchain/check/testdata/class/fail_adapt_with_base.carbon index 97ee3a170f05..1989f5053d06 100644 --- a/toolchain/check/testdata/class/fail_adapt_with_base.carbon +++ b/toolchain/check/testdata/class/fail_adapt_with_base.carbon @@ -53,6 +53,7 @@ base class AdaptWithVirtual { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Simple +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithVirtual { @@ -63,6 +64,7 @@ base class AdaptWithVirtual { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptWithVirtual // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F(); diff --git a/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon b/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon index 69bf16a7fa90..d775f4d5a68a 100644 --- a/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon +++ b/toolchain/check/testdata/class/fail_adapt_with_subobjects.carbon @@ -112,6 +112,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithBase { @@ -127,6 +128,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: .Self = constants.%AdaptWithBase // CHECK:STDOUT: .base = %.loc15 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_adapt_with_fields.carbon @@ -176,6 +178,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptWithField // CHECK:STDOUT: .n = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithFields { @@ -205,6 +208,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: .a = %.loc25_8 // CHECK:STDOUT: .b = %.loc26_8 // CHECK:STDOUT: .c = %.loc27_8 +// CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_adapt_with_base_and_fields.carbon @@ -246,6 +250,7 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptWithBaseAndFields { @@ -265,5 +270,6 @@ class AdaptWithBaseAndFields { // CHECK:STDOUT: .base = %.loc7 // CHECK:STDOUT: .n = %.loc8_8 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index de1e58a46e84..9ccc3573922b 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -77,6 +77,7 @@ class Class { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%a.loc16_13.2: %.1) { diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index 9c19ef671669..f76b6f823531 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -106,6 +106,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %.1](); diff --git a/toolchain/check/testdata/class/fail_base_bad_type.carbon b/toolchain/check/testdata/class/fail_base_bad_type.carbon index 56f9a66bedce..36e58b18da32 100644 --- a/toolchain/check/testdata/class/fail_base_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_base_bad_type.carbon @@ -235,6 +235,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromError // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessMemberWithInvalidBaseError(%p.param_patt: %.1) -> %i32 { @@ -304,6 +305,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromNonType // CHECK:STDOUT: .base = %.loc12_18 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessMemberWithInvalidBasNonType(%p.param_patt: %.25) -> %i32 { @@ -397,6 +399,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromi32 // CHECK:STDOUT: .base = %.loc7_19 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBasei32(%p.param_patt: %.2) -> %.3 { @@ -496,6 +499,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: complete_type_witness = %.loc2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @DeriveFromTuple { @@ -509,6 +513,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromTuple // CHECK:STDOUT: .base = %.loc9_23 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseTuple(%p.param_patt: %.4) -> %.5 { @@ -620,6 +625,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromStruct // CHECK:STDOUT: .base = %.loc9_34 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseStruct(%p.param_patt: %.4) -> %.3 { @@ -719,6 +725,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromIncomplete // CHECK:STDOUT: .base = %.loc16 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseIncomplete(%p.param_patt: %.1) -> %.2 { @@ -843,6 +850,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Final // CHECK:STDOUT: .a = %.loc3_8 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @DeriveFromFinal { @@ -854,6 +862,7 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDOUT: .Self = constants.%DeriveFromFinal // CHECK:STDOUT: .base = %.loc11 // CHECK:STDOUT: extend %Final.ref +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertToBadBaseFinal(%p.param_patt: %.9) -> %.10 { diff --git a/toolchain/check/testdata/class/fail_base_method_define.carbon b/toolchain/check/testdata/class/fail_base_method_define.carbon index 3b97ec726706..4c68f3c89b5e 100644 --- a/toolchain/check/testdata/class/fail_base_method_define.carbon +++ b/toolchain/check/testdata/class/fail_base_method_define.carbon @@ -81,6 +81,7 @@ fn D.C.F() {} // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .C = %C.decl +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -90,6 +91,7 @@ fn D.C.F() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -102,6 +104,7 @@ fn D.C.F() {} // CHECK:STDOUT: .base = %.loc20 // CHECK:STDOUT: .F = file.%F.decl // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc21 // 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 fb89006bfe12..06cd79c7a37f 100644 --- a/toolchain/check/testdata/class/fail_base_misplaced.carbon +++ b/toolchain/check/testdata/class/fail_base_misplaced.carbon @@ -42,6 +42,7 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_base_modifiers.carbon b/toolchain/check/testdata/class/fail_base_modifiers.carbon index e653b45f3352..17ce699871f6 100644 --- a/toolchain/check/testdata/class/fail_base_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_base_modifiers.carbon @@ -98,6 +98,7 @@ class C4 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C1 { @@ -109,6 +110,7 @@ class C4 { // CHECK:STDOUT: .Self = constants.%C1 // CHECK:STDOUT: .base = %.loc18 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { @@ -119,6 +121,7 @@ class C4 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C2 // CHECK:STDOUT: .base = %.loc30 +// CHECK:STDOUT: complete_type_witness = %.loc31 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C3 { @@ -130,6 +133,7 @@ class C4 { // CHECK:STDOUT: .Self = constants.%C3 // CHECK:STDOUT: .base = %.loc41 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc42 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C4 { @@ -141,5 +145,6 @@ class C4 { // CHECK:STDOUT: .Self = constants.%C4 // CHECK:STDOUT: .base = %.loc51 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc52 // 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 97db3fa85502..f3df49c66a09 100644 --- a/toolchain/check/testdata/class/fail_base_no_extend.carbon +++ b/toolchain/check/testdata/class/fail_base_no_extend.carbon @@ -52,6 +52,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -62,5 +63,6 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .base = %.loc17 +// CHECK:STDOUT: complete_type_witness = %.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 cee7d94a53d3..73d7e3a8ef0e 100644 --- a/toolchain/check/testdata/class/fail_base_repeated.carbon +++ b/toolchain/check/testdata/class/fail_base_repeated.carbon @@ -77,6 +77,7 @@ class D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B1 +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { @@ -84,6 +85,7 @@ class D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B2 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -96,6 +98,7 @@ class D { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .base = %.loc15 // CHECK:STDOUT: extend %B1.ref +// CHECK:STDOUT: complete_type_witness = %.loc24 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -108,5 +111,6 @@ class D { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .base = %.loc28 // CHECK:STDOUT: extend %B1.ref.loc28 +// CHECK:STDOUT: complete_type_witness = %.loc36 // 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 c4d132df86e1..ea0433c8c0db 100644 --- a/toolchain/check/testdata/class/fail_base_unbound.carbon +++ b/toolchain/check/testdata/class/fail_base_unbound.carbon @@ -56,6 +56,7 @@ let b: B = C.base; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -67,6 +68,7 @@ let b: B = C.base; // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .base = %.loc14 // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 430b790b740e..ae2f701986e7 100644 --- a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon +++ b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon @@ -93,6 +93,7 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -106,6 +107,7 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .b = %.loc16_8 +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 f3b7bfd9f577..0e6e19782c78 100644 --- a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon +++ b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon @@ -62,6 +62,7 @@ fn Make() -> C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return: %C { diff --git a/toolchain/check/testdata/class/fail_derived_to_base.carbon b/toolchain/check/testdata/class/fail_derived_to_base.carbon index 6d46541e9a09..e36433cec11a 100644 --- a/toolchain/check/testdata/class/fail_derived_to_base.carbon +++ b/toolchain/check/testdata/class/fail_derived_to_base.carbon @@ -136,6 +136,7 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A1 // CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { @@ -149,6 +150,7 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A2 // CHECK:STDOUT: .a = %.loc16_8 +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { @@ -166,6 +168,7 @@ fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } // CHECK:STDOUT: .base = %.loc20 // CHECK:STDOUT: .b = %.loc21_8 // CHECK:STDOUT: extend %A2.ref +// CHECK:STDOUT: complete_type_witness = %.loc22 // 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 d97d5828c188..aab00e6b3845 100644 --- a/toolchain/check/testdata/class/fail_extend_cycle.carbon +++ b/toolchain/check/testdata/class/fail_extend_cycle.carbon @@ -69,6 +69,7 @@ base class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -80,6 +81,7 @@ base class A { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .base = %.loc16 // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -94,5 +96,6 @@ base class A { // CHECK:STDOUT: .base = %.loc27 // CHECK:STDOUT: .c = %.loc31 // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc32 // 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 196bda5f0aee..6e6e01c6f401 100644 --- a/toolchain/check/testdata/class/fail_field_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_field_modifiers.carbon @@ -120,5 +120,6 @@ class Class { // CHECK:STDOUT: .k = %.loc23_14 // CHECK:STDOUT: .l = %l // CHECK:STDOUT: .m = %m +// CHECK:STDOUT: complete_type_witness = %.loc35 // 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 064ab0903913..9d569ff2831d 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -131,6 +131,7 @@ fn Class(N:! i32).F[self: Self](n: T) {} // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .a = %.loc12_8.1 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc14_1.1 // 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 f7e16f4bbc8e..c4708bac5f31 100644 --- a/toolchain/check/testdata/class/fail_import_misuses.carbon +++ b/toolchain/check/testdata/class/fail_import_misuses.carbon @@ -75,6 +75,7 @@ var a: Incomplete; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Empty +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; @@ -117,6 +118,7 @@ var a: Incomplete; // CHECK:STDOUT: class @Empty { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -124,6 +126,7 @@ var a: Incomplete; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index 0f64f98eb2fe..0eecb6bb815b 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -368,6 +368,7 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IncompleteAddrSelf // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc134 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @.1() { @@ -485,5 +486,6 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .c = %.loc11 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index 893d95d4dfd4..7ad6cebf6eee 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -95,6 +95,7 @@ fn F() { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 c4761d8f20ff..a4d53c9bf194 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -106,6 +106,7 @@ fn F() { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%p.param_patt: %.5); diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index 13e1edf51ec1..1333ed8c7bbe 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -105,6 +105,7 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -115,6 +116,7 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1[addr %self.param_patt: %.1](); diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index cb655f6f167e..c24867ff0e5a 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -77,6 +77,7 @@ fn T.F() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // 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 cc292cd0a702..997056e2d228 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -106,6 +106,7 @@ fn F(c: Class) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .NoSelf = %NoSelf.decl // CHECK:STDOUT: .WithSelf = %WithSelf.decl +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 26fbeecac6ff..c84a473ba1da 100644 --- a/toolchain/check/testdata/class/fail_method_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_method_modifiers.carbon @@ -118,6 +118,7 @@ base class BaseClass { // CHECK:STDOUT: .Self = constants.%FinalClass // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Virtual = %Virtual.decl +// CHECK:STDOUT: complete_type_witness = %.loc30 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractClass { @@ -143,6 +144,7 @@ base class BaseClass { // CHECK:STDOUT: .Self = constants.%AbstractClass // CHECK:STDOUT: .Default = %Default.decl // CHECK:STDOUT: .Final = %Final.decl +// CHECK:STDOUT: complete_type_witness = %.loc45 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @BaseClass { @@ -159,6 +161,7 @@ base class BaseClass { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%BaseClass // CHECK:STDOUT: .Abstract = %Abstract.decl +// CHECK:STDOUT: complete_type_witness = %.loc56 // 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 ee9445e6aba0..3453d8a3ae65 100644 --- a/toolchain/check/testdata/class/fail_method_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_method_redefinition.carbon @@ -53,6 +53,7 @@ class Class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl.loc12 +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 5047d4747167..57839be58d03 100644 --- a/toolchain/check/testdata/class/fail_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_modifiers.carbon @@ -165,6 +165,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%TwoAbstract +// CHECK:STDOUT: complete_type_witness = %.loc48 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Virtual { @@ -172,6 +173,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Virtual +// CHECK:STDOUT: complete_type_witness = %.loc65 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongOrder { @@ -179,6 +181,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%WrongOrder +// CHECK:STDOUT: complete_type_witness = %.loc74 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractAndBase { @@ -186,6 +189,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AbstractAndBase +// CHECK:STDOUT: complete_type_witness = %.loc83 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AbstractWithDefinition { @@ -197,6 +201,7 @@ fn AbstractWithDefinition.G() { // CHECK:STDOUT: .Self = constants.%AbstractWithDefinition // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc92 // 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 6e57d39ad38d..8f774cdde73a 100644 --- a/toolchain/check/testdata/class/fail_out_of_line_decl.carbon +++ b/toolchain/check/testdata/class/fail_out_of_line_decl.carbon @@ -48,6 +48,7 @@ fn C.F() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = file.%F.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 697d9fbee88e..35db37c1b63d 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -67,6 +67,7 @@ class Y { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.1 // CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @X { @@ -77,6 +78,7 @@ class Y { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: .A = %A.decl +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A.2 { @@ -86,6 +88,7 @@ class Y { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.2 // CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.1 { @@ -93,6 +96,7 @@ class Y { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B.1 +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B.2; @@ -103,6 +107,7 @@ class Y { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Y +// CHECK:STDOUT: complete_type_witness = %.loc26 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -110,5 +115,6 @@ class Y { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index d2bf338ef40f..3660b85f05e5 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -98,6 +98,7 @@ fn Class.I() {} // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: .G = file.%G.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -111,6 +112,7 @@ fn Class.I() {} // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: .I = %I.decl +// CHECK:STDOUT: complete_type_witness = %.loc28 // 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 31c4f50fb6ed..2062f3ca7e83 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -92,6 +92,7 @@ fn G() -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 89733c29cf51..a49814f5d8cf 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -140,6 +140,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @WrongSelf { @@ -156,6 +157,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%WrongSelf // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc43 // 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 b1b321defab1..8e54eadd5415 100644 --- a/toolchain/check/testdata/class/fail_self_param.carbon +++ b/toolchain/check/testdata/class/fail_self_param.carbon @@ -66,6 +66,7 @@ var v: C(0); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 a80d13f0e075..89e5f1b8e4fc 100644 --- a/toolchain/check/testdata/class/fail_self_type_member.carbon +++ b/toolchain/check/testdata/class/fail_self_type_member.carbon @@ -48,6 +48,7 @@ fn F() -> bool { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .b = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> bool { diff --git a/toolchain/check/testdata/class/fail_todo_local_class.carbon b/toolchain/check/testdata/class/fail_todo_local_class.carbon index f1b7386196c1..9f5d720cd107 100644 --- a/toolchain/check/testdata/class/fail_todo_local_class.carbon +++ b/toolchain/check/testdata/class/fail_todo_local_class.carbon @@ -45,6 +45,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc27 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index 3922c2ef8cdf..455bce116558 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -95,6 +95,7 @@ fn G() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .field = %.loc12_12 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 0c58beb20182..71d7a87ebc3e 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -80,6 +80,7 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .n = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // 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 591e3012ca5b..fea6af6a1c0f 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -85,6 +85,7 @@ fn Run() { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .j = %.loc12_8 // CHECK:STDOUT: .k = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 e9e162ad13af..0ce1970f7ee0 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -86,6 +86,7 @@ fn Test() { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .j = %.loc12_8 // CHECK:STDOUT: .k = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 354f4a80ee17..d80d670c9793 100644 --- a/toolchain/check/testdata/class/generic/adapt.carbon +++ b/toolchain/check/testdata/class/generic/adapt.carbon @@ -204,6 +204,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .x = %.loc5_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -219,6 +220,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%a.param_patt: %Adapter) -> %i32 { @@ -328,6 +330,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: class @Adapter { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) { @@ -344,6 +347,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -470,6 +474,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .x = %.loc5_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -486,6 +491,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter // CHECK:STDOUT: extend %C +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Access(%a.param_patt: %Adapter) -> %i32 { @@ -583,6 +589,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .x = %.loc8_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc9_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -599,6 +606,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter // CHECK:STDOUT: extend %C +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @C(constants.%T) { @@ -690,6 +698,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: extend imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%T: type) { @@ -706,6 +715,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .x = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -817,6 +827,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapter.2 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -945,6 +956,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -959,6 +971,7 @@ fn ImportedConvertLocal(a: Adapter(C)) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .n = %.loc11_8 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ImportedConvert(%a.param_patt: %Adapter.3) -> %i32 { diff --git a/toolchain/check/testdata/class/generic/base_is_generic.carbon b/toolchain/check/testdata/class/generic/base_is_generic.carbon index c6c66ced6c06..e8dcdc8a8255 100644 --- a/toolchain/check/testdata/class/generic/base_is_generic.carbon +++ b/toolchain/check/testdata/class/generic/base_is_generic.carbon @@ -177,6 +177,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base.2 // CHECK:STDOUT: .x = %.loc5_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -191,6 +192,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param // CHECK:STDOUT: .y = %.loc9_8 +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -204,6 +206,7 @@ fn H() { // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .base = %.loc13 // CHECK:STDOUT: extend %Base +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @DoubleFieldAccess(%d.param_patt: %Derived) -> %i32 { @@ -247,12 +250,16 @@ fn H() { // CHECK:STDOUT: %Param: type = class_type @Param [template] // CHECK:STDOUT: %.1: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.1 [template] +// CHECK:STDOUT: %.2: type = struct_type {.y: %i32} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %.4: type = struct_type {.x: %T} [symbolic] // CHECK:STDOUT: %.5: = complete_type_witness %.4 [symbolic] // CHECK:STDOUT: %Base.2: type = class_type @Base, @Base(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %Base.3: type = class_type @Base, @Base(%Param) [template] +// CHECK:STDOUT: %.7: type = struct_type {.base: %Base.3} [template] +// CHECK:STDOUT: %.8: = complete_type_witness %.7 [template] // CHECK:STDOUT: %.9: type = unbound_element_type %Base.2, %T [symbolic] // CHECK:STDOUT: %.10: type = unbound_element_type %Base.3, %Param [template] // CHECK:STDOUT: %.11: type = struct_type {.x: %Param} [template] @@ -317,12 +324,14 @@ fn H() { // CHECK:STDOUT: .Self = imports.%import_ref.10 // CHECK:STDOUT: .base = imports.%import_ref.11 // CHECK:STDOUT: extend imports.%import_ref.12 +// CHECK:STDOUT: complete_type_witness = constants.%.8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Param { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 // CHECK:STDOUT: .y = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Base(constants.%T: type) { @@ -339,6 +348,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.7 // CHECK:STDOUT: .x = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -435,6 +445,7 @@ fn H() { // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -445,6 +456,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() { @@ -568,6 +580,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X.2 // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -593,6 +606,7 @@ fn H() { // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .base = %.loc9_20.1 // CHECK:STDOUT: extend %X.loc9_17.1 +// CHECK:STDOUT: complete_type_witness = %.loc10_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -736,6 +750,8 @@ fn H() { // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %.2: type = struct_type {} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic] // CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic] // CHECK:STDOUT: %X.3: type = class_type @X, @X(%T) [symbolic] @@ -804,6 +820,7 @@ fn H() { // CHECK:STDOUT: .Self = imports.%import_ref.8 // CHECK:STDOUT: .base = imports.%import_ref.9 // CHECK:STDOUT: extend imports.%import_ref.10 +// CHECK:STDOUT: complete_type_witness = constants.%.6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -819,6 +836,7 @@ fn H() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 // CHECK:STDOUT: .G = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // 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 d6a40bab8aea..c0ab9c9ad251 100644 --- a/toolchain/check/testdata/class/generic/basic.carbon +++ b/toolchain/check/testdata/class/generic/basic.carbon @@ -129,6 +129,7 @@ class Declaration(T:! type); // CHECK:STDOUT: .GetAddr = %GetAddr.decl // CHECK:STDOUT: .GetValue = %GetValue.decl // CHECK:STDOUT: .k = %.loc21_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc22_1.1 // 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 1085c44fbe97..7b191ae1a8a4 100644 --- a/toolchain/check/testdata/class/generic/call.carbon +++ b/toolchain/check/testdata/class/generic/call.carbon @@ -195,6 +195,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_33 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -295,6 +296,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_33 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -381,6 +383,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_33 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -467,6 +470,7 @@ class Outer(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_33 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -561,6 +565,7 @@ class Outer(T:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer.2 // CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -630,6 +635,7 @@ class Outer(T:! type) { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: complete_type_witness = %.loc16 // 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 62e4fcd7cdd6..f20765260158 100644 --- a/toolchain/check/testdata/class/generic/field.carbon +++ b/toolchain/check/testdata/class/generic/field.carbon @@ -160,6 +160,7 @@ fn H(U:! type, c: Class(U)) -> U { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .x = %.loc12_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc13_1.1 // 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 f5bfbb69822f..8c76ba79ec44 100644 --- a/toolchain/check/testdata/class/generic/import.carbon +++ b/toolchain/check/testdata/class/generic/import.carbon @@ -202,6 +202,7 @@ class Class(U:! type) { // CHECK:STDOUT: .Self = constants.%CompleteClass.2 // CHECK:STDOUT: .n = %.loc7_8.1 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -328,6 +329,8 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.1: %CompleteClass.type = struct_value () [template] // CHECK:STDOUT: %.24: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.24 [template] +// CHECK:STDOUT: %.25: type = struct_type {.n: %i32} [template] +// CHECK:STDOUT: %.26: = complete_type_witness %.25 [template] // CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %.27: type = unbound_element_type %CompleteClass.2, %i32 [symbolic] // CHECK:STDOUT: %F.type.1: type = fn_type @F.1, @CompleteClass(%T) [symbolic] @@ -624,6 +627,7 @@ class Class(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .x = %.loc5_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -642,6 +646,7 @@ class Class(U:! type) { // CHECK:STDOUT: .Self = imports.%import_ref.38 // CHECK:STDOUT: .n = imports.%import_ref.39 // CHECK:STDOUT: .F = imports.%import_ref.40 +// CHECK:STDOUT: complete_type_witness = constants.%.26 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1093,6 +1098,8 @@ class Class(U:! type) { // CHECK:STDOUT: %UseMethod: %UseMethod.type = struct_value () [template] // CHECK:STDOUT: %CompleteClass.type: type = generic_class_type @CompleteClass [template] // CHECK:STDOUT: %CompleteClass.1: %CompleteClass.type = struct_value () [template] +// CHECK:STDOUT: %.2: type = struct_type {.n: %i32} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] @@ -1174,6 +1181,7 @@ class Class(U:! type) { // CHECK:STDOUT: .Self = imports.%import_ref.5 // CHECK:STDOUT: .n = imports.%import_ref.6 // CHECK:STDOUT: .F = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1272,6 +1280,8 @@ class Class(U:! type) { // CHECK:STDOUT: %CompleteClass.1: %CompleteClass.type = struct_value () [template] // CHECK:STDOUT: %.1: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.1 [template] +// CHECK:STDOUT: %.2: type = struct_type {.n: %i32} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %CompleteClass.2: type = class_type @CompleteClass, @CompleteClass(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] @@ -1565,6 +1575,7 @@ class Class(U:! type) { // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .n = imports.%import_ref.5 // CHECK:STDOUT: .F = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -2245,6 +2256,7 @@ class Class(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.22 // CHECK:STDOUT: .x = %.loc16 +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 f1f0fc0f628c..cd2e2ee3813b 100644 --- a/toolchain/check/testdata/class/generic/init.carbon +++ b/toolchain/check/testdata/class/generic/init.carbon @@ -146,6 +146,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .k = %.loc5_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -337,6 +338,7 @@ fn InitFromAdaptedSpecific(x: i32) -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Adapt.2 +// CHECK:STDOUT: complete_type_witness = %.loc6_1.1 // 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 f4ccfbd5f289..0e3ffe557f9f 100644 --- a/toolchain/check/testdata/class/generic/member_access.carbon +++ b/toolchain/check/testdata/class/generic/member_access.carbon @@ -232,6 +232,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: .x = %.loc3_8.1 // CHECK:STDOUT: .Get = %Get.decl // CHECK:STDOUT: .GetAddr = %GetAddr.decl +// CHECK:STDOUT: complete_type_witness = %.loc8_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -466,6 +467,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 e8fbe56a72a1..dc44291ae75d 100644 --- a/toolchain/check/testdata/class/generic/member_inline.carbon +++ b/toolchain/check/testdata/class/generic/member_inline.carbon @@ -128,6 +128,7 @@ class C(T:! type) { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .n = %.loc13_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc14_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -253,6 +254,7 @@ class C(T:! type) { // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .data = %.loc11_11.1 +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 4aae219bcf5c..29d3e78fe9b6 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -226,6 +226,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .n = %.loc7_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc8_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -374,6 +375,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.2 // CHECK:STDOUT: .B = %B.decl +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -406,6 +408,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B.2 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -505,6 +508,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NotGeneric // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -580,6 +584,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic.2 // CHECK:STDOUT: .TooFew = %TooFew.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -666,6 +671,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic.2 // CHECK:STDOUT: .TooMany = %TooMany.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -769,6 +775,7 @@ fn Generic(T:! ()).WrongType() {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic.2 // CHECK:STDOUT: .WrongType = %WrongType.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 e7ba16ad2069..bd8d94d3bfb2 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -130,6 +130,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -137,6 +138,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Class(%T.loc14_13.1: type) { @@ -191,6 +193,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .Get = %Get.decl // CHECK:STDOUT: .GetNoDeduce = %GetNoDeduce.decl +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 2378a7fdba67..8c4086e8e61a 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -138,6 +138,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Generic.2 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -195,6 +196,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.2 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -284,6 +286,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -377,6 +380,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc12_29 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -464,6 +468,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc12_19 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -540,6 +545,7 @@ class E(U:! type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.2 +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 ec9eda1dea13..ba0315cd8e13 100644 --- a/toolchain/check/testdata/class/generic/self.carbon +++ b/toolchain/check/testdata/class/generic/self.carbon @@ -102,6 +102,7 @@ class Class(T:! type) { // CHECK:STDOUT: .MakeSelf = %MakeSelf.decl // CHECK:STDOUT: .MakeClass = %MakeClass.decl // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 4c9c90895923..73620b18a818 100644 --- a/toolchain/check/testdata/class/generic/stringify.carbon +++ b/toolchain/check/testdata/class/generic/stringify.carbon @@ -89,6 +89,7 @@ var w: Outer({}*).Inner({.a: i32}*) = v; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NoParams +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @EmptyParams { @@ -96,6 +97,7 @@ var w: Outer({}*).Inner({.a: i32}*) = v; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%EmptyParams.2 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -204,6 +206,7 @@ var w: Outer({}*).Inner({.a: i32}*) = v; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer.2 // CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -218,6 +221,7 @@ var w: Outer({}*).Inner({.a: i32}*) = v; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner.2 +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 4309eb6dcb68..06f52de23160 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -103,6 +103,7 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .a = %.loc12_8.1 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc14_1.1 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index 22f9b7c7a062..9ef671c928cf 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -101,6 +101,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Empty +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field { @@ -114,6 +115,7 @@ fn Run() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Field // CHECK:STDOUT: .x = %.loc8_8 +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared { @@ -141,6 +143,7 @@ fn Run() { // CHECK:STDOUT: .Self = constants.%ForwardDeclared // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; @@ -157,10 +160,13 @@ fn Run() { // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: %Empty: type = class_type @Empty [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct.1: %Empty = struct_value () [template] // CHECK:STDOUT: %Field: type = class_type @Field [template] // CHECK:STDOUT: %.4: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.4 [template] +// CHECK:STDOUT: %.5: type = struct_type {.x: %i32} [template] +// CHECK:STDOUT: %.6: = complete_type_witness %.5 [template] // CHECK:STDOUT: %.8: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %.9: type = struct_type {.x: Core.IntLiteral} [template] // CHECK:STDOUT: %Convert.type.2: type = fn_type @Convert.1, @ImplicitAs(%i32) [template] @@ -225,12 +231,14 @@ fn Run() { // CHECK:STDOUT: class @Empty { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Field { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .x = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.1 { @@ -238,6 +246,7 @@ fn Run() { // CHECK:STDOUT: .Self = imports.%import_ref.44 // CHECK:STDOUT: .F = imports.%import_ref.45 // CHECK:STDOUT: .G = imports.%import_ref.46 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ForwardDeclared.2 { @@ -245,6 +254,7 @@ fn Run() { // CHECK:STDOUT: .Self = imports.%import_ref.47 // CHECK:STDOUT: .F = imports.%import_ref.48 // CHECK:STDOUT: .G = imports.%import_ref.49 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Incomplete; diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index 5ba74cf39fdc..529889ce0236 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -111,6 +111,7 @@ fn Run() { // CHECK:STDOUT: .Unused = %Unused.decl // CHECK:STDOUT: .x = %.loc8_8 // CHECK:STDOUT: .unused = %.loc9_13 +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Child { @@ -122,6 +123,7 @@ fn Run() { // CHECK:STDOUT: .Self = constants.%Child // CHECK:STDOUT: .base = %.loc13 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Base](); @@ -138,6 +140,10 @@ fn Run() { // CHECK:STDOUT: %Base: type = class_type @Base [template] // CHECK:STDOUT: %.1: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.1 [template] +// CHECK:STDOUT: %.2: type = struct_type {.x: %i32, .unused: %i32} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] +// CHECK:STDOUT: %.5: type = struct_type {.base: %Base} [template] +// CHECK:STDOUT: %.6: = complete_type_witness %.5 [template] // CHECK:STDOUT: %.10: Core.IntLiteral = int_value 0 [template] // CHECK:STDOUT: %.11: Core.IntLiteral = int_value 1 [template] // CHECK:STDOUT: %.12: type = struct_type {.x: Core.IntLiteral, .unused: Core.IntLiteral} [template] @@ -198,6 +204,7 @@ fn Run() { // CHECK:STDOUT: .Self = imports.%import_ref.9 // CHECK:STDOUT: .base = imports.%import_ref.10 // CHECK:STDOUT: extend imports.%import_ref.11 +// CHECK:STDOUT: complete_type_witness = constants.%.6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { @@ -207,6 +214,7 @@ fn Run() { // CHECK:STDOUT: .Unused = imports.%import_ref.5 // CHECK:STDOUT: .x = imports.%import_ref.6 // CHECK:STDOUT: .unused = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // 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 674265353828..916a3f2345cf 100644 --- a/toolchain/check/testdata/class/import_forward_decl.carbon +++ b/toolchain/check/testdata/class/import_forward_decl.carbon @@ -76,5 +76,6 @@ class ForwardDecl { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ForwardDecl +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index 413c07a0ce5e..303495593bc9 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -129,6 +129,7 @@ var ptr: E* = &val; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -136,6 +137,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -173,6 +175,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -192,6 +195,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -229,6 +233,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -248,6 +253,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -288,6 +294,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -307,6 +314,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -347,6 +355,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -366,6 +375,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -410,6 +420,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -429,6 +440,7 @@ var ptr: E* = &val; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: %.4: type = ptr_type %C [template] // CHECK:STDOUT: } @@ -473,6 +485,7 @@ var ptr: E* = &val; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 ce65c44e6214..c8551d18b6bb 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -61,6 +61,7 @@ fn Run() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Cycle // CHECK:STDOUT: .a = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -70,6 +71,8 @@ fn Run() { // CHECK:STDOUT: %Run: %Run.type = struct_value () [template] // CHECK:STDOUT: %Cycle: type = class_type @Cycle [template] // CHECK:STDOUT: %.1: type = ptr_type %Cycle [template] +// CHECK:STDOUT: %.2: type = struct_type {.a: %.1} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -97,6 +100,7 @@ fn Run() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .a = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // 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 8646c65beffc..18628916efd4 100644 --- a/toolchain/check/testdata/class/import_struct_cyle.carbon +++ b/toolchain/check/testdata/class/import_struct_cyle.carbon @@ -75,6 +75,7 @@ fn Run() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Cycle // CHECK:STDOUT: .c = %.loc10_8 +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -85,6 +86,8 @@ fn Run() { // CHECK:STDOUT: %Cycle: type = class_type @Cycle [template] // CHECK:STDOUT: %.1: type = ptr_type %Cycle [template] // CHECK:STDOUT: %.2: type = struct_type {.b: %.1} [template] +// CHECK:STDOUT: %.3: type = struct_type {.c: %.2} [template] +// CHECK:STDOUT: %.4: = complete_type_witness %.3 [template] // CHECK:STDOUT: %.6: type = unbound_element_type %Cycle, %.2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -115,6 +118,7 @@ fn Run() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .c = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.4 // 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 2e9e291bbe07..4520149cafee 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -283,6 +283,7 @@ class B { // CHECK:STDOUT: .Self = constants.%Shape // CHECK:STDOUT: .x [protected] = %.loc5_18 // CHECK:STDOUT: .y [protected] = %.loc6_18 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Circle { @@ -317,6 +318,7 @@ class B { // CHECK:STDOUT: .base = %.loc10 // CHECK:STDOUT: .GetPosition = %GetPosition.decl // CHECK:STDOUT: extend %Shape.ref +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Circle]() -> %return: %tuple.type.2 { @@ -399,6 +401,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -422,6 +425,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .F [private] = %F.decl // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -448,6 +452,7 @@ class B { // CHECK:STDOUT: .base = %.loc14 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.1(); @@ -546,6 +551,7 @@ class B { // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .SOME_CONSTANT [protected] = %SOME_CONSTANT // CHECK:STDOUT: .SomeProtectedFunction [protected] = %SomeProtectedFunction.decl +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -581,6 +587,7 @@ class B { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @SomeProtectedFunction() -> %i32 { @@ -661,6 +668,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Shape // CHECK:STDOUT: .y [private] = %.loc5_16 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Square { @@ -689,6 +697,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .GetPosition = %GetPosition.decl // CHECK:STDOUT: extend %Shape.ref +// CHECK:STDOUT: complete_type_witness = %.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @GetPosition[%self.param_patt: %Square]() -> %i32 { @@ -736,6 +745,7 @@ class B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F [private] = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -789,6 +799,7 @@ class B { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F [protected] = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -845,6 +856,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .F [private] = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -858,6 +870,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -914,6 +927,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .F [protected] = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -927,6 +941,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: extend %B.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -1024,6 +1039,7 @@ class B { // 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: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Internal { @@ -1044,6 +1060,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Internal // CHECK:STDOUT: .INTERNAL_CONSTANT [protected] = %INTERNAL_CONSTANT +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1083,6 +1100,7 @@ class B { // CHECK:STDOUT: .internal [private] = %.loc14 // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .SomeFunc = %SomeFunc.decl +// CHECK:STDOUT: complete_type_witness = %.loc46 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32 { @@ -1153,6 +1171,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x [private] = %.loc5_16 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1173,6 +1192,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %B]() { @@ -1232,6 +1252,7 @@ class B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .x [protected] = %.loc5_18 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1252,6 +1273,7 @@ class B { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %A.ref +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 5559263891fb..0c7597e4adc4 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -119,6 +119,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .n = %.loc12_8 // CHECK:STDOUT: .next = %.loc13_11 +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make(%n.param_patt: %i32, %next.param_patt: %.3) -> %return: %Class { diff --git a/toolchain/check/testdata/class/init_adapt.carbon b/toolchain/check/testdata/class/init_adapt.carbon index 2e33fba8b377..3571b044084a 100644 --- a/toolchain/check/testdata/class/init_adapt.carbon +++ b/toolchain/check/testdata/class/init_adapt.carbon @@ -192,6 +192,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: .b = %.loc6_8 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { @@ -201,6 +202,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptC +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeC() -> %C; @@ -360,6 +362,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: .b = %.loc6_8 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @AdaptC { @@ -369,6 +372,7 @@ var e: C = MakeAdaptC(); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AdaptC +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeC() -> %C; diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index e54e848c9235..31059fec8735 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -93,6 +93,7 @@ fn F() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 1408aa9da6c6..f8fb860c2488 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -99,6 +99,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: .Self = constants.%Inner // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { @@ -112,6 +113,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: .Self = constants.%Outer // CHECK:STDOUT: .c = %.loc19 // CHECK:STDOUT: .d = %.loc20 +// CHECK:STDOUT: complete_type_witness = %.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeInner() -> %Inner; diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 4bd870492387..29099815ac34 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -315,6 +315,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .A = %A // CHECK:STDOUT: .k = %.loc17_8 +// CHECK:STDOUT: complete_type_witness = %.loc18 // 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 ef31d64bbd90..72a963381e98 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -123,6 +123,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: .po = %.loc36_9 // CHECK:STDOUT: .qo = %.loc37_9 // CHECK:STDOUT: .pi = %.loc38_9 +// CHECK:STDOUT: complete_type_witness = %.loc39 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { @@ -144,6 +145,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: .po = %.loc20_11 // CHECK:STDOUT: .qi = %.loc21_11 // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc28 // 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 149a13595694..2cc1cc627aab 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -93,6 +93,7 @@ fn G(o: Outer) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer // CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { @@ -106,6 +107,7 @@ fn G(o: Outer) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner // CHECK:STDOUT: .n = %.loc13_10 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 7c2daad8bd9b..55c908e2aaf7 100644 --- a/toolchain/check/testdata/class/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/class/no_prelude/export_name.carbon @@ -58,12 +58,15 @@ var c: C = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -82,6 +85,7 @@ var c: C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export.carbon @@ -89,6 +93,7 @@ var c: C = {}; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -111,6 +116,7 @@ var c: C = {}; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 7ab66260d054..8101d8e93152 100644 --- a/toolchain/check/testdata/class/no_prelude/extern.carbon +++ b/toolchain/check/testdata/class/no_prelude/extern.carbon @@ -346,6 +346,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_decl_fn_in_extern.carbon @@ -388,6 +389,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_extern_decl.carbon @@ -445,6 +447,7 @@ extern class C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .D = %D.decl +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D; @@ -470,6 +473,7 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_decl.carbon @@ -595,6 +599,8 @@ extern class C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -612,12 +618,15 @@ extern class C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_extern_decl_after_import_def.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -635,5 +644,6 @@ extern class C; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 fc1646827223..fad17b3f501f 100644 --- a/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/no_prelude/generic_vs_params.carbon @@ -154,6 +154,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NotGenericNoParams +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NotGenericButParams { @@ -161,6 +162,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NotGenericButParams.2 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @GenericAndParams.1(%T.loc6_24.1: type) { @@ -174,6 +176,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%GenericAndParams.2 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -200,6 +203,7 @@ fn F(T:! type) { // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl // CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -211,6 +215,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%GenericNoParams.2 +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -225,6 +230,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%GenericAndParams.4 +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -233,6 +239,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -327,6 +334,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.2 +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_non_generic_params.carbon @@ -363,6 +371,7 @@ fn F(T:! type) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.2 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc10_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 a7a3ac931c8e..279971cfa692 100644 --- a/toolchain/check/testdata/class/no_prelude/implicit_import.carbon +++ b/toolchain/check/testdata/class/no_prelude/implicit_import.carbon @@ -120,6 +120,7 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redecl_after_def.carbon @@ -142,12 +143,15 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redecl_after_def.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -166,6 +170,7 @@ class B {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- redef_after_def.carbon @@ -188,6 +193,7 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_redef_after_def.impl.carbon @@ -216,6 +222,7 @@ class B {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @.1 { @@ -223,6 +230,7 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.3 +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- def_alias.carbon @@ -274,5 +282,6 @@ class B {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.1 +// CHECK:STDOUT: complete_type_witness = %.loc11 // 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 9d2eb6e8cecd..89c49efa8c8c 100644 --- a/toolchain/check/testdata/class/no_prelude/import_access.carbon +++ b/toolchain/check/testdata/class/no_prelude/import_access.carbon @@ -155,6 +155,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Def +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- forward_with_def.carbon @@ -178,6 +179,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ForwardWithDef +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- forward.carbon @@ -200,6 +202,7 @@ private class Redecl {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %Def: type = class_type @Def [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %Def = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -223,6 +226,7 @@ private class Redecl {} // CHECK:STDOUT: class @Def { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -293,6 +297,7 @@ private class Redecl {} // CHECK:STDOUT: constants { // CHECK:STDOUT: %ForwardWithDef: type = class_type @ForwardWithDef [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %ForwardWithDef = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -316,6 +321,7 @@ private class Redecl {} // CHECK:STDOUT: class @ForwardWithDef { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -420,6 +426,7 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Forward +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param_patt: %.1) { @@ -512,5 +519,6 @@ private class Redecl {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Redecl +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 b629872b2a32..acde352ad2a1 100644 --- a/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/no_prelude/indirect_import_member.carbon @@ -124,6 +124,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -148,6 +149,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -168,6 +171,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- d.carbon @@ -215,12 +219,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .C = %C +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- f.carbon @@ -241,6 +247,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } @@ -267,6 +275,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -285,6 +294,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } @@ -311,6 +322,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -329,6 +341,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: } @@ -355,6 +369,7 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .F = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -373,6 +388,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] @@ -402,12 +419,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .C = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .F = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); @@ -427,6 +446,8 @@ var x: () = D.C.F(); // CHECK:STDOUT: constants { // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] @@ -456,12 +477,14 @@ var x: () = D.C.F(); // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .C = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .F = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(); 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 69b296031a3e..b6f3a69617da 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 @@ -112,6 +112,7 @@ class D; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 540acc397435..3fad2802dd81 100644 --- a/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/no_prelude/syntactic_merge.carbon @@ -244,6 +244,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -257,6 +258,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Foo.2 +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -271,6 +273,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Bar.2 +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -326,6 +329,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_17.1: %C) { @@ -339,6 +343,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Foo.2 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -391,6 +396,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -411,6 +417,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.4 +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -466,6 +473,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -479,6 +487,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Foo.2 +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -534,6 +543,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -612,6 +622,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -625,6 +636,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Foo.2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -639,6 +651,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Bar.2 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -701,6 +714,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -721,6 +735,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.4 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -781,6 +796,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -801,6 +817,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.4 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -861,6 +878,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc7_11.1: %C) { @@ -881,6 +899,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.4 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -927,6 +946,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %C) { @@ -982,6 +1002,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(constants.%a: %C) { @@ -995,6 +1016,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Foo.2 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1051,6 +1073,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Foo(%a.loc6_11.1: %.3) { @@ -1071,6 +1094,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.5 +// CHECK:STDOUT: complete_type_witness = %.loc18_33 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1137,6 +1161,7 @@ fn Base.F[addr self: Base*]() { // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .a = %.loc5_8 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt: %.2](); diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 4cc8f9df033c..21e41a802c3f 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -168,6 +168,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .n = %.loc14_8 +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[addr %self.param_patt.loc17_21: %.1](%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 5cb13ca2a1a3..2eef1a946233 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -76,6 +76,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @MemberNamedSelf { @@ -99,6 +100,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: .Self = constants.%MemberNamedSelf // CHECK:STDOUT: .r#Self = %Self.decl // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Self { @@ -106,6 +108,7 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Self +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 8d80e9ecf461..40cb75739491 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -82,6 +82,7 @@ fn Class.F[self: Self](b: bool) {} // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 b7de42984cd3..9874c233d1fb 100644 --- a/toolchain/check/testdata/class/redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/redeclaration_introducer.carbon @@ -54,6 +54,7 @@ abstract class C {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -61,6 +62,7 @@ abstract class C {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -68,5 +70,6 @@ abstract class C {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 0901d7c07f39..fb79106ea3a3 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -91,6 +91,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 22994849d5af..2fe4ee4d5d79 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -89,6 +89,7 @@ class Class { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 12d7cb13b7d1..3e423a950afa 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -144,6 +144,7 @@ class A { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .AF = %AF.decl // CHECK:STDOUT: .a = %.loc46_8 +// CHECK:STDOUT: complete_type_witness = %.loc47 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -161,6 +162,7 @@ class A { // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .BF = %BF.decl // CHECK:STDOUT: .b = %.loc16_10 +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -179,6 +181,7 @@ class A { // CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: .CF = %CF.decl // CHECK:STDOUT: .c = %.loc42_10 +// CHECK:STDOUT: complete_type_witness = %.loc43 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -196,6 +199,7 @@ class A { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .DF = %DF.decl // CHECK:STDOUT: .d = %.loc24_12 +// CHECK:STDOUT: complete_type_witness = %.loc25 // 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 246a842e18e5..f2cc716ee138 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -120,6 +120,7 @@ fn Run() { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 df488eee606a..31f727f048f0 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -157,6 +157,7 @@ class Class { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .n = %.loc8_8 +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F[%self.param_patt: %Class]() -> %i32 { @@ -225,6 +226,7 @@ class Class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 33f577fe898c..04087963526d 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -141,6 +141,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .a = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -180,6 +181,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: .SelfBase = %SelfBase.decl // CHECK:STDOUT: .AddrSelfBase = %AddrSelfBase.decl // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 b017816cbebe..ec67af7b5431 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -108,6 +108,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: .p = %.loc18_8 +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 2f2d8ec04b0e..fb204b65062c 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -79,6 +79,7 @@ fn Run() -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // 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 24a0ead008d4..168978ba2c10 100644 --- a/toolchain/check/testdata/class/syntactic_merge_literal.carbon +++ b/toolchain/check/testdata/class/syntactic_merge_literal.carbon @@ -130,6 +130,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc2_19 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -144,6 +145,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_24 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -266,6 +268,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc2_19 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -287,6 +290,7 @@ class D(b:! C(1_000)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%.33 +// CHECK:STDOUT: complete_type_witness = %.loc10_24 // 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 e2bac3886fe8..4dc5c2cae75c 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -74,6 +74,7 @@ class Access { // CHECK:STDOUT: .G [protected] = %G.decl // CHECK:STDOUT: .k [private] = %.loc17_16 // CHECK:STDOUT: .l [protected] = %.loc19_18 +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 5f3a8623be10..37a13cae37a5 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -159,6 +159,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .H = %H.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract { @@ -170,6 +171,7 @@ class Derived { // CHECK:STDOUT: .Self = constants.%Abstract // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @H(); @@ -185,6 +187,9 @@ class Derived { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Base: type = class_type @Base [template] +// CHECK:STDOUT: %.1: type = ptr_type [template] +// CHECK:STDOUT: %.2: type = struct_type {.: %.1} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %.5: type = unbound_element_type %Derived, %Base [template] // CHECK:STDOUT: %.6: type = struct_type {.base: %Base} [template] // CHECK:STDOUT: %.7: = complete_type_witness %.6 [template] @@ -227,12 +232,14 @@ class Derived { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .H = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F(); @@ -243,6 +250,9 @@ class Derived { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %Base: type = class_type @Base [template] +// CHECK:STDOUT: %.1: type = ptr_type [template] +// CHECK:STDOUT: %.2: type = struct_type {.: %.1} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %.5: type = struct_type {} [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -275,6 +285,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .H = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() { @@ -332,6 +343,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A1 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A2 { @@ -345,6 +357,7 @@ class Derived { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %A1.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -401,6 +414,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B1 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B2 { @@ -414,6 +428,7 @@ class Derived { // CHECK:STDOUT: .base = %.loc9 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %B1.ref +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -427,6 +442,7 @@ class Derived { // CHECK:STDOUT: .base = %.loc14 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %B2.ref +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -469,6 +485,7 @@ class Derived { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl fn @F(); @@ -548,6 +565,7 @@ class Derived { // CHECK:STDOUT: .m1 = %.loc5_9 // CHECK:STDOUT: .m2 = %.loc6_9 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: virtual fn @F.1(); @@ -656,6 +674,7 @@ class Derived { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { @@ -669,6 +688,7 @@ class Derived { // CHECK:STDOUT: .base = %.loc8 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %Base.ref +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: impl fn @F(); diff --git a/toolchain/check/testdata/deduce/array.carbon b/toolchain/check/testdata/deduce/array.carbon index d2d21996e413..73409cdd47a2 100644 --- a/toolchain/check/testdata/deduce/array.carbon +++ b/toolchain/check/testdata/deduce/array.carbon @@ -181,6 +181,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -354,6 +355,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc10_6.1: %i32) { @@ -512,6 +514,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc10_6.1: type, %N.loc10_16.1: %i32) { @@ -652,6 +655,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -828,6 +832,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -835,6 +840,7 @@ fn G() -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%N.loc10_6.1: %i32) { diff --git a/toolchain/check/testdata/deduce/generic_type.carbon b/toolchain/check/testdata/deduce/generic_type.carbon index 4e7c8d50077c..00852b1647b3 100644 --- a/toolchain/check/testdata/deduce/generic_type.carbon +++ b/toolchain/check/testdata/deduce/generic_type.carbon @@ -156,6 +156,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -164,6 +165,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { @@ -330,6 +332,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%I.2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -338,6 +341,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type) { @@ -545,6 +549,7 @@ fn G() -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer.2 // CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -559,6 +564,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner.2 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -567,6 +573,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -574,6 +581,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc13_6.1: type, %U.loc13_16.1: type) { @@ -820,6 +828,7 @@ fn G() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%WithNontype.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_29 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/deduce/tuple.carbon b/toolchain/check/testdata/deduce/tuple.carbon index 2e46895795fd..d226c75c86c2 100644 --- a/toolchain/check/testdata/deduce/tuple.carbon +++ b/toolchain/check/testdata/deduce/tuple.carbon @@ -139,6 +139,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -146,6 +147,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc7_6.1: type, %U.loc7_16.1: type) { @@ -373,6 +375,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%HasPair.2 +// CHECK:STDOUT: complete_type_witness = %.loc4_35 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -527,6 +530,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -534,6 +538,7 @@ fn G(pair: (C, D)) -> D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // 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 aa3658b50f20..49b323088a1c 100644 --- a/toolchain/check/testdata/deduce/type_operator.carbon +++ b/toolchain/check/testdata/deduce/type_operator.carbon @@ -135,6 +135,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -268,6 +269,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -404,6 +406,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { @@ -536,6 +539,7 @@ fn G(p: C*) -> const C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc6_6.1: type) { diff --git a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon index fa88b0618d53..1333a3b9a103 100644 --- a/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon +++ b/toolchain/check/testdata/function/call/prefer_unqualified_lookup.carbon @@ -104,6 +104,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class.2 // CHECK:STDOUT: .Inner = %Inner.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -144,6 +145,7 @@ fn Class(F:! type).Inner.G() -> i32 { return F(); } // CHECK:STDOUT: .Self = constants.%Inner.2 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc10 // 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 9ab6dfccba5e..7ecffbb6cf69 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon +++ b/toolchain/check/testdata/function/declaration/no_prelude/extern.carbon @@ -199,6 +199,7 @@ extern library "basic" fn F(); // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 31efd2ae70ed..d5da403f0c3a 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 @@ -157,6 +157,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc37 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnCUnused() -> %C; @@ -189,6 +190,8 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %ReturnDUnused.type: type = fn_type @ReturnDUnused [template] // CHECK:STDOUT: %ReturnDUnused: %ReturnDUnused.type = struct_value () [template] // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %ReturnDUsed.type: type = fn_type @ReturnDUsed [template] // CHECK:STDOUT: %ReturnDUsed: %ReturnDUsed.type = struct_value () [template] // CHECK:STDOUT: } @@ -224,6 +227,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: class @D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallFAndGIncomplete() { 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 a57b8a080a8c..3751bbcf283f 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/function/definition/no_prelude/syntactic_merge.carbon @@ -229,6 +229,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -280,6 +281,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo[](%a.param_patt: %C) { @@ -328,6 +330,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -376,6 +379,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -428,6 +432,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -438,6 +443,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: %Bar.type: type = fn_type @Bar [template] @@ -480,6 +487,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -536,6 +544,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -589,6 +598,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -644,6 +654,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Foo(%a.loc7_8.1: %C) { @@ -718,6 +729,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo() -> %return: %C { @@ -759,6 +771,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C); @@ -767,6 +780,8 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Foo.type: type = fn_type @Foo [template] // CHECK:STDOUT: %Foo: %Foo.type = struct_value () [template] // CHECK:STDOUT: } @@ -799,6 +814,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %C) { @@ -851,6 +867,7 @@ fn Foo(a: const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Foo(%a.param_patt: %.3); diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 9313b05d5e0c..75d02ca2bf21 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -572,6 +572,7 @@ fn CallImplicitNotDeducible() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc4 // 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 997c07d64f14..9e57a62e7ed4 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/call.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/call.carbon @@ -156,6 +156,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Function(%T.loc4_13.1: type) { @@ -370,6 +371,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc16 // 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 cb7cecd5f0c4..85017f7ba8bd 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon +++ b/toolchain/check/testdata/function/generic/no_prelude/import_specific.carbon @@ -156,6 +156,7 @@ fn H() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc6 // 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 2992066bf2e0..71641a423a05 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -109,6 +109,7 @@ fn G() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Wrap.2 // CHECK:STDOUT: .Make = %Make.decl +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -125,6 +126,7 @@ fn G() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .arr = %.loc15_18 +// CHECK:STDOUT: complete_type_witness = %.loc15_32 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(@Wrap.%T.loc11_12.1: type) { diff --git a/toolchain/check/testdata/global/class_obj.carbon b/toolchain/check/testdata/global/class_obj.carbon index 50de3d6ea5b4..bd47e30661e1 100644 --- a/toolchain/check/testdata/global/class_obj.carbon +++ b/toolchain/check/testdata/global/class_obj.carbon @@ -45,6 +45,7 @@ var a: A = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc10 // 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 5f350ca82fd8..f8191618964d 100644 --- a/toolchain/check/testdata/global/class_with_fun.carbon +++ b/toolchain/check/testdata/global/class_with_fun.carbon @@ -60,6 +60,7 @@ var a: A = {}; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ret_a() -> %return: %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 7814a1bbe377..e11768b45bb8 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -79,6 +79,7 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .n = .inst+369.loc37_8 +// CHECK:STDOUT: complete_type_witness = .inst+371.loc38_1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/impl/extend_impl.carbon b/toolchain/check/testdata/impl/extend_impl.carbon index 7f228cf3752c..7b57ff749ac9 100644 --- a/toolchain/check/testdata/impl/extend_impl.carbon +++ b/toolchain/check/testdata/impl/extend_impl.carbon @@ -101,6 +101,7 @@ fn G(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.%HasF.ref +// CHECK:STDOUT: complete_type_witness = %.loc19 // 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 b3cbdcef73cc..be69e01c7eb1 100644 --- a/toolchain/check/testdata/impl/extend_impl_generic.carbon +++ b/toolchain/check/testdata/impl/extend_impl_generic.carbon @@ -189,6 +189,7 @@ class X(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Param // CHECK:STDOUT: .x = %.loc9_8 +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -203,6 +204,7 @@ class X(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.1.%HasF.type +// CHECK:STDOUT: complete_type_witness = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) { @@ -449,6 +451,7 @@ class X(U:! type) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X.2 // CHECK:STDOUT: extend %.loc9 +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 b57784c22981..d6f3c3fa4e31 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_forall.carbon @@ -143,6 +143,7 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@GenericInterface.%T.loc11_28.1: type, @GenericInterface.%Self.1: @GenericInterface.%GenericInterface.type (%GenericInterface.type.2)) { 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 8119ac7b5b85..6a4872e4bae5 100644 --- a/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon +++ b/toolchain/check/testdata/impl/fail_extend_impl_type_as.carbon @@ -116,6 +116,7 @@ class E { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -128,6 +129,7 @@ class E { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: extend @impl.2.%I.ref +// CHECK:STDOUT: complete_type_witness = %.loc30 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { @@ -140,5 +142,6 @@ class E { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%E // CHECK:STDOUT: extend @impl.3.%I.ref +// CHECK:STDOUT: complete_type_witness = %.loc40 // 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 ce074594007f..0898cb98b5d5 100644 --- a/toolchain/check/testdata/impl/fail_extend_non_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_non_interface.carbon @@ -59,5 +59,6 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc16 // 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 28d21dee44fd..0ed43a4da1d2 100644 --- a/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_partially_defined_interface.carbon @@ -79,6 +79,7 @@ interface I { // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: extend %.loc19 // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc20 // 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 ea4b1a0d9ae6..d07de12820e7 100644 --- a/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/fail_extend_undefined_interface.carbon @@ -98,6 +98,7 @@ fn F(c: C) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.%I.ref // CHECK:STDOUT: has_error +// CHECK:STDOUT: complete_type_witness = %.loc22 // 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 928cea065638..60289bc373ed 100644 --- a/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon +++ b/toolchain/check/testdata/impl/fail_impl_bad_assoc_fn.carbon @@ -805,6 +805,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NoF +// CHECK:STDOUT: complete_type_witness = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FNotFunction { @@ -816,6 +817,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FNotFunction +// CHECK:STDOUT: complete_type_witness = %.loc35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @F.16; @@ -829,6 +831,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FAlias +// CHECK:STDOUT: complete_type_witness = %.loc51 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraParam { @@ -840,6 +843,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraParam +// CHECK:STDOUT: complete_type_witness = %.loc64 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraImplicitParam { @@ -851,6 +855,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraImplicitParam +// CHECK:STDOUT: complete_type_witness = %.loc77 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FExtraReturnType { @@ -862,6 +867,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FExtraReturnType +// CHECK:STDOUT: complete_type_witness = %.loc91 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingParam { @@ -873,6 +879,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingParam +// CHECK:STDOUT: complete_type_witness = %.loc106 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingImplicitParam { @@ -884,6 +891,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingImplicitParam +// CHECK:STDOUT: complete_type_witness = %.loc119 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FMissingReturnType { @@ -895,6 +903,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FMissingReturnType +// CHECK:STDOUT: complete_type_witness = %.loc132 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentParamType { @@ -906,6 +915,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentParamType +// CHECK:STDOUT: complete_type_witness = %.loc145 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentImplicitParamType { @@ -917,6 +927,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentImplicitParamType +// CHECK:STDOUT: complete_type_witness = %.loc158 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentReturnType { @@ -928,6 +939,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentReturnType +// CHECK:STDOUT: complete_type_witness = %.loc171 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @FDifferentParamName { @@ -939,6 +951,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%FDifferentParamName +// CHECK:STDOUT: complete_type_witness = %.loc185 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadParam { @@ -950,6 +963,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SelfNestedBadParam +// CHECK:STDOUT: complete_type_witness = %.loc202 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SelfNestedBadReturnType { @@ -961,6 +975,7 @@ class SelfNestedBadReturnType { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SelfNestedBadReturnType +// CHECK:STDOUT: complete_type_witness = %.loc214 // 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 e4cf2f798550..8cfa57d80086 100644 --- a/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon +++ b/toolchain/check/testdata/impl/fail_self_type_mismatch.carbon @@ -143,6 +143,7 @@ impl i32 as I { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/impl_as.carbon b/toolchain/check/testdata/impl/impl_as.carbon index 9bad9ade8550..3055680f08fa 100644 --- a/toolchain/check/testdata/impl/impl_as.carbon +++ b/toolchain/check/testdata/impl/impl_as.carbon @@ -87,6 +87,7 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc22 // 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 2f8772cbb695..3d4491aae516 100644 --- a/toolchain/check/testdata/impl/lookup/alias.carbon +++ b/toolchain/check/testdata/impl/lookup/alias.carbon @@ -106,6 +106,7 @@ fn G(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .G = %G +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 bf1ba69bd5d4..fb25ae355a1a 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 @@ -91,6 +91,7 @@ fn F(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 1b796f4d9350..cfafb5193b1b 100644 --- a/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon +++ b/toolchain/check/testdata/impl/lookup/fail_todo_undefined_impl.carbon @@ -119,6 +119,7 @@ impl C as I { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.1.%I.ref +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 e75fd2a674aa..d3ba4b692736 100644 --- a/toolchain/check/testdata/impl/lookup/generic.carbon +++ b/toolchain/check/testdata/impl/lookup/generic.carbon @@ -594,6 +594,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1165,6 +1166,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -1172,6 +1174,7 @@ fn G(x: A) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%T.loc4_16.1: type, @HasF.%Self.1: @HasF.%HasF.type (%HasF.type.2)) { diff --git a/toolchain/check/testdata/impl/lookup/instance_method.carbon b/toolchain/check/testdata/impl/lookup/instance_method.carbon index 54b2ca1e9c45..b39f4d2deec7 100644 --- a/toolchain/check/testdata/impl/lookup/instance_method.carbon +++ b/toolchain/check/testdata/impl/lookup/instance_method.carbon @@ -148,6 +148,7 @@ fn F(c: C) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.%I.ref +// CHECK:STDOUT: complete_type_witness = %.loc21 // 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 d148c9bae908..966ddab86cee 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon @@ -265,6 +265,7 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A.2 // CHECK:STDOUT: .n = %.loc3_8.1 +// CHECK:STDOUT: complete_type_witness = %.loc4_1.1 // 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 0c94f8c57fa9..6510ab97aa0d 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon @@ -249,6 +249,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { @@ -385,11 +386,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @G.1(@HasG.%Self: %HasG.type) { @@ -431,6 +434,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %TestCF.type: type = fn_type @TestCF [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestCF: %TestCF.type = struct_value () [template] @@ -493,6 +498,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCF(%c.param_patt: %C) { @@ -519,6 +525,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %TestDF.type: type = fn_type @TestDF [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestDF: %TestDF.type = struct_value () [template] @@ -623,11 +631,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDF(%d.param_patt: %D) { @@ -654,6 +664,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %TestCG.type: type = fn_type @TestCG [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestCG: %TestCG.type = struct_value () [template] @@ -758,11 +770,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.17 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestCG(%c.param_patt: %C) { @@ -789,6 +803,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %TestDG.type: type = fn_type @TestDG [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %TestDG: %TestDG.type = struct_value () [template] @@ -880,11 +896,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class @D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestDG(%d.param_patt: %D) { @@ -1104,6 +1122,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%AnyParam.2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1138,6 +1157,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template] // CHECK:STDOUT: %AnyParam.1: %AnyParam.type = struct_value () [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X.1: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %X.2: @AnyParam.%T (%T) = bind_symbolic_name X, 1 [symbolic] @@ -1242,6 +1262,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1322,6 +1343,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %AnyParam.type: type = generic_class_type @AnyParam [template] // CHECK:STDOUT: %AnyParam.1: %AnyParam.type = struct_value () [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %X.1: %T = bind_symbolic_name X, 1 [symbolic] // CHECK:STDOUT: %X.2: @AnyParam.%T (%T) = bind_symbolic_name X, 1 [symbolic] @@ -1406,6 +1428,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1652,6 +1675,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1684,6 +1708,8 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: constants { // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C.3: type = class_type @C, @C(type) [template] @@ -1818,6 +1844,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/multiple_extend.carbon b/toolchain/check/testdata/impl/multiple_extend.carbon index 68d31847f53a..0fd4398a0a8a 100644 --- a/toolchain/check/testdata/impl/multiple_extend.carbon +++ b/toolchain/check/testdata/impl/multiple_extend.carbon @@ -274,6 +274,7 @@ fn P(o: O) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.1.%HasF.ref // CHECK:STDOUT: extend @impl.2.%HasG.ref +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@HasF.%Self: %HasF.type) { @@ -439,6 +440,7 @@ fn P(o: O) { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: extend @impl.1.%HasA1.ref // CHECK:STDOUT: extend @impl.2.%HasA2.ref +// CHECK:STDOUT: complete_type_witness = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @A.1(@HasA1.%Self: %HasA1.type) { @@ -561,6 +563,7 @@ fn P(o: O) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .J = %J.decl +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @E { @@ -577,6 +580,7 @@ fn P(o: O) { // CHECK:STDOUT: .base = %.loc13 // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: extend @impl.%HasI.ref +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @I.1(@HasI.%Self: %HasI.type) { @@ -699,6 +703,7 @@ fn P(o: O) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base // CHECK:STDOUT: .K = %K.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @L { @@ -715,6 +720,7 @@ fn P(o: O) { // CHECK:STDOUT: .base = %.loc13 // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: extend @impl.%HasK.ref +// CHECK:STDOUT: complete_type_witness = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @K.1() { @@ -862,6 +868,7 @@ fn P(o: O) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NBase // CHECK:STDOUT: .N = %N.decl +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O { @@ -885,6 +892,7 @@ fn P(o: O) { // CHECK:STDOUT: extend %NBase.ref // CHECK:STDOUT: extend @impl.1.%HasN1.ref // CHECK:STDOUT: extend @impl.2.%HasN2.ref +// CHECK:STDOUT: complete_type_witness = %.loc25 // 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 08478d30b5c5..04c2b0eb4bc3 100644 --- a/toolchain/check/testdata/impl/no_prelude/basic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/basic.carbon @@ -74,6 +74,7 @@ impl C as Simple { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@Simple.%Self: %Simple.type) { diff --git a/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon b/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon index 9e201b7d6164..678bb27cdea6 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon +++ b/toolchain/check/testdata/impl/no_prelude/fail_alias.carbon @@ -75,5 +75,6 @@ impl AC as AI {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 a3e1cfaafdb5..7d7d22c9bba9 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon +++ b/toolchain/check/testdata/impl/no_prelude/fail_undefined_interface.carbon @@ -96,5 +96,6 @@ impl C as J {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon b/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon index 35bfe49cf6e3..ed2b52f3f800 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_extend_impl.carbon @@ -90,6 +90,7 @@ fn G(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: extend @impl.%I.ref +// CHECK:STDOUT: complete_type_witness = %.loc12 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { @@ -110,6 +111,8 @@ fn G(c: C) { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %G.type: type = fn_type @G [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %G: %G.type = struct_value () [template] @@ -169,6 +172,7 @@ fn G(c: C) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: extend imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 17f99626af61..06b0b68e0464 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_generic.carbon @@ -138,6 +138,7 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { @@ -191,6 +192,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %.3: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%.3)> [symbolic] @@ -273,6 +276,7 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { @@ -326,6 +330,8 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: %I.type.2: type = facet_type <@I, @I(%T)> [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Self.2: %I.type.2 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %.3: type = ptr_type %T [symbolic] // CHECK:STDOUT: %I.type.3: type = facet_type <@I, @I(%.3)> [symbolic] @@ -401,6 +407,7 @@ impl forall [T:! type] C as I(T*) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @I(constants.%T) { 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 ba615cb3efc3..7eb813e4cf42 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon +++ b/toolchain/check/testdata/impl/no_prelude/import_use_generic.carbon @@ -129,6 +129,7 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -186,6 +187,7 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %C.2: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] @@ -283,6 +285,7 @@ fn F() -> c.(I.F)() {} // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 54a2d55613ee..7ccd50148539 100644 --- a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon +++ b/toolchain/check/testdata/impl/no_prelude/interface_args.carbon @@ -182,6 +182,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -189,6 +190,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -196,6 +198,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.1(@Action.%T.loc4_18.1: type, @Action.%Self.1: @Action.%Action.type (%Action.type.2)) { @@ -252,6 +255,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %Action: %Action.type.1 = struct_value () [template] @@ -346,11 +351,13 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.10 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op.1(constants.%T: type, constants.%Self.1: @Action.%Action.type (%Action.type.2)) { @@ -402,6 +409,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Action.type.1: type = generic_interface_type @Action [template] // CHECK:STDOUT: %Action: %Action.type.1 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] @@ -499,16 +508,19 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.10 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.17 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Op(constants.%T: type, constants.%Self.1: @Action.%Action.type (%Action.type.2)) { @@ -668,6 +680,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -675,6 +688,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make.1(@Factory.%T.loc4_19.1: type, @Factory.%Self.1: @Factory.%Factory.type (%Factory.type.2)) { @@ -720,6 +734,8 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %B: type = class_type @B [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %Factory.type.1: type = generic_interface_type @Factory [template] // CHECK:STDOUT: %Factory: %Factory.type.1 = struct_value () [template] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] @@ -814,11 +830,13 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make.1(constants.%T: type, constants.%Self.1: @Factory.%Factory.type (%Factory.type.2)) { @@ -975,11 +993,13 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: class @B { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.8 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -987,6 +1007,7 @@ fn MakeC(a: A) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @Make(constants.%T: type, constants.%Self.1: @Factory.%Factory.type (%Factory.type.2)) { 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 d60b7ab1048a..3d124caa7e65 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_class.carbon @@ -95,6 +95,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { @@ -106,6 +107,7 @@ class A { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc23 // 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 87ebbacedc68..1151d69497b8 100644 --- a/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon +++ b/toolchain/check/testdata/impl/no_prelude/self_in_signature.carbon @@ -283,6 +283,7 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -290,6 +291,7 @@ impl D as SelfNested { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 e4fb52d79037..fed0e3c593fa 100644 --- a/toolchain/check/testdata/impl/redeclaration.carbon +++ b/toolchain/check/testdata/impl/redeclaration.carbon @@ -95,5 +95,6 @@ impl i32 as I {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc17 // 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 e685eb2c6782..7e6c403b570d 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 @@ -303,6 +303,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; } // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // 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 ef846ade5b0b..f02468f11919 100644 --- a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon +++ b/toolchain/check/testdata/interface/no_prelude/default_fn.carbon @@ -81,6 +81,7 @@ class C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .I = %I.decl +// CHECK:STDOUT: complete_type_witness = %.loc24 // 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 ba39bae97e6d..e5c989ef51d2 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic.carbon @@ -250,6 +250,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { @@ -269,6 +270,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@WithAssocFn.%T.loc8_23.1: type, @WithAssocFn.%Self.1: @WithAssocFn.%WithAssocFn.type (%WithAssocFn.type.2)) { @@ -469,6 +471,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { @@ -476,6 +479,7 @@ fn G(T:! Generic(B)) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%T.loc9_6.1: %Generic.type.3) { diff --git a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon index fc8aad9cdb98..f883094dbb02 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_import.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_import.carbon @@ -181,6 +181,7 @@ impl C as AddWith(C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(constants.%T: type, constants.%Self.1: @AddWith.%AddWith.type (%AddWith.type.2)) { 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 97cf4f6ca3b9..62892ec8a834 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon +++ b/toolchain/check/testdata/interface/no_prelude/generic_vs_params.carbon @@ -268,6 +268,7 @@ interface A(T: type) {} // CHECK:STDOUT: .Self = constants.%C.2 // CHECK:STDOUT: .GenericNoParams = %GenericNoParams.decl // CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -276,6 +277,7 @@ interface A(T: type) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc13 // 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 0a3219e92ff5..411ec7fffd1c 100644 --- a/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon +++ b/toolchain/check/testdata/interface/no_prelude/syntactic_merge.carbon @@ -286,6 +286,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -368,6 +369,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -449,6 +451,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -526,6 +529,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -599,6 +603,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -615,6 +620,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic] // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] @@ -717,6 +724,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -823,6 +831,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -912,6 +921,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1001,6 +1011,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1058,6 +1069,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1069,6 +1081,8 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %a: %C = bind_symbolic_name a, 0 [symbolic] // CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic] // CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template] @@ -1132,6 +1146,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Foo(constants.%a) { @@ -1222,6 +1237,7 @@ interface Foo(a:! const (const C)) {} // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // 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 2bbe443443d8..82b5b5067593 100644 --- a/toolchain/check/testdata/let/compile_time_bindings.carbon +++ b/toolchain/check/testdata/let/compile_time_bindings.carbon @@ -212,6 +212,7 @@ impl i32 as Empty { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .x = %x +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -270,6 +271,7 @@ impl i32 as Empty { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %x // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -364,6 +366,7 @@ impl i32 as Empty { // CHECK:STDOUT: .a = %a // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .d = %d +// CHECK:STDOUT: complete_type_witness = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(%b.loc10_8.2: %tuple.type.1) { @@ -518,6 +521,7 @@ impl i32 as Empty { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .x = %x +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %empty_tuple.type { @@ -798,6 +802,7 @@ impl i32 as Empty { // CHECK:STDOUT: .Self = constants.%I // CHECK:STDOUT: .T = %T // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> ; diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index 9ce07cb5c9c5..365bfdf6104b 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -73,6 +73,7 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon @@ -130,11 +131,13 @@ fn Run() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return: %A { @@ -153,6 +156,8 @@ fn Run() { // CHECK:STDOUT: %F.type: type = fn_type @F [template] // CHECK:STDOUT: %F: %F.type = struct_value () [template] // CHECK:STDOUT: %A: type = class_type @A [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -191,6 +196,7 @@ fn Run() { // CHECK:STDOUT: class @A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 3de7f2fd0b20..6f289696485d 100644 --- a/toolchain/check/testdata/operators/overloaded/add.carbon +++ b/toolchain/check/testdata/operators/overloaded/add.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_and.carbon b/toolchain/check/testdata/operators/overloaded/bit_and.carbon index f8626527e3c5..57d956f834b2 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_and.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_and.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon index 823cff0861e1..e2ac1e7e8920 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_complement.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_complement.carbon @@ -103,6 +103,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C]() -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_or.carbon b/toolchain/check/testdata/operators/overloaded/bit_or.carbon index 22dfb0787700..239013d2d110 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_or.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_or.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon index d2e1933c5aed..f36186645570 100644 --- a/toolchain/check/testdata/operators/overloaded/bit_xor.carbon +++ b/toolchain/check/testdata/operators/overloaded/bit_xor.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/dec.carbon b/toolchain/check/testdata/operators/overloaded/dec.carbon index 31c9028497a0..3a86b2f4cf1b 100644 --- a/toolchain/check/testdata/operators/overloaded/dec.carbon +++ b/toolchain/check/testdata/operators/overloaded/dec.carbon @@ -89,6 +89,7 @@ fn TestOp() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[addr %self.param_patt: %.3](); diff --git a/toolchain/check/testdata/operators/overloaded/div.carbon b/toolchain/check/testdata/operators/overloaded/div.carbon index 13fee7181db8..716a42714a22 100644 --- a/toolchain/check/testdata/operators/overloaded/div.carbon +++ b/toolchain/check/testdata/operators/overloaded/div.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/eq.carbon b/toolchain/check/testdata/operators/overloaded/eq.carbon index 8059f5d719e3..3c7c0d7b132e 100644 --- a/toolchain/check/testdata/operators/overloaded/eq.carbon +++ b/toolchain/check/testdata/operators/overloaded/eq.carbon @@ -224,6 +224,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Equal.1[%self.param_patt: %C](%other.param_patt: %C) -> bool; @@ -333,6 +334,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestEqual(%a.param_patt: %D, %b.param_patt: %D) -> bool { @@ -494,6 +496,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -501,6 +504,7 @@ fn TestLhsBad(a: D, b: C) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Equal.1[%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 228798c0c158..7cf4bc33be7c 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_assign_non_ref.carbon @@ -163,6 +163,7 @@ fn TestAddAssignNonRef(a: C, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[addr %self.param_patt: %.3](); diff --git a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon index 15eb8687910f..cdbc08e9ae3e 100644 --- a/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon +++ b/toolchain/check/testdata/operators/overloaded/fail_no_impl.carbon @@ -123,6 +123,7 @@ fn TestRef(b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @TestUnary(%a.param_patt: %C) -> %return: %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 0ef223d0c9df..5e1f970d8e3c 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 @@ -189,6 +189,7 @@ fn TestAssign(b: D) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -196,6 +197,7 @@ fn TestAssign(b: D) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%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 f3545ae95960..85ac590672bd 100644 --- a/toolchain/check/testdata/operators/overloaded/implicit_as.carbon +++ b/toolchain/check/testdata/operators/overloaded/implicit_as.carbon @@ -204,6 +204,7 @@ fn Test() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X // CHECK:STDOUT: .n = %.loc12_8 +// CHECK:STDOUT: complete_type_witness = %.loc13 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Convert.2[%self.param_patt: %i32]() -> %return: %X { diff --git a/toolchain/check/testdata/operators/overloaded/inc.carbon b/toolchain/check/testdata/operators/overloaded/inc.carbon index de618de75688..357ab34ff891 100644 --- a/toolchain/check/testdata/operators/overloaded/inc.carbon +++ b/toolchain/check/testdata/operators/overloaded/inc.carbon @@ -89,6 +89,7 @@ fn TestOp() { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[addr %self.param_patt: %.3](); diff --git a/toolchain/check/testdata/operators/overloaded/index.carbon b/toolchain/check/testdata/operators/overloaded/index.carbon index a30eea47ff0f..b92f8a43a1d5 100644 --- a/toolchain/check/testdata/operators/overloaded/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/index.carbon @@ -163,6 +163,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ElementType { @@ -170,6 +171,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ElementType.1 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SubscriptType { @@ -177,6 +179,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SubscriptType.1 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.1) -> %return: %ElementType.1 { @@ -471,6 +474,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @ElementType { @@ -478,6 +482,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%ElementType.1 +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @SubscriptType { @@ -485,6 +490,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%SubscriptType.1 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @At.2[%self.param_patt: %C](%subscript.param_patt: %SubscriptType.1) -> %return: %ElementType.1 { @@ -561,6 +567,7 @@ let x: i32 = c[0]; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // 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 aff25ef48035..81e4243cb09b 100644 --- a/toolchain/check/testdata/operators/overloaded/left_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/left_shift.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/mod.carbon b/toolchain/check/testdata/operators/overloaded/mod.carbon index 8a7addff3648..4e2a18f3def1 100644 --- a/toolchain/check/testdata/operators/overloaded/mod.carbon +++ b/toolchain/check/testdata/operators/overloaded/mod.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/mul.carbon b/toolchain/check/testdata/operators/overloaded/mul.carbon index c04768559fdd..fd899dc13bf4 100644 --- a/toolchain/check/testdata/operators/overloaded/mul.carbon +++ b/toolchain/check/testdata/operators/overloaded/mul.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/negate.carbon b/toolchain/check/testdata/operators/overloaded/negate.carbon index 4090978232a2..4323f636de3d 100644 --- a/toolchain/check/testdata/operators/overloaded/negate.carbon +++ b/toolchain/check/testdata/operators/overloaded/negate.carbon @@ -103,6 +103,7 @@ fn TestOp(a: C) -> C { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C]() -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon index faded026022b..91ba9117e23c 100644 --- a/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon +++ b/toolchain/check/testdata/operators/overloaded/no_prelude/index.carbon @@ -79,6 +79,7 @@ fn F() { ()[()]; } // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%IndexWith +// CHECK:STDOUT: complete_type_witness = %.loc5 // 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 1b5435baa09e..789fd7cab554 100644 --- a/toolchain/check/testdata/operators/overloaded/ordered.carbon +++ b/toolchain/check/testdata/operators/overloaded/ordered.carbon @@ -310,6 +310,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Less.1[%self.param_patt: %C](%other.param_patt: %C) -> bool; @@ -493,6 +494,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc4 // 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 20352ecdcd86..8a1cbfff3e5d 100644 --- a/toolchain/check/testdata/operators/overloaded/right_shift.carbon +++ b/toolchain/check/testdata/operators/overloaded/right_shift.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/operators/overloaded/sub.carbon b/toolchain/check/testdata/operators/overloaded/sub.carbon index 4a419e1d206e..e36d7e6abfc1 100644 --- a/toolchain/check/testdata/operators/overloaded/sub.carbon +++ b/toolchain/check/testdata/operators/overloaded/sub.carbon @@ -174,6 +174,7 @@ fn TestAssign(a: C*, b: C) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Op.1[%self.param_patt: %C](%other.param_patt: %C) -> %return: %C { diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index 578a6330fda3..71d354849bee 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -233,6 +233,7 @@ fn Main() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .Foo = %Foo.decl +// CHECK:STDOUT: complete_type_witness = %.loc8 // 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 94350fc2c87c..ff256650e7e7 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,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- conflict.carbon @@ -281,6 +282,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -301,12 +305,16 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_copy.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -327,12 +335,16 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_indirect.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -353,6 +365,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_export_import.carbon @@ -361,6 +374,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -392,6 +406,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -413,6 +428,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -445,6 +461,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -466,6 +483,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -498,6 +516,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -519,6 +538,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -549,6 +569,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -570,6 +591,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -601,6 +623,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -622,6 +645,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -652,6 +676,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -673,6 +698,7 @@ alias C = Other.C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -709,6 +735,7 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -791,6 +818,9 @@ alias C = Other.C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -819,5 +849,6 @@ alias C = Other.C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 d20629d7f652..68878d905ca1 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_import.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_import.carbon @@ -192,6 +192,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon @@ -271,6 +272,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -296,6 +298,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -317,6 +320,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -343,6 +347,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -364,6 +369,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -390,6 +396,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -411,6 +418,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -436,6 +444,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -457,6 +466,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -482,6 +492,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -503,6 +514,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -528,6 +540,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -549,6 +562,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -574,6 +588,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -595,6 +610,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -620,6 +636,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -641,6 +658,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -666,6 +684,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -698,6 +717,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -723,6 +743,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -744,6 +765,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -771,6 +793,7 @@ var indirect_c: C = {.x = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .x = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 6746c9eb57ee..0e94da2f29f7 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_mixed.carbon @@ -145,6 +145,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { @@ -156,6 +157,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .y = %.loc9_8 +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_import.carbon @@ -177,6 +179,9 @@ var d: D = {.y = ()}; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -199,12 +204,16 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .x = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -227,6 +236,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .x = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_name_then_import.carbon @@ -248,6 +258,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -273,6 +284,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -294,6 +306,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -319,6 +332,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -340,6 +354,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -365,6 +380,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -416,6 +432,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -441,6 +458,7 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -462,10 +480,12 @@ var d: D = {.y = ()}; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %D: type = class_type @D [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %D = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -498,12 +518,14 @@ var d: D = {.y = ()}; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .x = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.5 // CHECK:STDOUT: .y = imports.%import_ref.6 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // 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 3a19fa4cc010..32f055a4fcf3 100644 --- a/toolchain/check/testdata/packages/no_prelude/export_name.carbon +++ b/toolchain/check/testdata/packages/no_prelude/export_name.carbon @@ -235,6 +235,7 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .x = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { @@ -246,13 +247,19 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%NSC // CHECK:STDOUT: .y = %.loc10_8 +// CHECK:STDOUT: complete_type_witness = %.loc11 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] +// CHECK:STDOUT: %.3: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.4: = complete_type_witness %.3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -282,12 +289,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_reexporting.carbon @@ -312,7 +321,12 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] +// CHECK:STDOUT: %.3: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.4: = complete_type_witness %.3 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -342,12 +356,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- export_in_impl.carbon @@ -362,10 +378,12 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -403,12 +421,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -438,10 +458,12 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -480,12 +502,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -515,10 +539,12 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -556,12 +582,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -623,12 +651,16 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Local +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_export_member.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -653,6 +685,7 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import_both.carbon @@ -661,10 +694,12 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -702,12 +737,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -737,10 +774,12 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct.1: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: %NSC: type = class_type @NSC [template] // CHECK:STDOUT: %.4: type = struct_type {.y: %empty_tuple.type} [template] +// CHECK:STDOUT: %.5: = complete_type_witness %.4 [template] // CHECK:STDOUT: %struct.2: %NSC = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -778,12 +817,14 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @NSC { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.6 // CHECK:STDOUT: .y = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -826,6 +867,9 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -851,6 +895,7 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- use_repeat_export.carbon @@ -859,6 +904,7 @@ private export C; // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] // CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template] // CHECK:STDOUT: %struct: %C = struct_value (%empty_tuple) [template] // CHECK:STDOUT: } @@ -884,6 +930,7 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .x = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -903,6 +950,9 @@ private export C; // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template] +// CHECK:STDOUT: %.1: type = struct_type {.x: %empty_tuple.type} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -928,5 +978,6 @@ private export C; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 // CHECK:STDOUT: .x = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 8cfd6bf40858..2f206d903584 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,12 +59,16 @@ export C.n; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .n = %.loc5_8 +// CHECK:STDOUT: complete_type_witness = %.loc6 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- fail_b.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] +// CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: type = struct_type {.n: %.1} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { @@ -84,5 +88,6 @@ export C.n; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 // CHECK:STDOUT: .n = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // 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 35949c288aa5..56445e69c6a9 100644 --- a/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon +++ b/toolchain/check/testdata/packages/no_prelude/implicit_imports_entities.carbon @@ -184,6 +184,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C1 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- c2.carbon @@ -206,6 +207,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- ns.carbon @@ -231,6 +233,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- o1.carbon @@ -253,6 +256,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%O1 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- o2.carbon @@ -275,6 +279,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%O2 +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- local_other.carbon @@ -297,6 +302,7 @@ import Other library "o1"; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Other +// CHECK:STDOUT: complete_type_witness = %.loc4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- mix_current_package.carbon @@ -317,6 +323,7 @@ import Other library "o1"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C1: type = class_type @C1 [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct.1: %C1 = struct_value () [template] // CHECK:STDOUT: %C2: type = class_type @C2 [template] // CHECK:STDOUT: %struct.2: %C2 = struct_value () [template] @@ -349,11 +356,13 @@ import Other library "o1"; // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C2 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -387,6 +396,7 @@ import Other library "o1"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C1: type = class_type @C1 [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C1 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -410,6 +420,7 @@ import Other library "o1"; // CHECK:STDOUT: class @C1 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -442,6 +453,7 @@ import Other library "o1"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %C: type = class_type @C [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %C = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -470,6 +482,7 @@ import Other library "o1"; // CHECK:STDOUT: class @C { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.3 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -501,6 +514,7 @@ import Other library "o1"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %O1: type = class_type @O1 [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct.1: %O1 = struct_value () [template] // CHECK:STDOUT: %O2: type = class_type @O2 [template] // CHECK:STDOUT: %struct.2: %O2 = struct_value () [template] @@ -541,11 +555,13 @@ import Other library "o1"; // CHECK:STDOUT: class @O1 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @O2 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.4 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { @@ -581,6 +597,7 @@ import Other library "o1"; // CHECK:STDOUT: constants { // CHECK:STDOUT: %O1: type = class_type @O1 [template] // CHECK:STDOUT: %.1: type = struct_type {} [template] +// CHECK:STDOUT: %.2: = complete_type_witness %.1 [template] // CHECK:STDOUT: %struct: %O1 = struct_value () [template] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -610,6 +627,7 @@ import Other library "o1"; // CHECK:STDOUT: class @O1 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.2 +// CHECK:STDOUT: complete_type_witness = constants.%.2 // 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 97da0799336b..908748dfe9a1 100644 --- a/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon +++ b/toolchain/check/testdata/packages/no_prelude/missing_prelude.carbon @@ -487,6 +487,7 @@ var n: {} = i32; // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Core // CHECK:STDOUT: .Int = %Int.decl +// CHECK:STDOUT: complete_type_witness = %.loc7 // 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 7629d2cf68d6..4646723f27ff 100644 --- a/toolchain/check/testdata/pointer/arrow.carbon +++ b/toolchain/check/testdata/pointer/arrow.carbon @@ -82,6 +82,7 @@ fn Foo(ptr: C*) { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .Member = %Member.decl // CHECK:STDOUT: .field = %.loc13_12 +// CHECK:STDOUT: complete_type_witness = %.loc14 // 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 39c87fe6d628..48876f46f8a7 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -123,6 +123,7 @@ fn G() -> C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %.loc23_16 // CHECK:STDOUT: .b = %.loc23_28 +// CHECK:STDOUT: complete_type_witness = %.loc23_35 // 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 157c31ac6652..7f728bf2b8ea 100644 --- a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +++ b/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon @@ -739,6 +739,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc6_19 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -759,6 +760,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .n = %.loc7_16 // CHECK:STDOUT: .m = %.loc7_28 +// CHECK:STDOUT: complete_type_witness = %.loc7_35 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Int(%N.param_patt: Core.IntLiteral) -> type = "int.make_type_signed"; @@ -1033,12 +1035,15 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: %Int: %Int.type = struct_value () [template] // CHECK:STDOUT: %i32: type = int_type signed, %.1 [template] // CHECK:STDOUT: %D: type = class_type @D [template] +// CHECK:STDOUT: %.2: type = struct_type {.n: %i32, .m: %i32} [template] +// CHECK:STDOUT: %.3: = complete_type_witness %.2 [template] // CHECK:STDOUT: %F0.type: type = fn_type @F0 [template] // CHECK:STDOUT: %F0: %F0.type = struct_value () [template] // CHECK:STDOUT: %.5: bool = bool_literal false [template] // CHECK:STDOUT: %.6: type = struct_type {} [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.7: = complete_type_witness %.6 [template] // CHECK:STDOUT: %N: %i32 = bind_symbolic_name N, 0 [symbolic] // CHECK:STDOUT: %N.patt: %i32 = symbolic_binding_pattern N, 0 [symbolic] // CHECK:STDOUT: %.8: Core.IntLiteral = int_value 0 [template] @@ -1283,6 +1288,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: .Self = imports.%import_ref.3 // CHECK:STDOUT: .n = imports.%import_ref.4 // CHECK:STDOUT: .m = imports.%import_ref.5 +// CHECK:STDOUT: complete_type_witness = constants.%.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @C(constants.%N: %i32) { @@ -1294,6 +1300,7 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.7 +// CHECK:STDOUT: complete_type_witness = constants.%.7 // 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 4dada89ec2e5..dce7877be91b 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -114,6 +114,7 @@ fn G() -> i32 { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .a = %.loc12_8 // CHECK:STDOUT: .b = %.loc13_8 +// CHECK:STDOUT: complete_type_witness = %.loc14 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return: %C { diff --git a/toolchain/check/testdata/struct/import.carbon b/toolchain/check/testdata/struct/import.carbon index b7bb4b14f81e..51869135fc15 100644 --- a/toolchain/check/testdata/struct/import.carbon +++ b/toolchain/check/testdata/struct/import.carbon @@ -200,6 +200,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc8_34 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -341,6 +342,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.24: type = struct_type {.a: %.23, .d: %i32} [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.28: type = struct_type {} [template] +// CHECK:STDOUT: %.29: = complete_type_witness %.28 [template] // CHECK:STDOUT: %.30: type = struct_type {.a: %i32, .b: %i32} [template] // CHECK:STDOUT: %S: %.30 = bind_symbolic_name S, 0 [symbolic] // CHECK:STDOUT: %S.patt: %.30 = symbolic_binding_pattern S, 0 [symbolic] @@ -657,6 +660,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.40 +// CHECK:STDOUT: complete_type_witness = constants.%.29 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1155,6 +1159,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.20: = interface_witness (%Convert.12) [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.21: type = struct_type {} [template] +// CHECK:STDOUT: %.22: = complete_type_witness %.21 [template] // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template] // CHECK:STDOUT: %.24: type = struct_type {.a: %i32, .b: %i32} [template] @@ -1416,6 +1422,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.39 +// CHECK:STDOUT: complete_type_witness = constants.%.22 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1853,6 +1860,8 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: %.20: = interface_witness (%Convert.12) [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.21: type = struct_type {} [template] +// CHECK:STDOUT: %.22: = complete_type_witness %.21 [template] // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template] // CHECK:STDOUT: %.24: type = struct_type {.a: %i32, .b: %i32} [template] @@ -2152,6 +2161,7 @@ var c_bad: C({.a = 3, .b = 4}) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.39 +// CHECK:STDOUT: complete_type_witness = constants.%.22 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/import.carbon b/toolchain/check/testdata/tuple/import.carbon index 3049aca20abc..650501bedd54 100644 --- a/toolchain/check/testdata/tuple/import.carbon +++ b/toolchain/check/testdata/tuple/import.carbon @@ -217,6 +217,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C.2 +// CHECK:STDOUT: complete_type_witness = %.loc7_26 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -373,6 +374,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %tuple.type.8: type = tuple_type (%tuple.type.6, %tuple.type.7) [template] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.25: type = struct_type {} [template] +// CHECK:STDOUT: %.26: = complete_type_witness %.25 [template] // CHECK:STDOUT: %X: %tuple.type.7 = bind_symbolic_name X, 0 [symbolic] // CHECK:STDOUT: %X.patt: %tuple.type.7 = symbolic_binding_pattern X, 0 [symbolic] // CHECK:STDOUT: %.27: Core.IntLiteral = int_value 1 [template] @@ -697,6 +700,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.40 +// CHECK:STDOUT: complete_type_witness = constants.%.26 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1203,6 +1207,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.20: = interface_witness (%Convert.12) [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.21: type = struct_type {} [template] +// CHECK:STDOUT: %.22: = complete_type_witness %.21 [template] // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template] // CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template] @@ -1466,6 +1472,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.39 +// CHECK:STDOUT: complete_type_witness = constants.%.22 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1903,6 +1910,8 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: %.20: = interface_witness (%Convert.12) [symbolic] // CHECK:STDOUT: %C.type: type = generic_class_type @C [template] // CHECK:STDOUT: %C.1: %C.type = struct_value () [template] +// CHECK:STDOUT: %.21: type = struct_type {} [template] +// CHECK:STDOUT: %.22: = complete_type_witness %.21 [template] // CHECK:STDOUT: %.23: Core.IntLiteral = int_value 32 [template] // CHECK:STDOUT: %i32: type = int_type signed, %.23 [template] // CHECK:STDOUT: %tuple.type.1: type = tuple_type (%i32, %i32) [template] @@ -2202,6 +2211,7 @@ var c_bad: C((3, 4)) = F(); // CHECK:STDOUT: class { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = imports.%import_ref.39 +// CHECK:STDOUT: complete_type_witness = constants.%.22 // 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 7f1fee9e4969..732f7a9a4500 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -68,6 +68,7 @@ fn F(x: X) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%X +// CHECK:STDOUT: complete_type_witness = %.loc12 // 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 7c120c1bb48a..35be548f7144 100644 --- a/toolchain/check/testdata/where_expr/constraints.carbon +++ b/toolchain/check/testdata/where_expr/constraints.carbon @@ -851,6 +851,7 @@ let B: type where .Self impls A = D; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C +// CHECK:STDOUT: complete_type_witness = %.loc7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @DoesNotImplI() { @@ -956,6 +957,7 @@ let B: type where .Self impls A = D; // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D +// CHECK:STDOUT: complete_type_witness = %.loc5 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @__global_init() { diff --git a/toolchain/check/testdata/where_expr/designator.carbon b/toolchain/check/testdata/where_expr/designator.carbon index b4dd57fb4c79..5be359271cf5 100644 --- a/toolchain/check/testdata/where_expr/designator.carbon +++ b/toolchain/check/testdata/where_expr/designator.carbon @@ -418,6 +418,7 @@ class D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: complete_type_witness = %.loc10 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %return: %C { @@ -466,6 +467,7 @@ class D { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .G = %G.decl +// CHECK:STDOUT: complete_type_witness = %.loc9 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> { diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index c7eea04a60e6..f5ec0b805d0b 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -264,6 +264,12 @@ class FormatterImpl { OpenBrace(); FormatCodeBlock(class_info.body_block_id); FormatNameScope(class_info.scope_id, "!members:\n"); + + Indent(); + out_ << "complete_type_witness = "; + FormatName(class_info.complete_type_witness_id); + out_ << "\n"; + CloseBrace(); out_ << '\n'; } else {