From 28fea821b783b1dfc1494e0ec761edb1b96d401c Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Tue, 17 Jun 2025 17:10:04 -0400 Subject: [PATCH] Add min-preludes to more slow tests (part 4) (#5682) Adds min-preludes more tests which were seen as slow and their surrounding neighbours. This drops the file_test runtime on my machine from about 6s to about 4.5s. For a few files that are clearly only testing diagnostics, we drop the if-present semir ranges and the associated TODO. --- toolchain/check/testdata/choice/basic.carbon | 26 +- .../check/testdata/choice/generic.carbon | 36 +- toolchain/check/testdata/choice/params.carbon | 2 + toolchain/check/testdata/class/base.carbon | 25 +- .../check/testdata/class/base_method.carbon | 91 +- .../testdata/class/base_method_shadow.carbon | 85 +- toolchain/check/testdata/class/basic.carbon | 93 ++- .../testdata/class/comp_time_field.carbon | 1 + .../class/complete_in_member_fn.carbon | 15 +- .../testdata/class/compound_field.carbon | 97 +-- .../class/cross_package_import.carbon | 1 + .../testdata/class/derived_to_base.carbon | 203 ++--- .../check/testdata/class/export_name.carbon | 1 + toolchain/check/testdata/class/extern.carbon | 1 + .../testdata/class/extern_library.carbon | 1 + .../class/fail_abstract_in_struct.carbon | 1 + .../testdata/class/fail_addr_not_self.carbon | 79 +- .../testdata/class/fail_addr_self.carbon | 57 +- .../class/fail_base_as_declared_name.carbon | 6 +- .../testdata/class/fail_base_bad_type.carbon | 783 +----------------- .../class/fail_base_method_define.carbon | 98 +-- .../testdata/class/fail_base_misplaced.carbon | 71 +- .../testdata/class/fail_base_modifiers.carbon | 2 + .../testdata/class/fail_base_no_extend.carbon | 56 +- .../testdata/class/fail_base_repeated.carbon | 92 +- .../testdata/class/fail_base_unbound.carbon | 71 +- .../class/fail_compound_type_mismatch.carbon | 100 +-- .../class/fail_convert_to_invalid.carbon | 2 + .../class/fail_derived_to_base.carbon | 161 +--- .../testdata/class/fail_error_recovery.carbon | 98 +-- .../testdata/class/fail_extend_cycle.carbon | 80 +- .../class/fail_field_modifiers.carbon | 112 +-- .../testdata/class/fail_generic_method.carbon | 2 + .../testdata/class/fail_import_misuses.carbon | 100 +-- .../testdata/class/fail_incomplete.carbon | 2 + .../check/testdata/class/fail_init.carbon | 116 +-- .../class/fail_init_as_inplace.carbon | 145 +--- .../class/fail_memaccess_category.carbon | 120 +-- .../testdata/class/fail_member_of_let.carbon | 2 + .../check/testdata/class/fail_method.carbon | 97 +-- .../class/fail_method_modifiers.carbon | 129 +-- .../class/fail_method_redefinition.carbon | 54 +- .../testdata/class/fail_modifiers.carbon | 151 +--- .../class/fail_out_of_line_decl.carbon | 46 +- .../class/fail_redeclaration_scope.carbon | 103 +-- .../testdata/class/fail_redefinition.carbon | 115 +-- .../check/testdata/class/fail_scope.carbon | 2 + .../check/testdata/class/fail_self.carbon | 148 +--- .../testdata/class/fail_self_param.carbon | 2 + .../class/fail_self_type_member.carbon | 31 +- .../class/fail_todo_field_initializer.carbon | 50 +- .../testdata/class/fail_unbound_field.carbon | 86 +- .../testdata/class/fail_unknown_member.carbon | 75 +- .../check/testdata/class/field_access.carbon | 101 +-- .../class/field_access_in_value.carbon | 111 +-- .../testdata/class/forward_declared.carbon | 11 +- toolchain/check/testdata/class/generic.carbon | 1 + .../class/generic/member_out_of_line.carbon | 1 + .../testdata/class/generic/member_type.carbon | 187 ++--- .../class/generic/method_deduce.carbon | 181 ++-- .../testdata/class/generic/redeclare.carbon | 1 + .../testdata/class/generic_method.carbon | 109 +-- .../testdata/class/generic_vs_params.carbon | 1 + .../testdata/class/implicit_import.carbon | 1 + toolchain/check/testdata/class/import.carbon | 23 +- .../check/testdata/class/import_access.carbon | 1 + .../check/testdata/class/import_base.carbon | 25 +- .../testdata/class/import_forward_decl.carbon | 1 + .../testdata/class/import_indirect.carbon | 1 + .../testdata/class/import_member_cycle.carbon | 1 + .../testdata/class/import_struct_cyle.carbon | 1 + .../class/indirect_import_member.carbon | 1 + .../testdata/class/inheritance_access.carbon | 57 +- toolchain/check/testdata/class/init.carbon | 63 +- toolchain/check/testdata/class/init_as.carbon | 81 +- .../check/testdata/class/init_nested.carbon | 45 +- toolchain/check/testdata/class/local.carbon | 63 +- toolchain/check/testdata/class/method.carbon | 185 +++-- .../check/testdata/class/method_access.carbon | 1 + .../testdata/class/name_poisoning.carbon | 1 + .../check/testdata/class/nested_name.carbon | 19 +- .../class/no_definition_in_impl_file.carbon | 1 + .../check/testdata/class/raw_self.carbon | 189 ++--- .../check/testdata/class/raw_self_type.carbon | 45 +- .../check/testdata/class/redeclaration.carbon | 41 +- .../class/redeclaration_introducer.carbon | 19 +- .../check/testdata/class/reenter_scope.carbon | 29 +- toolchain/check/testdata/class/reorder.carbon | 39 +- .../testdata/class/reorder_qualified.carbon | 131 +-- toolchain/check/testdata/class/scope.carbon | 77 +- toolchain/check/testdata/class/self.carbon | 5 +- .../testdata/class/self_conversion.carbon | 153 ++-- .../check/testdata/class/self_type.carbon | 81 +- .../check/testdata/class/static_method.carbon | 9 +- .../testdata/class/syntactic_merge.carbon | 1 + .../class/todo_access_modifiers.carbon | 19 +- .../testdata/class/virtual_modifiers.carbon | 31 +- .../testdata/function/generic/call.carbon | 4 +- .../call_method_on_generic_facet.carbon | 107 +-- .../testdata/function/generic/deduce.carbon | 85 +- .../fail_deduce_imported_function.carbon | 1 + .../generic/fail_type_param_mismatch.carbon | 104 --- .../function/generic/forward_decl.carbon | 9 +- .../function/generic/import_specific.carbon | 1 + .../generic/indirect_generic_type.carbon | 67 +- .../function/generic/param_in_type.carbon | 89 +- .../function/generic/redeclare.carbon | 1 + .../function/generic/resolve_used.carbon | 7 +- .../function/generic/return_slot.carbon | 119 +-- .../function/generic/template_param.carbon | 1 + .../function/generic/type_param.carbon | 3 +- .../function/generic/type_param_scope.carbon | 35 +- .../testdata/namespace/add_to_import.carbon | 21 +- .../check/testdata/namespace/alias.carbon | 49 +- .../fail_conflict_after_merge.carbon | 1 + ...l_conflict_imported_namespace_first.carbon | 1 + ..._conflict_imported_namespace_nested.carbon | 1 + ..._conflict_imported_namespace_second.carbon | 1 + ...conflict_in_imports_namespace_first.carbon | 1 + ...onflict_in_imports_namespace_second.carbon | 1 + .../namespace/fail_decl_in_alias.carbon | 33 +- .../testdata/namespace/fail_duplicate.carbon | 7 +- .../testdata/namespace/fail_modifiers.carbon | 1 + .../namespace/fail_not_top_level.carbon | 1 + .../testdata/namespace/fail_params.carbon | 34 +- .../namespace/fail_unresolved_scope.carbon | 1 + .../check/testdata/namespace/function.carbon | 11 +- .../check/testdata/namespace/imported.carbon | 1 + .../namespace/imported_indirect.carbon | 1 + .../check/testdata/namespace/merging.carbon | 1 + .../merging_with_indirections.carbon | 1 + .../check/testdata/namespace/nested.carbon | 1 + .../check/testdata/namespace/shadow.carbon | 81 +- .../namespace/unqualified_lookup.carbon | 1 + .../package_expr/fail_not_found.carbon | 5 +- .../check/testdata/package_expr/syntax.carbon | 45 +- toolchain/lower/testdata/operators/and.carbon | 18 +- .../testdata/operators/and_empty_block.carbon | 8 +- .../testdata/operators/assignment.carbon | 20 +- toolchain/lower/testdata/operators/not.carbon | 12 +- toolchain/lower/testdata/operators/or.carbon | 22 +- .../testdata/operators/or_empty_block.carbon | 12 +- 142 files changed, 2000 insertions(+), 5293 deletions(-) diff --git a/toolchain/check/testdata/choice/basic.carbon b/toolchain/check/testdata/choice/basic.carbon index fa78cb597d61..b047d281163a 100644 --- a/toolchain/check/testdata/choice/basic.carbon +++ b/toolchain/check/testdata/choice/basic.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/uint.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/choice/basic.carbon @@ -143,20 +145,20 @@ let never: Never = {}; // CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] // CHECK:STDOUT: %ImplicitAs.type.54b: type = facet_type <@ImplicitAs, @ImplicitAs(%u2)> [concrete] // CHECK:STDOUT: %Convert.type.f0e: type = fn_type @Convert.1, @ImplicitAs(%u2) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.30e: type = fn_type @Convert.3, @impl.86e(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.30e: type = fn_type @Convert.2, @impl.86e(%To) [symbolic] // CHECK:STDOUT: %Convert.d1a: %Convert.type.30e = struct_value () [symbolic] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.801: = impl_witness imports.%ImplicitAs.impl_witness_table.bb8, @impl.86e(%int_2.ecc) [concrete] -// CHECK:STDOUT: %Convert.type.70b: type = fn_type @Convert.3, @impl.86e(%int_2.ecc) [concrete] +// CHECK:STDOUT: %Convert.type.70b: type = fn_type @Convert.2, @impl.86e(%int_2.ecc) [concrete] // CHECK:STDOUT: %Convert.474: %Convert.type.70b = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.7cf: %ImplicitAs.type.54b = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.801) [concrete] -// CHECK:STDOUT: %.3e0: type = fn_type_with_self_type %Convert.type.f0e, %ImplicitAs.facet.7cf [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.54b = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.801) [concrete] +// CHECK:STDOUT: %.3e0: type = fn_type_with_self_type %Convert.type.f0e, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.5bb: = bound_method %int_0.5c6, %Convert.474 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.474, @Convert.3(%int_2.ecc) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.474, @Convert.2(%int_2.ecc) [concrete] // CHECK:STDOUT: %bound_method.d36: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.9fd: %u2 = int_value 0 [concrete] // CHECK:STDOUT: %Ordering.val.a29: %Ordering = struct_value (%int_0.9fd) [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Convert.bound.0dd: = bound_method %int_1.5b8, %Convert.474 [concrete] // CHECK:STDOUT: %bound_method.6bf: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.b2c: %u2 = int_value 1 [concrete] @@ -174,7 +176,7 @@ let never: Never = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core.import_ref.c3d: @impl.86e.%Convert.type (%Convert.type.30e) = import_ref Core//prelude/types/uint, loc20_40, loaded [symbolic = @impl.86e.%Convert (constants.%Convert.d1a)] +// CHECK:STDOUT: %Core.import_ref.c3d: @impl.86e.%Convert.type (%Convert.type.30e) = import_ref Core//prelude/parts/uint, loc16_40, loaded [symbolic = @impl.86e.%Convert (constants.%Convert.d1a)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.bb8 = impl_witness_table (%Core.import_ref.c3d), @impl.86e [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -209,7 +211,7 @@ let never: Never = {}; // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0.loc5: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] // CHECK:STDOUT: %bound_method.loc5_7.1: = bound_method %int_0, %impl.elem0.loc5 [concrete = constants.%Convert.bound.5bb] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.3(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.2(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_7.2: = bound_method %int_0, %specific_fn.loc5 [concrete = constants.%bound_method.d36] // CHECK:STDOUT: %int.convert_checked.loc5: init %u2 = call %bound_method.loc5_7.2(%int_0) [concrete = constants.%int_0.9fd] // CHECK:STDOUT: %.loc5_7.1: %u2 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_0.9fd] @@ -226,7 +228,7 @@ let never: Never = {}; // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc6: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] // CHECK:STDOUT: %bound_method.loc6_13.1: = bound_method %int_1, %impl.elem0.loc6 [concrete = constants.%Convert.bound.0dd] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.3(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.2(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_13.2: = bound_method %int_1, %specific_fn.loc6 [concrete = constants.%bound_method.6bf] // CHECK:STDOUT: %int.convert_checked.loc6: init %u2 = call %bound_method.loc6_13.2(%int_1) [concrete = constants.%int_1.b2c] // CHECK:STDOUT: %.loc6_13.1: %u2 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_1.b2c] @@ -243,7 +245,7 @@ let never: Never = {}; // CHECK:STDOUT: %int_2.loc7: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc7: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] // CHECK:STDOUT: %bound_method.loc7_10.1: = bound_method %int_2.loc7, %impl.elem0.loc7 [concrete = constants.%Convert.bound.122] -// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.3(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc7: = specific_function %impl.elem0.loc7, @Convert.2(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_10.2: = bound_method %int_2.loc7, %specific_fn.loc7 [concrete = constants.%bound_method.f7d] // CHECK:STDOUT: %int.convert_checked.loc7: init %u2 = call %bound_method.loc7_10.2(%int_2.loc7) [concrete = constants.%int_2.788] // CHECK:STDOUT: %.loc7_10.1: %u2 = value_of_initializer %int.convert_checked.loc7 [concrete = constants.%int_2.788] @@ -260,7 +262,7 @@ let never: Never = {}; // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %impl.elem0.loc9: %.3e0 = impl_witness_access constants.%ImplicitAs.impl_witness.801, element0 [concrete = constants.%Convert.474] // CHECK:STDOUT: %bound_method.loc9_1.1: = bound_method %int_3, %impl.elem0.loc9 [concrete = constants.%Convert.bound.a5c] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.3(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.2(constants.%int_2.ecc) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_1.2: = bound_method %int_3, %specific_fn.loc9 [concrete = constants.%bound_method.c7e] // CHECK:STDOUT: %int.convert_checked.loc9: init %u2 = call %bound_method.loc9_1.2(%int_3) [concrete = constants.%int_3.975] // CHECK:STDOUT: %.loc9_1.1: %u2 = value_of_initializer %int.convert_checked.loc9 [concrete = constants.%int_3.975] diff --git a/toolchain/check/testdata/choice/generic.carbon b/toolchain/check/testdata/choice/generic.carbon index 6562c28d8e4b..df30450addd2 100644 --- a/toolchain/check/testdata/choice/generic.carbon +++ b/toolchain/check/testdata/choice/generic.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/uint.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/choice/generic.carbon @@ -37,33 +39,33 @@ choice Always(T:! type) { // CHECK:STDOUT: %Always.decl: %Always.type = class_decl @Always [concrete = constants.%Always.generic] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc12_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_15.2 (constants.%T)] +// CHECK:STDOUT: %T.loc14_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Always(%T.loc12_15.1: type) { -// CHECK:STDOUT: %T.loc12_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc12_15.2 (constants.%T)] +// CHECK:STDOUT: generic class @Always(%T.loc14_15.1: type) { +// CHECK:STDOUT: %T.loc14_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_15.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Always: type = class_type @Always, @Always(%T.loc12_15.2) [symbolic = %Always (constants.%Always)] +// CHECK:STDOUT: %Always: type = class_type @Always, @Always(%T.loc14_15.2) [symbolic = %Always (constants.%Always)] // CHECK:STDOUT: %require_complete: = require_complete_type %Always [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: %Always.val: @Always.%Always (%Always) = struct_value (constants.%empty_tuple) [symbolic = %Always.val (constants.%Always.val)] // CHECK:STDOUT: // CHECK:STDOUT: class { // CHECK:STDOUT: %complete_type: = complete_type_witness constants.%struct_type.discriminant [concrete = constants.%complete_type] -// CHECK:STDOUT: %.loc14_1.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc16_1.1: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_1.2: %empty_tuple.type = converted %.loc14_1.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_1.3: %struct_type.discriminant = struct_literal (%.loc14_1.2) -// CHECK:STDOUT: %.loc14_1.4: ref @Always.%Always (%Always) = temporary_storage -// CHECK:STDOUT: %.loc14_1.5: ref %empty_tuple.type = class_element_access %.loc14_1.4, element0 -// CHECK:STDOUT: %.loc14_1.6: init %empty_tuple.type = tuple_init () to %.loc14_1.5 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_1.7: init %empty_tuple.type = converted %.loc14_1.2, %.loc14_1.6 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_1.8: init @Always.%Always (%Always) = class_init (%.loc14_1.7), %.loc14_1.4 [symbolic = %Always.val (constants.%Always.val)] -// CHECK:STDOUT: %.loc14_1.9: ref @Always.%Always (%Always) = temporary %.loc14_1.4, %.loc14_1.8 -// CHECK:STDOUT: %.loc14_1.10: ref @Always.%Always (%Always) = converted %.loc14_1.3, %.loc14_1.9 -// CHECK:STDOUT: %.loc14_1.11: @Always.%Always (%Always) = bind_value %.loc14_1.10 -// CHECK:STDOUT: %Sunny: @Always.%Always (%Always) = bind_name Sunny, %.loc14_1.11 +// CHECK:STDOUT: %.loc16_1.2: %empty_tuple.type = converted %.loc16_1.1, %empty_tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_1.3: %struct_type.discriminant = struct_literal (%.loc16_1.2) +// CHECK:STDOUT: %.loc16_1.4: ref @Always.%Always (%Always) = temporary_storage +// CHECK:STDOUT: %.loc16_1.5: ref %empty_tuple.type = class_element_access %.loc16_1.4, element0 +// CHECK:STDOUT: %.loc16_1.6: init %empty_tuple.type = tuple_init () to %.loc16_1.5 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_1.7: init %empty_tuple.type = converted %.loc16_1.2, %.loc16_1.6 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc16_1.8: init @Always.%Always (%Always) = class_init (%.loc16_1.7), %.loc16_1.4 [symbolic = %Always.val (constants.%Always.val)] +// CHECK:STDOUT: %.loc16_1.9: ref @Always.%Always (%Always) = temporary %.loc16_1.4, %.loc16_1.8 +// CHECK:STDOUT: %.loc16_1.10: ref @Always.%Always (%Always) = converted %.loc16_1.3, %.loc16_1.9 +// CHECK:STDOUT: %.loc16_1.11: @Always.%Always (%Always) = bind_value %.loc16_1.10 +// CHECK:STDOUT: %Sunny: @Always.%Always (%Always) = bind_name Sunny, %.loc16_1.11 // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -73,6 +75,6 @@ choice Always(T:! type) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Always(constants.%T) { -// CHECK:STDOUT: %T.loc12_15.2 => constants.%T +// CHECK:STDOUT: %T.loc14_15.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/choice/params.carbon b/toolchain/check/testdata/choice/params.carbon index f2655dadc198..d445e2fcd055 100644 --- a/toolchain/check/testdata/choice/params.carbon +++ b/toolchain/check/testdata/choice/params.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/uint.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/choice/params.carbon diff --git a/toolchain/check/testdata/class/base.carbon b/toolchain/check/testdata/class/base.carbon index e05fcc1ed6b8..a98ef8292273 100644 --- a/toolchain/check/testdata/class/base.carbon +++ b/toolchain/check/testdata/class/base.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -75,16 +76,16 @@ class Derived { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ac3: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.1da: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: %Base.val: %Base = struct_value (%int_4.940) [concrete] @@ -106,9 +107,9 @@ class Derived { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -190,7 +191,7 @@ class Derived { // CHECK:STDOUT: %.loc14_35.1: %struct_type.base.d.a20 = struct_literal (%.loc14_26.1, %int_7) // CHECK:STDOUT: %impl.elem0.loc14_26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc14_26.1: = bound_method %int_4, %impl.elem0.loc14_26 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc14_26: = specific_function %impl.elem0.loc14_26, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc14_26: = specific_function %impl.elem0.loc14_26, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_26.2: = bound_method %int_4, %specific_fn.loc14_26 [concrete = constants.%bound_method.1da] // CHECK:STDOUT: %int.convert_checked.loc14_26: init %i32 = call %bound_method.loc14_26.2(%int_4) [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc14_26.2: init %i32 = converted %int_4, %int.convert_checked.loc14_26 [concrete = constants.%int_4.940] @@ -201,7 +202,7 @@ class Derived { // CHECK:STDOUT: %.loc14_35.3: init %Base = converted %.loc14_26.1, %.loc14_26.5 [concrete = constants.%Base.val] // CHECK:STDOUT: %impl.elem0.loc14_35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc14_35.1: = bound_method %int_7, %impl.elem0.loc14_35 [concrete = constants.%Convert.bound.208] -// CHECK:STDOUT: %specific_fn.loc14_35: = specific_function %impl.elem0.loc14_35, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc14_35: = specific_function %impl.elem0.loc14_35, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc14_35.2: = bound_method %int_7, %specific_fn.loc14_35 [concrete = constants.%bound_method.3bd] // CHECK:STDOUT: %int.convert_checked.loc14_35: init %i32 = call %bound_method.loc14_35.2(%int_7) [concrete = constants.%int_7.0b1] // CHECK:STDOUT: %.loc14_35.4: init %i32 = converted %int_7, %int.convert_checked.loc14_35 [concrete = constants.%int_7.0b1] @@ -257,7 +258,7 @@ class Derived { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/base_method.carbon b/toolchain/check/testdata/class/base_method.carbon index c29fe15083e3..54a15e103471 100644 --- a/toolchain/check/testdata/class/base_method.carbon +++ b/toolchain/check/testdata/class/base_method.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -51,16 +52,16 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Derived: type = class_type @Derived [concrete] @@ -80,9 +81,9 @@ fn Call(p: Derived*) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -98,14 +99,14 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc20_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc21_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc20: %ptr.11f = value_param call_param0 -// CHECK:STDOUT: %.loc20_26: type = splice_block %ptr.loc20 [concrete = constants.%ptr.11f] { -// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, constants.%Base [concrete = constants.%Base] -// CHECK:STDOUT: %ptr.loc20: type = ptr_type %Self.ref.loc20 [concrete = constants.%ptr.11f] +// CHECK:STDOUT: %self.param.loc21: %ptr.11f = value_param call_param0 +// CHECK:STDOUT: %.loc21_26: type = splice_block %ptr.loc21 [concrete = constants.%ptr.11f] { +// CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Base [concrete = constants.%Base] +// CHECK:STDOUT: %ptr.loc21: type = ptr_type %Self.ref.loc21 [concrete = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20: %ptr.11f = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %self.loc21: %ptr.11f = bind_name self, %self.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] { @@ -113,7 +114,7 @@ fn Call(p: Derived*) { // CHECK:STDOUT: %p.param_patt: %pattern_type.605 = value_param_pattern %p.patt, call_param0 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %p.param: %ptr.404 = value_param call_param0 -// CHECK:STDOUT: %.loc28: type = splice_block %ptr [concrete = constants.%ptr.404] { +// CHECK:STDOUT: %.loc29: type = splice_block %ptr [concrete = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr: type = ptr_type %Derived.ref [concrete = constants.%ptr.404] // CHECK:STDOUT: } @@ -124,18 +125,18 @@ fn Call(p: Derived*) { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Base.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc20_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc21_11: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc17: %ptr.11f = value_param call_param0 -// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17 [concrete = constants.%ptr.11f] { -// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Base [concrete = constants.%Base] -// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Self.ref.loc17 [concrete = constants.%ptr.11f] +// CHECK:STDOUT: %self.param.loc18: %ptr.11f = value_param call_param0 +// CHECK:STDOUT: %.loc18: type = splice_block %ptr.loc18 [concrete = constants.%ptr.11f] { +// CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%Base [concrete = constants.%Base] +// CHECK:STDOUT: %ptr.loc18: type = ptr_type %Self.ref.loc18 [concrete = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc17: %ptr.11f = bind_name self, %self.param.loc17 +// CHECK:STDOUT: %self.loc18: %ptr.11f = bind_name self, %self.param.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] @@ -143,13 +144,13 @@ fn Call(p: Derived*) { // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: .a = %.loc16 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %.loc25: %Derived.elem = base_decl %Base.ref, element0 [concrete] +// CHECK:STDOUT: %.loc26: %Derived.elem = base_decl %Base.ref, element0 [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete = constants.%struct_type.base.b1e] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.15c] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -157,40 +158,40 @@ fn Call(p: Derived*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = -// CHECK:STDOUT: .base = %.loc25 +// CHECK:STDOUT: .base = %.loc26 // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc20: %ptr.11f) { +// CHECK:STDOUT: fn @F(%self.param.loc21: %ptr.11f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc20 -// CHECK:STDOUT: %.loc21_4: ref %Base = deref %self.ref -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc15 [concrete = @Base.%.loc15] -// CHECK:STDOUT: %.loc21_10: ref %i32 = class_element_access %.loc21_4, element0 +// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc21 +// CHECK:STDOUT: %.loc22_4: ref %Base = deref %self.ref +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %.loc22_10: ref %i32 = class_element_access %.loc22_4, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc21_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc21_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %.loc21_10, %.loc21_13 +// CHECK:STDOUT: %bound_method.loc22_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc22_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc22_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %.loc22_10, %.loc22_13 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%p.param: %ptr.404) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p -// CHECK:STDOUT: %.loc29_4.1: ref %Derived = deref %p.ref +// CHECK:STDOUT: %.loc30_4.1: ref %Derived = deref %p.ref // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Base.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc29_4.1, %F.ref -// CHECK:STDOUT: %addr.loc29_4.1: %ptr.404 = addr_of %.loc29_4.1 -// CHECK:STDOUT: %.loc29_4.2: ref %Derived = deref %addr.loc29_4.1 -// CHECK:STDOUT: %.loc29_4.3: ref %Base = class_element_access %.loc29_4.2, element0 -// CHECK:STDOUT: %addr.loc29_4.2: %ptr.11f = addr_of %.loc29_4.3 -// CHECK:STDOUT: %.loc29_4.4: %ptr.11f = converted %addr.loc29_4.1, %addr.loc29_4.2 -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc29_4.4) +// CHECK:STDOUT: %F.bound: = bound_method %.loc30_4.1, %F.ref +// CHECK:STDOUT: %addr.loc30_4.1: %ptr.404 = addr_of %.loc30_4.1 +// CHECK:STDOUT: %.loc30_4.2: ref %Derived = deref %addr.loc30_4.1 +// CHECK:STDOUT: %.loc30_4.3: ref %Base = class_element_access %.loc30_4.2, element0 +// CHECK:STDOUT: %addr.loc30_4.2: %ptr.11f = addr_of %.loc30_4.3 +// CHECK:STDOUT: %.loc30_4.4: %ptr.11f = converted %addr.loc30_4.1, %addr.loc30_4.2 +// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound(%.loc30_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/base_method_shadow.carbon b/toolchain/check/testdata/class/base_method_shadow.carbon index fdfbd20c9cc0..438c2b584555 100644 --- a/toolchain/check/testdata/class/base_method_shadow.carbon +++ b/toolchain/check/testdata/class/base_method_shadow.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -104,27 +105,27 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %d.param_patt: %pattern_type.a94 = value_param_pattern %d.patt, call_param3 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %a.param: %ptr.6db = value_param call_param0 -// CHECK:STDOUT: %.loc32_13: type = splice_block %ptr.loc32_13 [concrete = constants.%ptr.6db] { +// CHECK:STDOUT: %.loc33_13: type = splice_block %ptr.loc33_13 [concrete = constants.%ptr.6db] { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %ptr.loc32_13: type = ptr_type %A.ref [concrete = constants.%ptr.6db] +// CHECK:STDOUT: %ptr.loc33_13: type = ptr_type %A.ref [concrete = constants.%ptr.6db] // CHECK:STDOUT: } // CHECK:STDOUT: %a: %ptr.6db = bind_name a, %a.param // CHECK:STDOUT: %b.param: %ptr.e79 = value_param call_param1 -// CHECK:STDOUT: %.loc32_20: type = splice_block %ptr.loc32_20 [concrete = constants.%ptr.e79] { +// CHECK:STDOUT: %.loc33_20: type = splice_block %ptr.loc33_20 [concrete = constants.%ptr.e79] { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %ptr.loc32_20: type = ptr_type %B.ref [concrete = constants.%ptr.e79] +// CHECK:STDOUT: %ptr.loc33_20: type = ptr_type %B.ref [concrete = constants.%ptr.e79] // CHECK:STDOUT: } // CHECK:STDOUT: %b: %ptr.e79 = bind_name b, %b.param // CHECK:STDOUT: %c.param: %ptr.019 = value_param call_param2 -// CHECK:STDOUT: %.loc32_27: type = splice_block %ptr.loc32_27 [concrete = constants.%ptr.019] { +// CHECK:STDOUT: %.loc33_27: type = splice_block %ptr.loc33_27 [concrete = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %ptr.loc32_27: type = ptr_type %C.ref [concrete = constants.%ptr.019] +// CHECK:STDOUT: %ptr.loc33_27: type = ptr_type %C.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %ptr.019 = bind_name c, %c.param // CHECK:STDOUT: %d.param: %ptr.19c = value_param call_param3 -// CHECK:STDOUT: %.loc32_34: type = splice_block %ptr.loc32_34 [concrete = constants.%ptr.19c] { +// CHECK:STDOUT: %.loc33_34: type = splice_block %ptr.loc33_34 [concrete = constants.%ptr.19c] { // CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D] -// CHECK:STDOUT: %ptr.loc32_34: type = ptr_type %D.ref [concrete = constants.%ptr.19c] +// CHECK:STDOUT: %ptr.loc33_34: type = ptr_type %D.ref [concrete = constants.%ptr.19c] // CHECK:STDOUT: } // CHECK:STDOUT: %d: %ptr.19c = bind_name d, %d.param // CHECK:STDOUT: } @@ -134,10 +135,10 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.1 [concrete = constants.%F.485] { // CHECK:STDOUT: %self.patt: %pattern_type.5f8 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.5f8 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc15_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc16_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %ptr.6db = value_param call_param0 -// CHECK:STDOUT: %.loc15_23: type = splice_block %ptr [concrete = constants.%ptr.6db] { +// CHECK:STDOUT: %.loc16_23: type = splice_block %ptr [concrete = constants.%ptr.6db] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [concrete = constants.%A] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.6db] // CHECK:STDOUT: } @@ -154,14 +155,14 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc19: %B.elem = base_decl %A.ref, element0 [concrete] +// CHECK:STDOUT: %.loc20: %B.elem = base_decl %A.ref, element0 [concrete] // CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.2 [concrete = constants.%F.92a] { // CHECK:STDOUT: %self.patt: %pattern_type.960 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.960 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc20_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc21_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %ptr.e79 = value_param call_param0 -// CHECK:STDOUT: %.loc20_23: type = splice_block %ptr [concrete = constants.%ptr.e79] { +// CHECK:STDOUT: %.loc21_23: type = splice_block %ptr [concrete = constants.%ptr.e79] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.e79] // CHECK:STDOUT: } @@ -174,21 +175,21 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = -// CHECK:STDOUT: .base = %.loc19 +// CHECK:STDOUT: .base = %.loc20 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc24: %C.elem = base_decl %B.ref, element0 [concrete] +// CHECK:STDOUT: %.loc25: %C.elem = base_decl %B.ref, element0 [concrete] // CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.3 [concrete = constants.%F.437] { // CHECK:STDOUT: %self.patt: %pattern_type.44a = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.44a = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc25_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc26_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %ptr.019 = value_param call_param0 -// CHECK:STDOUT: %.loc25_23: type = splice_block %ptr [concrete = constants.%ptr.019] { +// CHECK:STDOUT: %.loc26_23: type = splice_block %ptr [concrete = constants.%ptr.019] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } @@ -201,14 +202,14 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc24 +// CHECK:STDOUT: .base = %.loc25 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @D { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc29: %D.elem = base_decl %B.ref, element0 [concrete] +// CHECK:STDOUT: %.loc30: %D.elem = base_decl %B.ref, element0 [concrete] // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base.0ff] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -216,7 +217,7 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc29 +// CHECK:STDOUT: .base = %.loc30 // CHECK:STDOUT: .F = // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } @@ -230,33 +231,33 @@ fn Call(a: A*, b: B*, c: C*, d: D*) { // CHECK:STDOUT: fn @Call(%a.param: %ptr.6db, %b.param: %ptr.e79, %c.param: %ptr.019, %d.param: %ptr.19c) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %a.ref: %ptr.6db = name_ref a, %a -// CHECK:STDOUT: %.loc33: ref %A = deref %a.ref -// CHECK:STDOUT: %F.ref.loc33: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] -// CHECK:STDOUT: %F.bound.loc33: = bound_method %.loc33, %F.ref.loc33 -// CHECK:STDOUT: %addr.loc33: %ptr.6db = addr_of %.loc33 -// CHECK:STDOUT: %F.call.loc33: init %empty_tuple.type = call %F.bound.loc33(%addr.loc33) -// CHECK:STDOUT: %b.ref: %ptr.e79 = name_ref b, %b -// CHECK:STDOUT: %.loc34: ref %B = deref %b.ref -// CHECK:STDOUT: %F.ref.loc34: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] +// CHECK:STDOUT: %.loc34: ref %A = deref %a.ref +// CHECK:STDOUT: %F.ref.loc34: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] // CHECK:STDOUT: %F.bound.loc34: = bound_method %.loc34, %F.ref.loc34 -// CHECK:STDOUT: %addr.loc34: %ptr.e79 = addr_of %.loc34 +// CHECK:STDOUT: %addr.loc34: %ptr.6db = addr_of %.loc34 // CHECK:STDOUT: %F.call.loc34: init %empty_tuple.type = call %F.bound.loc34(%addr.loc34) -// CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c -// CHECK:STDOUT: %.loc35: ref %C = deref %c.ref -// CHECK:STDOUT: %F.ref.loc35: %F.type.c29 = name_ref F, @C.%F.decl [concrete = constants.%F.437] +// CHECK:STDOUT: %b.ref: %ptr.e79 = name_ref b, %b +// CHECK:STDOUT: %.loc35: ref %B = deref %b.ref +// CHECK:STDOUT: %F.ref.loc35: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] // CHECK:STDOUT: %F.bound.loc35: = bound_method %.loc35, %F.ref.loc35 -// CHECK:STDOUT: %addr.loc35: %ptr.019 = addr_of %.loc35 +// CHECK:STDOUT: %addr.loc35: %ptr.e79 = addr_of %.loc35 // CHECK:STDOUT: %F.call.loc35: init %empty_tuple.type = call %F.bound.loc35(%addr.loc35) +// CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c +// CHECK:STDOUT: %.loc36: ref %C = deref %c.ref +// CHECK:STDOUT: %F.ref.loc36: %F.type.c29 = name_ref F, @C.%F.decl [concrete = constants.%F.437] +// CHECK:STDOUT: %F.bound.loc36: = bound_method %.loc36, %F.ref.loc36 +// CHECK:STDOUT: %addr.loc36: %ptr.019 = addr_of %.loc36 +// CHECK:STDOUT: %F.call.loc36: init %empty_tuple.type = call %F.bound.loc36(%addr.loc36) // CHECK:STDOUT: %d.ref: %ptr.19c = name_ref d, %d -// CHECK:STDOUT: %.loc36_4.1: ref %D = deref %d.ref -// CHECK:STDOUT: %F.ref.loc36: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] -// CHECK:STDOUT: %F.bound.loc36: = bound_method %.loc36_4.1, %F.ref.loc36 -// CHECK:STDOUT: %addr.loc36_4.1: %ptr.19c = addr_of %.loc36_4.1 -// CHECK:STDOUT: %.loc36_4.2: ref %D = deref %addr.loc36_4.1 -// CHECK:STDOUT: %.loc36_4.3: ref %B = class_element_access %.loc36_4.2, element0 -// CHECK:STDOUT: %addr.loc36_4.2: %ptr.e79 = addr_of %.loc36_4.3 -// CHECK:STDOUT: %.loc36_4.4: %ptr.e79 = converted %addr.loc36_4.1, %addr.loc36_4.2 -// CHECK:STDOUT: %F.call.loc36: init %empty_tuple.type = call %F.bound.loc36(%.loc36_4.4) +// CHECK:STDOUT: %.loc37_4.1: ref %D = deref %d.ref +// CHECK:STDOUT: %F.ref.loc37: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a] +// CHECK:STDOUT: %F.bound.loc37: = bound_method %.loc37_4.1, %F.ref.loc37 +// CHECK:STDOUT: %addr.loc37_4.1: %ptr.19c = addr_of %.loc37_4.1 +// CHECK:STDOUT: %.loc37_4.2: ref %D = deref %addr.loc37_4.1 +// CHECK:STDOUT: %.loc37_4.3: ref %B = class_element_access %.loc37_4.2, element0 +// CHECK:STDOUT: %addr.loc37_4.2: %ptr.e79 = addr_of %.loc37_4.3 +// CHECK:STDOUT: %.loc37_4.4: %ptr.e79 = converted %addr.loc37_4.1, %addr.loc37_4.2 +// CHECK:STDOUT: %F.call.loc37: init %empty_tuple.type = call %F.bound.loc37(%.loc37_4.4) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 7228c6ab63bd..18a1a46644d6 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -52,16 +53,16 @@ fn Run() -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_4.0c1, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_4.0c1, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_4.940: %i32 = int_value 4 [concrete] // CHECK:STDOUT: } @@ -73,9 +74,9 @@ fn Run() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -93,16 +94,16 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc24_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %n.param.loc24: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc24: type = splice_block %i32.loc24_15 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc24_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc25_23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25_23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %n.param.loc25: %i32 = value_param call_param0 +// CHECK:STDOUT: %.loc25: type = splice_block %i32.loc25_15 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc25_15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25_15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %n.loc24: %i32 = bind_name n, %n.param.loc24 -// CHECK:STDOUT: %return.param.loc24: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc24: ref %i32 = return_slot %return.param.loc24 +// CHECK:STDOUT: %n.loc25: %i32 = bind_name n, %n.param.loc25 +// CHECK:STDOUT: %return.param.loc25: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc25: ref %i32 = return_slot %return.param.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: %Run.decl: %Run.type = fn_decl @Run [concrete = constants.%Run] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -124,12 +125,12 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc15_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc16_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc15: type = splice_block %i32.loc15_11 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc15_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc16: type = splice_block %i32.loc16_11 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc16_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 @@ -141,20 +142,20 @@ fn Run() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc19_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc19_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %n.param.loc19: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %i32.loc19_11 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc19_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc19_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc20_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc20_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %n.param.loc20: %i32 = value_param call_param0 +// CHECK:STDOUT: %.loc20: type = splice_block %i32.loc20_11 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc20_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc20_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %n.loc19: %i32 = bind_name n, %n.param.loc19 -// CHECK:STDOUT: %return.param.loc19: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc19: ref %i32 = return_slot %return.param.loc19 +// CHECK:STDOUT: %n.loc20: %i32 = bind_name n, %n.param.loc20 +// CHECK:STDOUT: %return.param.loc20: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc20: ref %i32 = return_slot %return.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc21: %Class.elem = field_decl k, element0 [concrete] +// CHECK:STDOUT: %.loc22: %Class.elem = field_decl k, element0 [concrete] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %i32} [concrete = constants.%struct_type.k] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [concrete = constants.%complete_type.954] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -163,7 +164,7 @@ fn Run() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .k = %.loc21 +// CHECK:STDOUT: .k = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%n.param: %i32) -> %i32 { @@ -172,9 +173,9 @@ fn Run() -> i32 { // CHECK:STDOUT: return %n.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%n.param.loc24: %i32) -> %i32 { +// CHECK:STDOUT: fn @G(%n.param.loc25: %i32) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n.loc24 +// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n.loc25 // CHECK:STDOUT: return %n.ref // CHECK:STDOUT: } // CHECK:STDOUT: @@ -184,15 +185,15 @@ fn Run() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc29_18.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc29_18.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc29_18.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc29_18.2: %i32 = converted %int_4, %.loc29_18.1 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc29_18.2) -// CHECK:STDOUT: %.loc29_20.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc29_20.2: %i32 = converted %F.call, %.loc29_20.1 -// CHECK:STDOUT: return %.loc29_20.2 +// CHECK:STDOUT: %bound_method.loc30_18.1: = bound_method %int_4, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc30_18.2: = bound_method %int_4, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc30_18.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc30_18.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc30_18.2: %i32 = converted %int_4, %.loc30_18.1 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %F.call: init %i32 = call %F.ref(%.loc30_18.2) +// CHECK:STDOUT: %.loc30_20.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc30_20.2: %i32 = converted %F.call, %.loc30_20.1 +// CHECK:STDOUT: return %.loc30_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/comp_time_field.carbon b/toolchain/check/testdata/class/comp_time_field.carbon index 3aa67e388527..abc2425bda4d 100644 --- a/toolchain/check/testdata/class/comp_time_field.carbon +++ b/toolchain/check/testdata/class/comp_time_field.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/complete_in_member_fn.carbon b/toolchain/check/testdata/class/complete_in_member_fn.carbon index 53e69d65feec..51eec364d559 100644 --- a/toolchain/check/testdata/class/complete_in_member_fn.carbon +++ b/toolchain/check/testdata/class/complete_in_member_fn.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -40,7 +41,7 @@ class C { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -69,7 +70,7 @@ class C { // CHECK:STDOUT: } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17: %C.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %.loc18: %C.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -78,15 +79,15 @@ class C { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .C = // CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .a = %.loc17 +// CHECK:STDOUT: .a = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%c.param: %C) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %C = name_ref c, %c -// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%.loc17 [concrete = @C.%.loc17] -// CHECK:STDOUT: %.loc15_31.1: ref %i32 = class_element_access %c.ref, element0 -// CHECK:STDOUT: %.loc15_31.2: %i32 = bind_value %.loc15_31.1 -// CHECK:STDOUT: return %.loc15_31.2 +// CHECK:STDOUT: %a.ref: %C.elem = name_ref a, @C.%.loc18 [concrete = @C.%.loc18] +// CHECK:STDOUT: %.loc16_31.1: ref %i32 = class_element_access %c.ref, element0 +// CHECK:STDOUT: %.loc16_31.2: %i32 = bind_value %.loc16_31.1 +// CHECK:STDOUT: return %.loc16_31.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/compound_field.carbon b/toolchain/check/testdata/class/compound_field.carbon index 7559c05b82a4..fab2dda4d941 100644 --- a/toolchain/check/testdata/class/compound_field.carbon +++ b/toolchain/check/testdata/class/compound_field.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -78,7 +79,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -103,7 +104,7 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %d.param: %Derived = value_param call_param0 -// CHECK:STDOUT: %Derived.ref.loc27: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %Derived.ref.loc28: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %d: %Derived = bind_name d, %d.param // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param @@ -130,11 +131,11 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %ptr.loc35_45: type = ptr_type %i32 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %ptr.loc36_45: type = ptr_type %i32 [concrete = constants.%ptr.235] // CHECK:STDOUT: %p.param: %ptr.404 = value_param call_param0 -// CHECK:STDOUT: %.loc35: type = splice_block %ptr.loc35_36 [concrete = constants.%ptr.404] { -// CHECK:STDOUT: %Derived.ref.loc35: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %ptr.loc35_36: type = ptr_type %Derived.ref.loc35 [concrete = constants.%ptr.404] +// CHECK:STDOUT: %.loc36: type = splice_block %ptr.loc36_36 [concrete = constants.%ptr.404] { +// CHECK:STDOUT: %Derived.ref.loc36: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %ptr.loc36_36: type = ptr_type %Derived.ref.loc36 [concrete = constants.%ptr.404] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr.235 = out_param call_param1 @@ -148,11 +149,11 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %ptr.loc39_42: type = ptr_type %i32 [concrete = constants.%ptr.235] +// CHECK:STDOUT: %ptr.loc40_42: type = ptr_type %i32 [concrete = constants.%ptr.235] // CHECK:STDOUT: %p.param: %ptr.404 = value_param call_param0 -// CHECK:STDOUT: %.loc39: type = splice_block %ptr.loc39_33 [concrete = constants.%ptr.404] { +// CHECK:STDOUT: %.loc40: type = splice_block %ptr.loc40_33 [concrete = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %ptr.loc39_33: type = ptr_type %Derived.ref [concrete = constants.%ptr.404] +// CHECK:STDOUT: %ptr.loc40_33: type = ptr_type %Derived.ref [concrete = constants.%ptr.404] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.404 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr.235 = out_param call_param1 @@ -161,35 +162,35 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Base.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17: %Base.elem = field_decl c, element2 [concrete] +// CHECK:STDOUT: %.loc17: %Base.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %int_32.loc18: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc18: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc18: %Base.elem = field_decl c, element2 [concrete] // CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: %i32, .b: %i32, .c: %i32} [concrete = constants.%struct_type.a.b.c] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b.c [concrete = constants.%complete_type.ebc] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: .b = %.loc16 -// CHECK:STDOUT: .c = %.loc17 +// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .b = %.loc17 +// CHECK:STDOUT: .c = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %.loc21: %Derived.elem.69e = base_decl %Base.ref, element0 [concrete] -// CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc23: %Derived.elem.344 = field_decl d, element1 [concrete] +// CHECK:STDOUT: %.loc22: %Derived.elem.69e = base_decl %Base.ref, element0 [concrete] // CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc24: %Derived.elem.344 = field_decl e, element2 [concrete] +// CHECK:STDOUT: %.loc24: %Derived.elem.344 = field_decl d, element1 [concrete] +// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25: %Derived.elem.344 = field_decl e, element2 [concrete] // CHECK:STDOUT: %struct_type.base.d.e: type = struct_type {.base: %Base, .d: %i32, .e: %i32} [concrete = constants.%struct_type.base.d.e.6a7] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.d.e [concrete = constants.%complete_type.401] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -197,42 +198,42 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = -// CHECK:STDOUT: .base = %.loc21 -// CHECK:STDOUT: .d = %.loc23 -// CHECK:STDOUT: .e = %.loc24 +// CHECK:STDOUT: .base = %.loc22 +// CHECK:STDOUT: .d = %.loc24 +// CHECK:STDOUT: .e = %.loc25 // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessDerived(%d.param: %Derived) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %d.ref.loc28_10: %Derived = name_ref d, %d -// CHECK:STDOUT: %Derived.ref.loc28: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %d.ref.loc28_20: %Derived.elem.344 = name_ref d, @Derived.%.loc23 [concrete = @Derived.%.loc23] -// CHECK:STDOUT: %.loc28_11.1: ref %i32 = class_element_access %d.ref.loc28_10, element1 -// CHECK:STDOUT: %.loc28_11.2: %i32 = bind_value %.loc28_11.1 -// CHECK:STDOUT: return %.loc28_11.2 +// CHECK:STDOUT: %d.ref.loc29_10: %Derived = name_ref d, %d +// CHECK:STDOUT: %Derived.ref.loc29: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %d.ref.loc29_20: %Derived.elem.344 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24] +// CHECK:STDOUT: %.loc29_11.1: ref %i32 = class_element_access %d.ref.loc29_10, element1 +// CHECK:STDOUT: %.loc29_11.2: %i32 = bind_value %.loc29_11.1 +// CHECK:STDOUT: return %.loc29_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessBase(%d.param: %Derived) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %d.ref: %Derived = name_ref d, %d // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc16 [concrete = @Base.%.loc16] -// CHECK:STDOUT: %.loc32_11.1: ref %Base = class_element_access %d.ref, element0 -// CHECK:STDOUT: %.loc32_11.2: ref %Base = converted %d.ref, %.loc32_11.1 -// CHECK:STDOUT: %.loc32_11.3: ref %i32 = class_element_access %.loc32_11.2, element1 -// CHECK:STDOUT: %.loc32_11.4: %i32 = bind_value %.loc32_11.3 -// CHECK:STDOUT: return %.loc32_11.4 +// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17] +// CHECK:STDOUT: %.loc33_11.1: ref %Base = class_element_access %d.ref, element0 +// CHECK:STDOUT: %.loc33_11.2: ref %Base = converted %d.ref, %.loc33_11.1 +// CHECK:STDOUT: %.loc33_11.3: ref %i32 = class_element_access %.loc33_11.2, element1 +// CHECK:STDOUT: %.loc33_11.4: %i32 = bind_value %.loc33_11.3 +// CHECK:STDOUT: return %.loc33_11.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @AccessDerivedIndirect(%p.param: %ptr.404) -> %ptr.235 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p -// CHECK:STDOUT: %Derived.ref.loc36: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] -// CHECK:STDOUT: %d.ref: %Derived.elem.344 = name_ref d, @Derived.%.loc23 [concrete = @Derived.%.loc23] -// CHECK:STDOUT: %.loc36_12.1: ref %Derived = deref %p.ref -// CHECK:STDOUT: %.loc36_12.2: ref %i32 = class_element_access %.loc36_12.1, element1 -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc36_12.2 +// CHECK:STDOUT: %Derived.ref.loc37: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] +// CHECK:STDOUT: %d.ref: %Derived.elem.344 = name_ref d, @Derived.%.loc24 [concrete = @Derived.%.loc24] +// CHECK:STDOUT: %.loc37_12.1: ref %Derived = deref %p.ref +// CHECK:STDOUT: %.loc37_12.2: ref %i32 = class_element_access %.loc37_12.1, element1 +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc37_12.2 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: @@ -240,12 +241,12 @@ fn AccessBaseIndirect(p: Derived*) -> i32* { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.404 = name_ref p, %p // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc16 [concrete = @Base.%.loc16] -// CHECK:STDOUT: %.loc40_12.1: ref %Derived = deref %p.ref -// CHECK:STDOUT: %.loc40_12.2: ref %Base = class_element_access %.loc40_12.1, element0 -// CHECK:STDOUT: %.loc40_12.3: ref %Base = converted %.loc40_12.1, %.loc40_12.2 -// CHECK:STDOUT: %.loc40_12.4: ref %i32 = class_element_access %.loc40_12.3, element1 -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc40_12.4 +// CHECK:STDOUT: %b.ref: %Base.elem = name_ref b, @Base.%.loc17 [concrete = @Base.%.loc17] +// CHECK:STDOUT: %.loc41_12.1: ref %Derived = deref %p.ref +// CHECK:STDOUT: %.loc41_12.2: ref %Base = class_element_access %.loc41_12.1, element0 +// CHECK:STDOUT: %.loc41_12.3: ref %Base = converted %.loc41_12.1, %.loc41_12.2 +// CHECK:STDOUT: %.loc41_12.4: ref %i32 = class_element_access %.loc41_12.3, element1 +// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc41_12.4 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/cross_package_import.carbon b/toolchain/check/testdata/class/cross_package_import.carbon index c9983f2d517b..f019b968de5b 100644 --- a/toolchain/check/testdata/class/cross_package_import.carbon +++ b/toolchain/check/testdata/class/cross_package_import.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/derived_to_base.carbon b/toolchain/check/testdata/class/derived_to_base.carbon index 3c99dee376f7..adb070d1325d 100644 --- a/toolchain/check/testdata/class/derived_to_base.carbon +++ b/toolchain/check/testdata/class/derived_to_base.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -92,16 +93,16 @@ fn ConvertInit() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.5d2) [concrete] @@ -122,9 +123,9 @@ fn ConvertInit() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -152,11 +153,11 @@ fn ConvertInit() { // CHECK:STDOUT: %return.param_patt: %pattern_type.960 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %ptr.loc28_27: type = ptr_type %B.ref [concrete = constants.%ptr.e79] +// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %B.ref [concrete = constants.%ptr.e79] // CHECK:STDOUT: %p.param: %ptr.019 = value_param call_param0 -// CHECK:STDOUT: %.loc28_20: type = splice_block %ptr.loc28_20 [concrete = constants.%ptr.019] { +// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [concrete = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %ptr.loc28_20: type = ptr_type %C.ref [concrete = constants.%ptr.019] +// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %C.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr.e79 = out_param call_param1 @@ -169,11 +170,11 @@ fn ConvertInit() { // CHECK:STDOUT: %return.param_patt: %pattern_type.5f8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %A.ref [concrete = constants.%ptr.6db] +// CHECK:STDOUT: %ptr.loc30_27: type = ptr_type %A.ref [concrete = constants.%ptr.6db] // CHECK:STDOUT: %p.param: %ptr.e79 = value_param call_param0 -// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [concrete = constants.%ptr.e79] { +// CHECK:STDOUT: %.loc30_20: type = splice_block %ptr.loc30_20 [concrete = constants.%ptr.e79] { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %B.ref [concrete = constants.%ptr.e79] +// CHECK:STDOUT: %ptr.loc30_20: type = ptr_type %B.ref [concrete = constants.%ptr.e79] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.e79 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr.6db = out_param call_param1 @@ -186,11 +187,11 @@ fn ConvertInit() { // CHECK:STDOUT: %return.param_patt: %pattern_type.5f8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %ptr.loc30_27: type = ptr_type %A.ref [concrete = constants.%ptr.6db] +// CHECK:STDOUT: %ptr.loc31_27: type = ptr_type %A.ref [concrete = constants.%ptr.6db] // CHECK:STDOUT: %p.param: %ptr.019 = value_param call_param0 -// CHECK:STDOUT: %.loc30_20: type = splice_block %ptr.loc30_20 [concrete = constants.%ptr.019] { +// CHECK:STDOUT: %.loc31_20: type = splice_block %ptr.loc31_20 [concrete = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %ptr.loc30_20: type = ptr_type %C.ref [concrete = constants.%ptr.019] +// CHECK:STDOUT: %ptr.loc31_20: type = ptr_type %C.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.019 = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr.6db = out_param call_param1 @@ -210,12 +211,12 @@ fn ConvertInit() { // CHECK:STDOUT: %return.patt: %pattern_type.5f8 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.5f8 = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %A.ref.loc36: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %ptr.loc36_26: type = ptr_type %A.ref.loc36 [concrete = constants.%ptr.6db] +// CHECK:STDOUT: %A.ref.loc37: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %ptr.loc37_26: type = ptr_type %A.ref.loc37 [concrete = constants.%ptr.6db] // CHECK:STDOUT: %c.param: %ptr.019 = value_param call_param0 -// CHECK:STDOUT: %.loc36: type = splice_block %ptr.loc36_19 [concrete = constants.%ptr.019] { +// CHECK:STDOUT: %.loc37: type = splice_block %ptr.loc37_19 [concrete = constants.%ptr.019] { // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %ptr.loc36_19: type = ptr_type %C.ref [concrete = constants.%ptr.019] +// CHECK:STDOUT: %ptr.loc37_19: type = ptr_type %C.ref [concrete = constants.%ptr.019] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %ptr.019 = bind_name c, %c.param // CHECK:STDOUT: %return.param: ref %ptr.6db = out_param call_param1 @@ -227,22 +228,22 @@ fn ConvertInit() { // CHECK:STDOUT: class @A { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %A.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %.loc16: %A.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: .a = %.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @B { // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc19: %B.elem.e38 = base_decl %A.ref, element0 [concrete] +// CHECK:STDOUT: %.loc20: %B.elem.e38 = base_decl %A.ref, element0 [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: %B.elem.5c3 = field_decl b, element1 [concrete] +// CHECK:STDOUT: %.loc21: %B.elem.5c3 = field_decl b, element1 [concrete] // CHECK:STDOUT: %struct_type.base.b: type = struct_type {.base: %A, .b: %i32} [concrete = constants.%struct_type.base.b.b44] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b [concrete = constants.%complete_type.725] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -250,17 +251,17 @@ fn ConvertInit() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .A = -// CHECK:STDOUT: .base = %.loc19 -// CHECK:STDOUT: .b = %.loc20 +// CHECK:STDOUT: .base = %.loc20 +// CHECK:STDOUT: .b = %.loc21 // CHECK:STDOUT: extend %A.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @C { // CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc24: %C.elem.f0c = base_decl %B.ref, element0 [concrete] +// CHECK:STDOUT: %.loc25: %C.elem.f0c = base_decl %B.ref, element0 [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc25: %C.elem.646 = field_decl c, element1 [concrete] +// CHECK:STDOUT: %.loc26: %C.elem.646 = field_decl c, element1 [concrete] // CHECK:STDOUT: %struct_type.base.c: type = struct_type {.base: %B, .c: %i32} [concrete = constants.%struct_type.base.c.8e2] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.c [concrete = constants.%complete_type.58a] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -268,40 +269,40 @@ fn ConvertInit() { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc24 -// CHECK:STDOUT: .c = %.loc25 +// CHECK:STDOUT: .base = %.loc25 +// CHECK:STDOUT: .c = %.loc26 // CHECK:STDOUT: extend %B.ref // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertCToB(%p.param: %ptr.019) -> %ptr.e79 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p -// CHECK:STDOUT: %.loc28_39.1: ref %C = deref %p.ref -// CHECK:STDOUT: %.loc28_39.2: ref %B = class_element_access %.loc28_39.1, element0 -// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc28_39.2 -// CHECK:STDOUT: %.loc28_39.3: %ptr.e79 = converted %p.ref, %addr -// CHECK:STDOUT: return %.loc28_39.3 +// CHECK:STDOUT: %.loc29_39.1: ref %C = deref %p.ref +// CHECK:STDOUT: %.loc29_39.2: ref %B = class_element_access %.loc29_39.1, element0 +// CHECK:STDOUT: %addr: %ptr.e79 = addr_of %.loc29_39.2 +// CHECK:STDOUT: %.loc29_39.3: %ptr.e79 = converted %p.ref, %addr +// CHECK:STDOUT: return %.loc29_39.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertBToA(%p.param: %ptr.e79) -> %ptr.6db { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.e79 = name_ref p, %p -// CHECK:STDOUT: %.loc29_39.1: ref %B = deref %p.ref -// CHECK:STDOUT: %.loc29_39.2: ref %A = class_element_access %.loc29_39.1, element0 -// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc29_39.2 -// CHECK:STDOUT: %.loc29_39.3: %ptr.6db = converted %p.ref, %addr -// CHECK:STDOUT: return %.loc29_39.3 +// CHECK:STDOUT: %.loc30_39.1: ref %B = deref %p.ref +// CHECK:STDOUT: %.loc30_39.2: ref %A = class_element_access %.loc30_39.1, element0 +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc30_39.2 +// CHECK:STDOUT: %.loc30_39.3: %ptr.6db = converted %p.ref, %addr +// CHECK:STDOUT: return %.loc30_39.3 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertCToA(%p.param: %ptr.019) -> %ptr.6db { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.019 = name_ref p, %p -// CHECK:STDOUT: %.loc30_39.1: ref %C = deref %p.ref -// CHECK:STDOUT: %.loc30_39.2: ref %B = class_element_access %.loc30_39.1, element0 -// CHECK:STDOUT: %.loc30_39.3: ref %A = class_element_access %.loc30_39.2, element0 -// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc30_39.3 -// CHECK:STDOUT: %.loc30_39.4: %ptr.6db = converted %p.ref, %addr -// CHECK:STDOUT: return %.loc30_39.4 +// CHECK:STDOUT: %.loc31_39.1: ref %C = deref %p.ref +// CHECK:STDOUT: %.loc31_39.2: ref %B = class_element_access %.loc31_39.1, element0 +// CHECK:STDOUT: %.loc31_39.3: ref %A = class_element_access %.loc31_39.2, element0 +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc31_39.3 +// CHECK:STDOUT: %.loc31_39.4: %ptr.6db = converted %p.ref, %addr +// CHECK:STDOUT: return %.loc31_39.4 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertValue(%c.param: %C) { @@ -311,23 +312,23 @@ fn ConvertInit() { // CHECK:STDOUT: } // CHECK:STDOUT: %c.ref: %C = name_ref c, %c // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc33_14.1: ref %B = class_element_access %c.ref, element0 -// CHECK:STDOUT: %.loc33_14.2: ref %A = class_element_access %.loc33_14.1, element0 -// CHECK:STDOUT: %.loc33_14.3: ref %A = converted %c.ref, %.loc33_14.2 -// CHECK:STDOUT: %.loc33_14.4: %A = bind_value %.loc33_14.3 -// CHECK:STDOUT: %a: %A = bind_name a, %.loc33_14.4 +// CHECK:STDOUT: %.loc34_14.1: ref %B = class_element_access %c.ref, element0 +// CHECK:STDOUT: %.loc34_14.2: ref %A = class_element_access %.loc34_14.1, element0 +// CHECK:STDOUT: %.loc34_14.3: ref %A = converted %c.ref, %.loc34_14.2 +// CHECK:STDOUT: %.loc34_14.4: %A = bind_value %.loc34_14.3 +// CHECK:STDOUT: %a: %A = bind_name a, %.loc34_14.4 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @ConvertRef(%c.param: %ptr.019) -> %ptr.6db { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c -// CHECK:STDOUT: %.loc37_12: ref %C = deref %c.ref -// CHECK:STDOUT: %A.ref.loc37: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc37_15.1: ref %B = class_element_access %.loc37_12, element0 -// CHECK:STDOUT: %.loc37_15.2: ref %A = class_element_access %.loc37_15.1, element0 -// CHECK:STDOUT: %.loc37_15.3: ref %A = converted %.loc37_12, %.loc37_15.2 -// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc37_15.3 +// CHECK:STDOUT: %.loc38_12: ref %C = deref %c.ref +// CHECK:STDOUT: %A.ref.loc38: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %.loc38_15.1: ref %B = class_element_access %.loc38_12, element0 +// CHECK:STDOUT: %.loc38_15.2: ref %A = class_element_access %.loc38_15.1, element0 +// CHECK:STDOUT: %.loc38_15.3: ref %A = converted %.loc38_12, %.loc38_15.2 +// CHECK:STDOUT: %addr: %ptr.6db = addr_of %.loc38_15.3 // CHECK:STDOUT: return %addr // CHECK:STDOUT: } // CHECK:STDOUT: @@ -337,52 +338,52 @@ fn ConvertInit() { // CHECK:STDOUT: %a.patt: %pattern_type.c10 = binding_pattern a [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc41_39.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %.loc42_39.1: %struct_type.a.a6c = struct_literal (%int_1) // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc41_48.1: %struct_type.base.b.bf0 = struct_literal (%.loc41_39.1, %int_2) +// CHECK:STDOUT: %.loc42_48.1: %struct_type.base.b.bf0 = struct_literal (%.loc42_39.1, %int_2) // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc41_57.1: %struct_type.base.c.136 = struct_literal (%.loc41_48.1, %int_3) +// CHECK:STDOUT: %.loc42_57.1: %struct_type.base.c.136 = struct_literal (%.loc42_48.1, %int_3) // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %impl.elem0.loc41_39: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_39.1: = bound_method %int_1, %impl.elem0.loc41_39 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc41_39: = specific_function %impl.elem0.loc41_39, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc41_39.2: = bound_method %int_1, %specific_fn.loc41_39 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc41_39: init %i32 = call %bound_method.loc41_39.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc41_39.2: init %i32 = converted %int_1, %int.convert_checked.loc41_39 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc41_57.2: ref %C = temporary_storage -// CHECK:STDOUT: %.loc41_57.3: ref %B = class_element_access %.loc41_57.2, element0 -// CHECK:STDOUT: %.loc41_48.2: ref %A = class_element_access %.loc41_57.3, element0 -// CHECK:STDOUT: %.loc41_39.3: ref %i32 = class_element_access %.loc41_48.2, element0 -// CHECK:STDOUT: %.loc41_39.4: init %i32 = initialize_from %.loc41_39.2 to %.loc41_39.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc41_39.5: init %A = class_init (%.loc41_39.4), %.loc41_48.2 [concrete = constants.%A.val] -// CHECK:STDOUT: %.loc41_48.3: init %A = converted %.loc41_39.1, %.loc41_39.5 [concrete = constants.%A.val] -// CHECK:STDOUT: %impl.elem0.loc41_48: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_48.1: = bound_method %int_2, %impl.elem0.loc41_48 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc41_48: = specific_function %impl.elem0.loc41_48, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc41_48.2: = bound_method %int_2, %specific_fn.loc41_48 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc41_48: init %i32 = call %bound_method.loc41_48.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc41_48.4: init %i32 = converted %int_2, %int.convert_checked.loc41_48 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc41_48.5: ref %i32 = class_element_access %.loc41_57.3, element1 -// CHECK:STDOUT: %.loc41_48.6: init %i32 = initialize_from %.loc41_48.4 to %.loc41_48.5 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc41_48.7: init %B = class_init (%.loc41_48.3, %.loc41_48.6), %.loc41_57.3 [concrete = constants.%B.val] -// CHECK:STDOUT: %.loc41_57.4: init %B = converted %.loc41_48.1, %.loc41_48.7 [concrete = constants.%B.val] -// CHECK:STDOUT: %impl.elem0.loc41_57: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc41_57.1: = bound_method %int_3, %impl.elem0.loc41_57 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc41_57: = specific_function %impl.elem0.loc41_57, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc41_57.2: = bound_method %int_3, %specific_fn.loc41_57 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc41_57: init %i32 = call %bound_method.loc41_57.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc41_57.5: init %i32 = converted %int_3, %int.convert_checked.loc41_57 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc41_57.6: ref %i32 = class_element_access %.loc41_57.2, element1 -// CHECK:STDOUT: %.loc41_57.7: init %i32 = initialize_from %.loc41_57.5 to %.loc41_57.6 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc41_57.8: init %C = class_init (%.loc41_57.4, %.loc41_57.7), %.loc41_57.2 [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc41_57.9: ref %C = temporary %.loc41_57.2, %.loc41_57.8 -// CHECK:STDOUT: %.loc41_59.1: ref %C = converted %.loc41_57.1, %.loc41_57.9 +// CHECK:STDOUT: %impl.elem0.loc42_39: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc42_39.1: = bound_method %int_1, %impl.elem0.loc42_39 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc42_39: = specific_function %impl.elem0.loc42_39, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc42_39.2: = bound_method %int_1, %specific_fn.loc42_39 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked.loc42_39: init %i32 = call %bound_method.loc42_39.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc42_39.2: init %i32 = converted %int_1, %int.convert_checked.loc42_39 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc42_57.2: ref %C = temporary_storage +// CHECK:STDOUT: %.loc42_57.3: ref %B = class_element_access %.loc42_57.2, element0 +// CHECK:STDOUT: %.loc42_48.2: ref %A = class_element_access %.loc42_57.3, element0 +// CHECK:STDOUT: %.loc42_39.3: ref %i32 = class_element_access %.loc42_48.2, element0 +// CHECK:STDOUT: %.loc42_39.4: init %i32 = initialize_from %.loc42_39.2 to %.loc42_39.3 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc42_39.5: init %A = class_init (%.loc42_39.4), %.loc42_48.2 [concrete = constants.%A.val] +// CHECK:STDOUT: %.loc42_48.3: init %A = converted %.loc42_39.1, %.loc42_39.5 [concrete = constants.%A.val] +// CHECK:STDOUT: %impl.elem0.loc42_48: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc42_48.1: = bound_method %int_2, %impl.elem0.loc42_48 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc42_48: = specific_function %impl.elem0.loc42_48, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc42_48.2: = bound_method %int_2, %specific_fn.loc42_48 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked.loc42_48: init %i32 = call %bound_method.loc42_48.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc42_48.4: init %i32 = converted %int_2, %int.convert_checked.loc42_48 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc42_48.5: ref %i32 = class_element_access %.loc42_57.3, element1 +// CHECK:STDOUT: %.loc42_48.6: init %i32 = initialize_from %.loc42_48.4 to %.loc42_48.5 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc42_48.7: init %B = class_init (%.loc42_48.3, %.loc42_48.6), %.loc42_57.3 [concrete = constants.%B.val] +// CHECK:STDOUT: %.loc42_57.4: init %B = converted %.loc42_48.1, %.loc42_48.7 [concrete = constants.%B.val] +// CHECK:STDOUT: %impl.elem0.loc42_57: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc42_57.1: = bound_method %int_3, %impl.elem0.loc42_57 [concrete = constants.%Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc42_57: = specific_function %impl.elem0.loc42_57, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc42_57.2: = bound_method %int_3, %specific_fn.loc42_57 [concrete = constants.%bound_method.047] +// CHECK:STDOUT: %int.convert_checked.loc42_57: init %i32 = call %bound_method.loc42_57.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc42_57.5: init %i32 = converted %int_3, %int.convert_checked.loc42_57 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc42_57.6: ref %i32 = class_element_access %.loc42_57.2, element1 +// CHECK:STDOUT: %.loc42_57.7: init %i32 = initialize_from %.loc42_57.5 to %.loc42_57.6 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc42_57.8: init %C = class_init (%.loc42_57.4, %.loc42_57.7), %.loc42_57.2 [concrete = constants.%C.val] +// CHECK:STDOUT: %.loc42_57.9: ref %C = temporary %.loc42_57.2, %.loc42_57.8 +// CHECK:STDOUT: %.loc42_59.1: ref %C = converted %.loc42_57.1, %.loc42_57.9 // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc41_59.2: ref %B = class_element_access %.loc41_59.1, element0 -// CHECK:STDOUT: %.loc41_59.3: ref %A = class_element_access %.loc41_59.2, element0 -// CHECK:STDOUT: %.loc41_59.4: ref %A = converted %.loc41_59.1, %.loc41_59.3 -// CHECK:STDOUT: %.loc41_59.5: %A = bind_value %.loc41_59.4 -// CHECK:STDOUT: %a: %A = bind_name a, %.loc41_59.5 +// CHECK:STDOUT: %.loc42_59.2: ref %B = class_element_access %.loc42_59.1, element0 +// CHECK:STDOUT: %.loc42_59.3: ref %A = class_element_access %.loc42_59.2, element0 +// CHECK:STDOUT: %.loc42_59.4: ref %A = converted %.loc42_59.1, %.loc42_59.3 +// CHECK:STDOUT: %.loc42_59.5: %A = bind_value %.loc42_59.4 +// CHECK:STDOUT: %a: %A = bind_name a, %.loc42_59.5 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/export_name.carbon b/toolchain/check/testdata/class/export_name.carbon index 25f1ac6fbad0..b10fd2d2dfbb 100644 --- a/toolchain/check/testdata/class/export_name.carbon +++ b/toolchain/check/testdata/class/export_name.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/extern.carbon b/toolchain/check/testdata/class/extern.carbon index 0e9d8fc2a932..1c618141f371 100644 --- a/toolchain/check/testdata/class/extern.carbon +++ b/toolchain/check/testdata/class/extern.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/extern_library.carbon b/toolchain/check/testdata/class/extern_library.carbon index c7b74a7259c8..a54298b9dba3 100644 --- a/toolchain/check/testdata/class/extern_library.carbon +++ b/toolchain/check/testdata/class/extern_library.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/fail_abstract_in_struct.carbon b/toolchain/check/testdata/class/fail_abstract_in_struct.carbon index 458646a1ffa3..8a1bb57940d5 100644 --- a/toolchain/check/testdata/class/fail_abstract_in_struct.carbon +++ b/toolchain/check/testdata/class/fail_abstract_in_struct.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index 43dbfb02d21a..9fad83d037a0 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -24,79 +23,3 @@ class Class { // CHECK:STDERR: fn G(addr b: Class*); } - -// CHECK:STDOUT: --- fail_addr_not_self.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %a: %ptr = bind_symbolic_name a, 0 [symbolic] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %a.patt: %pattern_type = symbolic_binding_pattern a, 0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc19: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a.loc19_13.2: %ptr = bind_symbolic_name a, 0 [symbolic = %a.loc19_13.1 (constants.%a)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete] -// CHECK:STDOUT: %b.param_patt: %pattern_type = value_param_pattern %b.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %b.param: %ptr = value_param call_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr] -// CHECK:STDOUT: } -// CHECK:STDOUT: %b: %ptr = bind_name b, %b.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .Class = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%a.loc19_13.2: %ptr) { -// CHECK:STDOUT: %a.loc19_13.1: %ptr = bind_symbolic_name a, 0 [symbolic = %a.loc19_13.1 (constants.%a)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn(); -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%b.param: %ptr); -// CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%a) { -// CHECK:STDOUT: %a.loc19_13.1 => constants.%a -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index ec6f484dc811..f6b7e35a97a8 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -79,12 +80,12 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %p.param_patt: %pattern_type.796 = value_param_pattern %p.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %c.param: %Class = value_param call_param0 -// CHECK:STDOUT: %Class.ref.loc23_9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %Class.ref.loc24_9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: %Class = bind_name c, %c.param // CHECK:STDOUT: %p.param: %ptr.e71 = value_param call_param1 -// CHECK:STDOUT: %.loc23: type = splice_block %ptr [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Class.ref.loc23_19: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc23_19 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %.loc24: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Class.ref.loc24_19: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc24_19 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param // CHECK:STDOUT: } @@ -94,10 +95,10 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.1 [concrete = constants.%F.1f2] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc15_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc16_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %self.param: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc15_24: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %.loc16_24: type = splice_block %ptr [concrete = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.e71] // CHECK:STDOUT: } @@ -128,28 +129,28 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2(%c.param: %Class, %p.param: %ptr.e71) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref.loc31: %Class = name_ref c, %c -// CHECK:STDOUT: %F.ref.loc31: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.bound.loc31: = bound_method %c.ref.loc31, %F.ref.loc31 -// CHECK:STDOUT: %.loc31: ref %Class = temporary_storage -// CHECK:STDOUT: %addr.loc31: %ptr.e71 = addr_of %.loc31 -// CHECK:STDOUT: %F.call.loc31: init %empty_tuple.type = call %F.bound.loc31(%addr.loc31) -// CHECK:STDOUT: %c.ref.loc33: %Class = name_ref c, %c -// CHECK:STDOUT: %G.ref.loc33: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound.loc33: = bound_method %c.ref.loc33, %G.ref.loc33 -// CHECK:STDOUT: %G.call.loc33: init %empty_tuple.type = call %G.bound.loc33(%c.ref.loc33) -// CHECK:STDOUT: %p.ref.loc36: %ptr.e71 = name_ref p, %p -// CHECK:STDOUT: %.loc36: ref %Class = deref %p.ref.loc36 -// CHECK:STDOUT: %F.ref.loc36: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.bound.loc36: = bound_method %.loc36, %F.ref.loc36 -// CHECK:STDOUT: %addr.loc36: %ptr.e71 = addr_of %.loc36 -// CHECK:STDOUT: %F.call.loc36: init %empty_tuple.type = call %F.bound.loc36(%addr.loc36) -// CHECK:STDOUT: %p.ref.loc38: %ptr.e71 = name_ref p, %p -// CHECK:STDOUT: %.loc38_4.1: ref %Class = deref %p.ref.loc38 -// CHECK:STDOUT: %G.ref.loc38: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound.loc38: = bound_method %.loc38_4.1, %G.ref.loc38 -// CHECK:STDOUT: %.loc38_4.2: %Class = bind_value %.loc38_4.1 -// CHECK:STDOUT: %G.call.loc38: init %empty_tuple.type = call %G.bound.loc38(%.loc38_4.2) +// CHECK:STDOUT: %c.ref.loc32: %Class = name_ref c, %c +// CHECK:STDOUT: %F.ref.loc32: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] +// CHECK:STDOUT: %F.bound.loc32: = bound_method %c.ref.loc32, %F.ref.loc32 +// CHECK:STDOUT: %.loc32: ref %Class = temporary_storage +// CHECK:STDOUT: %addr.loc32: %ptr.e71 = addr_of %.loc32 +// CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32) +// CHECK:STDOUT: %c.ref.loc34: %Class = name_ref c, %c +// CHECK:STDOUT: %G.ref.loc34: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] +// CHECK:STDOUT: %G.bound.loc34: = bound_method %c.ref.loc34, %G.ref.loc34 +// CHECK:STDOUT: %G.call.loc34: init %empty_tuple.type = call %G.bound.loc34(%c.ref.loc34) +// CHECK:STDOUT: %p.ref.loc37: %ptr.e71 = name_ref p, %p +// CHECK:STDOUT: %.loc37: ref %Class = deref %p.ref.loc37 +// CHECK:STDOUT: %F.ref.loc37: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] +// CHECK:STDOUT: %F.bound.loc37: = bound_method %.loc37, %F.ref.loc37 +// CHECK:STDOUT: %addr.loc37: %ptr.e71 = addr_of %.loc37 +// CHECK:STDOUT: %F.call.loc37: init %empty_tuple.type = call %F.bound.loc37(%addr.loc37) +// CHECK:STDOUT: %p.ref.loc39: %ptr.e71 = name_ref p, %p +// CHECK:STDOUT: %.loc39_4.1: ref %Class = deref %p.ref.loc39 +// CHECK:STDOUT: %G.ref.loc39: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] +// CHECK:STDOUT: %G.bound.loc39: = bound_method %.loc39_4.1, %G.ref.loc39 +// CHECK:STDOUT: %.loc39_4.2: %Class = bind_value %.loc39_4.1 +// CHECK:STDOUT: %G.call.loc39: init %empty_tuple.type = call %G.bound.loc39(%.loc39_4.2) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_as_declared_name.carbon b/toolchain/check/testdata/class/fail_base_as_declared_name.carbon index c00bf0ab1b7d..78e50199b27c 100644 --- a/toolchain/check/testdata/class/fail_base_as_declared_name.carbon +++ b/toolchain/check/testdata/class/fail_base_as_declared_name.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -22,6 +21,3 @@ namespace N; // CHECK:STDERR: ^~~~ // CHECK:STDERR: fn N.base() {} - -// CHECK:STDOUT: --- fail_base_as_declared_name.carbon -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_bad_type.carbon b/toolchain/check/testdata/class/fail_base_bad_type.carbon index 655f63079548..97f7f2436b7b 100644 --- a/toolchain/check/testdata/class/fail_base_bad_type.carbon +++ b/toolchain/check/testdata/class/fail_base_bad_type.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -180,783 +179,3 @@ fn AccessMemberWithInvalidBaseFinal_NoMember(p: DeriveFromFinal*) -> i32 { // CHECK:STDERR: return (*p).b; } - -// CHECK:STDOUT: --- fail_derive_from_error.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %DeriveFromError: type = class_type @DeriveFromError [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromError [concrete] -// CHECK:STDOUT: %pattern_type.928: type = pattern_type %ptr [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseError.type: type = fn_type @AccessMemberWithInvalidBaseError [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseError: %AccessMemberWithInvalidBaseError.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .DeriveFromError = %DeriveFromError.decl -// CHECK:STDOUT: .error = -// CHECK:STDOUT: .AccessMemberWithInvalidBaseError = %AccessMemberWithInvalidBaseError.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %DeriveFromError.decl: type = class_decl @DeriveFromError [concrete = constants.%DeriveFromError] {} {} -// CHECK:STDOUT: %AccessMemberWithInvalidBaseError.decl: %AccessMemberWithInvalidBaseError.type = fn_decl @AccessMemberWithInvalidBaseError [concrete = constants.%AccessMemberWithInvalidBaseError] { -// CHECK:STDOUT: %p.patt: %pattern_type.928 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.928 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr = value_param call_param0 -// CHECK:STDOUT: %.loc13_55: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %DeriveFromError.ref: type = name_ref DeriveFromError, file.%DeriveFromError.decl [concrete = constants.%DeriveFromError] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromError.ref [concrete = constants.%ptr] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromError { -// CHECK:STDOUT: %error.ref: = name_ref error, [concrete = ] -// CHECK:STDOUT: %.loc9: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromError -// CHECK:STDOUT: .error = -// CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseError(%p.param: %ptr) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr = name_ref p, %p -// CHECK:STDOUT: %.loc13_75: ref %DeriveFromError = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_non_type.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %DeriveFromNonType: type = class_type @DeriveFromNonType [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromNonType [concrete] -// CHECK:STDOUT: %pattern_type.ffe: type = pattern_type %ptr [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBasNonType.type: type = fn_type @AccessMemberWithInvalidBasNonType [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBasNonType: %AccessMemberWithInvalidBasNonType.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .DeriveFromNonType = %DeriveFromNonType.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBasNonType = %AccessMemberWithInvalidBasNonType.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %DeriveFromNonType.decl: type = class_decl @DeriveFromNonType [concrete = constants.%DeriveFromNonType] {} {} -// CHECK:STDOUT: %AccessMemberWithInvalidBasNonType.decl: %AccessMemberWithInvalidBasNonType.type = fn_decl @AccessMemberWithInvalidBasNonType [concrete = constants.%AccessMemberWithInvalidBasNonType] { -// CHECK:STDOUT: %p.patt: %pattern_type.ffe = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.ffe = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr = value_param call_param0 -// CHECK:STDOUT: %.loc15_58: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %DeriveFromNonType.ref: type = name_ref DeriveFromNonType, file.%DeriveFromNonType.decl [concrete = constants.%DeriveFromNonType] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromNonType.ref [concrete = constants.%ptr] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromNonType { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %.loc12_16: type = converted %int_32, [concrete = ] -// CHECK:STDOUT: %.loc12_18: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromNonType -// CHECK:STDOUT: .base = %.loc12_18 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBasNonType(%p.param: %ptr) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr = name_ref p, %p -// CHECK:STDOUT: %.loc15_78: ref %DeriveFromNonType = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_i32.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %DeriveFromi32: type = class_type @DeriveFromi32 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %DeriveFromi32.elem: type = unbound_element_type %DeriveFromi32, %i32 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %i32} [concrete] -// CHECK:STDOUT: %complete_type.386: = complete_type_witness %struct_type.base [concrete] -// CHECK:STDOUT: %ptr.45c: type = ptr_type %DeriveFromi32 [concrete] -// CHECK:STDOUT: %pattern_type.b82: type = pattern_type %ptr.45c [concrete] -// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete] -// CHECK:STDOUT: %pattern_type.fe8: type = pattern_type %ptr.235 [concrete] -// CHECK:STDOUT: %ConvertToBadBasei32.type: type = fn_type @ConvertToBadBasei32 [concrete] -// CHECK:STDOUT: %ConvertToBadBasei32: %ConvertToBadBasei32.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBasei32.type: type = fn_type @AccessMemberWithInvalidBasei32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBasei32: %AccessMemberWithInvalidBasei32.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .DeriveFromi32 = %DeriveFromi32.decl -// CHECK:STDOUT: .ConvertToBadBasei32 = %ConvertToBadBasei32.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBasei32 = %AccessMemberWithInvalidBasei32.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %DeriveFromi32.decl: type = class_decl @DeriveFromi32 [concrete = constants.%DeriveFromi32] {} {} -// CHECK:STDOUT: %ConvertToBadBasei32.decl: %ConvertToBadBasei32.type = fn_decl @ConvertToBadBasei32 [concrete = constants.%ConvertToBadBasei32] { -// CHECK:STDOUT: %p.patt: %pattern_type.b82 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.b82 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.fe8 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.fe8 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %ptr.loc14_49: type = ptr_type %i32 [concrete = constants.%ptr.235] -// CHECK:STDOUT: %p.param: %ptr.45c = value_param call_param0 -// CHECK:STDOUT: %.loc14_40: type = splice_block %ptr.loc14_40 [concrete = constants.%ptr.45c] { -// CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [concrete = constants.%DeriveFromi32] -// CHECK:STDOUT: %ptr.loc14_40: type = ptr_type %DeriveFromi32.ref [concrete = constants.%ptr.45c] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.45c = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.235 = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.235 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBasei32.decl: %AccessMemberWithInvalidBasei32.type = fn_decl @AccessMemberWithInvalidBasei32 [concrete = constants.%AccessMemberWithInvalidBasei32] { -// CHECK:STDOUT: %p.patt: %pattern_type.b82 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.b82 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.45c = value_param call_param0 -// CHECK:STDOUT: %.loc20_51: type = splice_block %ptr [concrete = constants.%ptr.45c] { -// CHECK:STDOUT: %DeriveFromi32.ref: type = name_ref DeriveFromi32, file.%DeriveFromi32.decl [concrete = constants.%DeriveFromi32] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromi32.ref [concrete = constants.%ptr.45c] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.45c = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromi32 { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc9: %DeriveFromi32.elem = base_decl %i32, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %i32} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.386] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromi32 -// CHECK:STDOUT: .base = %.loc9 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: extend %i32 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBasei32(%p.param: %ptr.45c) -> %ptr.235 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.45c = name_ref p, %p -// CHECK:STDOUT: %.loc14_61.1: ref %DeriveFromi32 = deref %p.ref -// CHECK:STDOUT: %.loc14_61.2: ref %i32 = class_element_access %.loc14_61.1, element0 -// CHECK:STDOUT: %addr: %ptr.235 = addr_of %.loc14_61.2 -// CHECK:STDOUT: %.loc14_61.3: %ptr.235 = converted %p.ref, %addr -// CHECK:STDOUT: return %.loc14_61.3 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBasei32(%p.param: %ptr.45c) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.45c = name_ref p, %p -// CHECK:STDOUT: %.loc20_71: ref %DeriveFromi32 = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_tuple.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Base: type = class_type @Base [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %DeriveFromTuple: type = class_type @DeriveFromTuple [concrete] -// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete] -// CHECK:STDOUT: %tuple.type.469: type = tuple_type (%Base) [concrete] -// CHECK:STDOUT: %ptr.340: type = ptr_type %DeriveFromTuple [concrete] -// CHECK:STDOUT: %pattern_type.195: type = pattern_type %ptr.340 [concrete] -// CHECK:STDOUT: %ptr.1ab: type = ptr_type %tuple.type.469 [concrete] -// CHECK:STDOUT: %pattern_type.600: type = pattern_type %ptr.1ab [concrete] -// CHECK:STDOUT: %ConvertToBadBaseTuple.type: type = fn_type @ConvertToBadBaseTuple [concrete] -// CHECK:STDOUT: %ConvertToBadBaseTuple: %ConvertToBadBaseTuple.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple.type: type = fn_type @AccessMemberWithInvalidBaseTuple [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple: %AccessMemberWithInvalidBaseTuple.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Base = %Base.decl -// CHECK:STDOUT: .DeriveFromTuple = %DeriveFromTuple.decl -// CHECK:STDOUT: .ConvertToBadBaseTuple = %ConvertToBadBaseTuple.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBaseTuple = %AccessMemberWithInvalidBaseTuple.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {} -// CHECK:STDOUT: %DeriveFromTuple.decl: type = class_decl @DeriveFromTuple [concrete = constants.%DeriveFromTuple] {} {} -// CHECK:STDOUT: %ConvertToBadBaseTuple.decl: %ConvertToBadBaseTuple.type = fn_decl @ConvertToBadBaseTuple [concrete = constants.%ConvertToBadBaseTuple] { -// CHECK:STDOUT: %p.patt: %pattern_type.195 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.195 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.600 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.600 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %.loc21_56: %tuple.type.85c = tuple_literal (%Base.ref) -// CHECK:STDOUT: %.loc21_57: type = converted %.loc21_56, constants.%tuple.type.469 [concrete = constants.%tuple.type.469] -// CHECK:STDOUT: %ptr.loc21_57: type = ptr_type %.loc21_57 [concrete = constants.%ptr.1ab] -// CHECK:STDOUT: %p.param: %ptr.340 = value_param call_param0 -// CHECK:STDOUT: %.loc21_44: type = splice_block %ptr.loc21_44 [concrete = constants.%ptr.340] { -// CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [concrete = constants.%DeriveFromTuple] -// CHECK:STDOUT: %ptr.loc21_44: type = ptr_type %DeriveFromTuple.ref [concrete = constants.%ptr.340] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.340 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.1ab = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.1ab = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBaseTuple.decl: %AccessMemberWithInvalidBaseTuple.type = fn_decl @AccessMemberWithInvalidBaseTuple [concrete = constants.%AccessMemberWithInvalidBaseTuple] { -// CHECK:STDOUT: %p.patt: %pattern_type.195 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.195 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.340 = value_param call_param0 -// CHECK:STDOUT: %.loc23_55: type = splice_block %ptr [concrete = constants.%ptr.340] { -// CHECK:STDOUT: %DeriveFromTuple.ref: type = name_ref DeriveFromTuple, file.%DeriveFromTuple.decl [concrete = constants.%DeriveFromTuple] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromTuple.ref [concrete = constants.%ptr.340] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.340 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Base { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromTuple { -// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %.loc11_22.1: %tuple.type.85c = tuple_literal (%Base.ref) -// CHECK:STDOUT: %.loc11_22.2: type = converted %.loc11_22.1, constants.%tuple.type.469 [concrete = constants.%tuple.type.469] -// CHECK:STDOUT: %.loc11_23: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromTuple -// CHECK:STDOUT: .Base = -// CHECK:STDOUT: .base = %.loc11_23 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseTuple(%p.param: %ptr.340) -> %ptr.1ab { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.340 = name_ref p, %p -// CHECK:STDOUT: %.loc21_69: %ptr.1ab = converted %p.ref, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseTuple(%p.param: %ptr.340) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.340 = name_ref p, %p -// CHECK:STDOUT: %.loc23_75: ref %DeriveFromTuple = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_struct.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %DeriveFromStruct: type = class_type @DeriveFromStruct [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] -// CHECK:STDOUT: %ptr.3ee: type = ptr_type %struct_type.a.b [concrete] -// CHECK:STDOUT: %ptr.df0: type = ptr_type %DeriveFromStruct [concrete] -// CHECK:STDOUT: %pattern_type.00f: type = pattern_type %ptr.df0 [concrete] -// CHECK:STDOUT: %pattern_type.8dd: type = pattern_type %ptr.3ee [concrete] -// CHECK:STDOUT: %ConvertToBadBaseStruct.type: type = fn_type @ConvertToBadBaseStruct [concrete] -// CHECK:STDOUT: %ConvertToBadBaseStruct: %ConvertToBadBaseStruct.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct.type: type = fn_type @AccessMemberWithInvalidBaseStruct [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct: %AccessMemberWithInvalidBaseStruct.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .DeriveFromStruct = %DeriveFromStruct.decl -// CHECK:STDOUT: .ConvertToBadBaseStruct = %ConvertToBadBaseStruct.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBaseStruct = %AccessMemberWithInvalidBaseStruct.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %DeriveFromStruct.decl: type = class_decl @DeriveFromStruct [concrete = constants.%DeriveFromStruct] {} {} -// CHECK:STDOUT: %ConvertToBadBaseStruct.decl: %ConvertToBadBaseStruct.type = fn_decl @ConvertToBadBaseStruct [concrete = constants.%ConvertToBadBaseStruct] { -// CHECK:STDOUT: %p.patt: %pattern_type.00f = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.00f = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.8dd = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.8dd = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc21_57: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21_57: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %int_32.loc21_66: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21_66: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b] -// CHECK:STDOUT: %ptr.loc21_70: type = ptr_type %struct_type.a.b [concrete = constants.%ptr.3ee] -// CHECK:STDOUT: %p.param: %ptr.df0 = value_param call_param0 -// CHECK:STDOUT: %.loc21_46: type = splice_block %ptr.loc21_46 [concrete = constants.%ptr.df0] { -// CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [concrete = constants.%DeriveFromStruct] -// CHECK:STDOUT: %ptr.loc21_46: type = ptr_type %DeriveFromStruct.ref [concrete = constants.%ptr.df0] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.df0 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.3ee = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.3ee = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBaseStruct.decl: %AccessMemberWithInvalidBaseStruct.type = fn_decl @AccessMemberWithInvalidBaseStruct [concrete = constants.%AccessMemberWithInvalidBaseStruct] { -// CHECK:STDOUT: %p.patt: %pattern_type.00f = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.00f = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.df0 = value_param call_param0 -// CHECK:STDOUT: %.loc24_57: type = splice_block %ptr [concrete = constants.%ptr.df0] { -// CHECK:STDOUT: %DeriveFromStruct.ref: type = name_ref DeriveFromStruct, file.%DeriveFromStruct.decl [concrete = constants.%DeriveFromStruct] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromStruct.ref [concrete = constants.%ptr.df0] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.df0 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromStruct { -// CHECK:STDOUT: %int_32.loc11_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc11_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %int_32.loc11_30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc11_30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b] -// CHECK:STDOUT: %.loc11: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromStruct -// CHECK:STDOUT: .base = %.loc11 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseStruct(%p.param: %ptr.df0) -> %ptr.3ee { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.df0 = name_ref p, %p -// CHECK:STDOUT: %.loc21_82: %ptr.3ee = converted %p.ref, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseStruct(%p.param: %ptr.df0) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.df0 = name_ref p, %p -// CHECK:STDOUT: %.loc24_77: ref %DeriveFromStruct = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_incomplete.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] -// CHECK:STDOUT: %DeriveFromIncomplete: type = class_type @DeriveFromIncomplete [concrete] -// CHECK:STDOUT: %ptr.089: type = ptr_type %DeriveFromIncomplete [concrete] -// CHECK:STDOUT: %pattern_type.3d0: type = pattern_type %ptr.089 [concrete] -// CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [concrete] -// CHECK:STDOUT: %pattern_type.275: type = pattern_type %ptr.c62 [concrete] -// CHECK:STDOUT: %ConvertToBadBaseIncomplete.type: type = fn_type @ConvertToBadBaseIncomplete [concrete] -// CHECK:STDOUT: %ConvertToBadBaseIncomplete: %ConvertToBadBaseIncomplete.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete.type: type = fn_type @AccessMemberWithInvalidBaseIncomplete [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete: %AccessMemberWithInvalidBaseIncomplete.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Incomplete = %Incomplete.decl -// CHECK:STDOUT: .DeriveFromIncomplete = %DeriveFromIncomplete.decl -// CHECK:STDOUT: .ConvertToBadBaseIncomplete = %ConvertToBadBaseIncomplete.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBaseIncomplete = %AccessMemberWithInvalidBaseIncomplete.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [concrete = constants.%Incomplete] {} {} -// CHECK:STDOUT: %DeriveFromIncomplete.decl: type = class_decl @DeriveFromIncomplete [concrete = constants.%DeriveFromIncomplete] {} {} -// CHECK:STDOUT: %ConvertToBadBaseIncomplete.decl: %ConvertToBadBaseIncomplete.type = fn_decl @ConvertToBadBaseIncomplete [concrete = constants.%ConvertToBadBaseIncomplete] { -// CHECK:STDOUT: %p.patt: %pattern_type.3d0 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.3d0 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.275 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.275 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete] -// CHECK:STDOUT: %ptr.loc28_70: type = ptr_type %Incomplete.ref [concrete = constants.%ptr.c62] -// CHECK:STDOUT: %p.param: %ptr.089 = value_param call_param0 -// CHECK:STDOUT: %.loc28_54: type = splice_block %ptr.loc28_54 [concrete = constants.%ptr.089] { -// CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [concrete = constants.%DeriveFromIncomplete] -// CHECK:STDOUT: %ptr.loc28_54: type = ptr_type %DeriveFromIncomplete.ref [concrete = constants.%ptr.089] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.089 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.c62 = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.c62 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBaseIncomplete.decl: %AccessMemberWithInvalidBaseIncomplete.type = fn_decl @AccessMemberWithInvalidBaseIncomplete [concrete = constants.%AccessMemberWithInvalidBaseIncomplete] { -// CHECK:STDOUT: %p.patt: %pattern_type.3d0 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.3d0 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.089 = value_param call_param0 -// CHECK:STDOUT: %.loc30_65: type = splice_block %ptr [concrete = constants.%ptr.089] { -// CHECK:STDOUT: %DeriveFromIncomplete.ref: type = name_ref DeriveFromIncomplete, file.%DeriveFromIncomplete.decl [concrete = constants.%DeriveFromIncomplete] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromIncomplete.ref [concrete = constants.%ptr.089] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.089 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Incomplete; -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromIncomplete { -// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete] -// CHECK:STDOUT: %.loc18: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromIncomplete -// CHECK:STDOUT: .Incomplete = -// CHECK:STDOUT: .base = %.loc18 -// CHECK:STDOUT: .n = -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseIncomplete(%p.param: %ptr.089) -> %ptr.c62 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.089 = name_ref p, %p -// CHECK:STDOUT: %.loc28_82: %ptr.c62 = converted %p.ref, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseIncomplete(%p.param: %ptr.089) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.089 = name_ref p, %p -// CHECK:STDOUT: %.loc30_85: ref %DeriveFromIncomplete = deref %p.ref -// CHECK:STDOUT: %n.ref: = name_ref n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_derive_from_final.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Final: type = class_type @Final [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Final.elem: type = unbound_element_type %Final, %i32 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] -// CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a [concrete] -// CHECK:STDOUT: %DeriveFromFinal: type = class_type @DeriveFromFinal [concrete] -// CHECK:STDOUT: %DeriveFromFinal.elem: type = unbound_element_type %DeriveFromFinal, %Final [concrete] -// CHECK:STDOUT: %struct_type.base.dae: type = struct_type {.base: %Final} [concrete] -// CHECK:STDOUT: %complete_type.970: = complete_type_witness %struct_type.base.dae [concrete] -// CHECK:STDOUT: %ptr.160: type = ptr_type %DeriveFromFinal [concrete] -// CHECK:STDOUT: %pattern_type.982: type = pattern_type %ptr.160 [concrete] -// CHECK:STDOUT: %ptr.5f6: type = ptr_type %Final [concrete] -// CHECK:STDOUT: %pattern_type.0a2: type = pattern_type %ptr.5f6 [concrete] -// CHECK:STDOUT: %ConvertToBadBaseFinal.type: type = fn_type @ConvertToBadBaseFinal [concrete] -// CHECK:STDOUT: %ConvertToBadBaseFinal: %ConvertToBadBaseFinal.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember.type: type = fn_type @AccessMemberWithInvalidBaseFinal_WithMember [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember: %AccessMemberWithInvalidBaseFinal_WithMember.type = struct_value () [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember.type: type = fn_type @AccessMemberWithInvalidBaseFinal_NoMember [concrete] -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember: %AccessMemberWithInvalidBaseFinal_NoMember.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Final = %Final.decl -// CHECK:STDOUT: .DeriveFromFinal = %DeriveFromFinal.decl -// CHECK:STDOUT: .ConvertToBadBaseFinal = %ConvertToBadBaseFinal.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBaseFinal_WithMember = %AccessMemberWithInvalidBaseFinal_WithMember.decl -// CHECK:STDOUT: .AccessMemberWithInvalidBaseFinal_NoMember = %AccessMemberWithInvalidBaseFinal_NoMember.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Final.decl: type = class_decl @Final [concrete = constants.%Final] {} {} -// CHECK:STDOUT: %DeriveFromFinal.decl: type = class_decl @DeriveFromFinal [concrete = constants.%DeriveFromFinal] {} {} -// CHECK:STDOUT: %ConvertToBadBaseFinal.decl: %ConvertToBadBaseFinal.type = fn_decl @ConvertToBadBaseFinal [concrete = constants.%ConvertToBadBaseFinal] { -// CHECK:STDOUT: %p.patt: %pattern_type.982 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.982 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.0a2 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.0a2 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final.decl [concrete = constants.%Final] -// CHECK:STDOUT: %ptr.loc17_55: type = ptr_type %Final.ref [concrete = constants.%ptr.5f6] -// CHECK:STDOUT: %p.param: %ptr.160 = value_param call_param0 -// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17_44 [concrete = constants.%ptr.160] { -// CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [concrete = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr.loc17_44: type = ptr_type %DeriveFromFinal.ref [concrete = constants.%ptr.160] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.5f6 = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.5f6 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_WithMember.decl: %AccessMemberWithInvalidBaseFinal_WithMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_WithMember [concrete = constants.%AccessMemberWithInvalidBaseFinal_WithMember] { -// CHECK:STDOUT: %p.patt: %pattern_type.982 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.982 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.160 = value_param call_param0 -// CHECK:STDOUT: %.loc21: type = splice_block %ptr [concrete = constants.%ptr.160] { -// CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [concrete = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal.ref [concrete = constants.%ptr.160] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %AccessMemberWithInvalidBaseFinal_NoMember.decl: %AccessMemberWithInvalidBaseFinal_NoMember.type = fn_decl @AccessMemberWithInvalidBaseFinal_NoMember [concrete = constants.%AccessMemberWithInvalidBaseFinal_NoMember] { -// CHECK:STDOUT: %p.patt: %pattern_type.982 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.982 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %p.param: %ptr.160 = value_param call_param0 -// CHECK:STDOUT: %.loc25: type = splice_block %ptr [concrete = constants.%ptr.160] { -// CHECK:STDOUT: %DeriveFromFinal.ref: type = name_ref DeriveFromFinal, file.%DeriveFromFinal.decl [concrete = constants.%DeriveFromFinal] -// CHECK:STDOUT: %ptr: type = ptr_type %DeriveFromFinal.ref [concrete = constants.%ptr.160] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.160 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Final { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc5: %Final.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Final -// CHECK:STDOUT: .a = %.loc5 -// CHECK:STDOUT: .b = -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DeriveFromFinal { -// CHECK:STDOUT: %Final.ref: type = name_ref Final, file.%Final.decl [concrete = constants.%Final] -// CHECK:STDOUT: %.loc13: %DeriveFromFinal.elem = base_decl %Final.ref, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Final} [concrete = constants.%struct_type.base.dae] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.970] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%DeriveFromFinal -// CHECK:STDOUT: .Final = -// CHECK:STDOUT: .base = %.loc13 -// CHECK:STDOUT: .a = -// CHECK:STDOUT: .b = -// CHECK:STDOUT: extend %Final.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertToBadBaseFinal(%p.param: %ptr.160) -> %ptr.5f6 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p -// CHECK:STDOUT: %.loc18_11.1: ref %DeriveFromFinal = deref %p.ref -// CHECK:STDOUT: %.loc18_11.2: ref %Final = class_element_access %.loc18_11.1, element0 -// CHECK:STDOUT: %addr: %ptr.5f6 = addr_of %.loc18_11.2 -// CHECK:STDOUT: %.loc18_11.3: %ptr.5f6 = converted %p.ref, %addr -// CHECK:STDOUT: return %.loc18_11.3 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_WithMember(%p.param: %ptr.160) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p -// CHECK:STDOUT: %.loc22_11: ref %DeriveFromFinal = deref %p.ref -// CHECK:STDOUT: %a.ref: %Final.elem = name_ref a, @Final.%.loc5 [concrete = @Final.%.loc5] -// CHECK:STDOUT: %.loc22_14.1: ref %Final = class_element_access %.loc22_11, element0 -// CHECK:STDOUT: %.loc22_14.2: ref %Final = converted %.loc22_11, %.loc22_14.1 -// CHECK:STDOUT: %.loc22_14.3: ref %i32 = class_element_access %.loc22_14.2, element0 -// CHECK:STDOUT: %.loc22_14.4: %i32 = bind_value %.loc22_14.3 -// CHECK:STDOUT: return %.loc22_14.4 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessMemberWithInvalidBaseFinal_NoMember(%p.param: %ptr.160) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.160 = name_ref p, %p -// CHECK:STDOUT: %.loc30: ref %DeriveFromFinal = deref %p.ref -// CHECK:STDOUT: %b.ref: = name_ref b, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_method_define.carbon b/toolchain/check/testdata/class/fail_base_method_define.carbon index d29ea081616e..ba350f4c88b1 100644 --- a/toolchain/check/testdata/class/fail_base_method_define.carbon +++ b/toolchain/check/testdata/class/fail_base_method_define.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -34,98 +33,3 @@ fn D.F() {} // CHECK:STDERR: ^ // CHECK:STDERR: fn D.C.F() {} - -// CHECK:STDOUT: --- fail_base_method_define.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %F.type.8c6: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.92a: %F.type.8c6 = struct_value () [concrete] -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type.b77: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.a5f: %F.type.b77 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %D: type = class_type @D [concrete] -// CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete] -// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base [concrete] -// CHECK:STDOUT: %F.type.31906b.1: type = fn_type @F.3 [concrete] -// CHECK:STDOUT: %F.34b733.1: %F.type.31906b.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.31906b.2: type = fn_type @F.4 [concrete] -// CHECK:STDOUT: %F.34b733.2: %F.type.31906b.2 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .D = %D.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: %F.decl.loc30: %F.type.31906b.1 = fn_decl @F.3 [concrete = constants.%F.34b733.1] {} {} -// CHECK:STDOUT: %F.decl.loc36: %F.type.31906b.2 = fn_decl @F.4 [concrete = constants.%F.34b733.2] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.1 [concrete = constants.%F.92a] {} {} -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type.b77 = fn_decl @F.2 [concrete = constants.%F.a5f] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @D { -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc23: %D.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc23 -// CHECK:STDOUT: .F = file.%F.decl.loc30 -// CHECK:STDOUT: extend %B.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1(); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.3() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.4() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_misplaced.carbon b/toolchain/check/testdata/class/fail_base_misplaced.carbon index 25c6190fbe23..ab2fe135589d 100644 --- a/toolchain/check/testdata/class/fail_base_misplaced.carbon +++ b/toolchain/check/testdata/class/fail_base_misplaced.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -36,71 +35,3 @@ class C { extend base: B; } } - -// CHECK:STDOUT: --- fail_base_misplaced.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %F.type.c29: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.437: %F.type.c29 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.1 [concrete = constants.%F.c41] {} {} -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.2 [concrete = constants.%F.437] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .B = -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_base_modifiers.carbon b/toolchain/check/testdata/class/fail_base_modifiers.carbon index 7ceb52f933fe..6ea27a9a1ed3 100644 --- a/toolchain/check/testdata/class/fail_base_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_base_modifiers.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_base_modifiers.carbon diff --git a/toolchain/check/testdata/class/fail_base_no_extend.carbon b/toolchain/check/testdata/class/fail_base_no_extend.carbon index 28363555b2f9..e13d53638c52 100644 --- a/toolchain/check/testdata/class/fail_base_no_extend.carbon +++ b/toolchain/check/testdata/class/fail_base_no_extend.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -20,56 +19,3 @@ class C { // CHECK:STDERR: base: B; } - -// CHECK:STDOUT: --- fail_base_no_extend.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete] -// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc21: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc21 -// 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 9f44786207a1..ef34f61ace29 100644 --- a/toolchain/check/testdata/class/fail_base_repeated.carbon +++ b/toolchain/check/testdata/class/fail_base_repeated.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -38,92 +37,3 @@ class D { // CHECK:STDERR: extend base: B1; } - -// CHECK:STDOUT: --- fail_base_repeated.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %B1: type = class_type @B1 [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %B2: type = class_type @B2 [concrete] -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B1 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B1} [concrete] -// CHECK:STDOUT: %complete_type.5ac: = complete_type_witness %struct_type.base [concrete] -// CHECK:STDOUT: %D: type = class_type @D [concrete] -// CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .B1 = %B1.decl -// CHECK:STDOUT: .B2 = %B2.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: .D = %D.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %B1.decl: type = class_decl @B1 [concrete = constants.%B1] {} {} -// CHECK:STDOUT: %B2.decl: type = class_decl @B2 [concrete = constants.%B2] {} {} -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B1 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B1 -// CHECK:STDOUT: .B2 = -// CHECK:STDOUT: .B1 = -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B2 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B2 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %B1.ref: type = name_ref B1, file.%B1.decl [concrete = constants.%B1] -// CHECK:STDOUT: %.loc18: %C.elem = base_decl %B1.ref, element0 [concrete] -// CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [concrete = constants.%B2] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B1} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.5ac] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .B1 = -// CHECK:STDOUT: .base = %.loc18 -// CHECK:STDOUT: .B2 = -// CHECK:STDOUT: extend %B1.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @D { -// CHECK:STDOUT: %B1.ref.loc31: type = name_ref B1, file.%B1.decl [concrete = constants.%B1] -// CHECK:STDOUT: %.loc31: %D.elem = base_decl %B1.ref.loc31, element0 [concrete] -// CHECK:STDOUT: %B1.ref.loc39: type = name_ref B1, file.%B1.decl [concrete = constants.%B1] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B1} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.5ac] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%D -// CHECK:STDOUT: .B1 = -// CHECK:STDOUT: .base = %.loc31 -// CHECK:STDOUT: extend %B1.ref.loc31 -// 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 df992a2b8807..ac4263595fe1 100644 --- a/toolchain/check/testdata/class/fail_base_unbound.carbon +++ b/toolchain/check/testdata/class/fail_base_unbound.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -22,71 +21,3 @@ class C { // CHECK:STDERR: ^~~~~~ // CHECK:STDERR: let b: B = C.base; - -// CHECK:STDOUT: --- fail_base_unbound.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete] -// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete] -// CHECK:STDOUT: %complete_type.98e: = complete_type_witness %struct_type.base.0ff [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %B [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: .b = %b -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %b.patt: %pattern_type = binding_pattern b [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b: %B = bind_name b, [concrete = ] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc17: %C.elem = base_decl %B.ref, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %B} [concrete = constants.%struct_type.base.0ff] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.98e] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .B = -// CHECK:STDOUT: .base = %.loc17 -// CHECK:STDOUT: extend %B.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @__global_init() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %base.ref: %C.elem = name_ref base, @C.%.loc17 [concrete = @C.%.loc17] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon index bb05a65ddb77..b1a1a5d7c9ec 100644 --- a/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon +++ b/toolchain/check/testdata/class/fail_compound_type_mismatch.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -29,100 +28,3 @@ fn AccessBInA(a: A) -> i32 { // CHECK:STDERR: return a.(B.b); } - -// CHECK:STDOUT: --- fail_compound_type_mismatch.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %i32 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] -// CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a [concrete] -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %i32 [concrete] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %i32} [concrete] -// CHECK:STDOUT: %complete_type.ba8: = complete_type_witness %struct_type.b [concrete] -// CHECK:STDOUT: %pattern_type.c10: type = pattern_type %A [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %AccessBInA.type: type = fn_type @AccessBInA [concrete] -// CHECK:STDOUT: %AccessBInA: %AccessBInA.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .AccessBInA = %AccessBInA.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %AccessBInA.decl: %AccessBInA.type = fn_decl @AccessBInA [concrete = constants.%AccessBInA] { -// CHECK:STDOUT: %a.patt: %pattern_type.c10 = binding_pattern a [concrete] -// CHECK:STDOUT: %a.param_patt: %pattern_type.c10 = value_param_pattern %a.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %a.param: %A = value_param call_param0 -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %a: %A = bind_name a, %a.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %A.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19: %B.elem = field_decl b, element0 [concrete] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %i32} [concrete = constants.%struct_type.b] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [concrete = constants.%complete_type.ba8] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .b = %.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @AccessBInA(%a.param: %A) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %a.ref: %A = name_ref a, %a -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b.ref: %B.elem = name_ref b, @B.%.loc19 [concrete = @B.%.loc19] -// CHECK:STDOUT: %.loc30_11.1: %B = converted %a.ref, [concrete = ] -// CHECK:STDOUT: %.loc30_11.2: %i32 = class_element_access , element0 [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon index f5746f92492e..82bdfe587d58 100644 --- a/toolchain/check/testdata/class/fail_convert_to_invalid.carbon +++ b/toolchain/check/testdata/class/fail_convert_to_invalid.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_convert_to_invalid.carbon diff --git a/toolchain/check/testdata/class/fail_derived_to_base.carbon b/toolchain/check/testdata/class/fail_derived_to_base.carbon index 375db0986dea..336bd5404e59 100644 --- a/toolchain/check/testdata/class/fail_derived_to_base.carbon +++ b/toolchain/check/testdata/class/fail_derived_to_base.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -43,161 +42,3 @@ class Incomplete; // CHECK:STDERR: ^~~~~~~~~ // CHECK:STDERR: fn ConvertIncomplete(p: Incomplete*) -> A2* { return p; } - -// CHECK:STDOUT: --- fail_derived_to_base.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %A1: type = class_type @A1 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %A1.elem: type = unbound_element_type %A1, %i32 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete] -// CHECK:STDOUT: %complete_type.fd7: = complete_type_witness %struct_type.a [concrete] -// CHECK:STDOUT: %A2: type = class_type @A2 [concrete] -// CHECK:STDOUT: %A2.elem: type = unbound_element_type %A2, %i32 [concrete] -// CHECK:STDOUT: %B2: type = class_type @B2 [concrete] -// CHECK:STDOUT: %B2.elem.a92: type = unbound_element_type %B2, %A2 [concrete] -// CHECK:STDOUT: %B2.elem.4b2: type = unbound_element_type %B2, %i32 [concrete] -// CHECK:STDOUT: %struct_type.base.b.618: type = struct_type {.base: %A2, .b: %i32} [concrete] -// CHECK:STDOUT: %complete_type.92f: = complete_type_witness %struct_type.base.b.618 [concrete] -// CHECK:STDOUT: %ptr.afe: type = ptr_type %B2 [concrete] -// CHECK:STDOUT: %pattern_type.98e: type = pattern_type %ptr.afe [concrete] -// CHECK:STDOUT: %ptr.678: type = ptr_type %A1 [concrete] -// CHECK:STDOUT: %pattern_type.d72: type = pattern_type %ptr.678 [concrete] -// CHECK:STDOUT: %ConvertUnrelated.type: type = fn_type @ConvertUnrelated [concrete] -// CHECK:STDOUT: %ConvertUnrelated: %ConvertUnrelated.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] -// CHECK:STDOUT: %ptr.c62: type = ptr_type %Incomplete [concrete] -// CHECK:STDOUT: %pattern_type.275: type = pattern_type %ptr.c62 [concrete] -// CHECK:STDOUT: %ptr.590: type = ptr_type %A2 [concrete] -// CHECK:STDOUT: %pattern_type.2c5: type = pattern_type %ptr.590 [concrete] -// CHECK:STDOUT: %ConvertIncomplete.type: type = fn_type @ConvertIncomplete [concrete] -// CHECK:STDOUT: %ConvertIncomplete: %ConvertIncomplete.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A1 = %A1.decl -// CHECK:STDOUT: .A2 = %A2.decl -// CHECK:STDOUT: .B2 = %B2.decl -// CHECK:STDOUT: .ConvertUnrelated = %ConvertUnrelated.decl -// CHECK:STDOUT: .Incomplete = %Incomplete.decl -// CHECK:STDOUT: .ConvertIncomplete = %ConvertIncomplete.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A1.decl: type = class_decl @A1 [concrete = constants.%A1] {} {} -// CHECK:STDOUT: %A2.decl: type = class_decl @A2 [concrete = constants.%A2] {} {} -// CHECK:STDOUT: %B2.decl: type = class_decl @B2 [concrete = constants.%B2] {} {} -// CHECK:STDOUT: %ConvertUnrelated.decl: %ConvertUnrelated.type = fn_decl @ConvertUnrelated [concrete = constants.%ConvertUnrelated] { -// CHECK:STDOUT: %p.patt: %pattern_type.98e = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.98e = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.d72 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.d72 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %A1.ref: type = name_ref A1, file.%A1.decl [concrete = constants.%A1] -// CHECK:STDOUT: %ptr.loc34_34: type = ptr_type %A1.ref [concrete = constants.%ptr.678] -// CHECK:STDOUT: %p.param: %ptr.afe = value_param call_param0 -// CHECK:STDOUT: %.loc34_26: type = splice_block %ptr.loc34_26 [concrete = constants.%ptr.afe] { -// CHECK:STDOUT: %B2.ref: type = name_ref B2, file.%B2.decl [concrete = constants.%B2] -// CHECK:STDOUT: %ptr.loc34_26: type = ptr_type %B2.ref [concrete = constants.%ptr.afe] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.afe = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.678 = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.678 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [concrete = constants.%Incomplete] {} {} -// CHECK:STDOUT: %ConvertIncomplete.decl: %ConvertIncomplete.type = fn_decl @ConvertIncomplete [concrete = constants.%ConvertIncomplete] { -// CHECK:STDOUT: %p.patt: %pattern_type.275 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.275 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.2c5 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.2c5 = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %A2.ref: type = name_ref A2, file.%A2.decl [concrete = constants.%A2] -// CHECK:STDOUT: %ptr.loc45_43: type = ptr_type %A2.ref [concrete = constants.%ptr.590] -// CHECK:STDOUT: %p.param: %ptr.c62 = value_param call_param0 -// CHECK:STDOUT: %.loc45_35: type = splice_block %ptr.loc45_35 [concrete = constants.%ptr.c62] { -// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%Incomplete.decl [concrete = constants.%Incomplete] -// CHECK:STDOUT: %ptr.loc45_35: type = ptr_type %Incomplete.ref [concrete = constants.%ptr.c62] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.c62 = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref %ptr.590 = out_param call_param1 -// CHECK:STDOUT: %return: ref %ptr.590 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A1 { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %A1.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A1 -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A2 { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19: %A2.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A2 -// CHECK:STDOUT: .a = %.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B2 { -// CHECK:STDOUT: %A2.ref: type = name_ref A2, file.%A2.decl [concrete = constants.%A2] -// CHECK:STDOUT: %.loc23: %B2.elem.a92 = base_decl %A2.ref, element0 [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc24: %B2.elem.4b2 = field_decl b, element1 [concrete] -// CHECK:STDOUT: %struct_type.base.b: type = struct_type {.base: %A2, .b: %i32} [concrete = constants.%struct_type.base.b.618] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.b [concrete = constants.%complete_type.92f] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B2 -// CHECK:STDOUT: .A2 = -// CHECK:STDOUT: .base = %.loc23 -// CHECK:STDOUT: .b = %.loc24 -// CHECK:STDOUT: extend %A2.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Incomplete; -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertUnrelated(%p.param: %ptr.afe) -> %ptr.678 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.afe = name_ref p, %p -// CHECK:STDOUT: %.loc34_46: %ptr.678 = converted %p.ref, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @ConvertIncomplete(%p.param: %ptr.c62) -> %ptr.590 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: %ptr.c62 = name_ref p, %p -// CHECK:STDOUT: %.loc45_55: %ptr.590 = converted %p.ref, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_error_recovery.carbon b/toolchain/check/testdata/class/fail_error_recovery.carbon index f3b0ef82ab98..2747ce3d74cc 100644 --- a/toolchain/check/testdata/class/fail_error_recovery.carbon +++ b/toolchain/check/testdata/class/fail_error_recovery.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -26,98 +25,3 @@ fn F(N:! error_not_found) { extend base: C; } } - -// CHECK:STDOUT: --- fail_virtual_fn_in_invalid_context.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type [concrete] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .error_not_found = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %N.patt: = symbolic_binding_pattern N, 0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %error_not_found.ref: = name_ref error_not_found, [concrete = ] -// CHECK:STDOUT: %N: = bind_symbolic_name N, 0 [concrete = ] -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic class @C(@F.%N: ) { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: -// CHECK:STDOUT: class { -// CHECK:STDOUT: %Foo.decl: = fn_decl @Foo [concrete = ] { -// CHECK:STDOUT: %self.patt: = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: = value_param call_param0 -// CHECK:STDOUT: %Self.ref: = name_ref Self, [concrete = ] -// CHECK:STDOUT: %self: = bind_name self, %self.param [concrete = ] -// CHECK:STDOUT: } -// CHECK:STDOUT: %.loc9: = vtable (%Foo.decl) [concrete = ] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr} [concrete = constants.%struct_type.vptr] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = -// CHECK:STDOUT: .Foo = %Foo.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic class @D(@F.%N: ) { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: -// CHECK:STDOUT: class { -// CHECK:STDOUT: %C.ref: type = name_ref C, @F.%C.decl [concrete = ] -// CHECK:STDOUT: %.loc12: = base_decl , element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = -// CHECK:STDOUT: .C = -// CHECK:STDOUT: .base = %.loc12 -// CHECK:STDOUT: has_error -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%N: ) { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: -// CHECK:STDOUT: fn() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = ] {} {} -// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = ] {} {} -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic virtual fn @Foo(@F.%N: ) { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: -// CHECK:STDOUT: virtual fn(%self.param: ) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @F() {} -// CHECK:STDOUT: -// CHECK:STDOUT: specific @C() { -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @Foo() {} -// CHECK:STDOUT: -// CHECK:STDOUT: specific @D() {} -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_extend_cycle.carbon b/toolchain/check/testdata/class/fail_extend_cycle.carbon index 5b93fae5c67c..e55d26a4cc77 100644 --- a/toolchain/check/testdata/class/fail_extend_cycle.carbon +++ b/toolchain/check/testdata/class/fail_extend_cycle.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -34,80 +33,3 @@ base class A { // CHECK:STDERR: var c: C; } - -// CHECK:STDOUT: --- fail_extend_cycle.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.466950.1: type = class_type @A.1 [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A.466950.1 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A.466950.1} [concrete] -// CHECK:STDOUT: %complete_type.020: = complete_type_witness %struct_type.base [concrete] -// CHECK:STDOUT: %A.466950.2: type = class_type @A.2 [concrete] -// CHECK:STDOUT: %A.elem: type = unbound_element_type %A.466950.2, %A.466950.1 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl.loc14 -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .C = -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc14: type = class_decl @A.1 [concrete = constants.%A.466950.1] {} {} -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %A.decl.loc29: type = class_decl @A.2 [concrete = constants.%A.466950.2] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A.1 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.466950.1 -// CHECK:STDOUT: .C = -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl.loc14 [concrete = constants.%A.466950.1] -// CHECK:STDOUT: %.loc19: %B.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %A.466950.1} [concrete = constants.%struct_type.base] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.020] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .A = -// CHECK:STDOUT: .base = %.loc19 -// CHECK:STDOUT: extend %A.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A.2 { -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl.loc14 [concrete = constants.%A.466950.1] -// CHECK:STDOUT: %.loc30: %A.elem = base_decl %A.ref, element0 [concrete] -// CHECK:STDOUT: %C.ref: = name_ref C, [concrete = ] -// CHECK:STDOUT: %.loc35: = field_decl c, element1 [concrete] -// CHECK:STDOUT: %struct_type.base.c: type = struct_type {.base: %A.466950.1, .c: } [concrete = ] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base.c [concrete = ] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.466950.2 -// CHECK:STDOUT: .A = -// CHECK:STDOUT: .base = %.loc30 -// CHECK:STDOUT: .C = -// CHECK:STDOUT: .c = %.loc35 -// CHECK:STDOUT: extend %A.ref -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_field_modifiers.carbon b/toolchain/check/testdata/class/fail_field_modifiers.carbon index 370eef483628..3c0fa5e7230e 100644 --- a/toolchain/check/testdata/class/fail_field_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_field_modifiers.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -37,112 +36,3 @@ class Class { // CHECK:STDERR: final let m: i32 = 1; } - -// CHECK:STDOUT: --- fail_field_modifiers.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [concrete] -// CHECK:STDOUT: %complete_type.cf7: = complete_type_witness %struct_type.j.k [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: %Class.elem = field_decl j, element0 [concrete] -// CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc26: %Class.elem = field_decl k, element1 [concrete] -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %l.patt: %pattern_type.7ce = binding_pattern l [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %.loc32_18: type = splice_block %i32.loc32 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc32_24.1: = bound_method %int_0, %impl.elem0.loc32 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc32_24.2: = bound_method %int_0, %specific_fn.loc32 [concrete = constants.%bound_method.b6e] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %bound_method.loc32_24.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc32_24.1: %i32 = value_of_initializer %int.convert_checked.loc32 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc32_24.2: %i32 = converted %int_0, %.loc32_24.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %l: %i32 = bind_name l, %.loc32_24.2 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %m.patt: %pattern_type.7ce = binding_pattern m [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc38_16: type = splice_block %i32.loc38 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc38: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc38: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %impl.elem0.loc38: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc38_22.1: = bound_method %int_1, %impl.elem0.loc38 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc38: = specific_function %impl.elem0.loc38, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc38_22.2: = bound_method %int_1, %specific_fn.loc38 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc38: init %i32 = call %bound_method.loc38_22.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_22.1: %i32 = value_of_initializer %int.convert_checked.loc38 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_22.2: %i32 = converted %int_1, %.loc38_22.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %m: %i32 = bind_name m, %.loc38_22.2 -// CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [concrete = constants.%struct_type.j.k] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [concrete = constants.%complete_type.cf7] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .j = %.loc20 -// CHECK:STDOUT: .k = %.loc26 -// CHECK:STDOUT: .l = %l -// CHECK:STDOUT: .m = %m -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_generic_method.carbon b/toolchain/check/testdata/class/fail_generic_method.carbon index 20d7c55fe55a..3851a0a4f332 100644 --- a/toolchain/check/testdata/class/fail_generic_method.carbon +++ b/toolchain/check/testdata/class/fail_generic_method.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_generic_method.carbon diff --git a/toolchain/check/testdata/class/fail_import_misuses.carbon b/toolchain/check/testdata/class/fail_import_misuses.carbon index 046c79106612..a20fd79ab789 100644 --- a/toolchain/check/testdata/class/fail_import_misuses.carbon +++ b/toolchain/check/testdata/class/fail_import_misuses.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -46,100 +45,3 @@ class Empty { // CHECK:STDERR: ^~~~~~~~~~~~~~~~~ // CHECK:STDERR: var a: Incomplete; - -// CHECK:STDOUT: --- a.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Empty: type = class_type @Empty [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Empty = %Empty.decl -// CHECK:STDOUT: .Incomplete = %Incomplete.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Empty.decl: type = class_decl @Empty [concrete = constants.%Empty] {} {} -// CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [concrete = constants.%Incomplete] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Empty { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Empty -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Incomplete; -// CHECK:STDOUT: -// CHECK:STDOUT: --- fail_b.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Empty.f48899.1: type = class_type @Empty.1 [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Empty.f48899.2: type = class_type @Empty.2 [concrete] -// CHECK:STDOUT: %Incomplete: type = class_type @Incomplete [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Main.Empty: type = import_ref Main//a, Empty, loaded [concrete = constants.%Empty.f48899.1] -// CHECK:STDOUT: %Main.Incomplete: type = import_ref Main//a, Incomplete, loaded [concrete = constants.%Incomplete] -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//a, loc5_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.fd7 = import_ref Main//a, inst18 [no loc], unloaded -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Empty = imports.%Main.Empty -// CHECK:STDOUT: .Incomplete = imports.%Main.Incomplete -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .a = %a -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %Empty.decl: type = class_decl @Empty.2 [concrete = constants.%Empty.f48899.2] {} {} -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %a.patt: = binding_pattern a [concrete] -// CHECK:STDOUT: %a.var_patt: = var_pattern %a.patt [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %a.var: ref = var %a.var_patt [concrete = ] -// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, imports.%Main.Incomplete [concrete = constants.%Incomplete] -// CHECK:STDOUT: %a: = bind_name a, [concrete = ] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Empty.1 [from "a.carbon"] { -// CHECK:STDOUT: complete_type_witness = imports.%Main.import_ref.8f2 -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = imports.%Main.import_ref.fd7 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Empty.2 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Empty.f48899.2 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Incomplete [from "a.carbon"]; -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index 75e72556a94d..08812c2dfc0d 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_incomplete.carbon diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index aa6b3f82091b..3cd0a6701e2c 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -33,116 +32,3 @@ fn F() { // CHECK:STDERR: {.a = 1, .b = 2, .c = 3} as Class; } - -// CHECK:STDOUT: --- fail_init.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete] -// CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %struct_type.a.c: type = struct_type {.a: Core.IntLiteral, .c: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete] -// CHECK:STDOUT: %struct_type.a.b.c: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral, .c: Core.IntLiteral} [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [concrete = constants.%complete_type.705] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: .b = %.loc16 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %int_1.loc24: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc24_10.1: %struct_type.a = struct_literal (%int_1.loc24) -// CHECK:STDOUT: %Class.ref.loc24: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %.loc24_10.2: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc24_10.3: ref %Class = temporary %.loc24_10.2, [concrete = ] -// CHECK:STDOUT: %.loc24_12: ref %Class = converted %.loc24_10.1, %.loc24_10.3 [concrete = ] -// CHECK:STDOUT: %int_1.loc29: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int_2.loc29: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %.loc29_18.1: %struct_type.a.c = struct_literal (%int_1.loc29, %int_2.loc29) -// CHECK:STDOUT: %Class.ref.loc29: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_18.1: = bound_method %int_1.loc29, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc29_18.2: = bound_method %int_1.loc29, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc29_18.2(%int_1.loc29) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_18.2: init %i32 = converted %int_1.loc29, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_18.3: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc29_18.4: ref %i32 = class_element_access %.loc29_18.3, element0 -// CHECK:STDOUT: %.loc29_18.5: init %i32 = initialize_from %.loc29_18.2 to %.loc29_18.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_18.6: ref %Class = temporary %.loc29_18.3, [concrete = ] -// CHECK:STDOUT: %.loc29_20: ref %Class = converted %.loc29_18.1, %.loc29_18.6 [concrete = ] -// CHECK:STDOUT: %int_1.loc34: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int_2.loc34: Core.IntLiteral = int_value 2 [concrete = constants.%int_2] -// CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3] -// CHECK:STDOUT: %.loc34_26.1: %struct_type.a.b.c = struct_literal (%int_1.loc34, %int_2.loc34, %int_3) -// CHECK:STDOUT: %Class.ref.loc34: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %.loc34_26.2: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc34_26.3: ref %Class = temporary %.loc34_26.2, [concrete = ] -// CHECK:STDOUT: %.loc34_28: ref %Class = converted %.loc34_26.1, %.loc34_26.3 [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index 9de07c8989a4..e0a102820bd4 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -29,145 +28,3 @@ fn F() { var c: Class = {.a = 1, .b = 2} as Class; G(&c); } - -// CHECK:STDOUT: --- fail_init_as_inplace.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %struct_type.a.b.501: type = struct_type {.a: %i32, .b: %i32} [concrete] -// CHECK:STDOUT: %complete_type.705: = complete_type_witness %struct_type.a.b.501 [concrete] -// CHECK:STDOUT: %ptr.e71: type = ptr_type %Class [concrete] -// CHECK:STDOUT: %pattern_type.796: type = pattern_type %ptr.e71 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] -// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] -// CHECK:STDOUT: %struct_type.a.b.cfd: type = struct_type {.a: Core.IntLiteral, .b: Core.IntLiteral} [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] -// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] -// CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] -// CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] -// CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] -// CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %bound_method.b92: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] -// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] -// CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.5d2, %int_2.ef8) [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] -// CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %p.patt: %pattern_type.796 = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: %pattern_type.796 = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %p.param: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc19: type = splice_block %ptr [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.e71] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: %ptr.e71 = bind_name p, %p.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl b, element1 [concrete] -// CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [concrete = constants.%complete_type.705] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: .b = %.loc16 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%p.param: %ptr.e71); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] -// CHECK:STDOUT: %c.var_patt: %pattern_type.761 = var_pattern %c.patt [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %c.var: ref %Class = var %c.var_patt -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc29_33.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) -// CHECK:STDOUT: %Class.ref.loc29_38: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %impl.elem0.loc29_33.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_33.1: = bound_method %int_1, %impl.elem0.loc29_33.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc29_33.1: = specific_function %impl.elem0.loc29_33.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc29_33.2: = bound_method %int_1, %specific_fn.loc29_33.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc29_33.1: init %i32 = call %bound_method.loc29_33.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_33.2: init %i32 = converted %int_1, %int.convert_checked.loc29_33.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc29_33.3: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc29_33.4: ref %i32 = class_element_access %.loc29_33.3, element0 -// CHECK:STDOUT: %.loc29_33.5: init %i32 = initialize_from %.loc29_33.2 to %.loc29_33.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc29_33.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc29_33.3: = bound_method %int_2, %impl.elem0.loc29_33.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc29_33.2: = specific_function %impl.elem0.loc29_33.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc29_33.4: = bound_method %int_2, %specific_fn.loc29_33.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc29_33.2: init %i32 = call %bound_method.loc29_33.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc29_33.6: init %i32 = converted %int_2, %int.convert_checked.loc29_33.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc29_33.7: ref %i32 = class_element_access %.loc29_33.3, element1 -// CHECK:STDOUT: %.loc29_33.8: init %i32 = initialize_from %.loc29_33.6 to %.loc29_33.7 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc29_33.9: init %Class = class_init (%.loc29_33.5, %.loc29_33.8), %.loc29_33.3 [concrete = constants.%Class.val] -// CHECK:STDOUT: %.loc29_33.10: ref %Class = temporary %.loc29_33.3, %.loc29_33.9 -// CHECK:STDOUT: %.loc29_35.1: ref %Class = converted %.loc29_33.1, %.loc29_33.10 -// CHECK:STDOUT: %.loc29_35.2: %Class = bind_value %.loc29_35.1 -// CHECK:STDOUT: assign %c.var, -// CHECK:STDOUT: %Class.ref.loc29_10: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %c: ref %Class = bind_name c, %c.var -// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %c.ref -// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.ref(%addr) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index 331c4be7d117..a29af267c411 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -41,120 +40,3 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDERR: b.a.F(); } - -// CHECK:STDOUT: --- fail_memaccess_category.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %A: type = class_type @A [concrete] -// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete] -// CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete] -// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete] -// CHECK:STDOUT: %F.type.649: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.485: %F.type.649 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %B: type = class_type @B [concrete] -// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete] -// CHECK:STDOUT: %struct_type.a.72c: type = struct_type {.a: %A} [concrete] -// CHECK:STDOUT: %complete_type.2b9: = complete_type_witness %struct_type.a.72c [concrete] -// CHECK:STDOUT: %pattern_type.c19: type = pattern_type %struct_type.a.72c [concrete] -// CHECK:STDOUT: %pattern_type.049: type = pattern_type %B [concrete] -// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {} -// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] { -// CHECK:STDOUT: %s.patt: %pattern_type.c19 = binding_pattern s [concrete] -// CHECK:STDOUT: %s.param_patt: %pattern_type.c19 = value_param_pattern %s.patt, call_param0 [concrete] -// CHECK:STDOUT: %b.patt: %pattern_type.049 = binding_pattern b [concrete] -// CHECK:STDOUT: %b.param_patt: %pattern_type.049 = value_param_pattern %b.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %s.param: %struct_type.a.72c = value_param call_param0 -// CHECK:STDOUT: %.loc22: type = splice_block %struct_type.a [concrete = constants.%struct_type.a.72c] { -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %A} [concrete = constants.%struct_type.a.72c] -// CHECK:STDOUT: } -// CHECK:STDOUT: %s: %struct_type.a.72c = bind_name s, %s.param -// CHECK:STDOUT: %b.param: %B = value_param call_param1 -// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %b: %B = bind_name b, %b.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A { -// CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.1 [concrete = constants.%F.485] { -// CHECK:STDOUT: %self.patt: %pattern_type.5f8 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.5f8 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc15_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %ptr.6db = value_param call_param0 -// CHECK:STDOUT: %.loc15_20: type = splice_block %ptr [concrete = constants.%ptr.6db] { -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %ptr: type = ptr_type %A.ref [concrete = constants.%ptr.6db] -// CHECK:STDOUT: } -// CHECK:STDOUT: %self: %ptr.6db = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A -// CHECK:STDOUT: .A = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B { -// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %.loc19: %B.elem = field_decl a, element0 [concrete] -// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %A} [concrete = constants.%struct_type.a.72c] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.2b9] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B -// CHECK:STDOUT: .A = -// CHECK:STDOUT: .a = %.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1(%self.param: %ptr.6db); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%s.param: %struct_type.a.72c, %b.param: %B) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %s.ref: %struct_type.a.72c = name_ref s, %s -// CHECK:STDOUT: %.loc31_4.1: %A = struct_access %s.ref, element0 -// CHECK:STDOUT: %F.ref.loc31: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] -// CHECK:STDOUT: %F.bound.loc31: = bound_method %.loc31_4.1, %F.ref.loc31 -// CHECK:STDOUT: %.loc31_4.2: ref %A = temporary_storage -// CHECK:STDOUT: %addr.loc31: %ptr.6db = addr_of %.loc31_4.2 -// CHECK:STDOUT: %F.call.loc31: init %empty_tuple.type = call %F.bound.loc31(%addr.loc31) -// CHECK:STDOUT: %b.ref: %B = name_ref b, %b -// CHECK:STDOUT: %a.ref: %B.elem = name_ref a, @B.%.loc19 [concrete = @B.%.loc19] -// CHECK:STDOUT: %.loc42_4.1: ref %A = class_element_access %b.ref, element0 -// CHECK:STDOUT: %.loc42_4.2: %A = bind_value %.loc42_4.1 -// CHECK:STDOUT: %F.ref.loc42: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485] -// CHECK:STDOUT: %F.bound.loc42: = bound_method %.loc42_4.2, %F.ref.loc42 -// CHECK:STDOUT: %.loc42_4.3: ref %A = temporary_storage -// CHECK:STDOUT: %addr.loc42: %ptr.6db = addr_of %.loc42_4.3 -// CHECK:STDOUT: %F.call.loc42: init %empty_tuple.type = call %F.bound.loc42(%addr.loc42) -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index 1b491eaa02ad..e729c6ff03a5 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_member_of_let.carbon diff --git a/toolchain/check/testdata/class/fail_method.carbon b/toolchain/check/testdata/class/fail_method.carbon index 9040ed5ebee7..5d0a72580100 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -49,97 +48,3 @@ fn F(c: Class) { // CHECK:STDERR: A(); } - -// CHECK:STDOUT: --- fail_method.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %NoSelf.type: type = fn_type @NoSelf [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %NoSelf: %NoSelf.type = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Class [concrete] -// CHECK:STDOUT: %WithSelf.type: type = fn_type @WithSelf [concrete] -// CHECK:STDOUT: %WithSelf: %WithSelf.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .A = %A -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %Class.ref: type = name_ref Class, %Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %WithSelf.ref: %WithSelf.type = name_ref WithSelf, @Class.%WithSelf.decl [concrete = constants.%WithSelf] -// CHECK:STDOUT: %A: %WithSelf.type = bind_alias A, @Class.%WithSelf.decl [concrete = constants.%WithSelf] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %c.patt: %pattern_type = binding_pattern c [concrete] -// CHECK:STDOUT: %c.param_patt: %pattern_type = value_param_pattern %c.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %c.param: %Class = value_param call_param0 -// CHECK:STDOUT: %Class.ref.loc21: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %c: %Class = bind_name c, %c.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %NoSelf.decl: %NoSelf.type = fn_decl @NoSelf [concrete = constants.%NoSelf] {} {} -// CHECK:STDOUT: %WithSelf.decl: %WithSelf.type = fn_decl @WithSelf [concrete = constants.%WithSelf] { -// CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %Class = value_param call_param0 -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %self: %Class = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .NoSelf = %NoSelf.decl -// CHECK:STDOUT: .Class = -// CHECK:STDOUT: .WithSelf = %WithSelf.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @NoSelf(); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @WithSelf(%self.param: %Class); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%c.param: %Class) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref.loc22: %Class = name_ref c, %c -// CHECK:STDOUT: %NoSelf.ref.loc22: %NoSelf.type = name_ref NoSelf, @Class.%NoSelf.decl [concrete = constants.%NoSelf] -// CHECK:STDOUT: %NoSelf.call.loc22: init %empty_tuple.type = call %NoSelf.ref.loc22() -// CHECK:STDOUT: %c.ref.loc23: %Class = name_ref c, %c -// CHECK:STDOUT: %WithSelf.ref.loc23: %WithSelf.type = name_ref WithSelf, @Class.%WithSelf.decl [concrete = constants.%WithSelf] -// CHECK:STDOUT: %WithSelf.bound: = bound_method %c.ref.loc23, %WithSelf.ref.loc23 -// CHECK:STDOUT: %WithSelf.call.loc23: init %empty_tuple.type = call %WithSelf.bound(%c.ref.loc23) -// CHECK:STDOUT: %Class.ref.loc25: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %NoSelf.ref.loc25: %NoSelf.type = name_ref NoSelf, @Class.%NoSelf.decl [concrete = constants.%NoSelf] -// CHECK:STDOUT: %NoSelf.call.loc25: init %empty_tuple.type = call %NoSelf.ref.loc25() -// CHECK:STDOUT: %Class.ref.loc33: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %WithSelf.ref.loc33: %WithSelf.type = name_ref WithSelf, @Class.%WithSelf.decl [concrete = constants.%WithSelf] -// CHECK:STDOUT: %WithSelf.call.loc33: init %empty_tuple.type = call %WithSelf.ref.loc33() -// CHECK:STDOUT: %Class.ref.loc41: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %WithSelf.ref.loc41: %WithSelf.type = name_ref WithSelf, @Class.%WithSelf.decl [concrete = constants.%WithSelf] -// CHECK:STDOUT: %c.ref.loc41: %Class = name_ref c, %c -// CHECK:STDOUT: %A.ref: %WithSelf.type = name_ref A, file.%A [concrete = constants.%WithSelf] -// CHECK:STDOUT: %WithSelf.call.loc50: init %empty_tuple.type = call %A.ref() -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_method_modifiers.carbon b/toolchain/check/testdata/class/fail_method_modifiers.carbon index f12645ff1e1f..38c0084daa70 100644 --- a/toolchain/check/testdata/class/fail_method_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_method_modifiers.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -58,129 +57,3 @@ base class BaseClass { // CHECK:STDERR: abstract fn Abstract[self: Self](); } - -// CHECK:STDOUT: --- fail_method_modifiers.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %FinalClass: type = class_type @FinalClass [concrete] -// CHECK:STDOUT: %pattern_type.c62: type = pattern_type %FinalClass [concrete] -// CHECK:STDOUT: %Abstract.type.c3e: type = fn_type @Abstract.1 [concrete] -// CHECK:STDOUT: %Abstract.d21: %Abstract.type.c3e = struct_value () [concrete] -// CHECK:STDOUT: %Virtual.type: type = fn_type @Virtual [concrete] -// CHECK:STDOUT: %Virtual: %Virtual.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %AbstractClass: type = class_type @AbstractClass [concrete] -// CHECK:STDOUT: %pattern_type.8b7: type = pattern_type %AbstractClass [concrete] -// CHECK:STDOUT: %Default.type: type = fn_type @Default [concrete] -// CHECK:STDOUT: %Default: %Default.type = struct_value () [concrete] -// CHECK:STDOUT: %Final.type: type = fn_type @Final [concrete] -// CHECK:STDOUT: %Final: %Final.type = struct_value () [concrete] -// CHECK:STDOUT: %BaseClass: type = class_type @BaseClass [concrete] -// CHECK:STDOUT: %pattern_type.cd0: type = pattern_type %BaseClass [concrete] -// CHECK:STDOUT: %Abstract.type.de1: type = fn_type @Abstract.2 [concrete] -// CHECK:STDOUT: %Abstract.af0: %Abstract.type.de1 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .FinalClass = %FinalClass.decl -// CHECK:STDOUT: .AbstractClass = %AbstractClass.decl -// CHECK:STDOUT: .BaseClass = %BaseClass.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %FinalClass.decl: type = class_decl @FinalClass [concrete = constants.%FinalClass] {} {} -// CHECK:STDOUT: %AbstractClass.decl: type = class_decl @AbstractClass [concrete = constants.%AbstractClass] {} {} -// CHECK:STDOUT: %BaseClass.decl: type = class_decl @BaseClass [concrete = constants.%BaseClass] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @FinalClass { -// CHECK:STDOUT: %Abstract.decl: %Abstract.type.c3e = fn_decl @Abstract.1 [concrete = constants.%Abstract.d21] { -// CHECK:STDOUT: %self.patt: %pattern_type.c62 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.c62 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %FinalClass = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [concrete = constants.%FinalClass] -// CHECK:STDOUT: %self: %FinalClass = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Virtual.decl: %Virtual.type = fn_decl @Virtual [concrete = constants.%Virtual] { -// CHECK:STDOUT: %self.patt: %pattern_type.c62 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.c62 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %FinalClass = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FinalClass [concrete = constants.%FinalClass] -// CHECK:STDOUT: %self: %FinalClass = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%FinalClass -// CHECK:STDOUT: .Abstract = %Abstract.decl -// CHECK:STDOUT: .Virtual = %Virtual.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @AbstractClass { -// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [concrete = constants.%Default] { -// CHECK:STDOUT: %self.patt: %pattern_type.8b7 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.8b7 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %AbstractClass = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [concrete = constants.%AbstractClass] -// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [concrete = constants.%Final] { -// CHECK:STDOUT: %self.patt: %pattern_type.8b7 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.8b7 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %AbstractClass = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractClass [concrete = constants.%AbstractClass] -// CHECK:STDOUT: %self: %AbstractClass = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%AbstractClass -// CHECK:STDOUT: .Default = %Default.decl -// CHECK:STDOUT: .Final = %Final.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @BaseClass { -// CHECK:STDOUT: %Abstract.decl: %Abstract.type.de1 = fn_decl @Abstract.2 [concrete = constants.%Abstract.af0] { -// CHECK:STDOUT: %self.patt: %pattern_type.cd0 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.cd0 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %BaseClass = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%BaseClass [concrete = constants.%BaseClass] -// CHECK:STDOUT: %self: %BaseClass = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%BaseClass -// CHECK:STDOUT: .Abstract = %Abstract.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Abstract.1(%self.param: %FinalClass); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Virtual(%self.param: %FinalClass); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Default(%self.param: %AbstractClass); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Final(%self.param: %AbstractClass); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Abstract.2(%self.param: %BaseClass); -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_method_redefinition.carbon b/toolchain/check/testdata/class/fail_method_redefinition.carbon index 3be78cdcbd91..828a7707c639 100644 --- a/toolchain/check/testdata/class/fail_method_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_method_redefinition.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -22,54 +21,3 @@ class Class { // CHECK:STDERR: fn F() {} } - -// CHECK:STDOUT: --- fail_method_redefinition.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %F.type.f1baa3.1: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %F.1f2582.1: %F.type.f1baa3.1 = struct_value () [concrete] -// CHECK:STDOUT: %F.type.f1baa3.2: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.1f2582.2: %F.type.f1baa3.2 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl.loc15: %F.type.f1baa3.1 = fn_decl @F.1 [concrete = constants.%F.1f2582.1] {} {} -// CHECK:STDOUT: %F.decl.loc23: %F.type.f1baa3.2 = fn_decl @F.2 [concrete = constants.%F.1f2582.2] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl.loc15 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_modifiers.carbon b/toolchain/check/testdata/class/fail_modifiers.carbon index 9dd8cca42afe..9f6a17b13ed9 100644 --- a/toolchain/check/testdata/class/fail_modifiers.carbon +++ b/toolchain/check/testdata/class/fail_modifiers.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -99,151 +98,3 @@ abstract class AbstractWithDefinition { // CHECK:STDERR: fn AbstractWithDefinition.G[self: Self]() { } - -// CHECK:STDOUT: --- fail_modifiers.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %DuplicatePrivate: type = class_type @DuplicatePrivate [concrete] -// CHECK:STDOUT: %AbstractDecl: type = class_type @AbstractDecl [concrete] -// CHECK:STDOUT: %TwoAccess: type = class_type @TwoAccess [concrete] -// CHECK:STDOUT: %BaseDecl: type = class_type @BaseDecl [concrete] -// CHECK:STDOUT: %TwoAbstract: type = class_type @TwoAbstract [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Virtual: type = class_type @Virtual [concrete] -// CHECK:STDOUT: %WrongOrder: type = class_type @WrongOrder [concrete] -// CHECK:STDOUT: %AbstractAndBase: type = class_type @AbstractAndBase [concrete] -// CHECK:STDOUT: %AbstractWithDefinition: type = class_type @AbstractWithDefinition [concrete] -// CHECK:STDOUT: %pattern_type: type = pattern_type %AbstractWithDefinition [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr.454: type = ptr_type [concrete] -// CHECK:STDOUT: %.9a5: = vtable (%F, %G) [concrete] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete] -// CHECK:STDOUT: %complete_type.513: = complete_type_witness %struct_type.vptr [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .DuplicatePrivate [private] = %DuplicatePrivate.decl -// CHECK:STDOUT: .AbstractDecl = %AbstractDecl.decl -// CHECK:STDOUT: .TwoAccess [private] = %TwoAccess.decl -// CHECK:STDOUT: .BaseDecl = %BaseDecl.decl -// CHECK:STDOUT: .TwoAbstract = %TwoAbstract.decl -// CHECK:STDOUT: .Virtual = %Virtual.decl -// CHECK:STDOUT: .WrongOrder = %WrongOrder.decl -// CHECK:STDOUT: .AbstractAndBase = %AbstractAndBase.decl -// CHECK:STDOUT: .AbstractWithDefinition = %AbstractWithDefinition.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %DuplicatePrivate.decl: type = class_decl @DuplicatePrivate [concrete = constants.%DuplicatePrivate] {} {} -// CHECK:STDOUT: %AbstractDecl.decl: type = class_decl @AbstractDecl [concrete = constants.%AbstractDecl] {} {} -// CHECK:STDOUT: %TwoAccess.decl: type = class_decl @TwoAccess [concrete = constants.%TwoAccess] {} {} -// CHECK:STDOUT: %BaseDecl.decl: type = class_decl @BaseDecl [concrete = constants.%BaseDecl] {} {} -// CHECK:STDOUT: %TwoAbstract.decl: type = class_decl @TwoAbstract [concrete = constants.%TwoAbstract] {} {} -// CHECK:STDOUT: %Virtual.decl: type = class_decl @Virtual [concrete = constants.%Virtual] {} {} -// CHECK:STDOUT: %WrongOrder.decl: type = class_decl @WrongOrder [concrete = constants.%WrongOrder] {} {} -// CHECK:STDOUT: %AbstractAndBase.decl: type = class_decl @AbstractAndBase [concrete = constants.%AbstractAndBase] {} {} -// CHECK:STDOUT: %AbstractWithDefinition.decl: type = class_decl @AbstractWithDefinition [concrete = constants.%AbstractWithDefinition] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc100: %AbstractWithDefinition = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc100: type = name_ref Self, constants.%AbstractWithDefinition [concrete = constants.%AbstractWithDefinition] -// CHECK:STDOUT: %self.loc100: %AbstractWithDefinition = bind_name self, %self.param.loc100 -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @DuplicatePrivate; -// CHECK:STDOUT: -// CHECK:STDOUT: class @AbstractDecl; -// CHECK:STDOUT: -// CHECK:STDOUT: class @TwoAccess; -// CHECK:STDOUT: -// CHECK:STDOUT: class @BaseDecl; -// CHECK:STDOUT: -// CHECK:STDOUT: class @TwoAbstract { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%TwoAbstract -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Virtual { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Virtual -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @WrongOrder { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%WrongOrder -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @AbstractAndBase { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%AbstractAndBase -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @AbstractWithDefinition { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %AbstractWithDefinition = value_param call_param0 -// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%AbstractWithDefinition [concrete = constants.%AbstractWithDefinition] -// CHECK:STDOUT: %self: %AbstractWithDefinition = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt: %pattern_type = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc94: %AbstractWithDefinition = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc94: type = name_ref Self, constants.%AbstractWithDefinition [concrete = constants.%AbstractWithDefinition] -// CHECK:STDOUT: %self.loc94: %AbstractWithDefinition = bind_name self, %self.param.loc94 -// CHECK:STDOUT: } -// CHECK:STDOUT: %.loc95: = vtable (%F.decl, %G.decl) [concrete = constants.%.9a5] -// CHECK:STDOUT: %struct_type.vptr: type = struct_type {.: %ptr.454} [concrete = constants.%struct_type.vptr] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.vptr [concrete = constants.%complete_type.513] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%AbstractWithDefinition -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: abstract fn @F(%self.param: %AbstractWithDefinition) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: abstract fn @G(%self.param.loc100: %AbstractWithDefinition) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: 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 6dc4da8dd009..fa96fae07786 100644 --- a/toolchain/check/testdata/class/fail_out_of_line_decl.carbon +++ b/toolchain/check/testdata/class/fail_out_of_line_decl.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -18,46 +17,3 @@ class C {} // CHECK:STDERR: ^ // CHECK:STDERR: fn C.F() {} - -// CHECK:STDOUT: --- fail_out_of_line_decl.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %C: type = class_type @C [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .C = %C.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @C { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .F = file.%F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon index e62aebce6847..ce8e5800f819 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -28,103 +27,3 @@ class Y { // CHECK:STDERR: class A.B {} } - -// CHECK:STDOUT: --- fail_redeclaration_scope.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %A.466: type = class_type @A.1 [concrete] -// CHECK:STDOUT: %X: type = class_type @X [concrete] -// CHECK:STDOUT: %A.197: type = class_type @A.2 [concrete] -// CHECK:STDOUT: %B.d5b: type = class_type @B.1 [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %B.29a: type = class_type @B.2 [concrete] -// CHECK:STDOUT: %Y: type = class_type @Y [concrete] -// CHECK:STDOUT: %B.768: type = class_type @B.3 [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl.loc14 -// CHECK:STDOUT: .X = %X.decl -// CHECK:STDOUT: .Y = %Y.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc14: type = class_decl @A.1 [concrete = constants.%A.466] {} {} -// CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} -// CHECK:STDOUT: %A.decl.loc22: type = class_decl @A.1 [concrete = constants.%A.466] {} {} -// CHECK:STDOUT: %Y.decl: type = class_decl @Y [concrete = constants.%Y] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A.1 { -// CHECK:STDOUT: %B.decl: type = class_decl @B.2 [concrete = constants.%B.29a] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.466 -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @X { -// CHECK:STDOUT: %A.decl: type = class_decl @A.2 [concrete = constants.%A.197] {} {} -// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [concrete = constants.%B.d5b] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%X -// CHECK:STDOUT: .A = %A.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @A.2 { -// CHECK:STDOUT: %B.decl: type = class_decl @B.1 [concrete = constants.%B.d5b] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%A.197 -// CHECK:STDOUT: .B = %B.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B.1 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B.d5b -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B.2; -// CHECK:STDOUT: -// CHECK:STDOUT: class @Y { -// CHECK:STDOUT: %B.decl: type = class_decl @B.3 [concrete = constants.%B.768] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Y -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @B.3 { -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%B.768 -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index 34efd15e1615..78ba3d48acca 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -45,115 +44,3 @@ fn Class.H() {} // CHECK:STDERR: ^~~~~~~~ // CHECK:STDERR: fn Class.I() {} - -// CHECK:STDOUT: --- fail_redefinition.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class.301e72.1: type = class_type @Class.1 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %H.type.91d18a.1: type = fn_type @H.1 [concrete] -// CHECK:STDOUT: %H.d38c33.1: %H.type.91d18a.1 = struct_value () [concrete] -// CHECK:STDOUT: %I.type.2b6c8d.1: type = fn_type @I.1 [concrete] -// CHECK:STDOUT: %I.c9aec9.1: %I.type.2b6c8d.1 = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Class.301e72.2: type = class_type @Class.2 [concrete] -// CHECK:STDOUT: %G.type.621c12.1: type = fn_type @G.1 [concrete] -// CHECK:STDOUT: %G.f0cac0.1: %G.type.621c12.1 = struct_value () [concrete] -// CHECK:STDOUT: %H.type.91d18a.2: type = fn_type @H.2 [concrete] -// CHECK:STDOUT: %H.d38c33.2: %H.type.91d18a.2 = struct_value () [concrete] -// CHECK:STDOUT: %I.type.2b6c8d.2: type = fn_type @I.2 [concrete] -// CHECK:STDOUT: %I.c9aec9.2: %I.type.2b6c8d.2 = struct_value () [concrete] -// CHECK:STDOUT: %G.type.621c12.2: type = fn_type @G.2 [concrete] -// CHECK:STDOUT: %G.f0cac0.2: %G.type.621c12.2 = struct_value () [concrete] -// CHECK:STDOUT: %I.type.2b6c8d.3: type = fn_type @I.3 [concrete] -// CHECK:STDOUT: %I.c9aec9.3: %I.type.2b6c8d.3 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl.loc14 -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl.loc14: type = class_decl @Class.1 [concrete = constants.%Class.301e72.1] {} {} -// CHECK:STDOUT: %Class.decl.loc27: type = class_decl @Class.2 [concrete = constants.%Class.301e72.2] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %G.decl: %G.type.621c12.2 = fn_decl @G.2 [concrete = constants.%G.f0cac0.2] {} {} -// CHECK:STDOUT: %H.decl: %H.type.91d18a.1 = fn_decl @H.1 [concrete = constants.%H.d38c33.1] {} {} -// CHECK:STDOUT: %I.decl: %I.type.2b6c8d.3 = fn_decl @I.3 [concrete = constants.%I.c9aec9.3] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class.1 { -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: %H.decl: %H.type.91d18a.1 = fn_decl @H.1 [concrete = constants.%H.d38c33.1] {} {} -// CHECK:STDOUT: %I.decl: %I.type.2b6c8d.1 = fn_decl @I.1 [concrete = constants.%I.c9aec9.1] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.301e72.1 -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .H = %H.decl -// CHECK:STDOUT: .I = %I.decl -// CHECK:STDOUT: .G = file.%G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class.2 { -// CHECK:STDOUT: %G.decl: %G.type.621c12.1 = fn_decl @G.1 [concrete = constants.%G.f0cac0.1] {} {} -// CHECK:STDOUT: %H.decl: %H.type.91d18a.2 = fn_decl @H.2 [concrete = constants.%H.d38c33.2] {} {} -// CHECK:STDOUT: %I.decl: %I.type.2b6c8d.2 = fn_decl @I.2 [concrete = constants.%I.c9aec9.2] {} {} -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class.301e72.2 -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .H = %H.decl -// CHECK:STDOUT: .I = %I.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @H.1() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @I.1() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G.1(); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @H.2(); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @I.2() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G.2() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @I.3() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index 82e68dc60fb7..c0bda8e9e024 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_scope.carbon diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index a6f53cb44388..8a414e47490c 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -58,148 +57,3 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDERR: ws.F(); } - -// CHECK:STDOUT: --- fail_self.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] -// CHECK:STDOUT: %F.type.f1b: type = fn_type @F.1 [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F.1f2: %F.type.f1b = struct_value () [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %WrongSelf: type = class_type @WrongSelf [concrete] -// CHECK:STDOUT: %F.type.25f: type = fn_type @F.2 [concrete] -// CHECK:STDOUT: %F.3a3: %F.type.25f = struct_value () [concrete] -// CHECK:STDOUT: %pattern_type.381: type = pattern_type %WrongSelf [concrete] -// CHECK:STDOUT: %CallWrongSelf.type: type = fn_type @CallWrongSelf [concrete] -// CHECK:STDOUT: %CallWrongSelf: %CallWrongSelf.type = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .WrongSelf = %WrongSelf.decl -// CHECK:STDOUT: .CallWrongSelf = %CallWrongSelf.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.1 [concrete = constants.%F.1f2] { -// CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc28: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc28: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc28: %Class = bind_name self, %self.param.loc28 -// CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc31: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %return.param.loc31: ref %Class = out_param call_param0 -// CHECK:STDOUT: %return.loc31: ref %Class = return_slot %return.param.loc31 -// CHECK:STDOUT: } -// CHECK:STDOUT: %WrongSelf.decl: type = class_decl @WrongSelf [concrete = constants.%WrongSelf] {} {} -// CHECK:STDOUT: %CallWrongSelf.decl: %CallWrongSelf.type = fn_decl @CallWrongSelf [concrete = constants.%CallWrongSelf] { -// CHECK:STDOUT: %ws.patt: %pattern_type.381 = binding_pattern ws [concrete] -// CHECK:STDOUT: %ws.param_patt: %pattern_type.381 = value_param_pattern %ws.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %ws.param: %WrongSelf = value_param call_param0 -// CHECK:STDOUT: %WrongSelf.ref: type = name_ref WrongSelf, file.%WrongSelf.decl [concrete = constants.%WrongSelf] -// CHECK:STDOUT: %ws: %WrongSelf = bind_name ws, %ws.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %F.decl: %F.type.f1b = fn_decl @F.1 [concrete = constants.%F.1f2] { -// CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc19: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc19: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc19: %Class = bind_name self, %self.param.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %return.param.loc21: ref %Class = out_param call_param0 -// CHECK:STDOUT: %return.loc21: ref %Class = return_slot %return.param.loc21 -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @WrongSelf { -// CHECK:STDOUT: %F.decl: %F.type.25f = fn_decl @F.2 [concrete = constants.%F.3a3] { -// CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: %Class = value_param call_param0 -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %self: %Class = bind_name self, %self.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] -// CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%WrongSelf -// CHECK:STDOUT: .Class = -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.1(%self.param.loc28: %Class) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %return.param.loc31: %Class { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.var_patt: %pattern_type.761 = var_pattern %self.patt [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %self.var: ref %Class = var %self.var_patt -// CHECK:STDOUT: %Self.ref.loc36: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self: ref %Class = bind_name self, %self.var -// CHECK:STDOUT: %self.ref: ref %Class = name_ref self, %self -// CHECK:STDOUT: %.loc41: %Class = bind_value %self.ref -// CHECK:STDOUT: return to %return.loc31 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%self.param: %Class); -// CHECK:STDOUT: -// CHECK:STDOUT: fn @CallWrongSelf(%ws.param: %WrongSelf) { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %ws.ref: %WrongSelf = name_ref ws, %ws -// CHECK:STDOUT: %F.ref: %F.type.25f = name_ref F, @WrongSelf.%F.decl [concrete = constants.%F.3a3] -// CHECK:STDOUT: %F.bound: = bound_method %ws.ref, %F.ref -// CHECK:STDOUT: %.loc59: %Class = converted %ws.ref, [concrete = ] -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %F.bound() -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_self_param.carbon b/toolchain/check/testdata/class/fail_self_param.carbon index a624ea7b0df2..adb054e9def3 100644 --- a/toolchain/check/testdata/class/fail_self_param.carbon +++ b/toolchain/check/testdata/class/fail_self_param.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/fail_self_param.carbon diff --git a/toolchain/check/testdata/class/fail_self_type_member.carbon b/toolchain/check/testdata/class/fail_self_type_member.carbon index c06501bf3347..bcf5a91c4b42 100644 --- a/toolchain/check/testdata/class/fail_self_type_member.carbon +++ b/toolchain/check/testdata/class/fail_self_type_member.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -28,31 +27,3 @@ fn F() -> bool { var c2: Class.Self = c1; return c2.b; } - -// CHECK:STDOUT: --- fail_self_type_member.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete] -// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, bool [concrete] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: bool} [concrete] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool] -// CHECK:STDOUT: %.loc15_10.1: type = value_of_initializer %bool.make_type [concrete = bool] -// CHECK:STDOUT: %.loc15_10.2: type = converted %bool.make_type, %.loc15_10.1 [concrete = bool] -// CHECK:STDOUT: %.loc15_8: %Class.elem = field_decl b, element0 [concrete] -// CHECK:STDOUT: %struct_type.b: type = struct_type {.b: bool} [concrete = constants.%struct_type.b] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [concrete = constants.%complete_type] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .b = %.loc15_8 -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> bool; -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_todo_field_initializer.carbon b/toolchain/check/testdata/class/fail_todo_field_initializer.carbon index 0a29b24b24df..1e9a4aeb7f06 100644 --- a/toolchain/check/testdata/class/fail_todo_field_initializer.carbon +++ b/toolchain/check/testdata/class/fail_todo_field_initializer.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -18,50 +17,3 @@ class Class { // CHECK:STDERR: var field: i32 = 0; } - -// CHECK:STDOUT: --- fail_todo_field_initializer.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete] -// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %i32} [concrete] -// CHECK:STDOUT: %complete_type.d48: = complete_type_witness %struct_type.field [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19: %Class.elem = field_decl field, element0 [concrete] -// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0] -// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %i32} [concrete = constants.%struct_type.field] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [concrete = constants.%complete_type.d48] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .field = %.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index 70fb41996627..4480d63d1841 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -29,86 +28,3 @@ fn G() -> i32 { // CHECK:STDERR: return Class.field; } - -// CHECK:STDOUT: --- fail_unbound_field.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %i32} [concrete] -// CHECK:STDOUT: %complete_type.d48: = complete_type_witness %struct_type.field [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl field, element0 [concrete] -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: %struct_type.field: type = struct_type {.field: %i32} [concrete = constants.%struct_type.field] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.field [concrete = constants.%complete_type.d48] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .field = %.loc15 -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %field.ref: %Class.elem = name_ref field, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G() -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %field.ref: %Class.elem = name_ref field, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index 0eaf0d73b09e..7047123f4d97 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -2,8 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -23,75 +22,3 @@ fn G(c: Class) -> i32 { // CHECK:STDERR: return c.something; } - -// CHECK:STDOUT: --- fail_unknown_member.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Class: type = class_type @Class [concrete] -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %i32 [concrete] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete] -// CHECK:STDOUT: %complete_type.54b: = complete_type_witness %struct_type.n [concrete] -// CHECK:STDOUT: %pattern_type.761: type = pattern_type %Class [concrete] -// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %G.type: type = fn_type @G [concrete] -// CHECK:STDOUT: %G: %G.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl -// CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] -// CHECK:STDOUT: %c.param_patt: %pattern_type.761 = value_param_pattern %c.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %c.param: %Class = value_param call_param0 -// CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %c: %Class = bind_name c, %c.param -// CHECK:STDOUT: %return.param: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl n, element0 [concrete] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete = constants.%struct_type.n] -// CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete = constants.%complete_type.54b] -// CHECK:STDOUT: complete_type_witness = %complete_type -// CHECK:STDOUT: -// CHECK:STDOUT: !members: -// CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .n = %.loc15 -// CHECK:STDOUT: .something = -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%c.param: %Class) -> %i32 { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %c.ref: %Class = name_ref c, %c -// CHECK:STDOUT: %something.ref: = name_ref something, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 5034592efca2..cce103c007db 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -43,17 +44,17 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -69,9 +70,9 @@ fn Run() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -87,20 +88,20 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl j, element0 [concrete] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl k, element1 [concrete] +// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete] +// CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete] // CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [concrete = constants.%struct_type.j.k] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [concrete = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .j = %.loc15 -// CHECK:STDOUT: .k = %.loc16 +// CHECK:STDOUT: .j = %.loc16 +// CHECK:STDOUT: .k = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -112,41 +113,41 @@ fn Run() { // CHECK:STDOUT: %c.var: ref %Class = var %c.var_patt // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %c: ref %Class = bind_name c, %c.var -// CHECK:STDOUT: %c.ref.loc21: ref %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc21: %Class.elem = name_ref j, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: %.loc21_4: ref %i32 = class_element_access %c.ref.loc21, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_7.1: = bound_method %int_1, %impl.elem0.loc21 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc21_7.2: = bound_method %int_1, %specific_fn.loc21 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_7.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_7: init %i32 = converted %int_1, %int.convert_checked.loc21 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %.loc21_4, %.loc21_7 // CHECK:STDOUT: %c.ref.loc22: ref %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc22: %Class.elem = name_ref k, @Class.%.loc16 [concrete = @Class.%.loc16] -// CHECK:STDOUT: %.loc22_4: ref %i32 = class_element_access %c.ref.loc22, element1 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %.loc22_4: ref %i32 = class_element_access %c.ref.loc22, element0 +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_7.1: = bound_method %int_2, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_7.2: = bound_method %int_2, %specific_fn.loc22 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_7.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_2, %int.convert_checked.loc22 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %bound_method.loc22_7.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc22_7.2: = bound_method %int_1, %specific_fn.loc22 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_7.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_7: init %i32 = converted %int_1, %int.convert_checked.loc22 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc22_4, %.loc22_7 +// CHECK:STDOUT: %c.ref.loc23: ref %Class = name_ref c, %c +// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %.loc23_4: ref %i32 = class_element_access %c.ref.loc23, element1 +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc23_7.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc23_7.2: = bound_method %int_2, %specific_fn.loc23 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_7.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_7: init %i32 = converted %int_2, %int.convert_checked.loc23 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: assign %.loc23_4, %.loc23_7 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %cj.patt: %pattern_type.7ce = binding_pattern cj [concrete] // CHECK:STDOUT: %cj.var_patt: %pattern_type.7ce = var_pattern %cj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %cj.var: ref %i32 = var %cj.var_patt -// CHECK:STDOUT: %c.ref.loc23: ref %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc23: %Class.elem = name_ref j, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: %.loc23_18.1: ref %i32 = class_element_access %c.ref.loc23, element0 -// CHECK:STDOUT: %.loc23_18.2: %i32 = bind_value %.loc23_18.1 -// CHECK:STDOUT: assign %cj.var, %.loc23_18.2 -// CHECK:STDOUT: %.loc23_11: type = splice_block %i32.loc23 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %c.ref.loc24: ref %Class = name_ref c, %c +// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %.loc24_18.1: ref %i32 = class_element_access %c.ref.loc24, element0 +// CHECK:STDOUT: %.loc24_18.2: %i32 = bind_value %.loc24_18.1 +// CHECK:STDOUT: assign %cj.var, %.loc24_18.2 +// CHECK:STDOUT: %.loc24_11: type = splice_block %i32.loc24 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %cj: ref %i32 = bind_name cj, %cj.var // CHECK:STDOUT: name_binding_decl { @@ -154,14 +155,14 @@ fn Run() { // CHECK:STDOUT: %ck.var_patt: %pattern_type.7ce = var_pattern %ck.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %ck.var: ref %i32 = var %ck.var_patt -// CHECK:STDOUT: %c.ref.loc24: ref %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc24: %Class.elem = name_ref k, @Class.%.loc16 [concrete = @Class.%.loc16] -// CHECK:STDOUT: %.loc24_18.1: ref %i32 = class_element_access %c.ref.loc24, element1 -// CHECK:STDOUT: %.loc24_18.2: %i32 = bind_value %.loc24_18.1 -// CHECK:STDOUT: assign %ck.var, %.loc24_18.2 -// CHECK:STDOUT: %.loc24_11: type = splice_block %i32.loc24 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %c.ref.loc25: ref %Class = name_ref c, %c +// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %.loc25_18.1: ref %i32 = class_element_access %c.ref.loc25, element1 +// CHECK:STDOUT: %.loc25_18.2: %i32 = bind_value %.loc25_18.1 +// CHECK:STDOUT: assign %ck.var, %.loc25_18.2 +// CHECK:STDOUT: %.loc25_11: type = splice_block %i32.loc25 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %ck: ref %i32 = bind_name ck, %ck.var // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index 47597bff6519..15522d0ad431 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -44,17 +45,17 @@ fn Test() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] // CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete] @@ -70,9 +71,9 @@ fn Test() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -88,20 +89,20 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl j, element0 [concrete] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl k, element1 [concrete] +// CHECK:STDOUT: %.loc16: %Class.elem = field_decl j, element0 [concrete] +// CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc17: %Class.elem = field_decl k, element1 [concrete] // CHECK:STDOUT: %struct_type.j.k: type = struct_type {.j: %i32, .k: %i32} [concrete = constants.%struct_type.j.k] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.j.k [concrete = constants.%complete_type.cf7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .j = %.loc15 -// CHECK:STDOUT: .k = %.loc16 +// CHECK:STDOUT: .j = %.loc16 +// CHECK:STDOUT: .k = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Test() { @@ -111,50 +112,50 @@ fn Test() { // CHECK:STDOUT: %cv.var_patt: %pattern_type.761 = var_pattern %cv.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %cv.var: ref %Class = var %cv.var_patt -// CHECK:STDOUT: %Class.ref.loc20: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %Class.ref.loc21: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %cv: ref %Class = bind_name cv, %cv.var -// CHECK:STDOUT: %cv.ref.loc21: ref %Class = name_ref cv, %cv -// CHECK:STDOUT: %j.ref.loc21: %Class.elem = name_ref j, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: %.loc21_5: ref %i32 = class_element_access %cv.ref.loc21, element0 -// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %impl.elem0.loc21: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc21_8.1: = bound_method %int_1, %impl.elem0.loc21 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc21: = specific_function %impl.elem0.loc21, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc21_8.2: = bound_method %int_1, %specific_fn.loc21 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc21: init %i32 = call %bound_method.loc21_8.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc21_8: init %i32 = converted %int_1, %int.convert_checked.loc21 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %.loc21_5, %.loc21_8 // CHECK:STDOUT: %cv.ref.loc22: ref %Class = name_ref cv, %cv -// CHECK:STDOUT: %k.ref.loc22: %Class.elem = name_ref k, @Class.%.loc16 [concrete = @Class.%.loc16] -// CHECK:STDOUT: %.loc22_5: ref %i32 = class_element_access %cv.ref.loc22, element1 -// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %j.ref.loc22: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %.loc22_5: ref %i32 = class_element_access %cv.ref.loc22, element0 +// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0.loc22: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_2, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc22_8.2: = bound_method %int_2, %specific_fn.loc22 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_8.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_2, %int.convert_checked.loc22 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %bound_method.loc22_8.1: = bound_method %int_1, %impl.elem0.loc22 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc22: = specific_function %impl.elem0.loc22, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc22_8.2: = bound_method %int_1, %specific_fn.loc22 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked.loc22: init %i32 = call %bound_method.loc22_8.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc22_8: init %i32 = converted %int_1, %int.convert_checked.loc22 [concrete = constants.%int_1.5d2] // CHECK:STDOUT: assign %.loc22_5, %.loc22_8 +// CHECK:STDOUT: %cv.ref.loc23: ref %Class = name_ref cv, %cv +// CHECK:STDOUT: %k.ref.loc23: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %.loc23_5: ref %i32 = class_element_access %cv.ref.loc23, element1 +// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] +// CHECK:STDOUT: %impl.elem0.loc23: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc23_8.1: = bound_method %int_2, %impl.elem0.loc23 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc23: = specific_function %impl.elem0.loc23, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc23_8.2: = bound_method %int_2, %specific_fn.loc23 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked.loc23: init %i32 = call %bound_method.loc23_8.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc23_8: init %i32 = converted %int_2, %int.convert_checked.loc23 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: assign %.loc23_5, %.loc23_8 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %cv.ref.loc23: ref %Class = name_ref cv, %cv -// CHECK:STDOUT: %Class.ref.loc23: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %.loc23: %Class = bind_value %cv.ref.loc23 -// CHECK:STDOUT: %c: %Class = bind_name c, %.loc23 +// CHECK:STDOUT: %cv.ref.loc24: ref %Class = name_ref cv, %cv +// CHECK:STDOUT: %Class.ref.loc24: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %.loc24: %Class = bind_value %cv.ref.loc24 +// CHECK:STDOUT: %c: %Class = bind_name c, %.loc24 // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %cj.patt: %pattern_type.7ce = binding_pattern cj [concrete] // CHECK:STDOUT: %cj.var_patt: %pattern_type.7ce = var_pattern %cj.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %cj.var: ref %i32 = var %cj.var_patt -// CHECK:STDOUT: %c.ref.loc24: %Class = name_ref c, %c -// CHECK:STDOUT: %j.ref.loc24: %Class.elem = name_ref j, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: %.loc24_18.1: ref %i32 = class_element_access %c.ref.loc24, element0 -// CHECK:STDOUT: %.loc24_18.2: %i32 = bind_value %.loc24_18.1 -// CHECK:STDOUT: assign %cj.var, %.loc24_18.2 -// CHECK:STDOUT: %.loc24_11: type = splice_block %i32.loc24 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %c.ref.loc25: %Class = name_ref c, %c +// CHECK:STDOUT: %j.ref.loc25: %Class.elem = name_ref j, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %.loc25_18.1: ref %i32 = class_element_access %c.ref.loc25, element0 +// CHECK:STDOUT: %.loc25_18.2: %i32 = bind_value %.loc25_18.1 +// CHECK:STDOUT: assign %cj.var, %.loc25_18.2 +// CHECK:STDOUT: %.loc25_11: type = splice_block %i32.loc25 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %cj: ref %i32 = bind_name cj, %cj.var // CHECK:STDOUT: name_binding_decl { @@ -162,14 +163,14 @@ fn Test() { // CHECK:STDOUT: %ck.var_patt: %pattern_type.7ce = var_pattern %ck.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %ck.var: ref %i32 = var %ck.var_patt -// CHECK:STDOUT: %c.ref.loc25: %Class = name_ref c, %c -// CHECK:STDOUT: %k.ref.loc25: %Class.elem = name_ref k, @Class.%.loc16 [concrete = @Class.%.loc16] -// CHECK:STDOUT: %.loc25_18.1: ref %i32 = class_element_access %c.ref.loc25, element1 -// CHECK:STDOUT: %.loc25_18.2: %i32 = bind_value %.loc25_18.1 -// CHECK:STDOUT: assign %ck.var, %.loc25_18.2 -// CHECK:STDOUT: %.loc25_11: type = splice_block %i32.loc25 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %c.ref.loc26: %Class = name_ref c, %c +// CHECK:STDOUT: %k.ref.loc26: %Class.elem = name_ref k, @Class.%.loc17 [concrete = @Class.%.loc17] +// CHECK:STDOUT: %.loc26_18.1: ref %i32 = class_element_access %c.ref.loc26, element1 +// CHECK:STDOUT: %.loc26_18.2: %i32 = bind_value %.loc26_18.1 +// CHECK:STDOUT: assign %ck.var, %.loc26_18.2 +// CHECK:STDOUT: %.loc26_11: type = splice_block %i32.loc26 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %ck: ref %i32 = bind_name ck, %ck.var // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/forward_declared.carbon b/toolchain/check/testdata/class/forward_declared.carbon index 9cdb108507e8..ff4b52a32c8e 100644 --- a/toolchain/check/testdata/class/forward_declared.carbon +++ b/toolchain/check/testdata/class/forward_declared.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -46,12 +47,12 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: %return.patt: %pattern_type = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Class.ref.loc16_20: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc16_25: type = ptr_type %Class.ref.loc16_20 [concrete = constants.%ptr] +// CHECK:STDOUT: %Class.ref.loc17_20: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc17_25: type = ptr_type %Class.ref.loc17_20 [concrete = constants.%ptr] // CHECK:STDOUT: %p.param: %ptr = value_param call_param0 -// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16_14 [concrete = constants.%ptr] { -// CHECK:STDOUT: %Class.ref.loc16_9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc16_14: type = ptr_type %Class.ref.loc16_9 [concrete = constants.%ptr] +// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17_14 [concrete = constants.%ptr] { +// CHECK:STDOUT: %Class.ref.loc17_9: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc17_14: type = ptr_type %Class.ref.loc17_9 [concrete = constants.%ptr] // CHECK:STDOUT: } // CHECK:STDOUT: %p: %ptr = bind_name p, %p.param // CHECK:STDOUT: %return.param: ref %ptr = out_param call_param1 diff --git a/toolchain/check/testdata/class/generic.carbon b/toolchain/check/testdata/class/generic.carbon index 1857d83040b9..2bb7c8dfdeac 100644 --- a/toolchain/check/testdata/class/generic.carbon +++ b/toolchain/check/testdata/class/generic.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // 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 0011d4dbd13b..4246d561230f 100644 --- a/toolchain/check/testdata/class/generic/member_out_of_line.carbon +++ b/toolchain/check/testdata/class/generic/member_out_of_line.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/generic/member_type.carbon b/toolchain/check/testdata/class/generic/member_type.carbon index d09aa5dd4f63..9764929dab99 100644 --- a/toolchain/check/testdata/class/generic/member_type.carbon +++ b/toolchain/check/testdata/class/generic/member_type.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -58,19 +59,19 @@ fn Test() -> i32 { // CHECK:STDOUT: --- class.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [concrete] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [concrete] -// CHECK:STDOUT: %Outer.9d6: type = class_type @Outer, @Outer(%T.8b3) [symbolic] -// CHECK:STDOUT: %Inner.51b: type = class_type @Inner, @Inner(%T.8b3) [symbolic] -// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T.8b3 [symbolic] -// CHECK:STDOUT: %Inner.elem.310: type = unbound_element_type %Inner.51b, %T.8b3 [symbolic] -// CHECK:STDOUT: %struct_type.n.848: type = struct_type {.n: %T.8b3} [symbolic] +// CHECK:STDOUT: %Outer.9d6: type = class_type @Outer, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Inner.51b: type = class_type @Inner, @Inner(%T) [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] +// CHECK:STDOUT: %Inner.elem.310: type = unbound_element_type %Inner.51b, %T [symbolic] +// CHECK:STDOUT: %struct_type.n.848: type = struct_type {.n: %T} [symbolic] // CHECK:STDOUT: %complete_type.84b: = complete_type_witness %struct_type.n.848 [symbolic] -// CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T.8b3 [symbolic] +// CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] // CHECK:STDOUT: %pattern_type.253: type = pattern_type %Inner.51b [symbolic] -// CHECK:STDOUT: %F.type.2ee: type = fn_type @F, @Outer(%T.8b3) [symbolic] +// CHECK:STDOUT: %F.type.2ee: type = fn_type @F, @Outer(%T) [symbolic] // CHECK:STDOUT: %F.384: %F.type.2ee = struct_value () [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] @@ -98,16 +99,16 @@ fn Test() -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } @@ -119,9 +120,9 @@ fn Test() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -135,7 +136,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Outer.decl: %Outer.type = class_decl @Outer [concrete = constants.%Outer.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [concrete = constants.%Test] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -149,7 +150,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Outer(%T.loc4_13.1: type) { -// CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T.loc4_13.2) [symbolic = %Inner (constants.%Inner.51b)] @@ -164,11 +165,11 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.patt: @F.%pattern_type.loc9_14 (%pattern_type.253) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc9_14 (%pattern_type.253) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc9_17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T.8b3) [symbolic = %Inner (constants.%Inner.51b)] +// CHECK:STDOUT: %.loc9_17: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner (constants.%Inner.51b)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc9_17 [symbolic = %Inner (constants.%Inner.51b)] -// CHECK:STDOUT: %n.param: @F.%T (%T.8b3) = value_param call_param0 -// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T.8b3)] -// CHECK:STDOUT: %n: @F.%T (%T.8b3) = bind_name n, %n.param +// CHECK:STDOUT: %n.param: @F.%T (%T) = value_param call_param0 +// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %n: @F.%T (%T) = bind_name n, %n.param // CHECK:STDOUT: %return.param: ref @F.%Inner (%Inner.51b) = out_param call_param1 // CHECK:STDOUT: %return: ref @F.%Inner (%Inner.51b) = return_slot %return.param // CHECK:STDOUT: } @@ -186,17 +187,17 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: generic class @Inner(@Outer.%T.loc4_13.1: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.51b)] // CHECK:STDOUT: %Inner.elem: type = unbound_element_type %Inner, %T [symbolic = %Inner.elem (constants.%Inner.elem.310)] -// CHECK:STDOUT: %struct_type.n.loc7_3.2: type = struct_type {.n: @Inner.%T (%T.8b3)} [symbolic = %struct_type.n.loc7_3.2 (constants.%struct_type.n.848)] +// CHECK:STDOUT: %struct_type.n.loc7_3.2: type = struct_type {.n: @Inner.%T (%T)} [symbolic = %struct_type.n.loc7_3.2 (constants.%struct_type.n.848)] // CHECK:STDOUT: %complete_type.loc7_3.2: = complete_type_witness %struct_type.n.loc7_3.2 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.84b)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %.loc6: @Inner.%Inner.elem (%Inner.elem.310) = field_decl n, element0 [concrete] -// CHECK:STDOUT: %struct_type.n.loc7_3.1: type = struct_type {.n: %T.8b3} [symbolic = %struct_type.n.loc7_3.2 (constants.%struct_type.n.848)] +// CHECK:STDOUT: %struct_type.n.loc7_3.1: type = struct_type {.n: %T} [symbolic = %struct_type.n.loc7_3.2 (constants.%struct_type.n.848)] // CHECK:STDOUT: %complete_type.loc7_3.1: = complete_type_witness %struct_type.n.loc7_3.1 [symbolic = %complete_type.loc7_3.2 (constants.%complete_type.84b)] // CHECK:STDOUT: complete_type_witness = %complete_type.loc7_3.1 // CHECK:STDOUT: @@ -208,7 +209,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F(@Outer.%T.loc4_13.1: type) { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type.loc9_8: type = pattern_type %T [symbolic = %pattern_type.loc9_8 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: %Inner: type = class_type @Inner, @Inner(%T) [symbolic = %Inner (constants.%Inner.51b)] // CHECK:STDOUT: %pattern_type.loc9_14: type = pattern_type %Inner [symbolic = %pattern_type.loc9_14 (constants.%pattern_type.253)] @@ -216,14 +217,14 @@ fn Test() -> i32 { // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete.loc9_14: = require_complete_type %Inner [symbolic = %require_complete.loc9_14 (constants.%require_complete.561)] // CHECK:STDOUT: %require_complete.loc9_9: = require_complete_type %T [symbolic = %require_complete.loc9_9 (constants.%require_complete.4ae)] -// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @F.%T (%T.8b3)} [symbolic = %struct_type.n (constants.%struct_type.n.848)] +// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @F.%T (%T)} [symbolic = %struct_type.n (constants.%struct_type.n.848)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%n.param: @F.%T (%T.8b3)) -> %return.param: @F.%Inner (%Inner.51b) { +// CHECK:STDOUT: fn(%n.param: @F.%T (%T)) -> %return.param: @F.%Inner (%Inner.51b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %n.ref: @F.%T (%T.8b3) = name_ref n, %n +// CHECK:STDOUT: %n.ref: @F.%T (%T) = name_ref n, %n // CHECK:STDOUT: %.loc9_39.1: @F.%struct_type.n (%struct_type.n.848) = struct_literal (%n.ref) -// CHECK:STDOUT: %.loc9_39.2: ref @F.%T (%T.8b3) = class_element_access %return, element0 -// CHECK:STDOUT: %.loc9_39.3: init @F.%T (%T.8b3) = initialize_from %n.ref to %.loc9_39.2 +// CHECK:STDOUT: %.loc9_39.2: ref @F.%T (%T) = class_element_access %return, element0 +// CHECK:STDOUT: %.loc9_39.3: init @F.%T (%T) = initialize_from %n.ref to %.loc9_39.2 // CHECK:STDOUT: %.loc9_39.4: init @F.%Inner (%Inner.51b) = class_init (%.loc9_39.3), %return // CHECK:STDOUT: %.loc9_40: init @F.%Inner (%Inner.51b) = converted %.loc9_39.1, %.loc9_39.4 // CHECK:STDOUT: return %.loc9_40 to %return @@ -248,7 +249,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %.loc13_3: ref %Inner.721 = splice_block %c.var {} // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc13_42.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc13_42.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc13_42.2(%int_1) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc13_42.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] @@ -271,8 +272,8 @@ fn Test() -> i32 { // CHECK:STDOUT: return %.loc14_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Outer(constants.%T.8b3) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @Outer(constants.%T) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner => constants.%Inner.51b @@ -280,9 +281,9 @@ fn Test() -> i32 { // CHECK:STDOUT: %F => constants.%F.384 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%T.8b3) { +// CHECK:STDOUT: specific @Inner(constants.%T) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Inner => constants.%Inner.51b // CHECK:STDOUT: %Inner.elem => constants.%Inner.elem.310 @@ -290,8 +291,8 @@ fn Test() -> i32 { // CHECK:STDOUT: %complete_type.loc7_3.2 => constants.%complete_type.84b // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T.8b3) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %pattern_type.loc9_8 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: %Inner => constants.%Inner.51b // CHECK:STDOUT: %pattern_type.loc9_14 => constants.%pattern_type.253 @@ -331,36 +332,36 @@ fn Test() -> i32 { // CHECK:STDOUT: --- interface.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %Outer.type: type = generic_class_type @Outer [concrete] // CHECK:STDOUT: %Outer.generic: %Outer.type = struct_value () [concrete] -// CHECK:STDOUT: %Outer.9d6: type = class_type @Outer, @Outer(%T.8b3) [symbolic] -// CHECK:STDOUT: %Inner.type.392: type = facet_type <@Inner, @Inner(%T.8b3)> [symbolic] +// CHECK:STDOUT: %Outer.9d6: type = class_type @Outer, @Outer(%T) [symbolic] +// CHECK:STDOUT: %Inner.type.392: type = facet_type <@Inner, @Inner(%T)> [symbolic] // CHECK:STDOUT: %Self.770: %Inner.type.392 = bind_symbolic_name Self, 1 [symbolic] // CHECK:STDOUT: %Self.as_type.ea1: type = facet_access_type %Self.770 [symbolic] // CHECK:STDOUT: %pattern_type.81e: type = pattern_type %Self.as_type.ea1 [symbolic] -// CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T.8b3 [symbolic] -// CHECK:STDOUT: %F.type.0f3: type = fn_type @F.1, @Inner(%T.8b3) [symbolic] +// CHECK:STDOUT: %pattern_type.7dcd0a.1: type = pattern_type %T [symbolic] +// CHECK:STDOUT: %F.type.0f3: type = fn_type @F.1, @Inner(%T) [symbolic] // CHECK:STDOUT: %F.db9: %F.type.0f3 = struct_value () [symbolic] -// CHECK:STDOUT: %Inner.assoc_type.115: type = assoc_entity_type @Inner, @Inner(%T.8b3) [symbolic] +// CHECK:STDOUT: %Inner.assoc_type.115: type = assoc_entity_type @Inner, @Inner(%T) [symbolic] // CHECK:STDOUT: %assoc0.95e: %Inner.assoc_type.115 = assoc_entity element0, @Inner.%F.decl [symbolic] -// CHECK:STDOUT: %C.390: type = class_type @C, @C(%T.8b3) [symbolic] +// CHECK:STDOUT: %C.390: type = class_type @C, @C(%T) [symbolic] // CHECK:STDOUT: %require_complete.8fa: = require_complete_type %Inner.type.392 [symbolic] -// CHECK:STDOUT: %Inner.impl_witness.b15: = impl_witness @C.%Inner.impl_witness_table, @impl.eed(%T.8b3) [symbolic] +// CHECK:STDOUT: %Inner.impl_witness.b15: = impl_witness @C.%Inner.impl_witness_table, @impl.eed(%T) [symbolic] // CHECK:STDOUT: %pattern_type.e59: type = pattern_type %C.390 [symbolic] -// CHECK:STDOUT: %F.type.77b: type = fn_type @F.2, @impl.eed(%T.8b3) [symbolic] +// CHECK:STDOUT: %F.type.77b: type = fn_type @F.2, @impl.eed(%T) [symbolic] // CHECK:STDOUT: %F.ed9: %F.type.77b = struct_value () [symbolic] // CHECK:STDOUT: %Inner.facet.9a3: %Inner.type.392 = facet_value %C.390, (%Inner.impl_witness.b15) [symbolic] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type.357: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T.8b3 [symbolic] +// CHECK:STDOUT: %require_complete.4ae: = require_complete_type %T [symbolic] // CHECK:STDOUT: %require_complete.930: = require_complete_type %C.390 [symbolic] -// CHECK:STDOUT: %Inner.lookup_impl_witness: = lookup_impl_witness %C.390, @Inner, @Inner(%T.8b3) [symbolic] +// CHECK:STDOUT: %Inner.lookup_impl_witness: = lookup_impl_witness %C.390, @Inner, @Inner(%T) [symbolic] // CHECK:STDOUT: %Inner.facet.c18: %Inner.type.392 = facet_value %C.390, (%Inner.lookup_impl_witness) [symbolic] // CHECK:STDOUT: %.692: type = fn_type_with_self_type %F.type.0f3, %Inner.facet.c18 [symbolic] // CHECK:STDOUT: %impl.elem0.681: %.692 = impl_witness_access %Inner.lookup_impl_witness, element0 [symbolic] -// CHECK:STDOUT: %specific_impl_fn.d7c: = specific_impl_function %impl.elem0.681, @F.1(%T.8b3, %Inner.facet.c18) [symbolic] +// CHECK:STDOUT: %specific_impl_fn: = specific_impl_function %impl.elem0.681, @F.1(%T, %Inner.facet.c18) [symbolic] // CHECK:STDOUT: %D: type = class_type @D [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -401,7 +402,7 @@ fn Test() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -415,7 +416,7 @@ fn Test() -> i32 { // CHECK:STDOUT: %Outer.decl: %Outer.type = class_decl @Outer [concrete = constants.%Outer.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [concrete = constants.%Test] { @@ -431,7 +432,7 @@ fn Test() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: generic interface @Inner(@Outer.%T.loc4_13.1: type) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Self.2: @Inner.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.770)] // CHECK:STDOUT: %F.type: type = fn_type @F.1, @Inner(%T) [symbolic = %F.type (constants.%F.type.0f3)] @@ -447,17 +448,17 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.patt: @F.1.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.1.%pattern_type.loc6_24 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc6_16.1 (%Self.as_type.ea1) = value_param call_param0 // CHECK:STDOUT: %.loc6_16.1: type = splice_block %.loc6_16.3 [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] { -// CHECK:STDOUT: %.loc6_16.2: @F.1.%Inner.type (%Inner.type.392) = specific_constant @Inner.%Self.1, @Inner(constants.%T.8b3) [symbolic = %Self (constants.%Self.770)] +// CHECK:STDOUT: %.loc6_16.2: @F.1.%Inner.type (%Inner.type.392) = specific_constant @Inner.%Self.1, @Inner(constants.%T) [symbolic = %Self (constants.%Self.770)] // CHECK:STDOUT: %Self.ref: @F.1.%Inner.type (%Inner.type.392) = name_ref Self, %.loc6_16.2 [symbolic = %Self (constants.%Self.770)] // CHECK:STDOUT: %Self.as_type.loc6_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] // CHECK:STDOUT: %.loc6_16.3: type = converted %Self.ref, %Self.as_type.loc6_16.2 [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] // CHECK:STDOUT: } // CHECK:STDOUT: %self: @F.1.%Self.as_type.loc6_16.1 (%Self.as_type.ea1) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.1.%T (%T.8b3) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.1.%T (%T.8b3) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @F.1.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @F.1.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0.loc6_28.1: @Inner.%Inner.assoc_type (%Inner.assoc_type.115) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc6_28.2 (constants.%assoc0.95e)] // CHECK:STDOUT: @@ -470,7 +471,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic impl @impl.eed(@Outer.%T.loc4_13.1: type) { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %require_complete: = require_complete_type %Inner.type [symbolic = %require_complete (constants.%require_complete.8fa)] @@ -487,15 +488,15 @@ fn Test() -> i32 { // CHECK:STDOUT: %return.patt: @F.2.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.2.%pattern_type.loc11_23 (%pattern_type.7dcd0a.1) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T.ref: type = name_ref T, @Outer.%T.loc4_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %self.param: @F.2.%C (%C.390) = value_param call_param0 // CHECK:STDOUT: %.loc11_18.1: type = splice_block %C.ref [symbolic = %C (constants.%C.390)] { -// CHECK:STDOUT: %.loc11_18.2: type = specific_constant @Outer.%C.decl, @Outer(constants.%T.8b3) [symbolic = %C (constants.%C.390)] +// CHECK:STDOUT: %.loc11_18.2: type = specific_constant @Outer.%C.decl, @Outer(constants.%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %C.ref: type = name_ref C, %.loc11_18.2 [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: } // CHECK:STDOUT: %self: @F.2.%C (%C.390) = bind_name self, %self.param -// CHECK:STDOUT: %return.param: ref @F.2.%T (%T.8b3) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.2.%T (%T.8b3) = return_slot %return.param +// CHECK:STDOUT: %return.param: ref @F.2.%T (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @F.2.%T (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !members: @@ -530,7 +531,7 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic class @Outer(%T.loc4_13.1: type) { -// CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_13.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T.loc4_13.2)> [symbolic = %Inner.type (constants.%Inner.type.392)] @@ -557,11 +558,11 @@ fn Test() -> i32 { // CHECK:STDOUT: class { // CHECK:STDOUT: impl_decl @impl.eed [concrete] {} { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.390 [symbolic = %C (constants.%C.390)] -// CHECK:STDOUT: %.loc10: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T.8b3) [symbolic = %Inner.type (constants.%Inner.type.392)] +// CHECK:STDOUT: %.loc10: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc10 [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: } // CHECK:STDOUT: %Inner.impl_witness_table = impl_witness_table (@impl.eed.%F.decl), @impl.eed [concrete] -// CHECK:STDOUT: %Inner.impl_witness: = impl_witness %Inner.impl_witness_table, @impl.eed(constants.%T.8b3) [symbolic = @impl.eed.%Inner.impl_witness (constants.%Inner.impl_witness.b15)] +// CHECK:STDOUT: %Inner.impl_witness: = impl_witness %Inner.impl_witness_table, @impl.eed(constants.%T) [symbolic = @impl.eed.%Inner.impl_witness (constants.%Inner.impl_witness.b15)] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -597,18 +598,18 @@ fn Test() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@Outer.%T.loc4_13.1: type, @Inner.%Self.1: @Inner.%Inner.type (%Inner.type.392)) { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Self: @F.1.%Inner.type (%Inner.type.392) = bind_symbolic_name Self, 1 [symbolic = %Self (constants.%Self.770)] // CHECK:STDOUT: %Self.as_type.loc6_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc6_16.1 (constants.%Self.as_type.ea1)] // CHECK:STDOUT: %pattern_type.loc6_10: type = pattern_type %Self.as_type.loc6_16.1 [symbolic = %pattern_type.loc6_10 (constants.%pattern_type.81e)] // CHECK:STDOUT: %pattern_type.loc6_24: type = pattern_type %T [symbolic = %pattern_type.loc6_24 (constants.%pattern_type.7dcd0a.1)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.1.%Self.as_type.loc6_16.1 (%Self.as_type.ea1)) -> @F.1.%T (%T.8b3); +// CHECK:STDOUT: fn(%self.param: @F.1.%Self.as_type.loc6_16.1 (%Self.as_type.ea1)) -> @F.1.%T (%T); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.2(@Outer.%T.loc4_13.1: type) { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T.8b3)] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic = %C (constants.%C.390)] // CHECK:STDOUT: %pattern_type.loc11_12: type = pattern_type %C [symbolic = %pattern_type.loc11_12 (constants.%pattern_type.e59)] // CHECK:STDOUT: %pattern_type.loc11_23: type = pattern_type %T [symbolic = %pattern_type.loc11_23 (constants.%pattern_type.7dcd0a.1)] @@ -625,22 +626,22 @@ fn Test() -> i32 { // CHECK:STDOUT: %Inner.facet: @F.2.%Inner.type (%Inner.type.392) = facet_value %C, (%Inner.lookup_impl_witness) [symbolic = %Inner.facet (constants.%Inner.facet.c18)] // CHECK:STDOUT: %.loc11_41: type = fn_type_with_self_type %F.type, %Inner.facet [symbolic = %.loc11_41 (constants.%.692)] // CHECK:STDOUT: %impl.elem0.loc11_41.2: @F.2.%.loc11_41 (%.692) = impl_witness_access %Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] -// CHECK:STDOUT: %specific_impl_fn.loc11_41.2: = specific_impl_function %impl.elem0.loc11_41.2, @F.1(%T, %Inner.facet) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn.d7c)] +// CHECK:STDOUT: %specific_impl_fn.loc11_41.2: = specific_impl_function %impl.elem0.loc11_41.2, @F.1(%T, %Inner.facet) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.2.%C (%C.390)) -> @F.2.%T (%T.8b3) { +// CHECK:STDOUT: fn(%self.param: @F.2.%C (%C.390)) -> @F.2.%T (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %self.ref: @F.2.%C (%C.390) = name_ref self, %self -// CHECK:STDOUT: %.loc11_43: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T.8b3) [symbolic = %Inner.type (constants.%Inner.type.392)] +// CHECK:STDOUT: %.loc11_43: type = specific_constant @Outer.%Inner.decl, @Outer(constants.%T) [symbolic = %Inner.type (constants.%Inner.type.392)] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, %.loc11_43 [symbolic = %Inner.type (constants.%Inner.type.392)] -// CHECK:STDOUT: %.loc11_48: @F.2.%Inner.assoc_type (%Inner.assoc_type.115) = specific_constant @Inner.%assoc0.loc6_28.1, @Inner(constants.%T.8b3) [symbolic = %assoc0 (constants.%assoc0.95e)] +// CHECK:STDOUT: %.loc11_48: @F.2.%Inner.assoc_type (%Inner.assoc_type.115) = specific_constant @Inner.%assoc0.loc6_28.1, @Inner(constants.%T) [symbolic = %assoc0 (constants.%assoc0.95e)] // CHECK:STDOUT: %F.ref: @F.2.%Inner.assoc_type (%Inner.assoc_type.115) = name_ref F, %.loc11_48 [symbolic = %assoc0 (constants.%assoc0.95e)] // CHECK:STDOUT: %impl.elem0.loc11_41.1: @F.2.%.loc11_41 (%.692) = impl_witness_access constants.%Inner.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_41.2 (constants.%impl.elem0.681)] // CHECK:STDOUT: %bound_method.loc11_41: = bound_method %self.ref, %impl.elem0.loc11_41.1 -// CHECK:STDOUT: %specific_impl_fn.loc11_41.1: = specific_impl_function %impl.elem0.loc11_41.1, @F.1(constants.%T.8b3, constants.%Inner.facet.c18) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn.d7c)] +// CHECK:STDOUT: %specific_impl_fn.loc11_41.1: = specific_impl_function %impl.elem0.loc11_41.1, @F.1(constants.%T, constants.%Inner.facet.c18) [symbolic = %specific_impl_fn.loc11_41.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: %bound_method.loc11_52: = bound_method %self.ref, %specific_impl_fn.loc11_41.1 -// CHECK:STDOUT: %.loc11_52: init @F.2.%T (%T.8b3) = call %bound_method.loc11_52(%self.ref) -// CHECK:STDOUT: %.loc11_53.1: @F.2.%T (%T.8b3) = value_of_initializer %.loc11_52 -// CHECK:STDOUT: %.loc11_53.2: @F.2.%T (%T.8b3) = converted %.loc11_52, %.loc11_53.1 +// CHECK:STDOUT: %.loc11_52: init @F.2.%T (%T) = call %bound_method.loc11_52(%self.ref) +// CHECK:STDOUT: %.loc11_53.1: @F.2.%T (%T) = value_of_initializer %.loc11_52 +// CHECK:STDOUT: %.loc11_53.2: @F.2.%T (%T) = converted %.loc11_52, %.loc11_53.1 // CHECK:STDOUT: return %.loc11_53.2 // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -687,17 +688,17 @@ fn Test() -> i32 { // CHECK:STDOUT: return %.loc24_34.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Outer(constants.%T.8b3) { -// CHECK:STDOUT: %T.loc4_13.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @Outer(constants.%T) { +// CHECK:STDOUT: %T.loc4_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %C => constants.%C.390 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @Inner(constants.%T.8b3) { +// CHECK:STDOUT: specific @Inner(constants.%T) { // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self.2 => constants.%Self.770 // CHECK:STDOUT: %F.type => constants.%F.type.0f3 @@ -706,8 +707,8 @@ fn Test() -> i32 { // CHECK:STDOUT: %assoc0.loc6_28.2 => constants.%assoc0.95e // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T.8b3, constants.%Self.770) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Self.770) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Self.770 // CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%Self.as_type.ea1 @@ -715,12 +716,12 @@ fn Test() -> i32 { // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @C(constants.%T.8b3) { +// CHECK:STDOUT: specific @C(constants.%T) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @impl.eed(constants.%T.8b3) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @impl.eed(constants.%T) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.390 // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %require_complete => constants.%require_complete.8fa @@ -731,15 +732,15 @@ fn Test() -> i32 { // CHECK:STDOUT: %F => constants.%F.ed9 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.2(constants.%T.8b3) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @F.2(constants.%T) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %C => constants.%C.390 // CHECK:STDOUT: %pattern_type.loc11_12 => constants.%pattern_type.e59 // CHECK:STDOUT: %pattern_type.loc11_23 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T.8b3, constants.%Inner.facet.9a3) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Inner.facet.9a3) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Inner.facet.9a3 // CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%C.390 @@ -747,8 +748,8 @@ fn Test() -> i32 { // CHECK:STDOUT: %pattern_type.loc6_24 => constants.%pattern_type.7dcd0a.1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @F.1(constants.%T.8b3, constants.%Inner.facet.c18) { -// CHECK:STDOUT: %T => constants.%T.8b3 +// CHECK:STDOUT: specific @F.1(constants.%T, constants.%Inner.facet.c18) { +// CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %Inner.type => constants.%Inner.type.392 // CHECK:STDOUT: %Self => constants.%Inner.facet.c18 // CHECK:STDOUT: %Self.as_type.loc6_16.1 => constants.%C.390 diff --git a/toolchain/check/testdata/class/generic/method_deduce.carbon b/toolchain/check/testdata/class/generic/method_deduce.carbon index 9fca1d951088..9811178e53cc 100644 --- a/toolchain/check/testdata/class/generic/method_deduce.carbon +++ b/toolchain/check/testdata/class/generic/method_deduce.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -93,7 +94,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [concrete = constants.%Class.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc17_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_13.2 (constants.%T)] +// CHECK:STDOUT: %T.loc18_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc18_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] { // CHECK:STDOUT: %c.patt: %pattern_type.827 = binding_pattern c [concrete] @@ -101,14 +102,14 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %return.patt: %pattern_type.edc = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.edc = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %A.ref.loc22_39: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %B.ref.loc22: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc22_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc22_39, %B.ref.loc22) -// CHECK:STDOUT: %.loc22_43.2: type = converted %.loc22_43.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] +// CHECK:STDOUT: %A.ref.loc23_39: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc23_43.1: %tuple.type.24b = tuple_literal (%A.ref.loc23_39, %B.ref.loc23) +// CHECK:STDOUT: %.loc23_43.2: type = converted %.loc23_43.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] // CHECK:STDOUT: %c.param: %Class.480 = value_param call_param0 -// CHECK:STDOUT: %.loc22_32: type = splice_block %Class [concrete = constants.%Class.480] { +// CHECK:STDOUT: %.loc23_32: type = splice_block %Class [concrete = constants.%Class.480] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] -// CHECK:STDOUT: %A.ref.loc22_31: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %A.ref.loc23_31: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [concrete = constants.%Class.480] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %Class.480 = bind_name c, %c.param @@ -121,14 +122,14 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %return.patt: %pattern_type.edc = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.edc = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %A.ref.loc26_58: type = name_ref A, file.%A.decl [concrete = constants.%A] -// CHECK:STDOUT: %B.ref.loc26: type = name_ref B, file.%B.decl [concrete = constants.%B] -// CHECK:STDOUT: %.loc26_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc26_58, %B.ref.loc26) -// CHECK:STDOUT: %.loc26_62.2: type = converted %.loc26_62.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] +// CHECK:STDOUT: %A.ref.loc27_58: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %B.ref.loc27: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc27_62.1: %tuple.type.24b = tuple_literal (%A.ref.loc27_58, %B.ref.loc27) +// CHECK:STDOUT: %.loc27_62.2: type = converted %.loc27_62.1, constants.%tuple.type.cc6 [concrete = constants.%tuple.type.cc6] // CHECK:STDOUT: %c.param: %Class.480 = value_param call_param0 -// CHECK:STDOUT: %.loc26_51: type = splice_block %Class [concrete = constants.%Class.480] { +// CHECK:STDOUT: %.loc27_51: type = splice_block %Class [concrete = constants.%Class.480] { // CHECK:STDOUT: %Class.ref: %Class.type = name_ref Class, file.%Class.decl [concrete = constants.%Class.generic] -// CHECK:STDOUT: %A.ref.loc26_50: type = name_ref A, file.%A.decl [concrete = constants.%A] +// CHECK:STDOUT: %A.ref.loc27_50: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %Class: type = class_type @Class, @Class(constants.%A) [concrete = constants.%Class.480] // CHECK:STDOUT: } // CHECK:STDOUT: %c: %Class.480 = bind_name c, %c.param @@ -155,13 +156,13 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Class(%T.loc17_13.1: type) { -// CHECK:STDOUT: %T.loc17_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc17_13.2 (constants.%T)] +// CHECK:STDOUT: generic class @Class(%T.loc18_13.1: type) { +// CHECK:STDOUT: %T.loc18_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc18_13.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc17_13.2) [symbolic = %Get.type (constants.%Get.type.fd9)] +// CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T.loc18_13.2) [symbolic = %Get.type (constants.%Get.type.fd9)] // CHECK:STDOUT: %Get: @Class.%Get.type (%Get.type.fd9) = struct_value () [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T.loc17_13.2) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.766)] +// CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T.loc18_13.2) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.766)] // CHECK:STDOUT: %GetNoDeduce: @Class.%GetNoDeduce.type (%GetNoDeduce.type.766) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -170,29 +171,29 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %return.patt: @Get.%pattern_type (%pattern_type.65c) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Get.%pattern_type (%pattern_type.65c) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc17_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.ref.loc18_27: type = name_ref U, %U.loc18_10.2 [symbolic = %U.loc18_10.1 (constants.%U)] -// CHECK:STDOUT: %.loc18_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc18_27) -// CHECK:STDOUT: %.loc18_28.2: type = converted %.loc18_28.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] -// CHECK:STDOUT: %U.loc18_10.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc18_10.1 (constants.%U)] +// CHECK:STDOUT: %T.ref: type = name_ref T, @Class.%T.loc18_13.1 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %U.ref.loc19_27: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] +// CHECK:STDOUT: %.loc19_28.1: %tuple.type.24b = tuple_literal (%T.ref, %U.ref.loc19_27) +// CHECK:STDOUT: %.loc19_28.2: type = converted %.loc19_28.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %U.loc19_10.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %return.param: ref @Get.%tuple.type (%tuple.type.30b) = out_param call_param0 // CHECK:STDOUT: %return: ref @Get.%tuple.type (%tuple.type.30b) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %GetNoDeduce.decl: @Class.%GetNoDeduce.type (%GetNoDeduce.type.766) = fn_decl @GetNoDeduce [symbolic = @Class.%GetNoDeduce (constants.%GetNoDeduce.c9a)] { -// CHECK:STDOUT: %x.patt: @GetNoDeduce.%pattern_type.loc19_18 (%pattern_type.7dc) = binding_pattern x [concrete] -// CHECK:STDOUT: %x.param_patt: @GetNoDeduce.%pattern_type.loc19_18 (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] +// CHECK:STDOUT: %x.patt: @GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = binding_pattern x [concrete] +// CHECK:STDOUT: %x.param_patt: @GetNoDeduce.%pattern_type.loc20_18 (%pattern_type.7dc) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: %return.patt: @GetNoDeduce.%pattern_type.loc19_34 (%pattern_type.65c) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%pattern_type.loc19_34 (%pattern_type.65c) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %return.patt: @GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @GetNoDeduce.%pattern_type.loc20_34 (%pattern_type.65c) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc19_38: type = name_ref T, @Class.%T.loc17_13.1 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %U.ref.loc19_41: type = name_ref U, %U.loc19_24.2 [symbolic = %U.loc19_24.1 (constants.%U)] -// CHECK:STDOUT: %.loc19_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc19_38, %U.ref.loc19_41) -// CHECK:STDOUT: %.loc19_42.2: type = converted %.loc19_42.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %T.ref.loc20_38: type = name_ref T, @Class.%T.loc18_13.1 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %U.ref.loc20_41: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %.loc20_42.1: %tuple.type.24b = tuple_literal (%T.ref.loc20_38, %U.ref.loc20_41) +// CHECK:STDOUT: %.loc20_42.2: type = converted %.loc20_42.1, constants.%tuple.type.30b [symbolic = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %x.param: @GetNoDeduce.%T (%T) = value_param call_param0 -// CHECK:STDOUT: %T.ref.loc19_21: type = name_ref T, @Class.%T.loc17_13.1 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %T.ref.loc20_21: type = name_ref T, @Class.%T.loc18_13.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %x: @GetNoDeduce.%T (%T) = bind_name x, %x.param -// CHECK:STDOUT: %U.loc19_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_24.1 (constants.%U)] +// CHECK:STDOUT: %U.loc20_24.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] // CHECK:STDOUT: %return.param: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = out_param call_param1 // CHECK:STDOUT: %return: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = return_slot %return.param // CHECK:STDOUT: } @@ -208,53 +209,53 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Get(@Class.%T.loc17_13.1: type, %U.loc18_10.2: type) { -// CHECK:STDOUT: %U.loc18_10.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc18_10.1 (constants.%U)] +// CHECK:STDOUT: generic fn @Get(@Class.%T.loc18_13.1: type, %U.loc19_10.2: type) { +// CHECK:STDOUT: %U.loc19_10.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_10.1 (constants.%U)] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc18_10.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_10.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete: = require_complete_type %tuple.type [symbolic = %require_complete (constants.%require_complete.fe1)] // CHECK:STDOUT: %Get.type: type = fn_type @Get, @Class(%T) [symbolic = %Get.type (constants.%Get.type.fd9)] // CHECK:STDOUT: %Get: @Get.%Get.type (%Get.type.fd9) = struct_value () [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %Get.specific_fn.loc18_39.2: = specific_function %Get, @Get(%T, %U.loc18_10.1) [symbolic = %Get.specific_fn.loc18_39.2 (constants.%Get.specific_fn.f73)] +// CHECK:STDOUT: %Get.specific_fn.loc19_39.2: = specific_function %Get, @Get(%T, %U.loc19_10.1) [symbolic = %Get.specific_fn.loc19_39.2 (constants.%Get.specific_fn.f73)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> %return.param: @Get.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc18_39: @Get.%Get.type (%Get.type.fd9) = specific_constant @Class.%Get.decl, @Class(constants.%T) [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %Get.ref: @Get.%Get.type (%Get.type.fd9) = name_ref Get, %.loc18_39 [symbolic = %Get (constants.%Get.cf9)] -// CHECK:STDOUT: %U.ref.loc18_43: type = name_ref U, %U.loc18_10.2 [symbolic = %U.loc18_10.1 (constants.%U)] -// CHECK:STDOUT: %Get.specific_fn.loc18_39.1: = specific_function %Get.ref, @Get(constants.%T, constants.%U) [symbolic = %Get.specific_fn.loc18_39.2 (constants.%Get.specific_fn.f73)] -// CHECK:STDOUT: %.loc18_20: ref @Get.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %Get.call: init @Get.%tuple.type (%tuple.type.30b) = call %Get.specific_fn.loc18_39.1() to %.loc18_20 +// CHECK:STDOUT: %.loc19_39: @Get.%Get.type (%Get.type.fd9) = specific_constant @Class.%Get.decl, @Class(constants.%T) [symbolic = %Get (constants.%Get.cf9)] +// CHECK:STDOUT: %Get.ref: @Get.%Get.type (%Get.type.fd9) = name_ref Get, %.loc19_39 [symbolic = %Get (constants.%Get.cf9)] +// CHECK:STDOUT: %U.ref.loc19_43: type = name_ref U, %U.loc19_10.2 [symbolic = %U.loc19_10.1 (constants.%U)] +// CHECK:STDOUT: %Get.specific_fn.loc19_39.1: = specific_function %Get.ref, @Get(constants.%T, constants.%U) [symbolic = %Get.specific_fn.loc19_39.2 (constants.%Get.specific_fn.f73)] +// CHECK:STDOUT: %.loc19_20: ref @Get.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %Get.call: init @Get.%tuple.type (%tuple.type.30b) = call %Get.specific_fn.loc19_39.1() to %.loc19_20 // CHECK:STDOUT: return %Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @GetNoDeduce(@Class.%T.loc17_13.1: type, %U.loc19_24.2: type) { +// CHECK:STDOUT: generic fn @GetNoDeduce(@Class.%T.loc18_13.1: type, %U.loc20_24.2: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] -// CHECK:STDOUT: %pattern_type.loc19_18: type = pattern_type %T [symbolic = %pattern_type.loc19_18 (constants.%pattern_type.7dc)] -// CHECK:STDOUT: %U.loc19_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc19_24.1 (constants.%U)] -// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc19_24.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] -// CHECK:STDOUT: %pattern_type.loc19_34: type = pattern_type %tuple.type [symbolic = %pattern_type.loc19_34 (constants.%pattern_type.65c)] +// CHECK:STDOUT: %pattern_type.loc20_18: type = pattern_type %T [symbolic = %pattern_type.loc20_18 (constants.%pattern_type.7dc)] +// CHECK:STDOUT: %U.loc20_24.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %tuple.type: type = tuple_type (%T, %U.loc20_24.1) [symbolic = %tuple.type (constants.%tuple.type.30b)] +// CHECK:STDOUT: %pattern_type.loc20_34: type = pattern_type %tuple.type [symbolic = %pattern_type.loc20_34 (constants.%pattern_type.65c)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_19: = require_complete_type %T [symbolic = %require_complete.loc19_19 (constants.%require_complete.4ae)] +// CHECK:STDOUT: %require_complete.loc20_19: = require_complete_type %T [symbolic = %require_complete.loc20_19 (constants.%require_complete.4ae)] // CHECK:STDOUT: %GetNoDeduce.type: type = fn_type @GetNoDeduce, @Class(%T) [symbolic = %GetNoDeduce.type (constants.%GetNoDeduce.type.766)] // CHECK:STDOUT: %GetNoDeduce: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = struct_value () [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc19_53.2: = specific_function %GetNoDeduce, @GetNoDeduce(%T, %U.loc19_24.1) [symbolic = %GetNoDeduce.specific_fn.loc19_53.2 (constants.%GetNoDeduce.specific_fn.536)] -// CHECK:STDOUT: %require_complete.loc19_70: = require_complete_type %tuple.type [symbolic = %require_complete.loc19_70 (constants.%require_complete.fe1)] +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2: = specific_function %GetNoDeduce, @GetNoDeduce(%T, %U.loc20_24.1) [symbolic = %GetNoDeduce.specific_fn.loc20_53.2 (constants.%GetNoDeduce.specific_fn.536)] +// CHECK:STDOUT: %require_complete.loc20_70: = require_complete_type %tuple.type [symbolic = %require_complete.loc20_70 (constants.%require_complete.fe1)] // CHECK:STDOUT: // CHECK:STDOUT: fn(%x.param: @GetNoDeduce.%T (%T)) -> %return.param: @GetNoDeduce.%tuple.type (%tuple.type.30b) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc19_53: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%T) [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] -// CHECK:STDOUT: %GetNoDeduce.ref: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = name_ref GetNoDeduce, %.loc19_53 [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] +// CHECK:STDOUT: %.loc20_53: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%T) [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] +// CHECK:STDOUT: %GetNoDeduce.ref: @GetNoDeduce.%GetNoDeduce.type (%GetNoDeduce.type.766) = name_ref GetNoDeduce, %.loc20_53 [symbolic = %GetNoDeduce (constants.%GetNoDeduce.c9a)] // CHECK:STDOUT: %x.ref: @GetNoDeduce.%T (%T) = name_ref x, %x -// CHECK:STDOUT: %U.ref.loc19_68: type = name_ref U, %U.loc19_24.2 [symbolic = %U.loc19_24.1 (constants.%U)] -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc19_53.1: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%T, constants.%U) [symbolic = %GetNoDeduce.specific_fn.loc19_53.2 (constants.%GetNoDeduce.specific_fn.536)] -// CHECK:STDOUT: %.loc19_34: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} -// CHECK:STDOUT: %GetNoDeduce.call: init @GetNoDeduce.%tuple.type (%tuple.type.30b) = call %GetNoDeduce.specific_fn.loc19_53.1(%x.ref) to %.loc19_34 +// CHECK:STDOUT: %U.ref.loc20_68: type = name_ref U, %U.loc20_24.2 [symbolic = %U.loc20_24.1 (constants.%U)] +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.1: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%T, constants.%U) [symbolic = %GetNoDeduce.specific_fn.loc20_53.2 (constants.%GetNoDeduce.specific_fn.536)] +// CHECK:STDOUT: %.loc20_34: ref @GetNoDeduce.%tuple.type (%tuple.type.30b) = splice_block %return {} +// CHECK:STDOUT: %GetNoDeduce.call: init @GetNoDeduce.%tuple.type (%tuple.type.30b) = call %GetNoDeduce.specific_fn.loc20_53.1(%x.ref) to %.loc20_34 // CHECK:STDOUT: return %GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -262,35 +263,35 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: fn @CallGenericMethod(%c.param: %Class.480) -> %return.param: %tuple.type.cc6 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class.480 = name_ref c, %c -// CHECK:STDOUT: %.loc23: %Get.type.501 = specific_constant @Class.%Get.decl, @Class(constants.%A) [concrete = constants.%Get.f37] -// CHECK:STDOUT: %Get.ref: %Get.type.501 = name_ref Get, %.loc23 [concrete = constants.%Get.f37] -// CHECK:STDOUT: %B.ref.loc23: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc24: %Get.type.501 = specific_constant @Class.%Get.decl, @Class(constants.%A) [concrete = constants.%Get.f37] +// CHECK:STDOUT: %Get.ref: %Get.type.501 = name_ref Get, %.loc24 [concrete = constants.%Get.f37] +// CHECK:STDOUT: %B.ref.loc24: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %Get.specific_fn: = specific_function %Get.ref, @Get(constants.%A, constants.%B) [concrete = constants.%Get.specific_fn.213] -// CHECK:STDOUT: %.loc22_35: ref %tuple.type.cc6 = splice_block %return {} -// CHECK:STDOUT: %Get.call: init %tuple.type.cc6 = call %Get.specific_fn() to %.loc22_35 +// CHECK:STDOUT: %.loc23_35: ref %tuple.type.cc6 = splice_block %return {} +// CHECK:STDOUT: %Get.call: init %tuple.type.cc6 = call %Get.specific_fn() to %.loc23_35 // CHECK:STDOUT: return %Get.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallGenericMethodWithNonDeducedParam(%c.param: %Class.480) -> %return.param: %tuple.type.cc6 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %c.ref: %Class.480 = name_ref c, %c -// CHECK:STDOUT: %.loc27_11: %GetNoDeduce.type.5d6 = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%A) [concrete = constants.%GetNoDeduce.162] -// CHECK:STDOUT: %GetNoDeduce.ref: %GetNoDeduce.type.5d6 = name_ref GetNoDeduce, %.loc27_11 [concrete = constants.%GetNoDeduce.162] -// CHECK:STDOUT: %.loc27_25.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %B.ref.loc27: type = name_ref B, file.%B.decl [concrete = constants.%B] +// CHECK:STDOUT: %.loc28_11: %GetNoDeduce.type.5d6 = specific_constant @Class.%GetNoDeduce.decl, @Class(constants.%A) [concrete = constants.%GetNoDeduce.162] +// CHECK:STDOUT: %GetNoDeduce.ref: %GetNoDeduce.type.5d6 = name_ref GetNoDeduce, %.loc28_11 [concrete = constants.%GetNoDeduce.162] +// CHECK:STDOUT: %.loc28_25.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %B.ref.loc28: type = name_ref B, file.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %GetNoDeduce.specific_fn: = specific_function %GetNoDeduce.ref, @GetNoDeduce(constants.%A, constants.%B) [concrete = constants.%GetNoDeduce.specific_fn.438] -// CHECK:STDOUT: %.loc26_54: ref %tuple.type.cc6 = splice_block %return {} -// CHECK:STDOUT: %.loc27_25.2: ref %A = temporary_storage -// CHECK:STDOUT: %.loc27_25.3: init %A = class_init (), %.loc27_25.2 [concrete = constants.%A.val] -// CHECK:STDOUT: %.loc27_25.4: ref %A = temporary %.loc27_25.2, %.loc27_25.3 -// CHECK:STDOUT: %.loc27_25.5: ref %A = converted %.loc27_25.1, %.loc27_25.4 -// CHECK:STDOUT: %.loc27_25.6: %A = bind_value %.loc27_25.5 -// CHECK:STDOUT: %GetNoDeduce.call: init %tuple.type.cc6 = call %GetNoDeduce.specific_fn(%.loc27_25.6) to %.loc26_54 +// CHECK:STDOUT: %.loc27_54: ref %tuple.type.cc6 = splice_block %return {} +// CHECK:STDOUT: %.loc28_25.2: ref %A = temporary_storage +// CHECK:STDOUT: %.loc28_25.3: init %A = class_init (), %.loc28_25.2 [concrete = constants.%A.val] +// CHECK:STDOUT: %.loc28_25.4: ref %A = temporary %.loc28_25.2, %.loc28_25.3 +// CHECK:STDOUT: %.loc28_25.5: ref %A = converted %.loc28_25.1, %.loc28_25.4 +// CHECK:STDOUT: %.loc28_25.6: %A = bind_value %.loc28_25.5 +// CHECK:STDOUT: %GetNoDeduce.call: init %tuple.type.cc6 = call %GetNoDeduce.specific_fn(%.loc28_25.6) to %.loc27_54 // CHECK:STDOUT: return %GetNoDeduce.call to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%T) { -// CHECK:STDOUT: %T.loc17_13.2 => constants.%T +// CHECK:STDOUT: %T.loc18_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Get.type => constants.%Get.type.fd9 @@ -300,7 +301,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%T, constants.%U) { -// CHECK:STDOUT: %U.loc18_10.1 => constants.%U +// CHECK:STDOUT: %U.loc19_10.1 => constants.%U // CHECK:STDOUT: %T => constants.%T // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b // CHECK:STDOUT: %pattern_type => constants.%pattern_type.65c @@ -309,26 +310,26 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %require_complete => constants.%require_complete.fe1 // CHECK:STDOUT: %Get.type => constants.%Get.type.fd9 // CHECK:STDOUT: %Get => constants.%Get.cf9 -// CHECK:STDOUT: %Get.specific_fn.loc18_39.2 => constants.%Get.specific_fn.f73 +// CHECK:STDOUT: %Get.specific_fn.loc19_39.2 => constants.%Get.specific_fn.f73 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GetNoDeduce(constants.%T, constants.%U) { // CHECK:STDOUT: %T => constants.%T -// CHECK:STDOUT: %pattern_type.loc19_18 => constants.%pattern_type.7dc -// CHECK:STDOUT: %U.loc19_24.1 => constants.%U +// CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.7dc +// CHECK:STDOUT: %U.loc20_24.1 => constants.%U // CHECK:STDOUT: %tuple.type => constants.%tuple.type.30b -// CHECK:STDOUT: %pattern_type.loc19_34 => constants.%pattern_type.65c +// CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.65c // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_19 => constants.%require_complete.4ae +// CHECK:STDOUT: %require_complete.loc20_19 => constants.%require_complete.4ae // CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.766 // CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.c9a -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc19_53.2 => constants.%GetNoDeduce.specific_fn.536 -// CHECK:STDOUT: %require_complete.loc19_70 => constants.%require_complete.fe1 +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2 => constants.%GetNoDeduce.specific_fn.536 +// CHECK:STDOUT: %require_complete.loc20_70 => constants.%require_complete.fe1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%A) { -// CHECK:STDOUT: %T.loc17_13.2 => constants.%A +// CHECK:STDOUT: %T.loc18_13.2 => constants.%A // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Get.type => constants.%Get.type.501 @@ -338,7 +339,7 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Get(constants.%A, constants.%B) { -// CHECK:STDOUT: %U.loc18_10.1 => constants.%B +// CHECK:STDOUT: %U.loc19_10.1 => constants.%B // CHECK:STDOUT: %T => constants.%A // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.edc @@ -347,21 +348,21 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) { // CHECK:STDOUT: %require_complete => constants.%complete_type.56a // CHECK:STDOUT: %Get.type => constants.%Get.type.501 // CHECK:STDOUT: %Get => constants.%Get.f37 -// CHECK:STDOUT: %Get.specific_fn.loc18_39.2 => constants.%Get.specific_fn.213 +// CHECK:STDOUT: %Get.specific_fn.loc19_39.2 => constants.%Get.specific_fn.213 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @GetNoDeduce(constants.%A, constants.%B) { // CHECK:STDOUT: %T => constants.%A -// CHECK:STDOUT: %pattern_type.loc19_18 => constants.%pattern_type.c10 -// CHECK:STDOUT: %U.loc19_24.1 => constants.%B +// CHECK:STDOUT: %pattern_type.loc20_18 => constants.%pattern_type.c10 +// CHECK:STDOUT: %U.loc20_24.1 => constants.%B // CHECK:STDOUT: %tuple.type => constants.%tuple.type.cc6 -// CHECK:STDOUT: %pattern_type.loc19_34 => constants.%pattern_type.edc +// CHECK:STDOUT: %pattern_type.loc20_34 => constants.%pattern_type.edc // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_19 => constants.%complete_type.357 +// CHECK:STDOUT: %require_complete.loc20_19 => constants.%complete_type.357 // CHECK:STDOUT: %GetNoDeduce.type => constants.%GetNoDeduce.type.5d6 // CHECK:STDOUT: %GetNoDeduce => constants.%GetNoDeduce.162 -// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc19_53.2 => constants.%GetNoDeduce.specific_fn.438 -// CHECK:STDOUT: %require_complete.loc19_70 => constants.%complete_type.56a +// CHECK:STDOUT: %GetNoDeduce.specific_fn.loc20_53.2 => constants.%GetNoDeduce.specific_fn.438 +// CHECK:STDOUT: %require_complete.loc20_70 => constants.%complete_type.56a // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic/redeclare.carbon b/toolchain/check/testdata/class/generic/redeclare.carbon index cefd2a3108a2..c2ff35c0a93b 100644 --- a/toolchain/check/testdata/class/generic/redeclare.carbon +++ b/toolchain/check/testdata/class/generic/redeclare.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/generic_method.carbon b/toolchain/check/testdata/class/generic_method.carbon index 55b4796870f3..5e0913a812d1 100644 --- a/toolchain/check/testdata/class/generic_method.carbon +++ b/toolchain/check/testdata/class/generic_method.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -53,88 +54,88 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %Class.decl: %Class.type = class_decl @Class [concrete = constants.%Class.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc14_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_13.2 (constants.%T)] +// CHECK:STDOUT: %T.loc15_13.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc16_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc16_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc16_20 (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc16_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] +// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc19: type = bind_symbolic_name T, 0 [symbolic = @Class.%T.loc14_13.2 (constants.%T)] -// CHECK:STDOUT: %self.param.loc19: @F.%Class (%Class) = value_param call_param0 -// CHECK:STDOUT: %.loc19_28.1: type = splice_block %Self.ref.loc19 [symbolic = %Class (constants.%Class)] { -// CHECK:STDOUT: %.loc19_28.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Self.ref.loc19: type = name_ref Self, %.loc19_28.2 [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %T.loc20: type = bind_symbolic_name T, 0 [symbolic = @Class.%T.loc15_13.2 (constants.%T)] +// CHECK:STDOUT: %self.param.loc20: @F.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %.loc20_28.1: type = splice_block %Self.ref.loc20 [symbolic = %Class (constants.%Class)] { +// CHECK:STDOUT: %.loc20_28.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, %.loc20_28.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc19: @F.%Class (%Class) = bind_name self, %self.param.loc19 -// CHECK:STDOUT: %n.param.loc19: @F.%T.loc16 (%T) = value_param call_param1 -// CHECK:STDOUT: %T.ref.loc19: type = name_ref T, %T.loc19 [symbolic = %T.loc16 (constants.%T)] -// CHECK:STDOUT: %n.loc19: @F.%T.loc16 (%T) = bind_name n, %n.param.loc19 +// CHECK:STDOUT: %self.loc20: @F.%Class (%Class) = bind_name self, %self.param.loc20 +// CHECK:STDOUT: %n.param.loc20: @F.%T.loc17 (%T) = value_param call_param1 +// CHECK:STDOUT: %T.ref.loc20: type = name_ref T, %T.loc20 [symbolic = %T.loc17 (constants.%T)] +// CHECK:STDOUT: %n.loc20: @F.%T.loc17 (%T) = bind_name n, %n.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Class(%T.loc14_13.1: type) { -// CHECK:STDOUT: %T.loc14_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_13.2 (constants.%T)] +// CHECK:STDOUT: generic class @Class(%T.loc15_13.1: type) { +// CHECK:STDOUT: %T.loc15_13.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_13.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc14_13.2 [symbolic = %require_complete (constants.%require_complete.4ae)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc14_13.2) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc14_13.2 [symbolic = %Class.elem (constants.%Class.elem)] -// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc14_13.2) [symbolic = %F.type (constants.%F.type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_13.2 [symbolic = %require_complete (constants.%require_complete.4ae)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc15_13.2) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.loc15_13.2 [symbolic = %Class.elem (constants.%Class.elem)] +// CHECK:STDOUT: %F.type: type = fn_type @F, @Class(%T.loc15_13.2) [symbolic = %F.type (constants.%F.type)] // CHECK:STDOUT: %F: @Class.%F.type (%F.type) = struct_value () [symbolic = %F (constants.%F)] -// CHECK:STDOUT: %struct_type.a.loc17_1.2: type = struct_type {.a: @Class.%T.loc14_13.2 (%T)} [symbolic = %struct_type.a.loc17_1.2 (constants.%struct_type.a)] -// CHECK:STDOUT: %complete_type.loc17_1.2: = complete_type_witness %struct_type.a.loc17_1.2 [symbolic = %complete_type.loc17_1.2 (constants.%complete_type)] +// CHECK:STDOUT: %struct_type.a.loc18_1.2: type = struct_type {.a: @Class.%T.loc15_13.2 (%T)} [symbolic = %struct_type.a.loc18_1.2 (constants.%struct_type.a)] +// CHECK:STDOUT: %complete_type.loc18_1.2: = complete_type_witness %struct_type.a.loc18_1.2 [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)] // CHECK:STDOUT: // CHECK:STDOUT: class { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_13.1 [symbolic = %T.loc14_13.2 (constants.%T)] -// CHECK:STDOUT: %.loc15: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [concrete] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_13.1 [symbolic = %T.loc15_13.2 (constants.%T)] +// CHECK:STDOUT: %.loc16: @Class.%Class.elem (%Class.elem) = field_decl a, element0 [concrete] // CHECK:STDOUT: %F.decl: @Class.%F.type (%F.type) = fn_decl @F [symbolic = @Class.%F (constants.%F)] { -// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc16_8 (%pattern_type.3c1) = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc16_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc16_20 (%pattern_type.7dc) = binding_pattern n [concrete] -// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc16_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] +// CHECK:STDOUT: %self.patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt: @F.%pattern_type.loc17_8 (%pattern_type.3c1) = value_param_pattern %self.patt, call_param0 [concrete] +// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = binding_pattern n [concrete] +// CHECK:STDOUT: %n.param_patt: @F.%pattern_type.loc17_20 (%pattern_type.7dc) = value_param_pattern %n.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc16: @F.%Class (%Class) = value_param call_param0 -// CHECK:STDOUT: %.loc16_14.1: type = splice_block %Self.ref.loc16 [symbolic = %Class (constants.%Class)] { -// CHECK:STDOUT: %.loc16_14.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, %.loc16_14.2 [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %self.param.loc17: @F.%Class (%Class) = value_param call_param0 +// CHECK:STDOUT: %.loc17_14.1: type = splice_block %Self.ref.loc17 [symbolic = %Class (constants.%Class)] { +// CHECK:STDOUT: %.loc17_14.2: type = specific_constant constants.%Class, @Class(constants.%T) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, %.loc17_14.2 [symbolic = %Class (constants.%Class)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc16: @F.%Class (%Class) = bind_name self, %self.param.loc16 -// CHECK:STDOUT: %n.param.loc16: @F.%T.loc16 (%T) = value_param call_param1 -// CHECK:STDOUT: %T.ref.loc16: type = name_ref T, @Class.%T.loc14_13.1 [symbolic = %T.loc16 (constants.%T)] -// CHECK:STDOUT: %n.loc16: @F.%T.loc16 (%T) = bind_name n, %n.param.loc16 +// CHECK:STDOUT: %self.loc17: @F.%Class (%Class) = bind_name self, %self.param.loc17 +// CHECK:STDOUT: %n.param.loc17: @F.%T.loc17 (%T) = value_param call_param1 +// CHECK:STDOUT: %T.ref.loc17: type = name_ref T, @Class.%T.loc15_13.1 [symbolic = %T.loc17 (constants.%T)] +// CHECK:STDOUT: %n.loc17: @F.%T.loc17 (%T) = bind_name n, %n.param.loc17 // CHECK:STDOUT: } -// CHECK:STDOUT: %struct_type.a.loc17_1.1: type = struct_type {.a: %T} [symbolic = %struct_type.a.loc17_1.2 (constants.%struct_type.a)] -// CHECK:STDOUT: %complete_type.loc17_1.1: = complete_type_witness %struct_type.a.loc17_1.1 [symbolic = %complete_type.loc17_1.2 (constants.%complete_type)] -// CHECK:STDOUT: complete_type_witness = %complete_type.loc17_1.1 +// CHECK:STDOUT: %struct_type.a.loc18_1.1: type = struct_type {.a: %T} [symbolic = %struct_type.a.loc18_1.2 (constants.%struct_type.a)] +// CHECK:STDOUT: %complete_type.loc18_1.1: = complete_type_witness %struct_type.a.loc18_1.1 [symbolic = %complete_type.loc18_1.2 (constants.%complete_type)] +// CHECK:STDOUT: complete_type_witness = %complete_type.loc18_1.1 // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .T = -// CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: .a = %.loc16 // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(@Class.%T.loc14_13.1: type) { -// CHECK:STDOUT: %T.loc16: type = bind_symbolic_name T, 0 [symbolic = %T.loc16 (constants.%T)] -// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc16) [symbolic = %Class (constants.%Class)] -// CHECK:STDOUT: %pattern_type.loc16_8: type = pattern_type %Class [symbolic = %pattern_type.loc16_8 (constants.%pattern_type.3c1)] -// CHECK:STDOUT: %pattern_type.loc16_20: type = pattern_type %T.loc16 [symbolic = %pattern_type.loc16_20 (constants.%pattern_type.7dc)] +// CHECK:STDOUT: generic fn @F(@Class.%T.loc15_13.1: type) { +// CHECK:STDOUT: %T.loc17: type = bind_symbolic_name T, 0 [symbolic = %T.loc17 (constants.%T)] +// CHECK:STDOUT: %Class: type = class_type @Class, @Class(%T.loc17) [symbolic = %Class (constants.%Class)] +// CHECK:STDOUT: %pattern_type.loc17_8: type = pattern_type %Class [symbolic = %pattern_type.loc17_8 (constants.%pattern_type.3c1)] +// CHECK:STDOUT: %pattern_type.loc17_20: type = pattern_type %T.loc17 [symbolic = %pattern_type.loc17_20 (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc19_26: = require_complete_type %Class [symbolic = %require_complete.loc19_26 (constants.%require_complete.4f8)] -// CHECK:STDOUT: %require_complete.loc19_35: = require_complete_type %T.loc16 [symbolic = %require_complete.loc19_35 (constants.%require_complete.4ae)] +// CHECK:STDOUT: %require_complete.loc20_26: = require_complete_type %Class [symbolic = %require_complete.loc20_26 (constants.%require_complete.4f8)] +// CHECK:STDOUT: %require_complete.loc20_35: = require_complete_type %T.loc17 [symbolic = %require_complete.loc20_35 (constants.%require_complete.4ae)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param.loc19: @F.%Class (%Class), %n.param.loc19: @F.%T.loc16 (%T)) { +// CHECK:STDOUT: fn(%self.param.loc20: @F.%Class (%Class), %n.param.loc20: @F.%T.loc17 (%T)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Class(constants.%T) { -// CHECK:STDOUT: %T.loc14_13.2 => constants.%T +// CHECK:STDOUT: %T.loc15_13.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae @@ -142,14 +143,14 @@ fn Class(T:! type).F[self: Self](n: T) {} // CHECK:STDOUT: %Class.elem => constants.%Class.elem // CHECK:STDOUT: %F.type => constants.%F.type // CHECK:STDOUT: %F => constants.%F -// CHECK:STDOUT: %struct_type.a.loc17_1.2 => constants.%struct_type.a -// CHECK:STDOUT: %complete_type.loc17_1.2 => constants.%complete_type +// CHECK:STDOUT: %struct_type.a.loc18_1.2 => constants.%struct_type.a +// CHECK:STDOUT: %complete_type.loc18_1.2 => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc16 => constants.%T +// CHECK:STDOUT: %T.loc17 => constants.%T // CHECK:STDOUT: %Class => constants.%Class -// CHECK:STDOUT: %pattern_type.loc16_8 => constants.%pattern_type.3c1 -// CHECK:STDOUT: %pattern_type.loc16_20 => constants.%pattern_type.7dc +// CHECK:STDOUT: %pattern_type.loc17_8 => constants.%pattern_type.3c1 +// CHECK:STDOUT: %pattern_type.loc17_20 => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/generic_vs_params.carbon b/toolchain/check/testdata/class/generic_vs_params.carbon index 5a2077a63f09..0319877124d5 100644 --- a/toolchain/check/testdata/class/generic_vs_params.carbon +++ b/toolchain/check/testdata/class/generic_vs_params.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/implicit_import.carbon b/toolchain/check/testdata/class/implicit_import.carbon index 56bed0164c25..5029c21cc04a 100644 --- a/toolchain/check/testdata/class/implicit_import.carbon +++ b/toolchain/check/testdata/class/implicit_import.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/import.carbon b/toolchain/check/testdata/class/import.carbon index 1a99edbcc43e..eb2681c38638 100644 --- a/toolchain/check/testdata/class/import.carbon +++ b/toolchain/check/testdata/class/import.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -84,7 +85,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -185,16 +186,16 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.3, @impl.c81(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.2, @impl.c81(%To) [symbolic] // CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.3, @impl.c81(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.2, @impl.c81(%int_32) [concrete] // CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.2e7: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet.2e7 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.43e: = bound_method %int_1.5b8, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.947: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.47b: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Field.val: %Field = struct_value (%int_1.47b) [concrete] @@ -232,8 +233,8 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.709: = import_ref Main//a, loc9_1, loaded [concrete = constants.%complete_type.c07] // CHECK:STDOUT: %Main.import_ref.845 = import_ref Main//a, inst24 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.4d2: %Field.elem = import_ref Main//a, loc8_8, loaded [concrete = %.d33] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.c81.%Convert (constants.%Convert.6d7)] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a86: @impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.c81.%Convert (constants.%Convert.6d7)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @impl.c81 [concrete] // CHECK:STDOUT: %.d33: %Field.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//a, loc16_1, loaded [concrete = constants.%complete_type.357] @@ -317,7 +318,7 @@ fn Run() { // CHECK:STDOUT: %.loc9_25.1: %struct_type.x.c96 = struct_literal (%int_1) // CHECK:STDOUT: %impl.elem0.loc9: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc9_25.1: = bound_method %int_1, %impl.elem0.loc9 [concrete = constants.%Convert.bound.43e] -// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc9: = specific_function %impl.elem0.loc9, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc9_25.2: = bound_method %int_1, %specific_fn.loc9 [concrete = constants.%bound_method.947] // CHECK:STDOUT: %int.convert_checked.loc9: init %i32 = call %bound_method.loc9_25.2(%int_1) [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc9_25.2: init %i32 = converted %int_1, %int.convert_checked.loc9 [concrete = constants.%int_1.47b] @@ -334,7 +335,7 @@ fn Run() { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc10: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc10_7.1: = bound_method %int_2, %impl.elem0.loc10 [concrete = constants.%Convert.bound.918] -// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc10: = specific_function %impl.elem0.loc10, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_7.2: = bound_method %int_2, %specific_fn.loc10 [concrete = constants.%bound_method.c74] // CHECK:STDOUT: %int.convert_checked.loc10: init %i32 = call %bound_method.loc10_7.2(%int_2) [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc10_7: init %i32 = converted %int_2, %int.convert_checked.loc10 [concrete = constants.%int_2.d0d] diff --git a/toolchain/check/testdata/class/import_access.carbon b/toolchain/check/testdata/class/import_access.carbon index 293179637827..accecefb8df3 100644 --- a/toolchain/check/testdata/class/import_access.carbon +++ b/toolchain/check/testdata/class/import_access.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/import_base.carbon b/toolchain/check/testdata/class/import_base.carbon index af897082718a..ce17bae7aeb4 100644 --- a/toolchain/check/testdata/class/import_base.carbon +++ b/toolchain/check/testdata/class/import_base.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -67,7 +68,7 @@ fn Run() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -157,16 +158,16 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.9ba: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.6da: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.3, @impl.c81(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0b2: type = fn_type @Convert.2, @impl.c81(%To) [symbolic] // CHECK:STDOUT: %Convert.6d7: %Convert.type.0b2 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.e34: = impl_witness imports.%ImplicitAs.impl_witness_table.e36, @impl.c81(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.3, @impl.c81(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.ed5: type = fn_type @Convert.2, @impl.c81(%int_32) [concrete] // CHECK:STDOUT: %Convert.16d: %Convert.type.ed5 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.2e7: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] -// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet.2e7 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.9ba = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.e34) [concrete] +// CHECK:STDOUT: %.d6a: type = fn_type_with_self_type %Convert.type.6da, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.9aa: = bound_method %int_0.5c6, %Convert.16d [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.16d, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.8aa: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.263: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Convert.bound.43e: = bound_method %int_1.5b8, %Convert.16d [concrete] @@ -201,8 +202,8 @@ fn Run() { // CHECK:STDOUT: %Main.import_ref.9a9 = import_ref Main//a, inst73 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.7e5 = import_ref Main//a, loc13_20, unloaded // CHECK:STDOUT: %Main.import_ref.a21640.2: type = import_ref Main//a, loc13_16, loaded [concrete = constants.%Base] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a86: @impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.c81.%Convert (constants.%Convert.6d7)] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a86: @impl.c81.%Convert.type (%Convert.type.0b2) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.c81.%Convert (constants.%Convert.6d7)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.e36 = impl_witness_table (%Core.import_ref.a86), @impl.c81 [concrete] // CHECK:STDOUT: %.720: %Base.elem = field_decl x, element0 [concrete] // CHECK:STDOUT: } @@ -254,7 +255,7 @@ fn Run() { // CHECK:STDOUT: %.loc7_48.1: %struct_type.base.6c7 = struct_literal (%.loc7_47.1) // CHECK:STDOUT: %impl.elem0.loc7_47.1: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc7_47.1: = bound_method %int_0, %impl.elem0.loc7_47.1 [concrete = constants.%Convert.bound.9aa] -// CHECK:STDOUT: %specific_fn.loc7_47.1: = specific_function %impl.elem0.loc7_47.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc7_47.1: = specific_function %impl.elem0.loc7_47.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_47.2: = bound_method %int_0, %specific_fn.loc7_47.1 [concrete = constants.%bound_method.8aa] // CHECK:STDOUT: %int.convert_checked.loc7_47.1: init %i32 = call %bound_method.loc7_47.2(%int_0) [concrete = constants.%int_0.263] // CHECK:STDOUT: %.loc7_47.2: init %i32 = converted %int_0, %int.convert_checked.loc7_47.1 [concrete = constants.%int_0.263] @@ -263,7 +264,7 @@ fn Run() { // CHECK:STDOUT: %.loc7_47.4: init %i32 = initialize_from %.loc7_47.2 to %.loc7_47.3 [concrete = constants.%int_0.263] // CHECK:STDOUT: %impl.elem0.loc7_47.2: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc7_47.3: = bound_method %int_1, %impl.elem0.loc7_47.2 [concrete = constants.%Convert.bound.43e] -// CHECK:STDOUT: %specific_fn.loc7_47.2: = specific_function %impl.elem0.loc7_47.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc7_47.2: = specific_function %impl.elem0.loc7_47.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_47.4: = bound_method %int_1, %specific_fn.loc7_47.2 [concrete = constants.%bound_method.947] // CHECK:STDOUT: %int.convert_checked.loc7_47.2: init %i32 = call %bound_method.loc7_47.4(%int_1) [concrete = constants.%int_1.47b] // CHECK:STDOUT: %.loc7_47.5: init %i32 = converted %int_1, %int.convert_checked.loc7_47.2 [concrete = constants.%int_1.47b] @@ -284,7 +285,7 @@ fn Run() { // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0.loc8: %.d6a = impl_witness_access constants.%ImplicitAs.impl_witness.e34, element0 [concrete = constants.%Convert.16d] // CHECK:STDOUT: %bound_method.loc8_7.1: = bound_method %int_2, %impl.elem0.loc8 [concrete = constants.%Convert.bound.918] -// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc8: = specific_function %impl.elem0.loc8, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc8_7.2: = bound_method %int_2, %specific_fn.loc8 [concrete = constants.%bound_method.c74] // CHECK:STDOUT: %int.convert_checked.loc8: init %i32 = call %bound_method.loc8_7.2(%int_2) [concrete = constants.%int_2.d0d] // CHECK:STDOUT: %.loc8_7: init %i32 = converted %int_2, %int.convert_checked.loc8 [concrete = constants.%int_2.d0d] diff --git a/toolchain/check/testdata/class/import_forward_decl.carbon b/toolchain/check/testdata/class/import_forward_decl.carbon index 12afb891ec64..697b5a4b7df5 100644 --- a/toolchain/check/testdata/class/import_forward_decl.carbon +++ b/toolchain/check/testdata/class/import_forward_decl.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/import_indirect.carbon b/toolchain/check/testdata/class/import_indirect.carbon index 0d9cc0faa234..df78c4323bb6 100644 --- a/toolchain/check/testdata/class/import_indirect.carbon +++ b/toolchain/check/testdata/class/import_indirect.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/import_member_cycle.carbon b/toolchain/check/testdata/class/import_member_cycle.carbon index c3b5fba7f89e..709981be4180 100644 --- a/toolchain/check/testdata/class/import_member_cycle.carbon +++ b/toolchain/check/testdata/class/import_member_cycle.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/import_struct_cyle.carbon b/toolchain/check/testdata/class/import_struct_cyle.carbon index 6f8669c35bce..8ce1bec145fa 100644 --- a/toolchain/check/testdata/class/import_struct_cyle.carbon +++ b/toolchain/check/testdata/class/import_struct_cyle.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/indirect_import_member.carbon b/toolchain/check/testdata/class/indirect_import_member.carbon index 252972044470..87a4a52451bb 100644 --- a/toolchain/check/testdata/class/indirect_import_member.carbon +++ b/toolchain/check/testdata/class/indirect_import_member.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/inheritance_access.carbon b/toolchain/check/testdata/class/inheritance_access.carbon index 035d8c500f9a..b3891fa24012 100644 --- a/toolchain/check/testdata/class/inheritance_access.carbon +++ b/toolchain/check/testdata/class/inheritance_access.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -259,7 +260,7 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -386,7 +387,7 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -497,16 +498,16 @@ class B { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %SomeProtectedFunction.type: type = fn_type @SomeProtectedFunction [concrete] @@ -530,9 +531,9 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -558,7 +559,7 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc5_38.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_38.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc5_38.2(%int_5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_38.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] @@ -623,7 +624,7 @@ class B { // CHECK:STDOUT: %int_5: Core.IntLiteral = int_value 5 [concrete = constants.%int_5.64b] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc7_13.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_13.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_13.2(%int_5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc7_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] @@ -675,7 +676,7 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1013,16 +1014,16 @@ class B { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_5.64b, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_5.64b, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_5.0f6: %i32 = int_value 5 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] @@ -1046,9 +1047,9 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1076,7 +1077,7 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %impl.elem0.loc5: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc5_48.1: = bound_method %int_5.loc5, %impl.elem0.loc5 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc5: = specific_function %impl.elem0.loc5, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc5_48.2: = bound_method %int_5.loc5, %specific_fn.loc5 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked.loc5: init %i32 = call %bound_method.loc5_48.2(%int_5.loc5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc5_48.1: %i32 = value_of_initializer %int.convert_checked.loc5 [concrete = constants.%int_5.0f6] @@ -1092,7 +1093,7 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %impl.elem0.loc6: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc6_44.1: = bound_method %int_5.loc6, %impl.elem0.loc6 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc6: = specific_function %impl.elem0.loc6, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc6_44.2: = bound_method %int_5.loc6, %specific_fn.loc6 [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked.loc6: init %i32 = call %bound_method.loc6_44.2(%int_5.loc6) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc6_44.1: %i32 = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_5.0f6] @@ -1119,7 +1120,7 @@ class B { // CHECK:STDOUT: } // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc10_42.1: = bound_method %int_5, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc10_42.2: = bound_method %int_5, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc10_42.2(%int_5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc10_42.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_5.0f6] @@ -1218,7 +1219,7 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1303,7 +1304,7 @@ class B { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index ca3dfe274fa2..4eeb8e59df6b 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -53,7 +54,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -73,17 +74,17 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Class.ref.loc19_34: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %Class.ref.loc20_34: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc19_12: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc20_12: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param // CHECK:STDOUT: %next.param: %ptr.e71 = value_param call_param1 -// CHECK:STDOUT: %.loc19_28: type = splice_block %ptr [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Class.ref.loc19_23: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc19_23 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %.loc20_28: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Class.ref.loc20_23: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc20_23 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %next: %ptr.e71 = bind_name next, %next.param // CHECK:STDOUT: %return.param: ref %Class = out_param call_param2 @@ -97,17 +98,17 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Class.ref.loc23_41: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %Class.ref.loc24_41: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc23_19: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc24_19: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %n: %i32 = bind_name n, %n.param // CHECK:STDOUT: %next.param: %ptr.e71 = value_param call_param1 -// CHECK:STDOUT: %.loc23_35: type = splice_block %ptr [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Class.ref.loc23_30: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc23_30 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %.loc24_35: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Class.ref.loc24_30: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] +// CHECK:STDOUT: %ptr: type = ptr_type %Class.ref.loc24_30 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %next: %ptr.e71 = bind_name next, %next.param // CHECK:STDOUT: %return.param: ref %Class = out_param call_param2 @@ -118,46 +119,46 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem.c91 = field_decl n, element0 [concrete] +// CHECK:STDOUT: %.loc16: %Class.elem.c91 = field_decl n, element0 [concrete] // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.e71] -// CHECK:STDOUT: %.loc16: %Class.elem.0c0 = field_decl next, element1 [concrete] +// CHECK:STDOUT: %.loc17: %Class.elem.0c0 = field_decl next, element1 [concrete] // CHECK:STDOUT: %struct_type.n.next: type = struct_type {.n: %i32, .next: %ptr.e71} [concrete = constants.%struct_type.n.next] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n.next [concrete = constants.%complete_type.78f] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .n = %.loc15 +// CHECK:STDOUT: .n = %.loc16 // CHECK:STDOUT: .Class = -// CHECK:STDOUT: .next = %.loc16 +// CHECK:STDOUT: .next = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make(%n.param: %i32, %next.param: %ptr.e71) -> %return.param: %Class { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n // CHECK:STDOUT: %next.ref: %ptr.e71 = name_ref next, %next -// CHECK:STDOUT: %.loc20_31.1: %struct_type.n.next = struct_literal (%n.ref, %next.ref) -// CHECK:STDOUT: %.loc20_31.2: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc20_31.3: init %i32 = initialize_from %n.ref to %.loc20_31.2 -// CHECK:STDOUT: %.loc20_31.4: ref %ptr.e71 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc20_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc20_31.4 -// CHECK:STDOUT: %.loc20_31.6: init %Class = class_init (%.loc20_31.3, %.loc20_31.5), %return -// CHECK:STDOUT: %.loc20_32: init %Class = converted %.loc20_31.1, %.loc20_31.6 -// CHECK:STDOUT: return %.loc20_32 to %return +// CHECK:STDOUT: %.loc21_31.1: %struct_type.n.next = struct_literal (%n.ref, %next.ref) +// CHECK:STDOUT: %.loc21_31.2: ref %i32 = class_element_access %return, element0 +// CHECK:STDOUT: %.loc21_31.3: init %i32 = initialize_from %n.ref to %.loc21_31.2 +// CHECK:STDOUT: %.loc21_31.4: ref %ptr.e71 = class_element_access %return, element1 +// CHECK:STDOUT: %.loc21_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc21_31.4 +// CHECK:STDOUT: %.loc21_31.6: init %Class = class_init (%.loc21_31.3, %.loc21_31.5), %return +// CHECK:STDOUT: %.loc21_32: init %Class = converted %.loc21_31.1, %.loc21_31.6 +// CHECK:STDOUT: return %.loc21_32 to %return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeReorder(%n.param: %i32, %next.param: %ptr.e71) -> %return.param: %Class { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %next.ref: %ptr.e71 = name_ref next, %next // CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n -// CHECK:STDOUT: %.loc24_31.1: %struct_type.next.n = struct_literal (%next.ref, %n.ref) -// CHECK:STDOUT: %.loc24_31.2: ref %i32 = class_element_access %return, element1 -// CHECK:STDOUT: %.loc24_31.3: init %i32 = initialize_from %n.ref to %.loc24_31.2 -// CHECK:STDOUT: %.loc24_31.4: ref %ptr.e71 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc24_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc24_31.4 -// CHECK:STDOUT: %.loc24_31.6: init %Class = class_init (%.loc24_31.3, %.loc24_31.5), %return -// CHECK:STDOUT: %.loc24_32: init %Class = converted %.loc24_31.1, %.loc24_31.6 -// CHECK:STDOUT: return %.loc24_32 to %return +// CHECK:STDOUT: %.loc25_31.1: %struct_type.next.n = struct_literal (%next.ref, %n.ref) +// CHECK:STDOUT: %.loc25_31.2: ref %i32 = class_element_access %return, element1 +// CHECK:STDOUT: %.loc25_31.3: init %i32 = initialize_from %n.ref to %.loc25_31.2 +// CHECK:STDOUT: %.loc25_31.4: ref %ptr.e71 = class_element_access %return, element0 +// CHECK:STDOUT: %.loc25_31.5: init %ptr.e71 = initialize_from %next.ref to %.loc25_31.4 +// CHECK:STDOUT: %.loc25_31.6: init %Class = class_init (%.loc25_31.3, %.loc25_31.5), %return +// CHECK:STDOUT: %.loc25_32: init %Class = converted %.loc25_31.1, %.loc25_31.6 +// CHECK:STDOUT: return %.loc25_32 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index a27338f09699..d5291a2ce4ac 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -41,16 +42,16 @@ fn F() -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Convert.bound.ef9: = bound_method %int_2.ecc, %Convert.956 [concrete] @@ -66,9 +67,9 @@ fn F() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,51 +93,51 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Class.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Class.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %.loc16: %Class.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc17: %Class.elem = field_decl b, element1 [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b.501] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [concrete = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Class -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: .b = %.loc16 +// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .b = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc20_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) +// CHECK:STDOUT: %.loc21_26.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %impl.elem0.loc20_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_26.1: = bound_method %int_1, %impl.elem0.loc20_26.1 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc20_26.1: = specific_function %impl.elem0.loc20_26.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_26.2: = bound_method %int_1, %specific_fn.loc20_26.1 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc20_26.1: init %i32 = call %bound_method.loc20_26.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_26.2: init %i32 = converted %int_1, %int.convert_checked.loc20_26.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_26.3: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc20_26.4: ref %i32 = class_element_access %.loc20_26.3, element0 -// CHECK:STDOUT: %.loc20_26.5: init %i32 = initialize_from %.loc20_26.2 to %.loc20_26.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %impl.elem0.loc20_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_26.3: = bound_method %int_2, %impl.elem0.loc20_26.2 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc20_26.2: = specific_function %impl.elem0.loc20_26.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_26.4: = bound_method %int_2, %specific_fn.loc20_26.2 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc20_26.2: init %i32 = call %bound_method.loc20_26.4(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc20_26.6: init %i32 = converted %int_2, %int.convert_checked.loc20_26.2 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc20_26.7: ref %i32 = class_element_access %.loc20_26.3, element1 -// CHECK:STDOUT: %.loc20_26.8: init %i32 = initialize_from %.loc20_26.6 to %.loc20_26.7 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc20_26.9: init %Class = class_init (%.loc20_26.5, %.loc20_26.8), %.loc20_26.3 [concrete = constants.%Class.val] -// CHECK:STDOUT: %.loc20_26.10: ref %Class = temporary %.loc20_26.3, %.loc20_26.9 -// CHECK:STDOUT: %.loc20_28: ref %Class = converted %.loc20_26.1, %.loc20_26.10 -// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc15 [concrete = @Class.%.loc15] -// CHECK:STDOUT: %.loc20_37.1: ref %i32 = class_element_access %.loc20_28, element0 -// CHECK:STDOUT: %.loc20_37.2: %i32 = bind_value %.loc20_37.1 -// CHECK:STDOUT: return %.loc20_37.2 +// CHECK:STDOUT: %impl.elem0.loc21_26.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc21_26.1: = bound_method %int_1, %impl.elem0.loc21_26.1 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc21_26.1: = specific_function %impl.elem0.loc21_26.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc21_26.2: = bound_method %int_1, %specific_fn.loc21_26.1 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked.loc21_26.1: init %i32 = call %bound_method.loc21_26.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_26.2: init %i32 = converted %int_1, %int.convert_checked.loc21_26.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_26.3: ref %Class = temporary_storage +// CHECK:STDOUT: %.loc21_26.4: ref %i32 = class_element_access %.loc21_26.3, element0 +// CHECK:STDOUT: %.loc21_26.5: init %i32 = initialize_from %.loc21_26.2 to %.loc21_26.4 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %impl.elem0.loc21_26.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc21_26.3: = bound_method %int_2, %impl.elem0.loc21_26.2 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc21_26.2: = specific_function %impl.elem0.loc21_26.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc21_26.4: = bound_method %int_2, %specific_fn.loc21_26.2 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked.loc21_26.2: init %i32 = call %bound_method.loc21_26.4(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_26.6: init %i32 = converted %int_2, %int.convert_checked.loc21_26.2 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_26.7: ref %i32 = class_element_access %.loc21_26.3, element1 +// CHECK:STDOUT: %.loc21_26.8: init %i32 = initialize_from %.loc21_26.6 to %.loc21_26.7 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc21_26.9: init %Class = class_init (%.loc21_26.5, %.loc21_26.8), %.loc21_26.3 [concrete = constants.%Class.val] +// CHECK:STDOUT: %.loc21_26.10: ref %Class = temporary %.loc21_26.3, %.loc21_26.9 +// CHECK:STDOUT: %.loc21_28: ref %Class = converted %.loc21_26.1, %.loc21_26.10 +// CHECK:STDOUT: %a.ref: %Class.elem = name_ref a, @Class.%.loc16 [concrete = @Class.%.loc16] +// CHECK:STDOUT: %.loc21_37.1: ref %i32 = class_element_access %.loc21_28, element0 +// CHECK:STDOUT: %.loc21_37.2: %i32 = bind_value %.loc21_37.1 +// CHECK:STDOUT: return %.loc21_37.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index 893a25c5c97c..2e24a4192fff 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -56,7 +57,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -89,27 +90,27 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Inner { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Inner.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Inner.elem = field_decl b, element1 [concrete] +// CHECK:STDOUT: %.loc16: %Inner.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %int_32.loc17: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl b, element1 [concrete] // CHECK:STDOUT: %struct_type.a.b: type = struct_type {.a: %i32, .b: %i32} [concrete = constants.%struct_type.a.b] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a.b [concrete = constants.%complete_type.705] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .a = %.loc15 -// CHECK:STDOUT: .b = %.loc16 +// CHECK:STDOUT: .a = %.loc16 +// CHECK:STDOUT: .b = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Outer { -// CHECK:STDOUT: %Inner.ref.loc22: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] -// CHECK:STDOUT: %.loc22: %Outer.elem = field_decl c, element0 [concrete] // CHECK:STDOUT: %Inner.ref.loc23: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] -// CHECK:STDOUT: %.loc23: %Outer.elem = field_decl d, element1 [concrete] +// CHECK:STDOUT: %.loc23: %Outer.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %Inner.ref.loc24: type = name_ref Inner, file.%Inner.decl [concrete = constants.%Inner] +// CHECK:STDOUT: %.loc24: %Outer.elem = field_decl d, element1 [concrete] // CHECK:STDOUT: %struct_type.c.d: type = struct_type {.c: %Inner, .d: %Inner} [concrete = constants.%struct_type.c.d.dce] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c.d [concrete = constants.%complete_type.8b6] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -117,23 +118,23 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Outer // CHECK:STDOUT: .Inner = -// CHECK:STDOUT: .c = %.loc22 -// CHECK:STDOUT: .d = %.loc23 +// CHECK:STDOUT: .c = %.loc23 +// CHECK:STDOUT: .d = %.loc24 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeInner() -> %return.param: %Inner; // CHECK:STDOUT: // CHECK:STDOUT: fn @MakeOuter() -> %return.param: %Outer { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %MakeInner.ref.loc27_16: %MakeInner.type = name_ref MakeInner, file.%MakeInner.decl [concrete = constants.%MakeInner] -// CHECK:STDOUT: %.loc27_45.1: ref %Inner = class_element_access %return, element0 -// CHECK:STDOUT: %MakeInner.call.loc27_26: init %Inner = call %MakeInner.ref.loc27_16() to %.loc27_45.1 -// CHECK:STDOUT: %MakeInner.ref.loc27_34: %MakeInner.type = name_ref MakeInner, file.%MakeInner.decl [concrete = constants.%MakeInner] -// CHECK:STDOUT: %.loc27_45.2: ref %Inner = class_element_access %return, element1 -// CHECK:STDOUT: %MakeInner.call.loc27_44: init %Inner = call %MakeInner.ref.loc27_34() to %.loc27_45.2 -// CHECK:STDOUT: %.loc27_45.3: %struct_type.c.d.dce = struct_literal (%MakeInner.call.loc27_26, %MakeInner.call.loc27_44) -// CHECK:STDOUT: %.loc27_45.4: init %Outer = class_init (%MakeInner.call.loc27_26, %MakeInner.call.loc27_44), %return -// CHECK:STDOUT: %.loc27_46: init %Outer = converted %.loc27_45.3, %.loc27_45.4 -// CHECK:STDOUT: return %.loc27_46 to %return +// CHECK:STDOUT: %MakeInner.ref.loc28_16: %MakeInner.type = name_ref MakeInner, file.%MakeInner.decl [concrete = constants.%MakeInner] +// CHECK:STDOUT: %.loc28_45.1: ref %Inner = class_element_access %return, element0 +// CHECK:STDOUT: %MakeInner.call.loc28_26: init %Inner = call %MakeInner.ref.loc28_16() to %.loc28_45.1 +// CHECK:STDOUT: %MakeInner.ref.loc28_34: %MakeInner.type = name_ref MakeInner, file.%MakeInner.decl [concrete = constants.%MakeInner] +// CHECK:STDOUT: %.loc28_45.2: ref %Inner = class_element_access %return, element1 +// CHECK:STDOUT: %MakeInner.call.loc28_44: init %Inner = call %MakeInner.ref.loc28_34() to %.loc28_45.2 +// CHECK:STDOUT: %.loc28_45.3: %struct_type.c.d.dce = struct_literal (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44) +// CHECK:STDOUT: %.loc28_45.4: init %Outer = class_init (%MakeInner.call.loc28_26, %MakeInner.call.loc28_44), %return +// CHECK:STDOUT: %.loc28_46: init %Outer = converted %.loc28_45.3, %.loc28_45.4 +// CHECK:STDOUT: return %.loc28_46 to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/local.carbon b/toolchain/check/testdata/class/local.carbon index 60d435548a79..c48ca2bcaa4e 100644 --- a/toolchain/check/testdata/class/local.carbon +++ b/toolchain/check/testdata/class/local.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -52,16 +53,16 @@ class A { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %B.val: %B = struct_value (%int_1.5d2) [concrete] @@ -74,9 +75,9 @@ class A { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -113,13 +114,13 @@ class A { // CHECK:STDOUT: %return.patt: %pattern_type.971 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.971 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%B [concrete = constants.%B] +// CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %return.param: ref %B = out_param call_param0 // CHECK:STDOUT: %return: ref %B = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22: %B.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %.loc23: %B.elem = field_decl n, element0 [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete = constants.%struct_type.n.033] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -127,7 +128,7 @@ class A { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .n = %.loc22 +// CHECK:STDOUT: .n = %.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { @@ -135,13 +136,13 @@ class A { // CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {} // CHECK:STDOUT: %B.ref: type = name_ref B, %B.decl [concrete = constants.%B] // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, @B.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc25_19.1: ref %B = temporary_storage -// CHECK:STDOUT: %Make.call: init %B = call %Make.ref() to %.loc25_19.1 -// CHECK:STDOUT: %.loc25_19.2: ref %B = temporary %.loc25_19.1, %Make.call -// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc22 [concrete = @B.%.loc22] -// CHECK:STDOUT: %.loc25_20.1: ref %i32 = class_element_access %.loc25_19.2, element0 -// CHECK:STDOUT: %.loc25_20.2: %i32 = bind_value %.loc25_20.1 -// CHECK:STDOUT: return %.loc25_20.2 +// CHECK:STDOUT: %.loc26_19.1: ref %B = temporary_storage +// CHECK:STDOUT: %Make.call: init %B = call %Make.ref() to %.loc26_19.1 +// CHECK:STDOUT: %.loc26_19.2: ref %B = temporary %.loc26_19.1, %Make.call +// CHECK:STDOUT: %n.ref: %B.elem = name_ref n, @B.%.loc23 [concrete = @B.%.loc23] +// CHECK:STDOUT: %.loc26_20.1: ref %i32 = class_element_access %.loc26_19.2, element0 +// CHECK:STDOUT: %.loc26_20.2: %i32 = bind_value %.loc26_20.1 +// CHECK:STDOUT: return %.loc26_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param: %B { @@ -151,19 +152,19 @@ class A { // CHECK:STDOUT: %b.var_patt: %pattern_type.971 = var_pattern %b.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc18_39.1: %struct_type.n.44a = struct_literal (%int_1) +// CHECK:STDOUT: %.loc19_39.1: %struct_type.n.44a = struct_literal (%int_1) // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_39.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_39.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc18_39.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_39.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_39.3: ref %i32 = class_element_access %return, element0 -// CHECK:STDOUT: %.loc18_39.4: init %i32 = initialize_from %.loc18_39.2 to %.loc18_39.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc18_39.5: init %B = class_init (%.loc18_39.4), %return [concrete = constants.%B.val] -// CHECK:STDOUT: %.loc18_18: init %B = converted %.loc18_39.1, %.loc18_39.5 [concrete = constants.%B.val] -// CHECK:STDOUT: assign %return, %.loc18_18 -// CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%B [concrete = constants.%B] +// CHECK:STDOUT: %bound_method.loc19_39.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc19_39.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc19_39.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_39.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_39.3: ref %i32 = class_element_access %return, element0 +// CHECK:STDOUT: %.loc19_39.4: init %i32 = initialize_from %.loc19_39.2 to %.loc19_39.3 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc19_39.5: init %B = class_init (%.loc19_39.4), %return [concrete = constants.%B.val] +// CHECK:STDOUT: %.loc19_18: init %B = converted %.loc19_39.1, %.loc19_39.5 [concrete = constants.%B.val] +// CHECK:STDOUT: assign %return, %.loc19_18 +// CHECK:STDOUT: %Self.ref.loc19: type = name_ref Self, constants.%B [concrete = constants.%B] // CHECK:STDOUT: %b: ref %B = bind_name b, %return // CHECK:STDOUT: return %b to %return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 755d06345a4b..0aa304204e7d 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -93,16 +94,16 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %Class.val: %Class = struct_value (%int_1.5d2) [concrete] @@ -127,9 +128,9 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -155,13 +156,13 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc23: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc23: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc23: %Class = bind_name self, %self.param.loc23 -// CHECK:STDOUT: %return.param.loc23: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc23: ref %i32 = return_slot %return.param.loc23 +// CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc24: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc24: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc24: %Class = bind_name self, %self.param.loc24 +// CHECK:STDOUT: %return.param.loc24: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc24: ref %i32 = return_slot %return.param.loc24 // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] { // CHECK:STDOUT: %c.patt: %pattern_type.761 = binding_pattern c [concrete] @@ -218,7 +219,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %p.param: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc46: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %.loc47: type = splice_block %ptr [concrete = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.e71] // CHECK:STDOUT: } @@ -235,7 +236,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %p.param: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc50: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %.loc51: type = splice_block %ptr [concrete = constants.%ptr.e71] { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Class.ref [concrete = constants.%ptr.e71] // CHECK:STDOUT: } @@ -278,25 +279,25 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc15: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc15: %Class = bind_name self, %self.param.loc15 -// CHECK:STDOUT: %return.param.loc15: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc15: ref %i32 = return_slot %return.param.loc15 +// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc16: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc16: %Class = bind_name self, %self.param.loc16 +// CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %self.patt: %pattern_type.796 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.796 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc16_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc17_8: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %self.param: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc16_23: type = splice_block %ptr [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %.loc17_23: type = splice_block %ptr [concrete = constants.%ptr.e71] { // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.e71] // CHECK:STDOUT: } @@ -308,7 +309,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %A: %F.type = bind_alias A, %F.decl [concrete = constants.%F] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: %Class.elem = field_decl k, element0 [concrete] +// CHECK:STDOUT: %.loc21: %Class.elem = field_decl k, element0 [concrete] // CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %i32} [concrete = constants.%struct_type.k.0bf] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k [concrete = constants.%complete_type.954] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -318,16 +319,16 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .A = %A -// CHECK:STDOUT: .k = %.loc20 +// CHECK:STDOUT: .k = %.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc23: %Class) -> %i32 { +// CHECK:STDOUT: fn @F(%self.param.loc24: %Class) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc23 -// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%.loc20 [concrete = @Class.%.loc20] -// CHECK:STDOUT: %.loc24_14.1: ref %i32 = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc24_14.2: %i32 = bind_value %.loc24_14.1 -// CHECK:STDOUT: return %.loc24_14.2 +// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc24 +// CHECK:STDOUT: %k.ref: %Class.elem = name_ref k, @Class.%.loc21 [concrete = @Class.%.loc21] +// CHECK:STDOUT: %.loc25_14.1: ref %i32 = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc25_14.2: %i32 = bind_value %.loc25_14.1 +// CHECK:STDOUT: return %.loc25_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%self.param: %ptr.e71) -> %i32; @@ -338,9 +339,9 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %c.ref, %F.ref // CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%c.ref) -// CHECK:STDOUT: %.loc30_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc30_15.2: %i32 = converted %F.call, %.loc30_15.1 -// CHECK:STDOUT: return %.loc30_15.2 +// CHECK:STDOUT: %.loc31_15.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc31_15.2: %i32 = converted %F.call, %.loc31_15.1 +// CHECK:STDOUT: return %.loc31_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallAlias(%c.param: %Class) -> %i32 { @@ -349,35 +350,35 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %A.ref: %F.type = name_ref A, @Class.%A [concrete = constants.%F] // CHECK:STDOUT: %F.bound: = bound_method %c.ref, %A.ref // CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%c.ref) -// CHECK:STDOUT: %.loc34_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc34_15.2: %i32 = converted %F.call, %.loc34_15.1 -// CHECK:STDOUT: return %.loc34_15.2 +// CHECK:STDOUT: %.loc35_15.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc35_15.2: %i32 = converted %F.call, %.loc35_15.1 +// CHECK:STDOUT: return %.loc35_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallOnConstBoundMethod() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc38_18.1: %struct_type.k.240 = struct_literal (%int_1) +// CHECK:STDOUT: %.loc39_18.1: %struct_type.k.240 = struct_literal (%int_1) // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc38_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc38_18.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc38_18.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_18.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_18.3: ref %Class = temporary_storage -// CHECK:STDOUT: %.loc38_18.4: ref %i32 = class_element_access %.loc38_18.3, element0 -// CHECK:STDOUT: %.loc38_18.5: init %i32 = initialize_from %.loc38_18.2 to %.loc38_18.4 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc38_18.6: init %Class = class_init (%.loc38_18.5), %.loc38_18.3 [concrete = constants.%Class.val] -// CHECK:STDOUT: %.loc38_18.7: ref %Class = temporary %.loc38_18.3, %.loc38_18.6 -// CHECK:STDOUT: %.loc38_20.1: ref %Class = converted %.loc38_18.1, %.loc38_18.7 +// CHECK:STDOUT: %bound_method.loc39_18.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc39_18.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc39_18.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc39_18.2: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc39_18.3: ref %Class = temporary_storage +// CHECK:STDOUT: %.loc39_18.4: ref %i32 = class_element_access %.loc39_18.3, element0 +// CHECK:STDOUT: %.loc39_18.5: init %i32 = initialize_from %.loc39_18.2 to %.loc39_18.4 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc39_18.6: init %Class = class_init (%.loc39_18.5), %.loc39_18.3 [concrete = constants.%Class.val] +// CHECK:STDOUT: %.loc39_18.7: ref %Class = temporary %.loc39_18.3, %.loc39_18.6 +// CHECK:STDOUT: %.loc39_20.1: ref %Class = converted %.loc39_18.1, %.loc39_18.7 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc38_20.1, %F.ref -// CHECK:STDOUT: %.loc38_20.2: %Class = bind_value %.loc38_20.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc38_20.2) -// CHECK:STDOUT: %.loc38_33.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc38_33.2: %i32 = converted %F.call, %.loc38_33.1 -// CHECK:STDOUT: return %.loc38_33.2 +// CHECK:STDOUT: %F.bound: = bound_method %.loc39_20.1, %F.ref +// CHECK:STDOUT: %.loc39_20.2: %Class = bind_value %.loc39_20.1 +// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc39_20.2) +// CHECK:STDOUT: %.loc39_33.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc39_33.2: %i32 = converted %F.call, %.loc39_33.1 +// CHECK:STDOUT: return %.loc39_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallWithAddr() -> %i32 { @@ -394,35 +395,35 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: %G.bound: = bound_method %c.ref, %G.ref // CHECK:STDOUT: %addr: %ptr.e71 = addr_of %c.ref // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) -// CHECK:STDOUT: %.loc43_15.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc43_15.2: %i32 = converted %G.call, %.loc43_15.1 -// CHECK:STDOUT: return %.loc43_15.2 +// CHECK:STDOUT: %.loc44_15.1: %i32 = value_of_initializer %G.call +// CHECK:STDOUT: %.loc44_15.2: %i32 = converted %G.call, %.loc44_15.1 +// CHECK:STDOUT: return %.loc44_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallFThroughPointer(%p.param: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p -// CHECK:STDOUT: %.loc47_11.1: ref %Class = deref %p.ref +// CHECK:STDOUT: %.loc48_11.1: ref %Class = deref %p.ref // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc47_11.1, %F.ref -// CHECK:STDOUT: %.loc47_11.2: %Class = bind_value %.loc47_11.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc47_11.2) -// CHECK:STDOUT: %.loc47_18.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc47_18.2: %i32 = converted %F.call, %.loc47_18.1 -// CHECK:STDOUT: return %.loc47_18.2 +// CHECK:STDOUT: %F.bound: = bound_method %.loc48_11.1, %F.ref +// CHECK:STDOUT: %.loc48_11.2: %Class = bind_value %.loc48_11.1 +// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc48_11.2) +// CHECK:STDOUT: %.loc48_18.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc48_18.2: %i32 = converted %F.call, %.loc48_18.1 +// CHECK:STDOUT: return %.loc48_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallGThroughPointer(%p.param: %ptr.e71) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %p.ref: %ptr.e71 = name_ref p, %p -// CHECK:STDOUT: %.loc51_11: ref %Class = deref %p.ref +// CHECK:STDOUT: %.loc52_11: ref %Class = deref %p.ref // CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %.loc51_11, %G.ref -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc51_11 +// CHECK:STDOUT: %G.bound: = bound_method %.loc52_11, %G.ref +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc52_11 // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) -// CHECK:STDOUT: %.loc51_18.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc51_18.2: %i32 = converted %G.call, %.loc51_18.1 -// CHECK:STDOUT: return %.loc51_18.2 +// CHECK:STDOUT: %.loc52_18.1: %i32 = value_of_initializer %G.call +// CHECK:STDOUT: %.loc52_18.2: %i32 = converted %G.call, %.loc52_18.1 +// CHECK:STDOUT: return %.loc52_18.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param: %Class; @@ -430,30 +431,30 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: fn @CallFOnInitializingExpr() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc57_15.1: ref %Class = temporary_storage -// CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc57_15.1 -// CHECK:STDOUT: %.loc57_15.2: ref %Class = temporary %.loc57_15.1, %Make.call +// CHECK:STDOUT: %.loc58_15.1: ref %Class = temporary_storage +// CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc58_15.1 +// CHECK:STDOUT: %.loc58_15.2: ref %Class = temporary %.loc58_15.1, %Make.call // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc57_15.2, %F.ref -// CHECK:STDOUT: %.loc57_15.3: %Class = bind_value %.loc57_15.2 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc57_15.3) -// CHECK:STDOUT: %.loc57_20.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc57_20.2: %i32 = converted %F.call, %.loc57_20.1 -// CHECK:STDOUT: return %.loc57_20.2 +// CHECK:STDOUT: %F.bound: = bound_method %.loc58_15.2, %F.ref +// CHECK:STDOUT: %.loc58_15.3: %Class = bind_value %.loc58_15.2 +// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc58_15.3) +// CHECK:STDOUT: %.loc58_20.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc58_20.2: %i32 = converted %F.call, %.loc58_20.1 +// CHECK:STDOUT: return %.loc58_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @CallGOnInitializingExpr() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc61_15.1: ref %Class = temporary_storage -// CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc61_15.1 -// CHECK:STDOUT: %.loc61_15.2: ref %Class = temporary %.loc61_15.1, %Make.call +// CHECK:STDOUT: %.loc62_15.1: ref %Class = temporary_storage +// CHECK:STDOUT: %Make.call: init %Class = call %Make.ref() to %.loc62_15.1 +// CHECK:STDOUT: %.loc62_15.2: ref %Class = temporary %.loc62_15.1, %Make.call // CHECK:STDOUT: %G.ref: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.bound: = bound_method %.loc61_15.2, %G.ref -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc61_15.2 +// CHECK:STDOUT: %G.bound: = bound_method %.loc62_15.2, %G.ref +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %.loc62_15.2 // CHECK:STDOUT: %G.call: init %i32 = call %G.bound(%addr) -// CHECK:STDOUT: %.loc61_20.1: %i32 = value_of_initializer %G.call -// CHECK:STDOUT: %.loc61_20.2: %i32 = converted %G.call, %.loc61_20.1 -// CHECK:STDOUT: return %.loc61_20.2 +// CHECK:STDOUT: %.loc62_20.1: %i32 = value_of_initializer %G.call +// CHECK:STDOUT: %.loc62_20.2: %i32 = converted %G.call, %.loc62_20.1 +// CHECK:STDOUT: return %.loc62_20.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/method_access.carbon b/toolchain/check/testdata/class/method_access.carbon index e2f71570c65a..d5c559a09eac 100644 --- a/toolchain/check/testdata/class/method_access.carbon +++ b/toolchain/check/testdata/class/method_access.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/name_poisoning.carbon b/toolchain/check/testdata/class/name_poisoning.carbon index d5df6730ad66..bad452deec2b 100644 --- a/toolchain/check/testdata/class/name_poisoning.carbon +++ b/toolchain/check/testdata/class/name_poisoning.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // EXTRA-ARGS: --no-prelude-import // // AUTOUPDATE diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index 1d7eab062e7a..6a517d3a554c 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -54,7 +55,7 @@ fn G(o: Outer) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,7 +76,7 @@ fn G(o: Outer) { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %oi.param: %Inner = value_param call_param0 -// CHECK:STDOUT: %.loc20: type = splice_block %Inner.ref [concrete = constants.%Inner] { +// CHECK:STDOUT: %.loc21: type = splice_block %Inner.ref [concrete = constants.%Inner] { // CHECK:STDOUT: %Outer.ref: type = name_ref Outer, file.%Outer.decl [concrete = constants.%Outer] // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: } @@ -107,23 +108,23 @@ fn G(o: Outer) { // CHECK:STDOUT: class @Inner { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16: %Inner.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %.loc17: %Inner.elem = field_decl n, element0 [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete = constants.%struct_type.n] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Inner -// CHECK:STDOUT: .n = %.loc16 +// CHECK:STDOUT: .n = %.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%oi.param: %Inner) -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %oi.ref: %Inner = name_ref oi, %oi -// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%.loc16 [concrete = @Inner.%.loc16] -// CHECK:STDOUT: %.loc21_12.1: ref %i32 = class_element_access %oi.ref, element0 -// CHECK:STDOUT: %.loc21_12.2: %i32 = bind_value %.loc21_12.1 -// CHECK:STDOUT: return %.loc21_12.2 +// CHECK:STDOUT: %n.ref: %Inner.elem = name_ref n, @Inner.%.loc17 [concrete = @Inner.%.loc17] +// CHECK:STDOUT: %.loc22_12.1: ref %i32 = class_element_access %oi.ref, element0 +// CHECK:STDOUT: %.loc22_12.2: %i32 = bind_value %.loc22_12.1 +// CHECK:STDOUT: return %.loc22_12.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G(%o.param: %Outer) { @@ -133,7 +134,7 @@ fn G(o: Outer) { // CHECK:STDOUT: %i.var_patt: %pattern_type.906 = var_pattern %i.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %i.var: ref %Inner = var %i.var_patt -// CHECK:STDOUT: %.loc25: type = splice_block %Inner.ref [concrete = constants.%Inner] { +// CHECK:STDOUT: %.loc26: type = splice_block %Inner.ref [concrete = constants.%Inner] { // CHECK:STDOUT: %o.ref: %Outer = name_ref o, %o // CHECK:STDOUT: %Inner.ref: type = name_ref Inner, @Outer.%Inner.decl [concrete = constants.%Inner] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/no_definition_in_impl_file.carbon b/toolchain/check/testdata/class/no_definition_in_impl_file.carbon index 9e27a94269c3..68ef1540b3bb 100644 --- a/toolchain/check/testdata/class/no_definition_in_impl_file.carbon +++ b/toolchain/check/testdata/class/no_definition_in_impl_file.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index b24d120e52aa..085b36aca138 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -56,7 +57,7 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -67,103 +68,103 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt.loc20_17: %pattern_type.796 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt.loc20_21: %pattern_type.796 = value_param_pattern %self.patt.loc20_17, call_param0 [concrete] -// CHECK:STDOUT: %.loc20_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc20_21 [concrete] -// CHECK:STDOUT: %self.patt.loc20_30: %pattern_type.7ce = binding_pattern r#self [concrete] -// CHECK:STDOUT: %self.param_patt.loc20_36: %pattern_type.7ce = value_param_pattern %self.patt.loc20_30, call_param1 [concrete] +// CHECK:STDOUT: %self.patt.loc21_17: %pattern_type.796 = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt.loc21_21: %pattern_type.796 = value_param_pattern %self.patt.loc21_17, call_param0 [concrete] +// CHECK:STDOUT: %.loc21_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc21_21 [concrete] +// CHECK:STDOUT: %self.patt.loc21_30: %pattern_type.7ce = binding_pattern r#self [concrete] +// CHECK:STDOUT: %self.param_patt.loc21_36: %pattern_type.7ce = value_param_pattern %self.patt.loc21_30, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc20_21: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc20_27: type = splice_block %ptr.loc20 [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc20: type = ptr_type %Self.ref.loc20 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %self.param.loc21_21: %ptr.e71 = value_param call_param0 +// CHECK:STDOUT: %.loc21_27: type = splice_block %ptr.loc21 [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc21: type = ptr_type %Self.ref.loc21 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20_17: %ptr.e71 = bind_name self, %self.param.loc20_21 -// CHECK:STDOUT: %self.param.loc20_36: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc20_38: type = splice_block %i32.loc20 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.loc21_17: %ptr.e71 = bind_name self, %self.param.loc21_21 +// CHECK:STDOUT: %self.param.loc21_36: %i32 = value_param call_param1 +// CHECK:STDOUT: %.loc21_38: type = splice_block %i32.loc21 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc20_30: %i32 = bind_name r#self, %self.param.loc20_36 +// CHECK:STDOUT: %self.loc21_30: %i32 = bind_name r#self, %self.param.loc21_36 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt.loc24_12: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt.loc24_16: %pattern_type.761 = value_param_pattern %self.patt.loc24_12, call_param0 [concrete] -// CHECK:STDOUT: %self.patt.loc24_24: %pattern_type.7ce = binding_pattern r#self [concrete] -// CHECK:STDOUT: %self.param_patt.loc24_30: %pattern_type.7ce = value_param_pattern %self.patt.loc24_24, call_param1 [concrete] +// CHECK:STDOUT: %self.patt.loc25_12: %pattern_type.761 = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt.loc25_16: %pattern_type.761 = value_param_pattern %self.patt.loc25_12, call_param0 [concrete] +// CHECK:STDOUT: %self.patt.loc25_24: %pattern_type.7ce = binding_pattern r#self [concrete] +// CHECK:STDOUT: %self.param_patt.loc25_30: %pattern_type.7ce = value_param_pattern %self.patt.loc25_24, call_param1 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.511 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.511 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc24_41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %int_32.loc24_46: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc24_49.1: %tuple.type.24b = tuple_literal (%i32.loc24_41, %i32.loc24_46) -// CHECK:STDOUT: %.loc24_49.2: type = converted %.loc24_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] -// CHECK:STDOUT: %self.param.loc24_16: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc24: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc24_12: %Class = bind_name self, %self.param.loc24_16 -// CHECK:STDOUT: %self.param.loc24_30: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc24_32: type = splice_block %i32.loc24_32 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc24_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc25_41: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25_41: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc25_46: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25_46: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc25_49.1: %tuple.type.24b = tuple_literal (%i32.loc25_41, %i32.loc25_46) +// CHECK:STDOUT: %.loc25_49.2: type = converted %.loc25_49.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %self.param.loc25_16: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc25_12: %Class = bind_name self, %self.param.loc25_16 +// CHECK:STDOUT: %self.param.loc25_30: %i32 = value_param call_param1 +// CHECK:STDOUT: %.loc25_32: type = splice_block %i32.loc25_32 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc25_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc24_24: %i32 = bind_name r#self, %self.param.loc24_30 -// CHECK:STDOUT: %return.param.loc24: ref %tuple.type.d07 = out_param call_param2 -// CHECK:STDOUT: %return.loc24: ref %tuple.type.d07 = return_slot %return.param.loc24 +// CHECK:STDOUT: %self.loc25_24: %i32 = bind_name r#self, %self.param.loc25_30 +// CHECK:STDOUT: %return.param.loc25: ref %tuple.type.d07 = out_param call_param2 +// CHECK:STDOUT: %return.loc25: ref %tuple.type.d07 = return_slot %return.param.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %self.patt.loc20_17: %pattern_type.796 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt.loc20_21: %pattern_type.796 = value_param_pattern %self.patt.loc20_17, call_param0 [concrete] -// CHECK:STDOUT: %.loc20_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc20_21 [concrete] -// CHECK:STDOUT: %self.patt.loc20_30: %pattern_type.7ce = binding_pattern r#self [concrete] -// CHECK:STDOUT: %self.param_patt.loc20_36: %pattern_type.7ce = value_param_pattern %self.patt.loc20_30, call_param1 [concrete] +// CHECK:STDOUT: %self.patt.loc21_17: %pattern_type.796 = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt.loc21_21: %pattern_type.796 = value_param_pattern %self.patt.loc21_17, call_param0 [concrete] +// CHECK:STDOUT: %.loc21_12: %pattern_type.f6d = addr_pattern %self.param_patt.loc21_21 [concrete] +// CHECK:STDOUT: %self.patt.loc21_30: %pattern_type.7ce = binding_pattern r#self [concrete] +// CHECK:STDOUT: %self.param_patt.loc21_36: %pattern_type.7ce = value_param_pattern %self.patt.loc21_30, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc15_17: %ptr.e71 = value_param call_param0 -// CHECK:STDOUT: %.loc15_23: type = splice_block %ptr.loc15 [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc15: type = ptr_type %Self.ref.loc15 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %self.param.loc16_17: %ptr.e71 = value_param call_param0 +// CHECK:STDOUT: %.loc16_23: type = splice_block %ptr.loc16 [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc16: type = ptr_type %Self.ref.loc16 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc15_13: %ptr.e71 = bind_name self, %self.param.loc15_17 -// CHECK:STDOUT: %self.param.loc15_32: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc15_34: type = splice_block %i32.loc15 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.loc16_13: %ptr.e71 = bind_name self, %self.param.loc16_17 +// CHECK:STDOUT: %self.param.loc16_32: %i32 = value_param call_param1 +// CHECK:STDOUT: %.loc16_34: type = splice_block %i32.loc16 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc15_26: %i32 = bind_name r#self, %self.param.loc15_32 +// CHECK:STDOUT: %self.loc16_26: %i32 = bind_name r#self, %self.param.loc16_32 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { -// CHECK:STDOUT: %self.patt.loc24_12: %pattern_type.761 = binding_pattern self [concrete] -// CHECK:STDOUT: %self.param_patt.loc24_16: %pattern_type.761 = value_param_pattern %self.patt.loc24_12, call_param0 [concrete] -// CHECK:STDOUT: %self.patt.loc24_24: %pattern_type.7ce = binding_pattern r#self [concrete] -// CHECK:STDOUT: %self.param_patt.loc24_30: %pattern_type.7ce = value_param_pattern %self.patt.loc24_24, call_param1 [concrete] +// CHECK:STDOUT: %self.patt.loc25_12: %pattern_type.761 = binding_pattern self [concrete] +// CHECK:STDOUT: %self.param_patt.loc25_16: %pattern_type.761 = value_param_pattern %self.patt.loc25_12, call_param0 [concrete] +// CHECK:STDOUT: %self.patt.loc25_24: %pattern_type.7ce = binding_pattern r#self [concrete] +// CHECK:STDOUT: %self.param_patt.loc25_30: %pattern_type.7ce = value_param_pattern %self.patt.loc25_24, call_param1 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.511 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.511 = out_param_pattern %return.patt, call_param2 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc16_37: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc16_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %int_32.loc16_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc16_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc16_45.1: %tuple.type.24b = tuple_literal (%i32.loc16_37, %i32.loc16_42) -// CHECK:STDOUT: %.loc16_45.2: type = converted %.loc16_45.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] -// CHECK:STDOUT: %self.param.loc16_12: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc16_8: %Class = bind_name self, %self.param.loc16_12 -// CHECK:STDOUT: %self.param.loc16_26: %i32 = value_param call_param1 -// CHECK:STDOUT: %.loc16_28: type = splice_block %i32.loc16_28 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc16_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc16_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc17_37: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17_37: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc17_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc17_45.1: %tuple.type.24b = tuple_literal (%i32.loc17_37, %i32.loc17_42) +// CHECK:STDOUT: %.loc17_45.2: type = converted %.loc17_45.1, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07] +// CHECK:STDOUT: %self.param.loc17_12: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc17_8: %Class = bind_name self, %self.param.loc17_12 +// CHECK:STDOUT: %self.param.loc17_26: %i32 = value_param call_param1 +// CHECK:STDOUT: %.loc17_28: type = splice_block %i32.loc17_28 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc17_28: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc17_28: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc16_20: %i32 = bind_name r#self, %self.param.loc16_26 -// CHECK:STDOUT: %return.param.loc16: ref %tuple.type.d07 = out_param call_param2 -// CHECK:STDOUT: %return.loc16: ref %tuple.type.d07 = return_slot %return.param.loc16 +// CHECK:STDOUT: %self.loc17_20: %i32 = bind_name r#self, %self.param.loc17_26 +// CHECK:STDOUT: %return.param.loc17: ref %tuple.type.d07 = out_param call_param2 +// CHECK:STDOUT: %return.loc17: ref %tuple.type.d07 = return_slot %return.param.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc17: %Class.elem = field_decl n, element0 [concrete] +// CHECK:STDOUT: %.loc18: %Class.elem = field_decl n, element0 [concrete] // CHECK:STDOUT: %struct_type.n: type = struct_type {.n: %i32} [concrete = constants.%struct_type.n] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.n [concrete = constants.%complete_type.54b] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -172,34 +173,34 @@ fn Class.G[self: Self](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl -// CHECK:STDOUT: .n = %.loc17 +// CHECK:STDOUT: .n = %.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc20_21: %ptr.e71, %self.param.loc20_36: %i32) { +// CHECK:STDOUT: fn @F(%self.param.loc21_21: %ptr.e71, %self.param.loc21_36: %i32) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref.loc21_5: %ptr.e71 = name_ref self, %self.loc20_17 -// CHECK:STDOUT: %.loc21_4: ref %Class = deref %self.ref.loc21_5 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc17 [concrete = @Class.%.loc17] -// CHECK:STDOUT: %.loc21_10: ref %i32 = class_element_access %.loc21_4, element0 -// CHECK:STDOUT: %self.ref.loc21_15: %i32 = name_ref r#self, %self.loc20_30 -// CHECK:STDOUT: assign %.loc21_10, %self.ref.loc21_15 +// CHECK:STDOUT: %self.ref.loc22_5: %ptr.e71 = name_ref self, %self.loc21_17 +// CHECK:STDOUT: %.loc22_4: ref %Class = deref %self.ref.loc22_5 +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18] +// CHECK:STDOUT: %.loc22_10: ref %i32 = class_element_access %.loc22_4, element0 +// CHECK:STDOUT: %self.ref.loc22_15: %i32 = name_ref r#self, %self.loc21_30 +// CHECK:STDOUT: assign %.loc22_10, %self.ref.loc22_15 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @G(%self.param.loc24_16: %Class, %self.param.loc24_30: %i32) -> %return.param.loc24: %tuple.type.d07 { +// CHECK:STDOUT: fn @G(%self.param.loc25_16: %Class, %self.param.loc25_30: %i32) -> %return.param.loc25: %tuple.type.d07 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref.loc25_11: %Class = name_ref self, %self.loc24_12 -// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc17 [concrete = @Class.%.loc17] -// CHECK:STDOUT: %.loc25_15.1: ref %i32 = class_element_access %self.ref.loc25_11, element0 -// CHECK:STDOUT: %.loc25_15.2: %i32 = bind_value %.loc25_15.1 -// CHECK:STDOUT: %self.ref.loc25_19: %i32 = name_ref r#self, %self.loc24_24 -// CHECK:STDOUT: %.loc25_25.1: %tuple.type.d07 = tuple_literal (%.loc25_15.2, %self.ref.loc25_19) -// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return.loc24, element0 -// CHECK:STDOUT: %.loc25_25.2: init %i32 = initialize_from %.loc25_15.2 to %tuple.elem0 -// CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return.loc24, element1 -// CHECK:STDOUT: %.loc25_25.3: init %i32 = initialize_from %self.ref.loc25_19 to %tuple.elem1 -// CHECK:STDOUT: %.loc25_25.4: init %tuple.type.d07 = tuple_init (%.loc25_25.2, %.loc25_25.3) to %return.loc24 -// CHECK:STDOUT: %.loc25_26: init %tuple.type.d07 = converted %.loc25_25.1, %.loc25_25.4 -// CHECK:STDOUT: return %.loc25_26 to %return.loc24 +// CHECK:STDOUT: %self.ref.loc26_11: %Class = name_ref self, %self.loc25_12 +// CHECK:STDOUT: %n.ref: %Class.elem = name_ref n, @Class.%.loc18 [concrete = @Class.%.loc18] +// CHECK:STDOUT: %.loc26_15.1: ref %i32 = class_element_access %self.ref.loc26_11, element0 +// CHECK:STDOUT: %.loc26_15.2: %i32 = bind_value %.loc26_15.1 +// CHECK:STDOUT: %self.ref.loc26_19: %i32 = name_ref r#self, %self.loc25_24 +// CHECK:STDOUT: %.loc26_25.1: %tuple.type.d07 = tuple_literal (%.loc26_15.2, %self.ref.loc26_19) +// CHECK:STDOUT: %tuple.elem0: ref %i32 = tuple_access %return.loc25, element0 +// CHECK:STDOUT: %.loc26_25.2: init %i32 = initialize_from %.loc26_15.2 to %tuple.elem0 +// CHECK:STDOUT: %tuple.elem1: ref %i32 = tuple_access %return.loc25, element1 +// CHECK:STDOUT: %.loc26_25.3: init %i32 = initialize_from %self.ref.loc26_19 to %tuple.elem1 +// CHECK:STDOUT: %.loc26_25.4: init %tuple.type.d07 = tuple_init (%.loc26_25.2, %.loc26_25.3) to %return.loc25 +// CHECK:STDOUT: %.loc26_26: init %tuple.type.d07 = converted %.loc26_25.1, %.loc26_25.4 +// CHECK:STDOUT: return %.loc26_26 to %return.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index 1ff6198ba57d..3c2439a77ec9 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -66,12 +67,12 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %y.patt: %pattern_type.c06 = binding_pattern y [concrete] // CHECK:STDOUT: %y.param_patt: %pattern_type.c06 = value_param_pattern %y.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param.loc27: %MemberNamedSelf = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc27_25: type = name_ref Self, constants.%MemberNamedSelf [concrete = constants.%MemberNamedSelf] -// CHECK:STDOUT: %x.loc27: %MemberNamedSelf = bind_name x, %x.param.loc27 -// CHECK:STDOUT: %y.param.loc27: %Self = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc27_34: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [concrete = constants.%Self] -// CHECK:STDOUT: %y.loc27: %Self = bind_name y, %y.param.loc27 +// CHECK:STDOUT: %x.param.loc28: %MemberNamedSelf = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc28_25: type = name_ref Self, constants.%MemberNamedSelf [concrete = constants.%MemberNamedSelf] +// CHECK:STDOUT: %x.loc28: %MemberNamedSelf = bind_name x, %x.param.loc28 +// CHECK:STDOUT: %y.param.loc28: %Self = value_param call_param1 +// CHECK:STDOUT: %Self.ref.loc28_34: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [concrete = constants.%Self] +// CHECK:STDOUT: %y.loc28: %Self = bind_name y, %y.param.loc28 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -94,12 +95,12 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %y.patt: %pattern_type.c06 = binding_pattern y [concrete] // CHECK:STDOUT: %y.param_patt: %pattern_type.c06 = value_param_pattern %y.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %x.param.loc24: %MemberNamedSelf = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc24_11: type = name_ref Self, constants.%MemberNamedSelf [concrete = constants.%MemberNamedSelf] -// CHECK:STDOUT: %x.loc24: %MemberNamedSelf = bind_name x, %x.param.loc24 -// CHECK:STDOUT: %y.param.loc24: %Self = value_param call_param1 -// CHECK:STDOUT: %Self.ref.loc24_20: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [concrete = constants.%Self] -// CHECK:STDOUT: %y.loc24: %Self = bind_name y, %y.param.loc24 +// CHECK:STDOUT: %x.param.loc25: %MemberNamedSelf = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc25_11: type = name_ref Self, constants.%MemberNamedSelf [concrete = constants.%MemberNamedSelf] +// CHECK:STDOUT: %x.loc25: %MemberNamedSelf = bind_name x, %x.param.loc25 +// CHECK:STDOUT: %y.param.loc25: %Self = value_param call_param1 +// CHECK:STDOUT: %Self.ref.loc25_20: type = name_ref r#Self, @MemberNamedSelf.%Self.decl [concrete = constants.%Self] +// CHECK:STDOUT: %y.loc25: %Self = bind_name y, %y.param.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -127,9 +128,9 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %Self.var_patt: %pattern_type.796 = var_pattern %Self.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %Self.var: ref %ptr.e71 = var %Self.var_patt -// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16 [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc16: type = ptr_type %Self.ref.loc16 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %.loc17: type = splice_block %ptr.loc17 [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Self.ref.loc17 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %Self: ref %ptr.e71 = bind_name r#Self, %Self.var // CHECK:STDOUT: name_binding_decl { @@ -137,18 +138,18 @@ fn MemberNamedSelf.F(x: Self, y: r#Self) {} // CHECK:STDOUT: %p.var_patt: %pattern_type.796 = var_pattern %p.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %p.var: ref %ptr.e71 = var %p.var_patt -// CHECK:STDOUT: %Self.ref.loc17_20: ref %ptr.e71 = name_ref r#Self, %Self -// CHECK:STDOUT: %.loc17_20: %ptr.e71 = bind_value %Self.ref.loc17_20 -// CHECK:STDOUT: assign %p.var, %.loc17_20 -// CHECK:STDOUT: %.loc17_16: type = splice_block %ptr.loc17 [concrete = constants.%ptr.e71] { -// CHECK:STDOUT: %Self.ref.loc17_12: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %ptr.loc17: type = ptr_type %Self.ref.loc17_12 [concrete = constants.%ptr.e71] +// CHECK:STDOUT: %Self.ref.loc18_20: ref %ptr.e71 = name_ref r#Self, %Self +// CHECK:STDOUT: %.loc18_20: %ptr.e71 = bind_value %Self.ref.loc18_20 +// CHECK:STDOUT: assign %p.var, %.loc18_20 +// CHECK:STDOUT: %.loc18_16: type = splice_block %ptr.loc18 [concrete = constants.%ptr.e71] { +// CHECK:STDOUT: %Self.ref.loc18_12: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %ptr.loc18: type = ptr_type %Self.ref.loc18_12 [concrete = constants.%ptr.e71] // CHECK:STDOUT: } // CHECK:STDOUT: %p: ref %ptr.e71 = bind_name p, %p.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F.2(%x.param.loc27: %MemberNamedSelf, %y.param.loc27: %Self) { +// CHECK:STDOUT: fn @F.2(%x.param.loc28: %MemberNamedSelf, %y.param.loc28: %Self) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index a1700d162148..5e5dbc95e315 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -42,26 +43,26 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .Class = %Class.decl.loc14 +// CHECK:STDOUT: .Class = %Class.decl.loc15 // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %Class.decl.loc14: type = class_decl @Class [concrete = constants.%Class] {} {} -// CHECK:STDOUT: %Class.decl.loc16: type = class_decl @Class [concrete = constants.%Class] {} {} +// CHECK:STDOUT: %Class.decl.loc15: type = class_decl @Class [concrete = constants.%Class] {} {} +// CHECK:STDOUT: %Class.decl.loc17: type = class_decl @Class [concrete = constants.%Class] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %self.patt: %pattern_type.761 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.761 = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %b.patt: %pattern_type.cb1 = binding_pattern b [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.cb1 = value_param_pattern %b.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc20: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc20: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc20: %Class = bind_name self, %self.param.loc20 -// CHECK:STDOUT: %b.param.loc20: %empty_tuple.type = value_param call_param1 -// CHECK:STDOUT: %.loc20_28.1: type = splice_block %.loc20_28.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc20_28.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc20_28.3: type = converted %.loc20_28.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %self.param.loc21: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc21: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc21: %Class = bind_name self, %self.param.loc21 +// CHECK:STDOUT: %b.param.loc21: %empty_tuple.type = value_param call_param1 +// CHECK:STDOUT: %.loc21_28.1: type = splice_block %.loc21_28.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc21_28.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc21_28.3: type = converted %.loc21_28.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc20: %empty_tuple.type = bind_name b, %b.param.loc20 +// CHECK:STDOUT: %b.loc21: %empty_tuple.type = bind_name b, %b.param.loc21 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -72,15 +73,15 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: %b.patt: %pattern_type.cb1 = binding_pattern b [concrete] // CHECK:STDOUT: %b.param_patt: %pattern_type.cb1 = value_param_pattern %b.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc17: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc17: %Class = bind_name self, %self.param.loc17 -// CHECK:STDOUT: %b.param.loc17: %empty_tuple.type = value_param call_param1 -// CHECK:STDOUT: %.loc17_24.1: type = splice_block %.loc17_24.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc17_24.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc17_24.3: type = converted %.loc17_24.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %self.param.loc18: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc18: %Class = bind_name self, %self.param.loc18 +// CHECK:STDOUT: %b.param.loc18: %empty_tuple.type = value_param call_param1 +// CHECK:STDOUT: %.loc18_24.1: type = splice_block %.loc18_24.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc18_24.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_24.3: type = converted %.loc18_24.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } -// CHECK:STDOUT: %b.loc17: %empty_tuple.type = bind_name b, %b.param.loc17 +// CHECK:STDOUT: %b.loc18: %empty_tuple.type = bind_name b, %b.param.loc18 // CHECK:STDOUT: } // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete = constants.%empty_struct_type] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete = constants.%complete_type] @@ -91,7 +92,7 @@ fn Class.F[self: Self](b: ()) {} // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc20: %Class, %b.param.loc20: %empty_tuple.type) { +// CHECK:STDOUT: fn @F(%self.param.loc21: %Class, %b.param.loc21: %empty_tuple.type) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/redeclaration_introducer.carbon b/toolchain/check/testdata/class/redeclaration_introducer.carbon index 396d9c458ba6..6bfb4d184aec 100644 --- a/toolchain/check/testdata/class/redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/redeclaration_introducer.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -39,17 +40,17 @@ abstract class C {} // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl.loc14 -// CHECK:STDOUT: .B = %B.decl.loc15 -// CHECK:STDOUT: .C = %C.decl.loc16 +// CHECK:STDOUT: .A = %A.decl.loc15 +// CHECK:STDOUT: .B = %B.decl.loc16 +// CHECK:STDOUT: .C = %C.decl.loc17 // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc14: type = class_decl @A [concrete = constants.%A] {} {} -// CHECK:STDOUT: %B.decl.loc15: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %C.decl.loc16: type = class_decl @C [concrete = constants.%C] {} {} -// CHECK:STDOUT: %A.decl.loc18: type = class_decl @A [concrete = constants.%A] {} {} -// CHECK:STDOUT: %B.decl.loc19: type = class_decl @B [concrete = constants.%B] {} {} -// CHECK:STDOUT: %C.decl.loc20: type = class_decl @C [concrete = constants.%C] {} {} +// CHECK:STDOUT: %A.decl.loc15: type = class_decl @A [concrete = constants.%A] {} {} +// CHECK:STDOUT: %B.decl.loc16: type = class_decl @B [concrete = constants.%B] {} {} +// CHECK:STDOUT: %C.decl.loc17: type = class_decl @C [concrete = constants.%C] {} {} +// CHECK:STDOUT: %A.decl.loc19: type = class_decl @A [concrete = constants.%A] {} {} +// CHECK:STDOUT: %B.decl.loc20: type = class_decl @B [concrete = constants.%B] {} {} +// CHECK:STDOUT: %C.decl.loc21: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @A { diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index 97badb0553d2..038638af2d9d 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -44,7 +45,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -58,10 +59,10 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %return.param.loc19: ref %i32 = out_param call_param0 -// CHECK:STDOUT: %return.loc19: ref %i32 = return_slot %return.param.loc19 +// CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %return.param.loc20: ref %i32 = out_param call_param0 +// CHECK:STDOUT: %return.loc20: ref %i32 = return_slot %return.param.loc20 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -70,10 +71,10 @@ fn Class.F() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %return.param.loc15: ref %i32 = out_param call_param0 -// CHECK:STDOUT: %return.loc15: ref %i32 = return_slot %return.param.loc15 +// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param0 +// CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -97,13 +98,13 @@ fn Class.F() -> i32 { // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %G.ref.loc20: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] -// CHECK:STDOUT: %G.call.loc20: init %i32 = call %G.ref.loc20() // CHECK:STDOUT: %G.ref.loc21: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] // CHECK:STDOUT: %G.call.loc21: init %i32 = call %G.ref.loc21() -// CHECK:STDOUT: %.loc21_13.1: %i32 = value_of_initializer %G.call.loc21 -// CHECK:STDOUT: %.loc21_13.2: %i32 = converted %G.call.loc21, %.loc21_13.1 -// CHECK:STDOUT: return %.loc21_13.2 +// CHECK:STDOUT: %G.ref.loc22: %G.type = name_ref G, @Class.%G.decl [concrete = constants.%G] +// CHECK:STDOUT: %G.call.loc22: init %i32 = call %G.ref.loc22() +// CHECK:STDOUT: %.loc22_13.1: %i32 = value_of_initializer %G.call.loc22 +// CHECK:STDOUT: %.loc22_13.2: %i32 = converted %G.call.loc22, %.loc22_13.1 +// CHECK:STDOUT: return %.loc22_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32; diff --git a/toolchain/check/testdata/class/reorder.carbon b/toolchain/check/testdata/class/reorder.carbon index 4a95f7469521..c9e8575af7d9 100644 --- a/toolchain/check/testdata/class/reorder.carbon +++ b/toolchain/check/testdata/class/reorder.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -41,16 +42,16 @@ class Class { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: } @@ -62,9 +63,9 @@ class Class { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -112,21 +113,21 @@ class Class { // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc16_21.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc16_21.2: %i32 = converted %F.call, %.loc16_21.1 -// CHECK:STDOUT: return %.loc16_21.2 +// CHECK:STDOUT: %.loc17_21.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc17_21.2: %i32 = converted %F.call, %.loc17_21.1 +// CHECK:STDOUT: return %.loc17_21.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc20_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc20_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc20_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc20_13.2: %i32 = converted %int_1, %.loc20_13.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: return %.loc20_13.2 +// CHECK:STDOUT: %bound_method.loc21_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc21_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc21_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc21_13.2: %i32 = converted %int_1, %.loc21_13.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: return %.loc21_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/reorder_qualified.carbon b/toolchain/check/testdata/class/reorder_qualified.carbon index a27b6feb037b..e2b5d54a124c 100644 --- a/toolchain/check/testdata/class/reorder_qualified.carbon +++ b/toolchain/check/testdata/class/reorder_qualified.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -90,16 +91,16 @@ class A { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %A.val: %A = struct_value (%int_1.5d2) [concrete] @@ -133,9 +134,9 @@ class A { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -154,7 +155,7 @@ class A { // CHECK:STDOUT: %AF.decl: %AF.type = fn_decl @AF [concrete = constants.%AF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc49: %A.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %.loc50: %A.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a.ba9] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -163,7 +164,7 @@ class A { // CHECK:STDOUT: .Self = constants.%A // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .AF = %AF.decl -// CHECK:STDOUT: .a = %.loc49 +// CHECK:STDOUT: .a = %.loc50 // CHECK:STDOUT: .A = // CHECK:STDOUT: } // CHECK:STDOUT: @@ -172,7 +173,7 @@ class A { // CHECK:STDOUT: %BF.decl: %BF.type = fn_decl @BF [concrete = constants.%BF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc19: %B.elem = field_decl b, element0 [concrete] +// CHECK:STDOUT: %.loc20: %B.elem = field_decl b, element0 [concrete] // CHECK:STDOUT: %struct_type.b: type = struct_type {.b: %i32} [concrete = constants.%struct_type.b.0a3] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.b [concrete = constants.%complete_type.ba8] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -181,7 +182,7 @@ class A { // CHECK:STDOUT: .Self = constants.%B // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .BF = %BF.decl -// CHECK:STDOUT: .b = %.loc19 +// CHECK:STDOUT: .b = %.loc20 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .AF = @@ -193,7 +194,7 @@ class A { // CHECK:STDOUT: %CF.decl: %CF.type = fn_decl @CF [concrete = constants.%CF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc45: %C.elem = field_decl c, element0 [concrete] +// CHECK:STDOUT: %.loc46: %C.elem = field_decl c, element0 [concrete] // CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [concrete = constants.%struct_type.c.b66] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.c [concrete = constants.%complete_type.836] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -202,7 +203,7 @@ class A { // CHECK:STDOUT: .Self = constants.%C // CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: .CF = %CF.decl -// CHECK:STDOUT: .c = %.loc45 +// CHECK:STDOUT: .c = %.loc46 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .C = @@ -215,7 +216,7 @@ class A { // CHECK:STDOUT: %DF.decl: %DF.type = fn_decl @DF [concrete = constants.%DF] {} {} // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc27: %D.elem = field_decl d, element0 [concrete] +// CHECK:STDOUT: %.loc28: %D.elem = field_decl d, element0 [concrete] // CHECK:STDOUT: %struct_type.d: type = struct_type {.d: %i32} [concrete = constants.%struct_type.d.b7b] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.d [concrete = constants.%complete_type.860] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -224,7 +225,7 @@ class A { // CHECK:STDOUT: .Self = constants.%D // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .DF = %DF.decl -// CHECK:STDOUT: .d = %.loc27 +// CHECK:STDOUT: .d = %.loc28 // CHECK:STDOUT: .A = // CHECK:STDOUT: .B = // CHECK:STDOUT: .C = @@ -246,18 +247,18 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %A = var %a.var_patt // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] -// CHECK:STDOUT: %.loc32_25.1: %struct_type.a.a6c = struct_literal (%int_1) -// CHECK:STDOUT: %impl.elem0.loc32: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc32_25.1: = bound_method %int_1, %impl.elem0.loc32 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn.loc32: = specific_function %impl.elem0.loc32, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc32_25.2: = bound_method %int_1, %specific_fn.loc32 [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked.loc32: init %i32 = call %bound_method.loc32_25.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc32_25.2: init %i32 = converted %int_1, %int.convert_checked.loc32 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc32_25.3: ref %i32 = class_element_access %a.var, element0 -// CHECK:STDOUT: %.loc32_25.4: init %i32 = initialize_from %.loc32_25.2 to %.loc32_25.3 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc32_25.5: init %A = class_init (%.loc32_25.4), %a.var [concrete = constants.%A.val] -// CHECK:STDOUT: %.loc32_7: init %A = converted %.loc32_25.1, %.loc32_25.5 [concrete = constants.%A.val] -// CHECK:STDOUT: assign %a.var, %.loc32_7 +// CHECK:STDOUT: %.loc33_25.1: %struct_type.a.a6c = struct_literal (%int_1) +// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc33_25.1: = bound_method %int_1, %impl.elem0.loc33 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc33_25.2: = bound_method %int_1, %specific_fn.loc33 [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %bound_method.loc33_25.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc33_25.2: init %i32 = converted %int_1, %int.convert_checked.loc33 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc33_25.3: ref %i32 = class_element_access %a.var, element0 +// CHECK:STDOUT: %.loc33_25.4: init %i32 = initialize_from %.loc33_25.2 to %.loc33_25.3 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc33_25.5: init %A = class_init (%.loc33_25.4), %a.var [concrete = constants.%A.val] +// CHECK:STDOUT: %.loc33_7: init %A = converted %.loc33_25.1, %.loc33_25.5 [concrete = constants.%A.val] +// CHECK:STDOUT: assign %a.var, %.loc33_7 // CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %a: ref %A = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { @@ -266,18 +267,18 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %B = var %b.var_patt // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] -// CHECK:STDOUT: %.loc33_25.1: %struct_type.b.a15 = struct_literal (%int_2) -// CHECK:STDOUT: %impl.elem0.loc33: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc33_25.1: = bound_method %int_2, %impl.elem0.loc33 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn.loc33: = specific_function %impl.elem0.loc33, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc33_25.2: = bound_method %int_2, %specific_fn.loc33 [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked.loc33: init %i32 = call %bound_method.loc33_25.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc33_25.2: init %i32 = converted %int_2, %int.convert_checked.loc33 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc33_25.3: ref %i32 = class_element_access %b.var, element0 -// CHECK:STDOUT: %.loc33_25.4: init %i32 = initialize_from %.loc33_25.2 to %.loc33_25.3 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc33_25.5: init %B = class_init (%.loc33_25.4), %b.var [concrete = constants.%B.val] -// CHECK:STDOUT: %.loc33_7: init %B = converted %.loc33_25.1, %.loc33_25.5 [concrete = constants.%B.val] -// CHECK:STDOUT: assign %b.var, %.loc33_7 +// CHECK:STDOUT: %.loc34_25.1: %struct_type.b.a15 = struct_literal (%int_2) +// CHECK:STDOUT: %impl.elem0.loc34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc34_25.1: = bound_method %int_2, %impl.elem0.loc34 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc34_25.2: = bound_method %int_2, %specific_fn.loc34 [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked.loc34: init %i32 = call %bound_method.loc34_25.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc34_25.2: init %i32 = converted %int_2, %int.convert_checked.loc34 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc34_25.3: ref %i32 = class_element_access %b.var, element0 +// CHECK:STDOUT: %.loc34_25.4: init %i32 = initialize_from %.loc34_25.2 to %.loc34_25.3 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc34_25.5: init %B = class_init (%.loc34_25.4), %b.var [concrete = constants.%B.val] +// CHECK:STDOUT: %.loc34_7: init %B = converted %.loc34_25.1, %.loc34_25.5 [concrete = constants.%B.val] +// CHECK:STDOUT: assign %b.var, %.loc34_7 // CHECK:STDOUT: %B.ref: type = name_ref B, @A.%B.decl [concrete = constants.%B] // CHECK:STDOUT: %b: ref %B = bind_name b, %b.var // CHECK:STDOUT: name_binding_decl { @@ -286,18 +287,18 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt // CHECK:STDOUT: %int_3: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] -// CHECK:STDOUT: %.loc34_25.1: %struct_type.c.5b8 = struct_literal (%int_3) -// CHECK:STDOUT: %impl.elem0.loc34: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc34_25.1: = bound_method %int_3, %impl.elem0.loc34 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc34: = specific_function %impl.elem0.loc34, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc34_25.2: = bound_method %int_3, %specific_fn.loc34 [concrete = constants.%bound_method.047] -// CHECK:STDOUT: %int.convert_checked.loc34: init %i32 = call %bound_method.loc34_25.2(%int_3) [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc34_25.2: init %i32 = converted %int_3, %int.convert_checked.loc34 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc34_25.3: ref %i32 = class_element_access %c.var, element0 -// CHECK:STDOUT: %.loc34_25.4: init %i32 = initialize_from %.loc34_25.2 to %.loc34_25.3 [concrete = constants.%int_3.822] -// CHECK:STDOUT: %.loc34_25.5: init %C = class_init (%.loc34_25.4), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc34_7: init %C = converted %.loc34_25.1, %.loc34_25.5 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc34_7 +// CHECK:STDOUT: %.loc35_25.1: %struct_type.c.5b8 = struct_literal (%int_3) +// CHECK:STDOUT: %impl.elem0.loc35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc35_25.1: = bound_method %int_3, %impl.elem0.loc35 [concrete = constants.%Convert.bound.b30] +// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc35_25.2: = bound_method %int_3, %specific_fn.loc35 [concrete = constants.%bound_method.047] +// CHECK:STDOUT: %int.convert_checked.loc35: init %i32 = call %bound_method.loc35_25.2(%int_3) [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc35_25.2: init %i32 = converted %int_3, %int.convert_checked.loc35 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc35_25.3: ref %i32 = class_element_access %c.var, element0 +// CHECK:STDOUT: %.loc35_25.4: init %i32 = initialize_from %.loc35_25.2 to %.loc35_25.3 [concrete = constants.%int_3.822] +// CHECK:STDOUT: %.loc35_25.5: init %C = class_init (%.loc35_25.4), %c.var [concrete = constants.%C.val] +// CHECK:STDOUT: %.loc35_7: init %C = converted %.loc35_25.1, %.loc35_25.5 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc35_7 // CHECK:STDOUT: %C.ref: type = name_ref C, @B.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: name_binding_decl { @@ -306,18 +307,18 @@ class A { // CHECK:STDOUT: } // CHECK:STDOUT: %d.var: ref %D = var %d.var_patt // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] -// CHECK:STDOUT: %.loc35_25.1: %struct_type.d.3ea = struct_literal (%int_4) -// CHECK:STDOUT: %impl.elem0.loc35: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc35_25.1: = bound_method %int_4, %impl.elem0.loc35 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc35: = specific_function %impl.elem0.loc35, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc35_25.2: = bound_method %int_4, %specific_fn.loc35 [concrete = constants.%bound_method.1da] -// CHECK:STDOUT: %int.convert_checked.loc35: init %i32 = call %bound_method.loc35_25.2(%int_4) [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc35_25.2: init %i32 = converted %int_4, %int.convert_checked.loc35 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc35_25.3: ref %i32 = class_element_access %d.var, element0 -// CHECK:STDOUT: %.loc35_25.4: init %i32 = initialize_from %.loc35_25.2 to %.loc35_25.3 [concrete = constants.%int_4.940] -// CHECK:STDOUT: %.loc35_25.5: init %D = class_init (%.loc35_25.4), %d.var [concrete = constants.%D.val] -// CHECK:STDOUT: %.loc35_7: init %D = converted %.loc35_25.1, %.loc35_25.5 [concrete = constants.%D.val] -// CHECK:STDOUT: assign %d.var, %.loc35_7 +// CHECK:STDOUT: %.loc36_25.1: %struct_type.d.3ea = struct_literal (%int_4) +// CHECK:STDOUT: %impl.elem0.loc36: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc36_25.1: = bound_method %int_4, %impl.elem0.loc36 [concrete = constants.%Convert.bound.ac3] +// CHECK:STDOUT: %specific_fn.loc36: = specific_function %impl.elem0.loc36, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc36_25.2: = bound_method %int_4, %specific_fn.loc36 [concrete = constants.%bound_method.1da] +// CHECK:STDOUT: %int.convert_checked.loc36: init %i32 = call %bound_method.loc36_25.2(%int_4) [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc36_25.2: init %i32 = converted %int_4, %int.convert_checked.loc36 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc36_25.3: ref %i32 = class_element_access %d.var, element0 +// CHECK:STDOUT: %.loc36_25.4: init %i32 = initialize_from %.loc36_25.2 to %.loc36_25.3 [concrete = constants.%int_4.940] +// CHECK:STDOUT: %.loc36_25.5: init %D = class_init (%.loc36_25.4), %d.var [concrete = constants.%D.val] +// CHECK:STDOUT: %.loc36_7: init %D = converted %.loc36_25.1, %.loc36_25.5 [concrete = constants.%D.val] +// CHECK:STDOUT: assign %d.var, %.loc36_7 // CHECK:STDOUT: %D.ref: type = name_ref D, @C.%D.decl [concrete = constants.%D] // CHECK:STDOUT: %d: ref %D = bind_name d, %d.var // CHECK:STDOUT: %AF.ref: %AF.type = name_ref AF, @A.%AF.decl [concrete = constants.%AF] diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index c31d06117472..c236a8a61171 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -50,16 +51,16 @@ fn Run() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete] @@ -79,9 +80,9 @@ fn Run() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -139,35 +140,35 @@ fn Run() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc16_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc16_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc16_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc16_13.2: %i32 = converted %int_1, %.loc16_13.1 [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: return %.loc16_13.2 +// CHECK:STDOUT: %bound_method.loc17_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc17_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc17_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc17_13.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc17_13.2: %i32 = converted %int_1, %.loc17_13.1 [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: return %.loc17_13.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @G() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %F.ref: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc20_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc20_15.2: %i32 = converted %F.call, %.loc20_15.1 -// CHECK:STDOUT: return %.loc20_15.2 +// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %F.call, %.loc21_15.1 +// CHECK:STDOUT: return %.loc21_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @F.2() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_11.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc25_11.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc25_11.2(%int_2) [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc25_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: %.loc25_11.2: %i32 = converted %int_2, %.loc25_11.1 [concrete = constants.%int_2.ef8] -// CHECK:STDOUT: return %.loc25_11.2 +// CHECK:STDOUT: %bound_method.loc26_11.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound.ef9] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc26_11.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method.b92] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc26_11.2(%int_2) [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc26_11.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: %.loc26_11.2: %i32 = converted %int_2, %.loc26_11.1 [concrete = constants.%int_2.ef8] +// CHECK:STDOUT: return %.loc26_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Run() { @@ -177,12 +178,12 @@ fn Run() { // CHECK:STDOUT: %a.var_patt: %pattern_type.7ce = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt -// CHECK:STDOUT: %F.ref.loc29: %F.type.b25 = name_ref F, file.%F.decl [concrete = constants.%F.c41] -// CHECK:STDOUT: %F.call.loc29: init %i32 = call %F.ref.loc29() -// CHECK:STDOUT: assign %a.var, %F.call.loc29 -// CHECK:STDOUT: %.loc29: type = splice_block %i32.loc29 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc29: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc29: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %F.ref.loc30: %F.type.b25 = name_ref F, file.%F.decl [concrete = constants.%F.c41] +// CHECK:STDOUT: %F.call.loc30: init %i32 = call %F.ref.loc30() +// CHECK:STDOUT: assign %a.var, %F.call.loc30 +// CHECK:STDOUT: %.loc30: type = splice_block %i32.loc30 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { @@ -191,12 +192,12 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %i32 = var %b.var_patt // CHECK:STDOUT: %Class.ref: type = name_ref Class, file.%Class.decl [concrete = constants.%Class] -// CHECK:STDOUT: %F.ref.loc30: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] -// CHECK:STDOUT: %F.call.loc30: init %i32 = call %F.ref.loc30() -// CHECK:STDOUT: assign %b.var, %F.call.loc30 -// CHECK:STDOUT: %.loc30: type = splice_block %i32.loc30 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc30: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc30: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %F.ref.loc31: %F.type.f1b = name_ref F, @Class.%F.decl [concrete = constants.%F.1f2] +// CHECK:STDOUT: %F.call.loc31: init %i32 = call %F.ref.loc31() +// CHECK:STDOUT: assign %b.var, %F.call.loc31 +// CHECK:STDOUT: %.loc31: type = splice_block %i32.loc31 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc31: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc31: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var // CHECK:STDOUT: return diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 18072fee13e7..021c3751df5c 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -73,7 +74,7 @@ class Class { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -202,7 +203,7 @@ class Class { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/class/self_conversion.carbon b/toolchain/check/testdata/class/self_conversion.carbon index 424c32d4ac43..9a6360c53643 100644 --- a/toolchain/check/testdata/class/self_conversion.carbon +++ b/toolchain/check/testdata/class/self_conversion.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -65,16 +66,16 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_1.5b8, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] // CHECK:STDOUT: %ptr.404: type = ptr_type %Derived [concrete] @@ -90,9 +91,9 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -112,25 +113,25 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc25: %Base = value_param call_param0 -// CHECK:STDOUT: %Base.ref.loc25: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %self.loc25: %Base = bind_name self, %self.param.loc25 -// CHECK:STDOUT: %return.param.loc25: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc25: ref %i32 = return_slot %return.param.loc25 +// CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc26: %Base = value_param call_param0 +// CHECK:STDOUT: %Base.ref.loc26: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] +// CHECK:STDOUT: %self.loc26: %Base = bind_name self, %self.param.loc26 +// CHECK:STDOUT: %return.param.loc26: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc26: ref %i32 = return_slot %return.param.loc26 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [concrete = constants.%AddrSelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc29_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc30_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc29: %ptr.11f = value_param call_param0 -// CHECK:STDOUT: %.loc29_40: type = splice_block %ptr.loc29 [concrete = constants.%ptr.11f] { -// CHECK:STDOUT: %Base.ref.loc29: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %ptr.loc29: type = ptr_type %Base.ref.loc29 [concrete = constants.%ptr.11f] +// CHECK:STDOUT: %self.param.loc30: %ptr.11f = value_param call_param0 +// CHECK:STDOUT: %.loc30_40: type = splice_block %ptr.loc30 [concrete = constants.%ptr.11f] { +// CHECK:STDOUT: %Base.ref.loc30: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] +// CHECK:STDOUT: %ptr.loc30: type = ptr_type %Base.ref.loc30 [concrete = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc29: %ptr.11f = bind_name self, %self.param.loc29 +// CHECK:STDOUT: %self.loc30: %ptr.11f = bind_name self, %self.param.loc30 // CHECK:STDOUT: } // CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] { // CHECK:STDOUT: %p.patt: %pattern_type.605 = binding_pattern p [concrete] @@ -141,7 +142,7 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %p.param: %ptr.404 = value_param call_param0 -// CHECK:STDOUT: %.loc33: type = splice_block %ptr [concrete = constants.%ptr.404] { +// CHECK:STDOUT: %.loc34: type = splice_block %ptr [concrete = constants.%ptr.404] { // CHECK:STDOUT: %Derived.ref: type = name_ref Derived, file.%Derived.decl [concrete = constants.%Derived] // CHECK:STDOUT: %ptr: type = ptr_type %Derived.ref [concrete = constants.%ptr.404] // CHECK:STDOUT: } @@ -154,45 +155,45 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: class @Base { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc15: %Base.elem = field_decl a, element0 [concrete] +// CHECK:STDOUT: %.loc16: %Base.elem = field_decl a, element0 [concrete] // CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %i32} [concrete = constants.%struct_type.a] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.a [concrete = constants.%complete_type.fd7] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Base -// CHECK:STDOUT: .a = %.loc15 +// CHECK:STDOUT: .a = %.loc16 // CHECK:STDOUT: .Base = // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Derived { // CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %.loc19: %Derived.elem = base_decl %Base.ref, element0 [concrete] +// CHECK:STDOUT: %.loc20: %Derived.elem = base_decl %Base.ref, element0 [concrete] // CHECK:STDOUT: %SelfBase.decl: %SelfBase.type = fn_decl @SelfBase [concrete = constants.%SelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.bcc = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.bcc = value_param_pattern %self.patt, call_param0 [concrete] // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc21: %Base = value_param call_param0 -// CHECK:STDOUT: %Base.ref.loc21: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %self.loc21: %Base = bind_name self, %self.param.loc21 -// CHECK:STDOUT: %return.param.loc21: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc21: ref %i32 = return_slot %return.param.loc21 +// CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc22: %Base = value_param call_param0 +// CHECK:STDOUT: %Base.ref.loc22: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] +// CHECK:STDOUT: %self.loc22: %Base = bind_name self, %self.param.loc22 +// CHECK:STDOUT: %return.param.loc22: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc22: ref %i32 = return_slot %return.param.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: %AddrSelfBase.decl: %AddrSelfBase.type = fn_decl @AddrSelfBase [concrete = constants.%AddrSelfBase] { // CHECK:STDOUT: %self.patt: %pattern_type.1b9 = binding_pattern self [concrete] // CHECK:STDOUT: %self.param_patt: %pattern_type.1b9 = value_param_pattern %self.patt, call_param0 [concrete] -// CHECK:STDOUT: %.loc29_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] +// CHECK:STDOUT: %.loc30_25: %pattern_type.f6d = addr_pattern %self.param_patt [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param.loc22: %ptr.11f = value_param call_param0 -// CHECK:STDOUT: %.loc22: type = splice_block %ptr.loc22 [concrete = constants.%ptr.11f] { -// CHECK:STDOUT: %Base.ref.loc22: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] -// CHECK:STDOUT: %ptr.loc22: type = ptr_type %Base.ref.loc22 [concrete = constants.%ptr.11f] +// CHECK:STDOUT: %self.param.loc23: %ptr.11f = value_param call_param0 +// CHECK:STDOUT: %.loc23: type = splice_block %ptr.loc23 [concrete = constants.%ptr.11f] { +// CHECK:STDOUT: %Base.ref.loc23: type = name_ref Base, file.%Base.decl [concrete = constants.%Base] +// CHECK:STDOUT: %ptr.loc23: type = ptr_type %Base.ref.loc23 [concrete = constants.%ptr.11f] // CHECK:STDOUT: } -// CHECK:STDOUT: %self.loc22: %ptr.11f = bind_name self, %self.param.loc22 +// CHECK:STDOUT: %self.loc23: %ptr.11f = bind_name self, %self.param.loc23 // CHECK:STDOUT: } // CHECK:STDOUT: %struct_type.base: type = struct_type {.base: %Base} [concrete = constants.%struct_type.base.b1e] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.base [concrete = constants.%complete_type.15c] @@ -201,60 +202,60 @@ fn Call(p: Derived*) -> i32 { // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%Derived // CHECK:STDOUT: .Base = -// CHECK:STDOUT: .base = %.loc19 +// CHECK:STDOUT: .base = %.loc20 // CHECK:STDOUT: .SelfBase = %SelfBase.decl // CHECK:STDOUT: .AddrSelfBase = %AddrSelfBase.decl // CHECK:STDOUT: extend %Base.ref // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @SelfBase(%self.param.loc25: %Base) -> %i32 { +// CHECK:STDOUT: fn @SelfBase(%self.param.loc26: %Base) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %Base = name_ref self, %self.loc25 -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc15 [concrete = @Base.%.loc15] -// CHECK:STDOUT: %.loc26_14.1: ref %i32 = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc26_14.2: %i32 = bind_value %.loc26_14.1 -// CHECK:STDOUT: return %.loc26_14.2 +// CHECK:STDOUT: %self.ref: %Base = name_ref self, %self.loc26 +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %.loc27_14.1: ref %i32 = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc27_14.2: %i32 = bind_value %.loc27_14.1 +// CHECK:STDOUT: return %.loc27_14.2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @AddrSelfBase(%self.param.loc29: %ptr.11f) { +// CHECK:STDOUT: fn @AddrSelfBase(%self.param.loc30: %ptr.11f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc29 -// CHECK:STDOUT: %.loc30_4: ref %Base = deref %self.ref -// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc15 [concrete = @Base.%.loc15] -// CHECK:STDOUT: %.loc30_10: ref %i32 = class_element_access %.loc30_4, element0 +// CHECK:STDOUT: %self.ref: %ptr.11f = name_ref self, %self.loc30 +// CHECK:STDOUT: %.loc31_4: ref %Base = deref %self.ref +// CHECK:STDOUT: %a.ref: %Base.elem = name_ref a, @Base.%.loc16 [concrete = @Base.%.loc16] +// CHECK:STDOUT: %.loc31_10: ref %i32 = class_element_access %.loc31_4, element0 // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc30_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc30_13.2(%int_1) [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: %.loc30_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] -// CHECK:STDOUT: assign %.loc30_10, %.loc30_13 +// CHECK:STDOUT: %bound_method.loc31_13.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc31_13.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc31_13.2(%int_1) [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: %.loc31_13: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] +// CHECK:STDOUT: assign %.loc31_10, %.loc31_13 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Call(%p.param: %ptr.404) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref.loc34: %ptr.404 = name_ref p, %p -// CHECK:STDOUT: %.loc34_4.1: ref %Derived = deref %p.ref.loc34 -// CHECK:STDOUT: %AddrSelfBase.ref: %AddrSelfBase.type = name_ref AddrSelfBase, @Derived.%AddrSelfBase.decl [concrete = constants.%AddrSelfBase] -// CHECK:STDOUT: %AddrSelfBase.bound: = bound_method %.loc34_4.1, %AddrSelfBase.ref -// CHECK:STDOUT: %addr.loc34_4.1: %ptr.404 = addr_of %.loc34_4.1 -// CHECK:STDOUT: %.loc34_4.2: ref %Derived = deref %addr.loc34_4.1 -// CHECK:STDOUT: %.loc34_4.3: ref %Base = class_element_access %.loc34_4.2, element0 -// CHECK:STDOUT: %addr.loc34_4.2: %ptr.11f = addr_of %.loc34_4.3 -// CHECK:STDOUT: %.loc34_4.4: %ptr.11f = converted %addr.loc34_4.1, %addr.loc34_4.2 -// CHECK:STDOUT: %AddrSelfBase.call: init %empty_tuple.type = call %AddrSelfBase.bound(%.loc34_4.4) // CHECK:STDOUT: %p.ref.loc35: %ptr.404 = name_ref p, %p -// CHECK:STDOUT: %.loc35_11.1: ref %Derived = deref %p.ref.loc35 +// CHECK:STDOUT: %.loc35_4.1: ref %Derived = deref %p.ref.loc35 +// CHECK:STDOUT: %AddrSelfBase.ref: %AddrSelfBase.type = name_ref AddrSelfBase, @Derived.%AddrSelfBase.decl [concrete = constants.%AddrSelfBase] +// CHECK:STDOUT: %AddrSelfBase.bound: = bound_method %.loc35_4.1, %AddrSelfBase.ref +// CHECK:STDOUT: %addr.loc35_4.1: %ptr.404 = addr_of %.loc35_4.1 +// CHECK:STDOUT: %.loc35_4.2: ref %Derived = deref %addr.loc35_4.1 +// CHECK:STDOUT: %.loc35_4.3: ref %Base = class_element_access %.loc35_4.2, element0 +// CHECK:STDOUT: %addr.loc35_4.2: %ptr.11f = addr_of %.loc35_4.3 +// CHECK:STDOUT: %.loc35_4.4: %ptr.11f = converted %addr.loc35_4.1, %addr.loc35_4.2 +// CHECK:STDOUT: %AddrSelfBase.call: init %empty_tuple.type = call %AddrSelfBase.bound(%.loc35_4.4) +// CHECK:STDOUT: %p.ref.loc36: %ptr.404 = name_ref p, %p +// CHECK:STDOUT: %.loc36_11.1: ref %Derived = deref %p.ref.loc36 // CHECK:STDOUT: %SelfBase.ref: %SelfBase.type = name_ref SelfBase, @Derived.%SelfBase.decl [concrete = constants.%SelfBase] -// CHECK:STDOUT: %SelfBase.bound: = bound_method %.loc35_11.1, %SelfBase.ref -// CHECK:STDOUT: %.loc35_11.2: ref %Base = class_element_access %.loc35_11.1, element0 -// CHECK:STDOUT: %.loc35_11.3: ref %Base = converted %.loc35_11.1, %.loc35_11.2 -// CHECK:STDOUT: %.loc35_11.4: %Base = bind_value %.loc35_11.3 -// CHECK:STDOUT: %SelfBase.call: init %i32 = call %SelfBase.bound(%.loc35_11.4) -// CHECK:STDOUT: %.loc35_25.1: %i32 = value_of_initializer %SelfBase.call -// CHECK:STDOUT: %.loc35_25.2: %i32 = converted %SelfBase.call, %.loc35_25.1 -// CHECK:STDOUT: return %.loc35_25.2 +// CHECK:STDOUT: %SelfBase.bound: = bound_method %.loc36_11.1, %SelfBase.ref +// CHECK:STDOUT: %.loc36_11.2: ref %Base = class_element_access %.loc36_11.1, element0 +// CHECK:STDOUT: %.loc36_11.3: ref %Base = converted %.loc36_11.1, %.loc36_11.2 +// CHECK:STDOUT: %.loc36_11.4: %Base = bind_value %.loc36_11.3 +// CHECK:STDOUT: %SelfBase.call: init %i32 = call %SelfBase.bound(%.loc36_11.4) +// CHECK:STDOUT: %.loc36_25.1: %i32 = value_of_initializer %SelfBase.call +// CHECK:STDOUT: %.loc36_25.2: %i32 = converted %SelfBase.call, %.loc36_25.1 +// CHECK:STDOUT: return %.loc36_25.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index 9f70f769b531..e94514329356 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -51,7 +52,7 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -67,13 +68,13 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc24: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc24: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc24: %Class = bind_name self, %self.param.loc24 -// CHECK:STDOUT: %return.param.loc24: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc24: ref %i32 = return_slot %return.param.loc24 +// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc25: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc25: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc25: %Class = bind_name self, %self.param.loc25 +// CHECK:STDOUT: %return.param.loc25: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc25: ref %i32 = return_slot %return.param.loc25 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -84,25 +85,25 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %self.param.loc15: %Class = value_param call_param0 -// CHECK:STDOUT: %Self.ref.loc15: type = name_ref Self, constants.%Class [concrete = constants.%Class] -// CHECK:STDOUT: %self.loc15: %Class = bind_name self, %self.param.loc15 -// CHECK:STDOUT: %return.param.loc15: ref %i32 = out_param call_param1 -// CHECK:STDOUT: %return.loc15: ref %i32 = return_slot %return.param.loc15 +// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %self.param.loc16: %Class = value_param call_param0 +// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %self.loc16: %Class = bind_name self, %self.param.loc16 +// CHECK:STDOUT: %return.param.loc16: ref %i32 = out_param call_param1 +// CHECK:STDOUT: %return.loc16: ref %i32 = return_slot %return.param.loc16 // CHECK:STDOUT: } // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { // CHECK:STDOUT: %return.patt: %pattern_type.761 = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.761 = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %return.param: ref %Class = out_param call_param0 // CHECK:STDOUT: %return: ref %Class = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %ptr: type = ptr_type %Self.ref [concrete = constants.%ptr.e71] -// CHECK:STDOUT: %.loc21: %Class.elem = field_decl p, element0 [concrete] +// CHECK:STDOUT: %.loc22: %Class.elem = field_decl p, element0 [concrete] // CHECK:STDOUT: %struct_type.p: type = struct_type {.p: %ptr.e71} [concrete = constants.%struct_type.p] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.p [concrete = constants.%complete_type.56d] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -111,23 +112,23 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: .Self = constants.%Class // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .Make = %Make.decl -// CHECK:STDOUT: .p = %.loc21 +// CHECK:STDOUT: .p = %.loc22 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @F(%self.param.loc24: %Class) -> %i32 { +// CHECK:STDOUT: fn @F(%self.param.loc25: %Class) -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc24 -// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc21 [concrete = @Class.%.loc21] -// CHECK:STDOUT: %.loc25_16.1: ref %ptr.e71 = class_element_access %self.ref, element0 -// CHECK:STDOUT: %.loc25_16.2: %ptr.e71 = bind_value %.loc25_16.1 -// CHECK:STDOUT: %.loc25_11.1: ref %Class = deref %.loc25_16.2 +// CHECK:STDOUT: %self.ref: %Class = name_ref self, %self.loc25 +// CHECK:STDOUT: %p.ref: %Class.elem = name_ref p, @Class.%.loc22 [concrete = @Class.%.loc22] +// CHECK:STDOUT: %.loc26_16.1: ref %ptr.e71 = class_element_access %self.ref, element0 +// CHECK:STDOUT: %.loc26_16.2: %ptr.e71 = bind_value %.loc26_16.1 +// CHECK:STDOUT: %.loc26_11.1: ref %Class = deref %.loc26_16.2 // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] -// CHECK:STDOUT: %F.bound: = bound_method %.loc25_11.1, %F.ref -// CHECK:STDOUT: %.loc25_11.2: %Class = bind_value %.loc25_11.1 -// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc25_11.2) -// CHECK:STDOUT: %.loc25_23.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc25_23.2: %i32 = converted %F.call, %.loc25_23.1 -// CHECK:STDOUT: return %.loc25_23.2 +// CHECK:STDOUT: %F.bound: = bound_method %.loc26_11.1, %F.ref +// CHECK:STDOUT: %.loc26_11.2: %Class = bind_value %.loc26_11.1 +// CHECK:STDOUT: %F.call: init %i32 = call %F.bound(%.loc26_11.2) +// CHECK:STDOUT: %.loc26_23.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc26_23.2: %i32 = converted %F.call, %.loc26_23.1 +// CHECK:STDOUT: return %.loc26_23.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Make() -> %return.param: %Class { @@ -136,17 +137,17 @@ fn Class.F[self: Self]() -> i32 { // CHECK:STDOUT: %s.patt: %pattern_type.761 = binding_pattern s [concrete] // CHECK:STDOUT: %s.var_patt: %pattern_type.761 = var_pattern %s.patt [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %Self.ref.loc17: type = name_ref Self, constants.%Class [concrete = constants.%Class] +// CHECK:STDOUT: %Self.ref.loc18: type = name_ref Self, constants.%Class [concrete = constants.%Class] // CHECK:STDOUT: %s: ref %Class = bind_name s, %return -// CHECK:STDOUT: %s.ref.loc18_5: ref %Class = name_ref s, %s -// CHECK:STDOUT: %s.ref.loc18_16: ref %Class = name_ref s, %s -// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %s.ref.loc18_16 -// CHECK:STDOUT: %.loc18_17.1: %struct_type.p = struct_literal (%addr) -// CHECK:STDOUT: %.loc18_17.2: ref %ptr.e71 = class_element_access %s.ref.loc18_5, element0 -// CHECK:STDOUT: %.loc18_17.3: init %ptr.e71 = initialize_from %addr to %.loc18_17.2 -// CHECK:STDOUT: %.loc18_17.4: init %Class = class_init (%.loc18_17.3), %s.ref.loc18_5 -// CHECK:STDOUT: %.loc18_7: init %Class = converted %.loc18_17.1, %.loc18_17.4 -// CHECK:STDOUT: assign %s.ref.loc18_5, %.loc18_7 +// CHECK:STDOUT: %s.ref.loc19_5: ref %Class = name_ref s, %s +// CHECK:STDOUT: %s.ref.loc19_16: ref %Class = name_ref s, %s +// CHECK:STDOUT: %addr: %ptr.e71 = addr_of %s.ref.loc19_16 +// CHECK:STDOUT: %.loc19_17.1: %struct_type.p = struct_literal (%addr) +// CHECK:STDOUT: %.loc19_17.2: ref %ptr.e71 = class_element_access %s.ref.loc19_5, element0 +// CHECK:STDOUT: %.loc19_17.3: init %ptr.e71 = initialize_from %addr to %.loc19_17.2 +// CHECK:STDOUT: %.loc19_17.4: init %Class = class_init (%.loc19_17.3), %s.ref.loc19_5 +// CHECK:STDOUT: %.loc19_7: init %Class = converted %.loc19_17.1, %.loc19_17.4 +// CHECK:STDOUT: assign %s.ref.loc19_5, %.loc19_7 // CHECK:STDOUT: return %s to %return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 9ee32acb0425..14b2dc9bbe73 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -44,7 +45,7 @@ fn Run() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -101,8 +102,8 @@ fn Run() -> i32 { // CHECK:STDOUT: %c.ref: ref %Class = name_ref c, %c // CHECK:STDOUT: %F.ref: %F.type = name_ref F, @Class.%F.decl [concrete = constants.%F] // CHECK:STDOUT: %F.call: init %i32 = call %F.ref() -// CHECK:STDOUT: %.loc20_15.1: %i32 = value_of_initializer %F.call -// CHECK:STDOUT: %.loc20_15.2: %i32 = converted %F.call, %.loc20_15.1 -// CHECK:STDOUT: return %.loc20_15.2 +// CHECK:STDOUT: %.loc21_15.1: %i32 = value_of_initializer %F.call +// CHECK:STDOUT: %.loc21_15.2: %i32 = converted %F.call, %.loc21_15.1 +// CHECK:STDOUT: return %.loc21_15.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/syntactic_merge.carbon b/toolchain/check/testdata/class/syntactic_merge.carbon index 71a26ca4690a..bedd347f6331 100644 --- a/toolchain/check/testdata/class/syntactic_merge.carbon +++ b/toolchain/check/testdata/class/syntactic_merge.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/class/todo_access_modifiers.carbon b/toolchain/check/testdata/class/todo_access_modifiers.carbon index 495dd079ea83..b06654880815 100644 --- a/toolchain/check/testdata/class/todo_access_modifiers.carbon +++ b/toolchain/check/testdata/class/todo_access_modifiers.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -45,7 +46,7 @@ class Access { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,12 +61,12 @@ class Access { // CHECK:STDOUT: class @Access { // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} -// CHECK:STDOUT: %int_32.loc20: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc20: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc20: %Access.elem = field_decl k, element0 [concrete] -// CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %.loc22: %Access.elem = field_decl l, element1 [concrete] +// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc21: %Access.elem = field_decl k, element0 [concrete] +// CHECK:STDOUT: %int_32.loc23: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc23: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc23: %Access.elem = field_decl l, element1 [concrete] // CHECK:STDOUT: %struct_type.k.l: type = struct_type {.k: %i32, .l: %i32} [concrete = constants.%struct_type.k.l] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.k.l [concrete = constants.%complete_type.48a] // CHECK:STDOUT: complete_type_witness = %complete_type @@ -74,8 +75,8 @@ class Access { // CHECK:STDOUT: .Self = constants.%Access // CHECK:STDOUT: .F [private] = %F.decl // CHECK:STDOUT: .G [protected] = %G.decl -// CHECK:STDOUT: .k [private] = %.loc20 -// CHECK:STDOUT: .l [protected] = %.loc22 +// CHECK:STDOUT: .k [private] = %.loc21 +// CHECK:STDOUT: .l [protected] = %.loc23 // 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 ec3d183168c1..b63ccfba468f 100644 --- a/toolchain/check/testdata/class/virtual_modifiers.carbon +++ b/toolchain/check/testdata/class/virtual_modifiers.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -1039,16 +1040,16 @@ base class T1(T:! type) { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.b30: = bound_method %int_3.1ba, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.047: = bound_method %int_3.1ba, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_3.822: %i32 = int_value 3 [concrete] // CHECK:STDOUT: %struct_type.m2.m1.68c: type = struct_type {.m2: %i32, .m1: %i32} [concrete] @@ -1070,9 +1071,9 @@ base class T1(T:! type) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1126,7 +1127,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %int_3.loc12: Core.IntLiteral = int_value 3 [concrete = constants.%int_3.1ba] // CHECK:STDOUT: %impl.elem0.loc12: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc12_3.1: = bound_method %int_3.loc12, %impl.elem0.loc12 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc12: = specific_function %impl.elem0.loc12, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc12_3.2: = bound_method %int_3.loc12, %specific_fn.loc12 [concrete = constants.%bound_method.047] // CHECK:STDOUT: %int.convert_checked.loc12: init %i32 = call %bound_method.loc12_3.2(%int_3.loc12) [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc12_3: init %i32 = converted %int_3.loc12, %int.convert_checked.loc12 [concrete = constants.%int_3.822] @@ -1171,7 +1172,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc15_35.4: init %ptr.454 = initialize_from %.loc15_35.3 to %.loc15_35.2 // CHECK:STDOUT: %impl.elem0.loc15_35.1: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc15_35.1: = bound_method %int_5, %impl.elem0.loc15_35.1 [concrete = constants.%Convert.bound.4e6] -// CHECK:STDOUT: %specific_fn.loc15_35.1: = specific_function %impl.elem0.loc15_35.1, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc15_35.1: = specific_function %impl.elem0.loc15_35.1, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_35.2: = bound_method %int_5, %specific_fn.loc15_35.1 [concrete = constants.%bound_method.a25] // CHECK:STDOUT: %int.convert_checked.loc15_35.1: init %i32 = call %bound_method.loc15_35.2(%int_5) [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %.loc15_35.5: init %i32 = converted %int_5, %int.convert_checked.loc15_35.1 [concrete = constants.%int_5.0f6] @@ -1179,7 +1180,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %.loc15_35.7: init %i32 = initialize_from %.loc15_35.5 to %.loc15_35.6 [concrete = constants.%int_5.0f6] // CHECK:STDOUT: %impl.elem0.loc15_35.2: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc15_35.3: = bound_method %int_3.loc15, %impl.elem0.loc15_35.2 [concrete = constants.%Convert.bound.b30] -// CHECK:STDOUT: %specific_fn.loc15_35.2: = specific_function %impl.elem0.loc15_35.2, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc15_35.2: = specific_function %impl.elem0.loc15_35.2, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc15_35.4: = bound_method %int_3.loc15, %specific_fn.loc15_35.2 [concrete = constants.%bound_method.047] // CHECK:STDOUT: %int.convert_checked.loc15_35.2: init %i32 = call %bound_method.loc15_35.4(%int_3.loc15) [concrete = constants.%int_3.822] // CHECK:STDOUT: %.loc15_35.8: init %i32 = converted %int_3.loc15, %int.convert_checked.loc15_35.2 [concrete = constants.%int_3.822] @@ -1196,7 +1197,7 @@ base class T1(T:! type) { // CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4.0c1] // CHECK:STDOUT: %impl.elem0.loc18: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc18_9.1: = bound_method %int_4, %impl.elem0.loc18 [concrete = constants.%Convert.bound.ac3] -// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn.loc18: = specific_function %impl.elem0.loc18, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc18_9.2: = bound_method %int_4, %specific_fn.loc18 [concrete = constants.%bound_method.1da] // CHECK:STDOUT: %int.convert_checked.loc18: init %i32 = call %bound_method.loc18_9.2(%int_4) [concrete = constants.%int_4.940] // CHECK:STDOUT: %.loc18_9: init %i32 = converted %int_4, %int.convert_checked.loc18 [concrete = constants.%int_4.940] @@ -1520,7 +1521,7 @@ base class T1(T:! type) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1629,7 +1630,7 @@ base class T1(T:! type) { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/function/generic/call.carbon b/toolchain/check/testdata/function/generic/call.carbon index f75b2a0ae2d9..bd0b486d68d3 100644 --- a/toolchain/check/testdata/function/generic/call.carbon +++ b/toolchain/check/testdata/function/generic/call.carbon @@ -2,9 +2,9 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present -// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/destroy.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -86,6 +86,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -307,6 +308,7 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon index 0337731bc71b..14b4ebcda210 100644 --- a/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon +++ b/toolchain/check/testdata/function/generic/call_method_on_generic_facet.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -122,7 +123,7 @@ fn G() { // CHECK:STDOUT: %Generic.decl: %Generic.type.c21 = interface_decl @Generic [concrete = constants.%Generic.generic] { // CHECK:STDOUT: %Scalar.patt: %pattern_type.98f = symbolic_binding_pattern Scalar, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %Scalar.loc14_19.1: type = bind_symbolic_name Scalar, 0 [symbolic = %Scalar.loc14_19.2 (constants.%Scalar)] +// CHECK:STDOUT: %Scalar.loc15_19.1: type = bind_symbolic_name Scalar, 0 [symbolic = %Scalar.loc15_19.2 (constants.%Scalar)] // CHECK:STDOUT: } // CHECK:STDOUT: %GenericParam.decl: type = class_decl @GenericParam [concrete = constants.%GenericParam] {} {} // CHECK:STDOUT: %ImplsGeneric.decl: type = class_decl @ImplsGeneric [concrete = constants.%ImplsGeneric] {} {} @@ -145,36 +146,36 @@ fn G() { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: %U.patt: @CallGenericMethod.%pattern_type (%pattern_type.80f) = symbolic_binding_pattern U, 1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc32_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc32_22.2 (constants.%T)] -// CHECK:STDOUT: %.loc32: type = splice_block %Generic.type.loc32_45.1 [symbolic = %Generic.type.loc32_45.2 (constants.%Generic.type.91ccba.2)] { +// CHECK:STDOUT: %T.loc33_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc33_22.2 (constants.%T)] +// CHECK:STDOUT: %.loc33: type = splice_block %Generic.type.loc33_45.1 [symbolic = %Generic.type.loc33_45.2 (constants.%Generic.type.91ccba.2)] { // CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic] -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc32_22.1 [symbolic = %T.loc32_22.2 (constants.%T)] -// CHECK:STDOUT: %Generic.type.loc32_45.1: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc32_45.2 (constants.%Generic.type.91ccba.2)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc33_22.1 [symbolic = %T.loc33_22.2 (constants.%T)] +// CHECK:STDOUT: %Generic.type.loc33_45.1: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc33_45.2 (constants.%Generic.type.91ccba.2)] // CHECK:STDOUT: } -// CHECK:STDOUT: %U.loc32_32.1: @CallGenericMethod.%Generic.type.loc32_45.2 (%Generic.type.91ccba.2) = bind_symbolic_name U, 1 [symbolic = %U.loc32_32.2 (constants.%U)] +// CHECK:STDOUT: %U.loc33_32.1: @CallGenericMethod.%Generic.type.loc33_45.2 (%Generic.type.91ccba.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.2 (constants.%U)] // CHECK:STDOUT: } // CHECK:STDOUT: %G.decl: %G.type.9f9 = fn_decl @G.3 [concrete = constants.%G.57b] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic interface @Generic(%Scalar.loc14_19.1: type) { -// CHECK:STDOUT: %Scalar.loc14_19.2: type = bind_symbolic_name Scalar, 0 [symbolic = %Scalar.loc14_19.2 (constants.%Scalar)] +// CHECK:STDOUT: generic interface @Generic(%Scalar.loc15_19.1: type) { +// CHECK:STDOUT: %Scalar.loc15_19.2: type = bind_symbolic_name Scalar, 0 [symbolic = %Scalar.loc15_19.2 (constants.%Scalar)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc14_19.2)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] +// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc15_19.2)> [symbolic = %Generic.type (constants.%Generic.type.91ccba.1)] // CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @Generic(%Scalar.loc14_19.2) [symbolic = %F.type (constants.%F.type.f439a9.1)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @Generic(%Scalar.loc15_19.2) [symbolic = %F.type (constants.%F.type.f439a9.1)] // CHECK:STDOUT: %F: @Generic.%F.type (%F.type.f439a9.1) = struct_value () [symbolic = %F (constants.%F.8a2d67.1)] -// CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc14_19.2) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.1)] -// CHECK:STDOUT: %assoc0.loc15_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc15_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc15_19.2) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.1)] +// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: interface { // CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.dee8d8.1)] // CHECK:STDOUT: %F.decl: @Generic.%F.type (%F.type.f439a9.1) = fn_decl @F.1 [symbolic = @Generic.%F (constants.%F.8a2d67.1)] {} {} -// CHECK:STDOUT: %assoc0.loc15_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc15_9.2 (constants.%assoc0.2966cb.1)] +// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)] // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self.1 -// CHECK:STDOUT: .F = %assoc0.loc15_9.1 +// CHECK:STDOUT: .F = %assoc0.loc16_9.1 // CHECK:STDOUT: witness = (%F.decl) // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -224,7 +225,7 @@ fn G() { // CHECK:STDOUT: .Self = constants.%ImplsGeneric // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.1(@Generic.%Scalar.loc14_19.1: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { +// CHECK:STDOUT: generic fn @F.1(@Generic.%Scalar.loc15_19.1: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.91ccba.1)) { // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: @@ -239,34 +240,34 @@ fn G() { // CHECK:STDOUT: // CHECK:STDOUT: fn @G.2(); // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc32_22.1: type, %U.loc32_32.1: @CallGenericMethod.%Generic.type.loc32_45.2 (%Generic.type.91ccba.2)) { -// CHECK:STDOUT: %T.loc32_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc32_22.2 (constants.%T)] -// CHECK:STDOUT: %Generic.type.loc32_45.2: type = facet_type <@Generic, @Generic(%T.loc32_22.2)> [symbolic = %Generic.type.loc32_45.2 (constants.%Generic.type.91ccba.2)] -// CHECK:STDOUT: %U.loc32_32.2: @CallGenericMethod.%Generic.type.loc32_45.2 (%Generic.type.91ccba.2) = bind_symbolic_name U, 1 [symbolic = %U.loc32_32.2 (constants.%U)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %Generic.type.loc32_45.2 [symbolic = %pattern_type (constants.%pattern_type.80f)] +// CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc33_22.1: type, %U.loc33_32.1: @CallGenericMethod.%Generic.type.loc33_45.2 (%Generic.type.91ccba.2)) { +// CHECK:STDOUT: %T.loc33_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc33_22.2 (constants.%T)] +// CHECK:STDOUT: %Generic.type.loc33_45.2: type = facet_type <@Generic, @Generic(%T.loc33_22.2)> [symbolic = %Generic.type.loc33_45.2 (constants.%Generic.type.91ccba.2)] +// CHECK:STDOUT: %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.2 (%Generic.type.91ccba.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.2 (constants.%U)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %Generic.type.loc33_45.2 [symbolic = %pattern_type (constants.%pattern_type.80f)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Generic.type.loc32_45.2 [symbolic = %require_complete (constants.%require_complete)] -// CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%T.loc32_22.2) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.2)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Generic.type.loc33_45.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%T.loc33_22.2) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.2)] // CHECK:STDOUT: %assoc0: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = assoc_entity element0, @Generic.%F.decl [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] -// CHECK:STDOUT: %U.as_type.loc33_4.2: type = facet_access_type %U.loc32_32.2 [symbolic = %U.as_type.loc33_4.2 (constants.%U.as_type)] -// CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U.loc32_32.2, @Generic, @Generic(%T.loc32_22.2) [symbolic = %Generic.lookup_impl_witness (constants.%Generic.lookup_impl_witness)] -// CHECK:STDOUT: %F.type: type = fn_type @F.1, @Generic(%T.loc32_22.2) [symbolic = %F.type (constants.%F.type.f439a9.2)] -// CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc32_45.2 (%Generic.type.91ccba.2) = facet_value %U.as_type.loc33_4.2, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.680)] -// CHECK:STDOUT: %.loc33_4.3: type = fn_type_with_self_type %F.type, %Generic.facet [symbolic = %.loc33_4.3 (constants.%.177)] -// CHECK:STDOUT: %impl.elem0.loc33_4.2: @CallGenericMethod.%.loc33_4.3 (%.177) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc33_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc33_4.2: = specific_impl_function %impl.elem0.loc33_4.2, @F.1(%T.loc32_22.2, %Generic.facet) [symbolic = %specific_impl_fn.loc33_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %U.as_type.loc34_4.2: type = facet_access_type %U.loc33_32.2 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] +// CHECK:STDOUT: %Generic.lookup_impl_witness: = lookup_impl_witness %U.loc33_32.2, @Generic, @Generic(%T.loc33_22.2) [symbolic = %Generic.lookup_impl_witness (constants.%Generic.lookup_impl_witness)] +// CHECK:STDOUT: %F.type: type = fn_type @F.1, @Generic(%T.loc33_22.2) [symbolic = %F.type (constants.%F.type.f439a9.2)] +// CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc33_45.2 (%Generic.type.91ccba.2) = facet_value %U.as_type.loc34_4.2, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.680)] +// CHECK:STDOUT: %.loc34_4.3: type = fn_type_with_self_type %F.type, %Generic.facet [symbolic = %.loc34_4.3 (constants.%.177)] +// CHECK:STDOUT: %impl.elem0.loc34_4.2: @CallGenericMethod.%.loc34_4.3 (%.177) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: = specific_impl_function %impl.elem0.loc34_4.2, @F.1(%T.loc33_22.2, %Generic.facet) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %U.ref: @CallGenericMethod.%Generic.type.loc32_45.2 (%Generic.type.91ccba.2) = name_ref U, %U.loc32_32.1 [symbolic = %U.loc32_32.2 (constants.%U)] -// CHECK:STDOUT: %.loc33_4.1: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = specific_constant @Generic.%assoc0.loc15_9.1, @Generic(constants.%T) [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] -// CHECK:STDOUT: %F.ref: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = name_ref F, %.loc33_4.1 [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] -// CHECK:STDOUT: %U.as_type.loc33_4.1: type = facet_access_type %U.ref [symbolic = %U.as_type.loc33_4.2 (constants.%U.as_type)] -// CHECK:STDOUT: %.loc33_4.2: type = converted %U.ref, %U.as_type.loc33_4.1 [symbolic = %U.as_type.loc33_4.2 (constants.%U.as_type)] -// CHECK:STDOUT: %impl.elem0.loc33_4.1: @CallGenericMethod.%.loc33_4.3 (%.177) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc33_4.2 (constants.%impl.elem0)] -// CHECK:STDOUT: %specific_impl_fn.loc33_4.1: = specific_impl_function %impl.elem0.loc33_4.1, @F.1(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc33_4.2 (constants.%specific_impl_fn)] -// CHECK:STDOUT: %.loc33_7: init %empty_tuple.type = call %specific_impl_fn.loc33_4.1() +// CHECK:STDOUT: %U.ref: @CallGenericMethod.%Generic.type.loc33_45.2 (%Generic.type.91ccba.2) = name_ref U, %U.loc33_32.1 [symbolic = %U.loc33_32.2 (constants.%U)] +// CHECK:STDOUT: %.loc34_4.1: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = specific_constant @Generic.%assoc0.loc16_9.1, @Generic(constants.%T) [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] +// CHECK:STDOUT: %F.ref: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = name_ref F, %.loc34_4.1 [symbolic = %assoc0 (constants.%assoc0.2966cb.2)] +// CHECK:STDOUT: %U.as_type.loc34_4.1: type = facet_access_type %U.ref [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] +// CHECK:STDOUT: %.loc34_4.2: type = converted %U.ref, %U.as_type.loc34_4.1 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)] +// CHECK:STDOUT: %impl.elem0.loc34_4.1: @CallGenericMethod.%.loc34_4.3 (%.177) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)] +// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: = specific_impl_function %impl.elem0.loc34_4.1, @F.1(constants.%T, constants.%Generic.facet.680) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)] +// CHECK:STDOUT: %.loc34_7: init %empty_tuple.type = call %specific_impl_fn.loc34_4.1() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -277,20 +278,20 @@ fn G() { // CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam] // CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric] // CHECK:STDOUT: %Generic.facet: %Generic.type.769 = facet_value constants.%ImplsGeneric, (constants.%Generic.impl_witness) [concrete = constants.%Generic.facet.8ff] -// CHECK:STDOUT: %.loc37: %Generic.type.769 = converted constants.%ImplsGeneric, %Generic.facet [concrete = constants.%Generic.facet.8ff] +// CHECK:STDOUT: %.loc38: %Generic.type.769 = converted constants.%ImplsGeneric, %Generic.facet [concrete = constants.%Generic.facet.8ff] // CHECK:STDOUT: %CallGenericMethod.specific_fn: = specific_function %CallGenericMethod.ref, @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.8ff) [concrete = constants.%CallGenericMethod.specific_fn] // CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn() // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%Scalar) { -// CHECK:STDOUT: %Scalar.loc14_19.2 => constants.%Scalar +// CHECK:STDOUT: %Scalar.loc15_19.2 => constants.%Scalar // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%Scalar, constants.%Self.dee8d8.1) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%GenericParam) { -// CHECK:STDOUT: %Scalar.loc14_19.2 => constants.%GenericParam +// CHECK:STDOUT: %Scalar.loc15_19.2 => constants.%GenericParam // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.769 @@ -298,7 +299,7 @@ fn G() { // CHECK:STDOUT: %F.type => constants.%F.type.4cf // CHECK:STDOUT: %F => constants.%F.118 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 -// CHECK:STDOUT: %assoc0.loc15_9.2 => constants.%assoc0.9b7 +// CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.9b7 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%GenericParam, constants.%Generic.facet.8ff) {} @@ -308,7 +309,7 @@ fn G() { // CHECK:STDOUT: specific @G.1(constants.%Other.facet) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @Generic(constants.%T) { -// CHECK:STDOUT: %Scalar.loc14_19.2 => constants.%T +// CHECK:STDOUT: %Scalar.loc15_19.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Generic.type => constants.%Generic.type.91ccba.2 @@ -316,34 +317,34 @@ fn G() { // CHECK:STDOUT: %F.type => constants.%F.type.f439a9.2 // CHECK:STDOUT: %F => constants.%F.8a2d67.2 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.0fd877.2 -// CHECK:STDOUT: %assoc0.loc15_9.2 => constants.%assoc0.2966cb.2 +// CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.2966cb.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericMethod(constants.%T, constants.%U) { -// CHECK:STDOUT: %T.loc32_22.2 => constants.%T -// CHECK:STDOUT: %Generic.type.loc32_45.2 => constants.%Generic.type.91ccba.2 -// CHECK:STDOUT: %U.loc32_32.2 => constants.%U +// CHECK:STDOUT: %T.loc33_22.2 => constants.%T +// CHECK:STDOUT: %Generic.type.loc33_45.2 => constants.%Generic.type.91ccba.2 +// CHECK:STDOUT: %U.loc33_32.2 => constants.%U // CHECK:STDOUT: %pattern_type => constants.%pattern_type.80f // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%T, constants.%Generic.facet.680) {} // CHECK:STDOUT: // CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.8ff) { -// CHECK:STDOUT: %T.loc32_22.2 => constants.%GenericParam -// CHECK:STDOUT: %Generic.type.loc32_45.2 => constants.%Generic.type.769 -// CHECK:STDOUT: %U.loc32_32.2 => constants.%Generic.facet.8ff +// CHECK:STDOUT: %T.loc33_22.2 => constants.%GenericParam +// CHECK:STDOUT: %Generic.type.loc33_45.2 => constants.%Generic.type.769 +// CHECK:STDOUT: %U.loc33_32.2 => constants.%Generic.facet.8ff // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ded // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %require_complete => constants.%complete_type.997 // CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713 // CHECK:STDOUT: %assoc0 => constants.%assoc0.9b7 -// CHECK:STDOUT: %U.as_type.loc33_4.2 => constants.%ImplsGeneric +// CHECK:STDOUT: %U.as_type.loc34_4.2 => constants.%ImplsGeneric // CHECK:STDOUT: %Generic.lookup_impl_witness => constants.%Generic.impl_witness // CHECK:STDOUT: %F.type => constants.%F.type.4cf // CHECK:STDOUT: %Generic.facet => constants.%Generic.facet.8ff -// CHECK:STDOUT: %.loc33_4.3 => constants.%.3e6 -// CHECK:STDOUT: %impl.elem0.loc33_4.2 => constants.%F.a56 -// CHECK:STDOUT: %specific_impl_fn.loc33_4.2 => constants.%F.a56 +// CHECK:STDOUT: %.loc34_4.3 => constants.%.3e6 +// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%F.a56 +// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%F.a56 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/deduce.carbon b/toolchain/check/testdata/function/generic/deduce.carbon index 3836be665dbb..de88bc5ce735 100644 --- a/toolchain/check/testdata/function/generic/deduce.carbon +++ b/toolchain/check/testdata/function/generic/deduce.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -248,7 +249,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -681,7 +682,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -788,7 +789,7 @@ fn F() { // CHECK:STDOUT: --- deduce_nested_tuple.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] @@ -796,7 +797,7 @@ fn F() { // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete] -// CHECK:STDOUT: %tuple.type.f83: type = tuple_type (%T.8b3, %i32) [symbolic] +// CHECK:STDOUT: %tuple.type.f83: type = tuple_type (%T, %i32) [symbolic] // CHECK:STDOUT: %pattern_type.ec8: type = pattern_type %tuple.type.f83 [symbolic] // CHECK:STDOUT: %TupleParam.type: type = fn_type @TupleParam [concrete] // CHECK:STDOUT: %TupleParam: %TupleParam.type = struct_value () [concrete] @@ -813,16 +814,16 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %int_2.ef8) [concrete] @@ -836,9 +837,9 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -854,10 +855,10 @@ fn F() { // CHECK:STDOUT: %x.patt: @TupleParam.%pattern_type (%pattern_type.ec8) = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: @TupleParam.%pattern_type (%pattern_type.ec8) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_15.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: %x.param: @TupleParam.%tuple.type (%tuple.type.f83) = value_param call_param0 // CHECK:STDOUT: %.loc4_35.1: type = splice_block %.loc4_35.3 [symbolic = %tuple.type (constants.%tuple.type.f83)] { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.1 [symbolic = %T.loc4_15.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_15.1 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %.loc4_35.2: %tuple.type.24b = tuple_literal (%T.ref, %i32) @@ -869,7 +870,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @TupleParam(%T.loc4_15.1: type) { -// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_15.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_15.2 (constants.%T)] // CHECK:STDOUT: %tuple.type: type = tuple_type (%T.loc4_15.2, constants.%i32) [symbolic = %tuple.type (constants.%tuple.type.f83)] // CHECK:STDOUT: %pattern_type: type = pattern_type %tuple.type [symbolic = %pattern_type (constants.%pattern_type.ec8)] // CHECK:STDOUT: @@ -891,7 +892,7 @@ fn F() { // CHECK:STDOUT: %TupleParam.specific_fn: = specific_function %TupleParam.ref, @TupleParam(Core.IntLiteral) [concrete = constants.%TupleParam.specific_fn] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc7_19.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_19.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_19.2(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_19.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] @@ -902,8 +903,8 @@ fn F() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @TupleParam(constants.%T.8b3) { -// CHECK:STDOUT: %T.loc4_15.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @TupleParam(constants.%T) { +// CHECK:STDOUT: %T.loc4_15.2 => constants.%T // CHECK:STDOUT: %tuple.type => constants.%tuple.type.f83 // CHECK:STDOUT: %pattern_type => constants.%pattern_type.ec8 // CHECK:STDOUT: } @@ -920,14 +921,14 @@ fn F() { // CHECK:STDOUT: --- deduce_nested_struct.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] // CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] -// CHECK:STDOUT: %struct_type.a.b.46e: type = struct_type {.a: %T.8b3, .b: %i32} [symbolic] +// CHECK:STDOUT: %struct_type.a.b.46e: type = struct_type {.a: %T, .b: %i32} [symbolic] // CHECK:STDOUT: %pattern_type.e94: type = pattern_type %struct_type.a.b.46e [symbolic] // CHECK:STDOUT: %StructParam.type: type = fn_type @StructParam [concrete] // CHECK:STDOUT: %StructParam: %StructParam.type = struct_value () [concrete] @@ -944,16 +945,16 @@ fn F() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_2.ecc, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_2.ecc, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete] // CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %int_2.ef8) [concrete] @@ -967,9 +968,9 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -985,13 +986,13 @@ fn F() { // CHECK:STDOUT: %x.patt: @StructParam.%pattern_type (%pattern_type.e94) = binding_pattern x [concrete] // CHECK:STDOUT: %x.param_patt: @StructParam.%pattern_type (%pattern_type.e94) = value_param_pattern %x.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: %x.param: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.46e) = value_param call_param0 // CHECK:STDOUT: %.loc4: type = splice_block %struct_type.a.b.loc4_44.1 [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.46e)] { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_16.1 [symbolic = %T.loc4_16.2 (constants.%T.8b3)] +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_16.1 [symbolic = %T.loc4_16.2 (constants.%T)] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %struct_type.a.b.loc4_44.1: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T.8b3), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.46e)] +// CHECK:STDOUT: %struct_type.a.b.loc4_44.1: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.46e)] // CHECK:STDOUT: } // CHECK:STDOUT: %x: @StructParam.%struct_type.a.b.loc4_44.2 (%struct_type.a.b.46e) = bind_name x, %x.param // CHECK:STDOUT: } @@ -999,8 +1000,8 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: generic fn @StructParam(%T.loc4_16.1: type) { -// CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T.8b3)] -// CHECK:STDOUT: %struct_type.a.b.loc4_44.2: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T.8b3), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.46e)] +// CHECK:STDOUT: %T.loc4_16.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc4_16.2 (constants.%T)] +// CHECK:STDOUT: %struct_type.a.b.loc4_44.2: type = struct_type {.a: @StructParam.%T.loc4_16.2 (%T), .b: %i32} [symbolic = %struct_type.a.b.loc4_44.2 (constants.%struct_type.a.b.46e)] // CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.b.loc4_44.2 [symbolic = %pattern_type (constants.%pattern_type.e94)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: @@ -1021,7 +1022,7 @@ fn F() { // CHECK:STDOUT: %StructParam.specific_fn: = specific_function %StructParam.ref, @StructParam(Core.IntLiteral) [concrete = constants.%StructParam.specific_fn] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc7_30.1: = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_30.2: = bound_method %int_2, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_30.2(%int_2) [concrete = constants.%int_2.ef8] // CHECK:STDOUT: %.loc7_30.2: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8] @@ -1032,8 +1033,8 @@ fn F() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: specific @StructParam(constants.%T.8b3) { -// CHECK:STDOUT: %T.loc4_16.2 => constants.%T.8b3 +// CHECK:STDOUT: specific @StructParam(constants.%T) { +// CHECK:STDOUT: %T.loc4_16.2 => constants.%T // CHECK:STDOUT: %struct_type.a.b.loc4_44.2 => constants.%struct_type.a.b.46e // CHECK:STDOUT: %pattern_type => constants.%pattern_type.e94 // CHECK:STDOUT: } @@ -1074,7 +1075,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1161,7 +1162,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1246,7 +1247,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -1330,7 +1331,7 @@ fn F() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon index f5272119e332..f3188d26095b 100644 --- a/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon +++ b/toolchain/check/testdata/function/generic/fail_deduce_imported_function.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/function/generic/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/fail_type_param_mismatch.carbon index e9ec370838f0..f1f3e15a5922 100644 --- a/toolchain/check/testdata/function/generic/fail_type_param_mismatch.carbon +++ b/toolchain/check/testdata/function/generic/fail_type_param_mismatch.carbon @@ -2,8 +2,6 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". -// EXTRA-ARGS: --dump-sem-ir-ranges=if-present // INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // // AUTOUPDATE @@ -23,105 +21,3 @@ fn F(T:! type, U:! type) { // CHECK:STDERR: let n: U = *p; } - -// CHECK:STDOUT: --- fail_type_param_mismatch.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %pattern_type.98f: type = pattern_type type [concrete] -// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] -// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic] -// CHECK:STDOUT: %require_complete.6e5: = require_complete_type %ptr [symbolic] -// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr [symbolic] -// CHECK:STDOUT: %require_complete.b54: = require_complete_type %U [symbolic] -// CHECK:STDOUT: %pattern_type.a32: type = pattern_type %U [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete] -// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] -// CHECK:STDOUT: %Dest: type = bind_symbolic_name Dest, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.275: type = fn_type @Convert, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %Convert.42e: %Convert.type.275 = struct_value () [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.ca0: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%Dest) [symbolic] -// CHECK:STDOUT: %ImplicitAs.type.d88: type = facet_type <@ImplicitAs, @ImplicitAs(%U)> [symbolic] -// CHECK:STDOUT: %ImplicitAs.assoc_type.5fe: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%U) [symbolic] -// CHECK:STDOUT: %assoc0.a0b: %ImplicitAs.assoc_type.5fe = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic] -// CHECK:STDOUT: %require_complete.6c8: = require_complete_type %ImplicitAs.type.d88 [symbolic] -// CHECK:STDOUT: %assoc0.dc0: %ImplicitAs.assoc_type.ca0 = assoc_entity element0, imports.%Core.import_ref.207 [symbolic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: imports { -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//prelude -// CHECK:STDOUT: import Core//prelude/... -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.492: @ImplicitAs.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.ca0) = import_ref Core//prelude/parts/as, loc10_35, loaded [symbolic = @ImplicitAs.%assoc0 (constants.%assoc0.dc0)] -// CHECK:STDOUT: %Core.import_ref.1c7: @ImplicitAs.%Convert.type (%Convert.type.275) = import_ref Core//prelude/parts/as, loc10_35, loaded [symbolic = @ImplicitAs.%Convert (constants.%Convert.42e)] -// CHECK:STDOUT: %Core.import_ref.207 = import_ref Core//prelude/parts/as, loc10_35, unloaded -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] -// CHECK:STDOUT: %U.patt: %pattern_type.98f = symbolic_binding_pattern U, 1 [concrete] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] -// CHECK:STDOUT: %U.loc15_16.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc15_16.2 (constants.%U)] -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc15_6.1: type, %U.loc15_16.1: type) { -// CHECK:STDOUT: %T.loc15_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] -// CHECK:STDOUT: %U.loc15_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc15_16.2 (constants.%U)] -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ptr.loc16_11.2: type = ptr_type %T.loc15_6.2 [symbolic = %ptr.loc16_11.2 (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc16: = require_complete_type %ptr.loc16_11.2 [symbolic = %require_complete.loc16 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %pattern_type.loc16: type = pattern_type %ptr.loc16_11.2 [symbolic = %pattern_type.loc16 (constants.%pattern_type.afe)] -// CHECK:STDOUT: %require_complete.loc24_10: = require_complete_type %U.loc15_16.2 [symbolic = %require_complete.loc24_10 (constants.%require_complete.b54)] -// CHECK:STDOUT: %pattern_type.loc24: type = pattern_type %U.loc15_16.2 [symbolic = %pattern_type.loc24 (constants.%pattern_type.a32)] -// CHECK:STDOUT: %ImplicitAs.type.loc24_14.2: type = facet_type <@ImplicitAs, @ImplicitAs(%U.loc15_16.2)> [symbolic = %ImplicitAs.type.loc24_14.2 (constants.%ImplicitAs.type.d88)] -// CHECK:STDOUT: %require_complete.loc24_14: = require_complete_type %ImplicitAs.type.loc24_14.2 [symbolic = %require_complete.loc24_14 (constants.%require_complete.6c8)] -// CHECK:STDOUT: %ImplicitAs.assoc_type: type = assoc_entity_type @ImplicitAs, @ImplicitAs(%U.loc15_16.2) [symbolic = %ImplicitAs.assoc_type (constants.%ImplicitAs.assoc_type.5fe)] -// CHECK:STDOUT: %assoc0: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.5fe) = assoc_entity element0, imports.%Core.import_ref.1c7 [symbolic = %assoc0 (constants.%assoc0.a0b)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %p.patt: @F.%pattern_type.loc16 (%pattern_type.afe) = binding_pattern p [concrete] -// CHECK:STDOUT: %p.var_patt: @F.%pattern_type.loc16 (%pattern_type.afe) = var_pattern %p.patt [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.var: ref @F.%ptr.loc16_11.2 (%ptr) = var %p.var_patt -// CHECK:STDOUT: %.loc16: type = splice_block %ptr.loc16_11.1 [symbolic = %ptr.loc16_11.2 (constants.%ptr)] { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc16_11.1: type = ptr_type %T.ref [symbolic = %ptr.loc16_11.2 (constants.%ptr)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref @F.%ptr.loc16_11.2 (%ptr) = bind_name p, %p.var -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %n.patt: @F.%pattern_type.loc24 (%pattern_type.a32) = binding_pattern n [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc16_11.2 (%ptr) = name_ref p, %p -// CHECK:STDOUT: %.loc24_15: @F.%ptr.loc16_11.2 (%ptr) = bind_value %p.ref -// CHECK:STDOUT: %.loc24_14.1: ref @F.%T.loc15_6.2 (%T) = deref %.loc24_15 -// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc15_16.1 [symbolic = %U.loc15_16.2 (constants.%U)] -// CHECK:STDOUT: %ImplicitAs.type.loc24_14.1: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%U)> [symbolic = %ImplicitAs.type.loc24_14.2 (constants.%ImplicitAs.type.d88)] -// CHECK:STDOUT: %.loc24_14.2: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.5fe) = specific_constant imports.%Core.import_ref.492, @ImplicitAs(constants.%U) [symbolic = %assoc0 (constants.%assoc0.a0b)] -// CHECK:STDOUT: %Convert.ref: @F.%ImplicitAs.assoc_type (%ImplicitAs.assoc_type.5fe) = name_ref Convert, %.loc24_14.2 [symbolic = %assoc0 (constants.%assoc0.a0b)] -// CHECK:STDOUT: %.loc24_14.3: @F.%U.loc15_16.2 (%U) = converted %.loc24_14.1, [concrete = ] -// CHECK:STDOUT: %n: @F.%U.loc15_16.2 (%U) = bind_name n, [concrete = ] -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%U) { -// CHECK:STDOUT: %T.loc15_6.2 => constants.%T -// CHECK:STDOUT: %U.loc15_16.2 => constants.%U -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/forward_decl.carbon b/toolchain/check/testdata/function/generic/forward_decl.carbon index a3a359d7a047..56a93269d134 100644 --- a/toolchain/check/testdata/function/generic/forward_decl.carbon +++ b/toolchain/check/testdata/function/generic/forward_decl.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // @@ -29,17 +30,17 @@ fn F(T:! type); // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc14_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc14_6.1: type) { -// CHECK:STDOUT: %T.loc14_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: generic fn @F(%T.loc15_6.1: type) { +// CHECK:STDOUT: %T.loc15_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: fn(); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc14_6.2 => constants.%T +// CHECK:STDOUT: %T.loc15_6.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/import_specific.carbon b/toolchain/check/testdata/function/generic/import_specific.carbon index 7744073a3dc0..2e48c334432a 100644 --- a/toolchain/check/testdata/function/generic/import_specific.carbon +++ b/toolchain/check/testdata/function/generic/import_specific.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/function/generic/indirect_generic_type.carbon b/toolchain/check/testdata/function/generic/indirect_generic_type.carbon index c1710ef707dd..54e7c20f9985 100644 --- a/toolchain/check/testdata/function/generic/indirect_generic_type.carbon +++ b/toolchain/check/testdata/function/generic/indirect_generic_type.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // @@ -36,51 +37,51 @@ fn F(T:! type, p: T**) -> T* { // CHECK:STDOUT: } // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] -// CHECK:STDOUT: %p.patt: @F.%pattern_type.loc14_16 (%pattern_type.12d) = binding_pattern p [concrete] -// CHECK:STDOUT: %p.param_patt: @F.%pattern_type.loc14_16 (%pattern_type.12d) = value_param_pattern %p.patt, call_param0 [concrete] -// CHECK:STDOUT: %return.patt: @F.%pattern_type.loc14_24 (%pattern_type.afe) = return_slot_pattern [concrete] -// CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc14_24 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] +// CHECK:STDOUT: %p.patt: @F.%pattern_type.loc15_16 (%pattern_type.12d) = binding_pattern p [concrete] +// CHECK:STDOUT: %p.param_patt: @F.%pattern_type.loc15_16 (%pattern_type.12d) = value_param_pattern %p.patt, call_param0 [concrete] +// CHECK:STDOUT: %return.patt: @F.%pattern_type.loc15_24 (%pattern_type.afe) = return_slot_pattern [concrete] +// CHECK:STDOUT: %return.param_patt: @F.%pattern_type.loc15_24 (%pattern_type.afe) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc14_27: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc14_28: type = ptr_type %T.ref.loc14_27 [symbolic = %ptr.loc14_20.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %T.loc14_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %p.param: @F.%ptr.loc14_21.2 (%ptr.a13) = value_param call_param0 -// CHECK:STDOUT: %.loc14: type = splice_block %ptr.loc14_21.1 [symbolic = %ptr.loc14_21.2 (constants.%ptr.a13)] { -// CHECK:STDOUT: %T.ref.loc14_19: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc14_20.1: type = ptr_type %T.ref.loc14_19 [symbolic = %ptr.loc14_20.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %ptr.loc14_21.1: type = ptr_type %ptr.loc14_20.1 [symbolic = %ptr.loc14_21.2 (constants.%ptr.a13)] +// CHECK:STDOUT: %T.ref.loc15_27: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %ptr.loc15_28: type = ptr_type %T.ref.loc15_27 [symbolic = %ptr.loc15_20.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %p.param: @F.%ptr.loc15_21.2 (%ptr.a13) = value_param call_param0 +// CHECK:STDOUT: %.loc15: type = splice_block %ptr.loc15_21.1 [symbolic = %ptr.loc15_21.2 (constants.%ptr.a13)] { +// CHECK:STDOUT: %T.ref.loc15_19: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %ptr.loc15_20.1: type = ptr_type %T.ref.loc15_19 [symbolic = %ptr.loc15_20.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %ptr.loc15_21.1: type = ptr_type %ptr.loc15_20.1 [symbolic = %ptr.loc15_21.2 (constants.%ptr.a13)] // CHECK:STDOUT: } -// CHECK:STDOUT: %p: @F.%ptr.loc14_21.2 (%ptr.a13) = bind_name p, %p.param -// CHECK:STDOUT: %return.param: ref @F.%ptr.loc14_20.2 (%ptr.79f) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%ptr.loc14_20.2 (%ptr.79f) = return_slot %return.param +// CHECK:STDOUT: %p: @F.%ptr.loc15_21.2 (%ptr.a13) = bind_name p, %p.param +// CHECK:STDOUT: %return.param: ref @F.%ptr.loc15_20.2 (%ptr.79f) = out_param call_param1 +// CHECK:STDOUT: %return: ref @F.%ptr.loc15_20.2 (%ptr.79f) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc14_6.1: type) { -// CHECK:STDOUT: %T.loc14_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc14_20.2: type = ptr_type %T.loc14_6.2 [symbolic = %ptr.loc14_20.2 (constants.%ptr.79f)] -// CHECK:STDOUT: %ptr.loc14_21.2: type = ptr_type %ptr.loc14_20.2 [symbolic = %ptr.loc14_21.2 (constants.%ptr.a13)] -// CHECK:STDOUT: %pattern_type.loc14_16: type = pattern_type %ptr.loc14_21.2 [symbolic = %pattern_type.loc14_16 (constants.%pattern_type.12d)] -// CHECK:STDOUT: %pattern_type.loc14_24: type = pattern_type %ptr.loc14_20.2 [symbolic = %pattern_type.loc14_24 (constants.%pattern_type.afe)] +// CHECK:STDOUT: generic fn @F(%T.loc15_6.1: type) { +// CHECK:STDOUT: %T.loc15_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %ptr.loc15_20.2: type = ptr_type %T.loc15_6.2 [symbolic = %ptr.loc15_20.2 (constants.%ptr.79f)] +// CHECK:STDOUT: %ptr.loc15_21.2: type = ptr_type %ptr.loc15_20.2 [symbolic = %ptr.loc15_21.2 (constants.%ptr.a13)] +// CHECK:STDOUT: %pattern_type.loc15_16: type = pattern_type %ptr.loc15_21.2 [symbolic = %pattern_type.loc15_16 (constants.%pattern_type.12d)] +// CHECK:STDOUT: %pattern_type.loc15_24: type = pattern_type %ptr.loc15_20.2 [symbolic = %pattern_type.loc15_24 (constants.%pattern_type.afe)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete.loc14_24: = require_complete_type %ptr.loc14_20.2 [symbolic = %require_complete.loc14_24 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc14_17: = require_complete_type %ptr.loc14_21.2 [symbolic = %require_complete.loc14_17 (constants.%require_complete.132)] +// CHECK:STDOUT: %require_complete.loc15_24: = require_complete_type %ptr.loc15_20.2 [symbolic = %require_complete.loc15_24 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc15_17: = require_complete_type %ptr.loc15_21.2 [symbolic = %require_complete.loc15_17 (constants.%require_complete.132)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc14_21.2 (%ptr.a13)) -> @F.%ptr.loc14_20.2 (%ptr.79f) { +// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc15_21.2 (%ptr.a13)) -> @F.%ptr.loc15_20.2 (%ptr.79f) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %p.ref: @F.%ptr.loc14_21.2 (%ptr.a13) = name_ref p, %p -// CHECK:STDOUT: %.loc15_10.1: ref @F.%ptr.loc14_20.2 (%ptr.79f) = deref %p.ref -// CHECK:STDOUT: %.loc15_10.2: @F.%ptr.loc14_20.2 (%ptr.79f) = bind_value %.loc15_10.1 -// CHECK:STDOUT: return %.loc15_10.2 +// CHECK:STDOUT: %p.ref: @F.%ptr.loc15_21.2 (%ptr.a13) = name_ref p, %p +// CHECK:STDOUT: %.loc16_10.1: ref @F.%ptr.loc15_20.2 (%ptr.79f) = deref %p.ref +// CHECK:STDOUT: %.loc16_10.2: @F.%ptr.loc15_20.2 (%ptr.79f) = bind_value %.loc16_10.1 +// CHECK:STDOUT: return %.loc16_10.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc14_6.2 => constants.%T -// CHECK:STDOUT: %ptr.loc14_20.2 => constants.%ptr.79f -// CHECK:STDOUT: %ptr.loc14_21.2 => constants.%ptr.a13 -// CHECK:STDOUT: %pattern_type.loc14_16 => constants.%pattern_type.12d -// CHECK:STDOUT: %pattern_type.loc14_24 => constants.%pattern_type.afe +// CHECK:STDOUT: %T.loc15_6.2 => constants.%T +// CHECK:STDOUT: %ptr.loc15_20.2 => constants.%ptr.79f +// CHECK:STDOUT: %ptr.loc15_21.2 => constants.%ptr.a13 +// CHECK:STDOUT: %pattern_type.loc15_16 => constants.%pattern_type.12d +// CHECK:STDOUT: %pattern_type.loc15_24 => constants.%pattern_type.afe // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/param_in_type.carbon b/toolchain/check/testdata/function/generic/param_in_type.carbon index 6ebad25f396c..506f2f52eb09 100644 --- a/toolchain/check/testdata/function/generic/param_in_type.carbon +++ b/toolchain/check/testdata/function/generic/param_in_type.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -27,20 +28,20 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: %ImplicitAs.type.2fd: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete] // CHECK:STDOUT: %Convert.type.71e: type = fn_type @Convert.1, @ImplicitAs(Core.IntLiteral) [concrete] // CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.4, @impl.971(%From) [symbolic] +// CHECK:STDOUT: %Convert.type.708: type = fn_type @Convert.3, @impl.971(%From) [symbolic] // CHECK:STDOUT: %Convert.c68: %Convert.type.708 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.a11: = impl_witness imports.%ImplicitAs.impl_witness_table.1d9, @impl.971(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.4, @impl.971(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.4ad: type = fn_type @Convert.3, @impl.971(%int_32) [concrete] // CHECK:STDOUT: %Convert.960: %Convert.type.4ad = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.f49: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] -// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet.f49 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.2fd = facet_value %i32, (%ImplicitAs.impl_witness.a11) [concrete] +// CHECK:STDOUT: %.0ea: type = fn_type_with_self_type %Convert.type.71e, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %N.51e, %Convert.960 [symbolic] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.960, @Convert.4(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.960, @Convert.3(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %N.51e, %Convert.specific_fn [symbolic] -// CHECK:STDOUT: %int.convert_checked.12c: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] -// CHECK:STDOUT: %array_type: type = array_type %int.convert_checked.12c, %i32 [symbolic] -// CHECK:STDOUT: %ptr.0ad: type = ptr_type %array_type [symbolic] -// CHECK:STDOUT: %pattern_type.c7e: type = pattern_type %ptr.0ad [symbolic] +// CHECK:STDOUT: %int.convert_checked: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic] +// CHECK:STDOUT: %array_type: type = array_type %int.convert_checked, %i32 [symbolic] +// CHECK:STDOUT: %ptr: type = ptr_type %array_type [symbolic] +// CHECK:STDOUT: %pattern_type.c7e: type = pattern_type %ptr [symbolic] // CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: } @@ -52,9 +53,9 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.85c: @impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/types/int, loc23_44, loaded [symbolic = @impl.971.%Convert (constants.%Convert.c68)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.85c: @impl.971.%Convert.type (%Convert.type.708) = import_ref Core//prelude/parts/int, loc20_44, loaded [symbolic = @impl.971.%Convert (constants.%Convert.c68)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.1d9 = impl_witness_table (%Core.import_ref.85c), @impl.971 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -69,49 +70,49 @@ fn F(N:! i32, a: array(i32, N)*); // CHECK:STDOUT: %a.patt: @F.%pattern_type (%pattern_type.c7e) = binding_pattern a [concrete] // CHECK:STDOUT: %a.param_patt: @F.%pattern_type (%pattern_type.c7e) = value_param_pattern %a.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc14_10: type = splice_block %i32.loc14_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc14_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc14_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %.loc15_10: type = splice_block %i32.loc15_10 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc15_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc15_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } -// CHECK:STDOUT: %N.loc14_6.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc14_6.2 (constants.%N.51e)] -// CHECK:STDOUT: %a.param: @F.%ptr.loc14_31.2 (%ptr.0ad) = value_param call_param0 -// CHECK:STDOUT: %.loc14_31: type = splice_block %ptr.loc14_31.1 [symbolic = %ptr.loc14_31.2 (constants.%ptr.0ad)] { -// CHECK:STDOUT: %int_32.loc14_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc14_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc14_6.1 [symbolic = %N.loc14_6.2 (constants.%N.51e)] +// CHECK:STDOUT: %N.loc15_6.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc15_6.2 (constants.%N.51e)] +// CHECK:STDOUT: %a.param: @F.%ptr.loc15_31.2 (%ptr) = value_param call_param0 +// CHECK:STDOUT: %.loc15_31: type = splice_block %ptr.loc15_31.1 [symbolic = %ptr.loc15_31.2 (constants.%ptr)] { +// CHECK:STDOUT: %int_32.loc15_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc15_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc15_6.1 [symbolic = %N.loc15_6.2 (constants.%N.51e)] // CHECK:STDOUT: %impl.elem0: %.0ea = impl_witness_access constants.%ImplicitAs.impl_witness.a11, element0 [concrete = constants.%Convert.960] -// CHECK:STDOUT: %bound_method.loc14_29.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.4(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc14_29.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc14_29.3 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc14_29.1: init Core.IntLiteral = call %bound_method.loc14_29.2(%N.ref) [symbolic = %int.convert_checked.loc14_29.2 (constants.%int.convert_checked.12c)] -// CHECK:STDOUT: %.loc14_29.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc14_29.1 [symbolic = %int.convert_checked.loc14_29.2 (constants.%int.convert_checked.12c)] -// CHECK:STDOUT: %.loc14_29.2: Core.IntLiteral = converted %N.ref, %.loc14_29.1 [symbolic = %int.convert_checked.loc14_29.2 (constants.%int.convert_checked.12c)] -// CHECK:STDOUT: %array_type.loc14_30.1: type = array_type %.loc14_29.2, %i32.loc14_24 [symbolic = %array_type.loc14_30.2 (constants.%array_type)] -// CHECK:STDOUT: %ptr.loc14_31.1: type = ptr_type %array_type.loc14_30.1 [symbolic = %ptr.loc14_31.2 (constants.%ptr.0ad)] +// CHECK:STDOUT: %bound_method.loc15_29.1: = bound_method %N.ref, %impl.elem0 [symbolic = %Convert.bound (constants.%Convert.bound)] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc15_29.2: = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc15_29.3 (constants.%bound_method)] +// CHECK:STDOUT: %int.convert_checked.loc15_29.1: init Core.IntLiteral = call %bound_method.loc15_29.2(%N.ref) [symbolic = %int.convert_checked.loc15_29.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %.loc15_29.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc15_29.1 [symbolic = %int.convert_checked.loc15_29.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %.loc15_29.2: Core.IntLiteral = converted %N.ref, %.loc15_29.1 [symbolic = %int.convert_checked.loc15_29.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %array_type.loc15_30.1: type = array_type %.loc15_29.2, %i32.loc15_24 [symbolic = %array_type.loc15_30.2 (constants.%array_type)] +// CHECK:STDOUT: %ptr.loc15_31.1: type = ptr_type %array_type.loc15_30.1 [symbolic = %ptr.loc15_31.2 (constants.%ptr)] // CHECK:STDOUT: } -// CHECK:STDOUT: %a: @F.%ptr.loc14_31.2 (%ptr.0ad) = bind_name a, %a.param +// CHECK:STDOUT: %a: @F.%ptr.loc15_31.2 (%ptr) = bind_name a, %a.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%N.loc14_6.1: %i32) { -// CHECK:STDOUT: %N.loc14_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc14_6.2 (constants.%N.51e)] -// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc14_6.2, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound)] -// CHECK:STDOUT: %bound_method.loc14_29.3: = bound_method %N.loc14_6.2, constants.%Convert.specific_fn [symbolic = %bound_method.loc14_29.3 (constants.%bound_method)] -// CHECK:STDOUT: %int.convert_checked.loc14_29.2: init Core.IntLiteral = call %bound_method.loc14_29.3(%N.loc14_6.2) [symbolic = %int.convert_checked.loc14_29.2 (constants.%int.convert_checked.12c)] -// CHECK:STDOUT: %array_type.loc14_30.2: type = array_type %int.convert_checked.loc14_29.2, constants.%i32 [symbolic = %array_type.loc14_30.2 (constants.%array_type)] -// CHECK:STDOUT: %ptr.loc14_31.2: type = ptr_type %array_type.loc14_30.2 [symbolic = %ptr.loc14_31.2 (constants.%ptr.0ad)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc14_31.2 [symbolic = %pattern_type (constants.%pattern_type.c7e)] +// CHECK:STDOUT: generic fn @F(%N.loc15_6.1: %i32) { +// CHECK:STDOUT: %N.loc15_6.2: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc15_6.2 (constants.%N.51e)] +// CHECK:STDOUT: %Convert.bound: = bound_method %N.loc15_6.2, constants.%Convert.960 [symbolic = %Convert.bound (constants.%Convert.bound)] +// CHECK:STDOUT: %bound_method.loc15_29.3: = bound_method %N.loc15_6.2, constants.%Convert.specific_fn [symbolic = %bound_method.loc15_29.3 (constants.%bound_method)] +// CHECK:STDOUT: %int.convert_checked.loc15_29.2: init Core.IntLiteral = call %bound_method.loc15_29.3(%N.loc15_6.2) [symbolic = %int.convert_checked.loc15_29.2 (constants.%int.convert_checked)] +// CHECK:STDOUT: %array_type.loc15_30.2: type = array_type %int.convert_checked.loc15_29.2, constants.%i32 [symbolic = %array_type.loc15_30.2 (constants.%array_type)] +// CHECK:STDOUT: %ptr.loc15_31.2: type = ptr_type %array_type.loc15_30.2 [symbolic = %ptr.loc15_31.2 (constants.%ptr)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc15_31.2 [symbolic = %pattern_type (constants.%pattern_type.c7e)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%a.param: @F.%ptr.loc14_31.2 (%ptr.0ad)); +// CHECK:STDOUT: fn(%a.param: @F.%ptr.loc15_31.2 (%ptr)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%N.51e) { -// CHECK:STDOUT: %N.loc14_6.2 => constants.%N.51e +// CHECK:STDOUT: %N.loc15_6.2 => constants.%N.51e // CHECK:STDOUT: %Convert.bound => constants.%Convert.bound -// CHECK:STDOUT: %bound_method.loc14_29.3 => constants.%bound_method -// CHECK:STDOUT: %int.convert_checked.loc14_29.2 => constants.%int.convert_checked.12c -// CHECK:STDOUT: %array_type.loc14_30.2 => constants.%array_type -// CHECK:STDOUT: %ptr.loc14_31.2 => constants.%ptr.0ad +// CHECK:STDOUT: %bound_method.loc15_29.3 => constants.%bound_method +// CHECK:STDOUT: %int.convert_checked.loc15_29.2 => constants.%int.convert_checked +// CHECK:STDOUT: %array_type.loc15_30.2 => constants.%array_type +// CHECK:STDOUT: %ptr.loc15_31.2 => constants.%ptr // CHECK:STDOUT: %pattern_type => constants.%pattern_type.c7e // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/redeclare.carbon b/toolchain/check/testdata/function/generic/redeclare.carbon index 7aac8c99da54..b60cc4d56e4a 100644 --- a/toolchain/check/testdata/function/generic/redeclare.carbon +++ b/toolchain/check/testdata/function/generic/redeclare.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/function/generic/resolve_used.carbon b/toolchain/check/testdata/function/generic/resolve_used.carbon index da5a428f9aec..9f030bd40308 100644 --- a/toolchain/check/testdata/function/generic/resolve_used.carbon +++ b/toolchain/check/testdata/function/generic/resolve_used.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -10,7 +11,7 @@ // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/resolve_used.carbon // TIP: To dump output, run: // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/resolve_used.carbon -// CHECK:STDERR: {{.*}}/prelude/types/int.carbon:13:9: error: integer type width of 0 is not positive [IntWidthNotPositive] +// CHECK:STDERR: min_prelude/parts/int.carbon:10:9: error: integer type width of 0 is not positive [IntWidthNotPositive] // CHECK:STDERR: adapt MakeInt(N); // CHECK:STDERR: ^~~~~~~~~~ @@ -68,8 +69,8 @@ fn CallNegative() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { diff --git a/toolchain/check/testdata/function/generic/return_slot.carbon b/toolchain/check/testdata/function/generic/return_slot.carbon index 257ae5d523c3..6fb00f5d64de 100644 --- a/toolchain/check/testdata/function/generic/return_slot.carbon +++ b/toolchain/check/testdata/function/generic/return_slot.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -77,7 +78,7 @@ fn G() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -91,17 +92,17 @@ fn G() { // CHECK:STDOUT: %Wrap.decl: %Wrap.type = class_decl @Wrap [concrete = constants.%Wrap.generic] { // CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc14_12.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_12.2 (constants.%T)] +// CHECK:STDOUT: %T.loc15_12.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic class @Wrap(%T.loc14_12.1: type) { -// CHECK:STDOUT: %T.loc14_12.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_12.2 (constants.%T)] +// CHECK:STDOUT: generic class @Wrap(%T.loc15_12.1: type) { +// CHECK:STDOUT: %T.loc15_12.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_12.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T.loc14_12.2) [symbolic = %Make.type (constants.%Make.type.652)] +// CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T.loc15_12.2) [symbolic = %Make.type (constants.%Make.type.652)] // CHECK:STDOUT: %Make: @Wrap.%Make.type (%Make.type.652) = struct_value () [symbolic = %Make (constants.%Make.eb2)] // CHECK:STDOUT: // CHECK:STDOUT: class { @@ -109,7 +110,7 @@ fn G() { // CHECK:STDOUT: %return.patt: @Make.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @Make.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc14_12.1 [symbolic = %T (constants.%T)] +// CHECK:STDOUT: %T.ref: type = name_ref T, @Wrap.%T.loc15_12.1 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %return.param: ref @Make.%T (%T) = out_param call_param0 // CHECK:STDOUT: %return: ref @Make.%T (%T) = return_slot %return.param // CHECK:STDOUT: } @@ -129,17 +130,17 @@ fn G() { // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %int_100: Core.IntLiteral = int_value 100 [concrete = constants.%int_100] // CHECK:STDOUT: %array_type: type = array_type %int_100, %i32 [concrete = constants.%array_type] -// CHECK:STDOUT: %.loc18: %C.elem = field_decl arr, element0 [concrete] +// CHECK:STDOUT: %.loc19: %C.elem = field_decl arr, element0 [concrete] // CHECK:STDOUT: %struct_type.arr: type = struct_type {.arr: %array_type} [concrete = constants.%struct_type.arr.5f2] // CHECK:STDOUT: %complete_type: = complete_type_witness %struct_type.arr [concrete = constants.%complete_type.22a] // CHECK:STDOUT: complete_type_witness = %complete_type // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = constants.%C -// CHECK:STDOUT: .arr = %.loc18 +// CHECK:STDOUT: .arr = %.loc19 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @Make(@Wrap.%T.loc14_12.1: type) { +// CHECK:STDOUT: generic fn @Make(@Wrap.%T.loc15_12.1: type) { // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)] // CHECK:STDOUT: %pattern_type: type = pattern_type %T [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: @@ -147,17 +148,17 @@ fn G() { // CHECK:STDOUT: %require_complete: = require_complete_type %T [symbolic = %require_complete (constants.%require_complete.4ae)] // CHECK:STDOUT: %Make.type: type = fn_type @Make, @Wrap(%T) [symbolic = %Make.type (constants.%Make.type.652)] // CHECK:STDOUT: %Make: @Make.%Make.type (%Make.type.652) = struct_value () [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.specific_fn.loc15_27.2: = specific_function %Make, @Make(%T) [symbolic = %Make.specific_fn.loc15_27.2 (constants.%Make.specific_fn.bf1)] +// CHECK:STDOUT: %Make.specific_fn.loc16_27.2: = specific_function %Make, @Make(%T) [symbolic = %Make.specific_fn.loc16_27.2 (constants.%Make.specific_fn.bf1)] // CHECK:STDOUT: // CHECK:STDOUT: fn() -> @Make.%T (%T) { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc15_27: @Make.%Make.type (%Make.type.652) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.652) = name_ref Make, %.loc15_27 [symbolic = %Make (constants.%Make.eb2)] -// CHECK:STDOUT: %Make.specific_fn.loc15_27.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc15_27.2 (constants.%Make.specific_fn.bf1)] -// CHECK:STDOUT: %Make.call: init @Make.%T (%T) = call %Make.specific_fn.loc15_27.1() -// CHECK:STDOUT: %.loc15_33.1: @Make.%T (%T) = value_of_initializer %Make.call -// CHECK:STDOUT: %.loc15_33.2: @Make.%T (%T) = converted %Make.call, %.loc15_33.1 -// CHECK:STDOUT: return %.loc15_33.2 +// CHECK:STDOUT: %.loc16_27: @Make.%Make.type (%Make.type.652) = specific_constant @Wrap.%Make.decl, @Wrap(constants.%T) [symbolic = %Make (constants.%Make.eb2)] +// CHECK:STDOUT: %Make.ref: @Make.%Make.type (%Make.type.652) = name_ref Make, %.loc16_27 [symbolic = %Make (constants.%Make.eb2)] +// CHECK:STDOUT: %Make.specific_fn.loc16_27.1: = specific_function %Make.ref, @Make(constants.%T) [symbolic = %Make.specific_fn.loc16_27.2 (constants.%Make.specific_fn.bf1)] +// CHECK:STDOUT: %Make.call: init @Make.%T (%T) = call %Make.specific_fn.loc16_27.1() +// CHECK:STDOUT: %.loc16_33.1: @Make.%T (%T) = value_of_initializer %Make.call +// CHECK:STDOUT: %.loc16_33.2: @Make.%T (%T) = converted %Make.call, %.loc16_33.1 +// CHECK:STDOUT: return %.loc16_33.2 // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -168,18 +169,18 @@ fn G() { // CHECK:STDOUT: %a.var_patt: %pattern_type.7ce = var_pattern %a.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %i32 = var %a.var_patt -// CHECK:STDOUT: %Wrap.ref.loc21: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] -// CHECK:STDOUT: %int_32.loc21_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: %Wrap.loc21: type = class_type @Wrap, @Wrap(constants.%i32) [concrete = constants.%Wrap.f84] -// CHECK:STDOUT: %.loc21_25: %Make.type.572 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%i32) [concrete = constants.%Make.2c5] -// CHECK:STDOUT: %Make.ref.loc21: %Make.type.572 = name_ref Make, %.loc21_25 [concrete = constants.%Make.2c5] -// CHECK:STDOUT: %Make.specific_fn.loc21: = specific_function %Make.ref.loc21, @Make(constants.%i32) [concrete = constants.%Make.specific_fn.f29] -// CHECK:STDOUT: %Make.call.loc21: init %i32 = call %Make.specific_fn.loc21() -// CHECK:STDOUT: assign %a.var, %Make.call.loc21 -// CHECK:STDOUT: %.loc21_10: type = splice_block %i32.loc21_10 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc21_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %Wrap.ref.loc22: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] +// CHECK:STDOUT: %int_32.loc22_21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc22_21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %Wrap.loc22: type = class_type @Wrap, @Wrap(constants.%i32) [concrete = constants.%Wrap.f84] +// CHECK:STDOUT: %.loc22_25: %Make.type.572 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%i32) [concrete = constants.%Make.2c5] +// CHECK:STDOUT: %Make.ref.loc22: %Make.type.572 = name_ref Make, %.loc22_25 [concrete = constants.%Make.2c5] +// CHECK:STDOUT: %Make.specific_fn.loc22: = specific_function %Make.ref.loc22, @Make(constants.%i32) [concrete = constants.%Make.specific_fn.f29] +// CHECK:STDOUT: %Make.call.loc22: init %i32 = call %Make.specific_fn.loc22() +// CHECK:STDOUT: assign %a.var, %Make.call.loc22 +// CHECK:STDOUT: %.loc22_10: type = splice_block %i32.loc22_10 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc22_10: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc22_10: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %i32 = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { @@ -187,18 +188,18 @@ fn G() { // CHECK:STDOUT: %b.var_patt: %pattern_type.cb1 = var_pattern %b.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var %b.var_patt -// CHECK:STDOUT: %Wrap.ref.loc22: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] -// CHECK:STDOUT: %.loc22_21: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_22: type = converted %.loc22_21, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %Wrap.loc22: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.1aa] -// CHECK:STDOUT: %.loc22_23: %Make.type.20e = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Make.de0] -// CHECK:STDOUT: %Make.ref.loc22: %Make.type.20e = name_ref Make, %.loc22_23 [concrete = constants.%Make.de0] -// CHECK:STDOUT: %Make.specific_fn.loc22: = specific_function %Make.ref.loc22, @Make(constants.%empty_tuple.type) [concrete = constants.%Make.specific_fn.e43] -// CHECK:STDOUT: %Make.call.loc22: init %empty_tuple.type = call %Make.specific_fn.loc22() -// CHECK:STDOUT: assign %b.var, %Make.call.loc22 -// CHECK:STDOUT: %.loc22_11.1: type = splice_block %.loc22_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc22_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_11.3: type = converted %.loc22_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Wrap.ref.loc23: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] +// CHECK:STDOUT: %.loc23_21: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_22: type = converted %.loc23_21, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Wrap.loc23: type = class_type @Wrap, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Wrap.1aa] +// CHECK:STDOUT: %.loc23_23: %Make.type.20e = specific_constant @Wrap.%Make.decl, @Wrap(constants.%empty_tuple.type) [concrete = constants.%Make.de0] +// CHECK:STDOUT: %Make.ref.loc23: %Make.type.20e = name_ref Make, %.loc23_23 [concrete = constants.%Make.de0] +// CHECK:STDOUT: %Make.specific_fn.loc23: = specific_function %Make.ref.loc23, @Make(constants.%empty_tuple.type) [concrete = constants.%Make.specific_fn.e43] +// CHECK:STDOUT: %Make.call.loc23: init %empty_tuple.type = call %Make.specific_fn.loc23() +// CHECK:STDOUT: assign %b.var, %Make.call.loc23 +// CHECK:STDOUT: %.loc23_11.1: type = splice_block %.loc23_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc23_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc23_11.3: type = converted %.loc23_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %empty_tuple.type = bind_name b, %b.var // CHECK:STDOUT: name_binding_decl { @@ -206,22 +207,22 @@ fn G() { // CHECK:STDOUT: %c.var_patt: %pattern_type.c48 = var_pattern %c.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var %c.var_patt -// CHECK:STDOUT: %Wrap.ref.loc23: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] -// CHECK:STDOUT: %C.ref.loc23_19: type = name_ref C, file.%C.decl [concrete = constants.%C] -// CHECK:STDOUT: %Wrap.loc23: type = class_type @Wrap, @Wrap(constants.%C) [concrete = constants.%Wrap.2eb] -// CHECK:STDOUT: %.loc23_21: %Make.type.708 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [concrete = constants.%Make.e4b] -// CHECK:STDOUT: %Make.ref.loc23: %Make.type.708 = name_ref Make, %.loc23_21 [concrete = constants.%Make.e4b] -// CHECK:STDOUT: %Make.specific_fn.loc23: = specific_function %Make.ref.loc23, @Make(constants.%C) [concrete = constants.%Make.specific_fn.834] -// CHECK:STDOUT: %.loc23_3: ref %C = splice_block %c.var {} -// CHECK:STDOUT: %Make.call.loc23: init %C = call %Make.specific_fn.loc23() to %.loc23_3 -// CHECK:STDOUT: assign %c.var, %Make.call.loc23 -// CHECK:STDOUT: %C.ref.loc23_10: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %Wrap.ref.loc24: %Wrap.type = name_ref Wrap, file.%Wrap.decl [concrete = constants.%Wrap.generic] +// CHECK:STDOUT: %C.ref.loc24_19: type = name_ref C, file.%C.decl [concrete = constants.%C] +// CHECK:STDOUT: %Wrap.loc24: type = class_type @Wrap, @Wrap(constants.%C) [concrete = constants.%Wrap.2eb] +// CHECK:STDOUT: %.loc24_21: %Make.type.708 = specific_constant @Wrap.%Make.decl, @Wrap(constants.%C) [concrete = constants.%Make.e4b] +// CHECK:STDOUT: %Make.ref.loc24: %Make.type.708 = name_ref Make, %.loc24_21 [concrete = constants.%Make.e4b] +// CHECK:STDOUT: %Make.specific_fn.loc24: = specific_function %Make.ref.loc24, @Make(constants.%C) [concrete = constants.%Make.specific_fn.834] +// CHECK:STDOUT: %.loc24_3: ref %C = splice_block %c.var {} +// CHECK:STDOUT: %Make.call.loc24: init %C = call %Make.specific_fn.loc24() to %.loc24_3 +// CHECK:STDOUT: assign %c.var, %Make.call.loc24 +// CHECK:STDOUT: %C.ref.loc24_10: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%T) { -// CHECK:STDOUT: %T.loc14_12.2 => constants.%T +// CHECK:STDOUT: %T.loc15_12.2 => constants.%T // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Make.type => constants.%Make.type.652 @@ -236,11 +237,11 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%require_complete.4ae // CHECK:STDOUT: %Make.type => constants.%Make.type.652 // CHECK:STDOUT: %Make => constants.%Make.eb2 -// CHECK:STDOUT: %Make.specific_fn.loc15_27.2 => constants.%Make.specific_fn.bf1 +// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.bf1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%i32) { -// CHECK:STDOUT: %T.loc14_12.2 => constants.%i32 +// CHECK:STDOUT: %T.loc15_12.2 => constants.%i32 // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Make.type => constants.%Make.type.572 @@ -255,11 +256,11 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%complete_type.f8a // CHECK:STDOUT: %Make.type => constants.%Make.type.572 // CHECK:STDOUT: %Make => constants.%Make.2c5 -// CHECK:STDOUT: %Make.specific_fn.loc15_27.2 => constants.%Make.specific_fn.f29 +// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.f29 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%empty_tuple.type) { -// CHECK:STDOUT: %T.loc14_12.2 => constants.%empty_tuple.type +// CHECK:STDOUT: %T.loc15_12.2 => constants.%empty_tuple.type // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Make.type => constants.%Make.type.20e @@ -274,11 +275,11 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%complete_type.782 // CHECK:STDOUT: %Make.type => constants.%Make.type.20e // CHECK:STDOUT: %Make => constants.%Make.de0 -// CHECK:STDOUT: %Make.specific_fn.loc15_27.2 => constants.%Make.specific_fn.e43 +// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.e43 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @Wrap(constants.%C) { -// CHECK:STDOUT: %T.loc14_12.2 => constants.%C +// CHECK:STDOUT: %T.loc15_12.2 => constants.%C // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: %Make.type => constants.%Make.type.708 @@ -293,6 +294,6 @@ fn G() { // CHECK:STDOUT: %require_complete => constants.%complete_type.22a // CHECK:STDOUT: %Make.type => constants.%Make.type.708 // CHECK:STDOUT: %Make => constants.%Make.e4b -// CHECK:STDOUT: %Make.specific_fn.loc15_27.2 => constants.%Make.specific_fn.834 +// CHECK:STDOUT: %Make.specific_fn.loc16_27.2 => constants.%Make.specific_fn.834 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/template_param.carbon b/toolchain/check/testdata/function/generic/template_param.carbon index aa9af16c9188..5e8a865df0a3 100644 --- a/toolchain/check/testdata/function/generic/template_param.carbon +++ b/toolchain/check/testdata/function/generic/template_param.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/function/generic/type_param.carbon b/toolchain/check/testdata/function/generic/type_param.carbon index 6fd173835522..c0f3dba309ee 100644 --- a/toolchain/check/testdata/function/generic/type_param.carbon +++ b/toolchain/check/testdata/function/generic/type_param.carbon @@ -2,9 +2,9 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present -// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/destroy.carbon // // AUTOUPDATE // TIP: To test this file alone, run: @@ -34,6 +34,7 @@ fn F(T:! type) { // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { // CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/type_param_scope.carbon b/toolchain/check/testdata/function/generic/type_param_scope.carbon index b737ebf50e47..acfa9e53efbf 100644 --- a/toolchain/check/testdata/function/generic/type_param_scope.carbon +++ b/toolchain/check/testdata/function/generic/type_param_scope.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --no-prelude-import --dump-sem-ir-ranges=if-present // @@ -38,38 +39,38 @@ fn F(T:! type, n: T) -> T { // CHECK:STDOUT: %return.patt: @F.%pattern_type (%pattern_type.7dc) = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: @F.%pattern_type (%pattern_type.7dc) = out_param_pattern %return.patt, call_param1 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %T.ref.loc14_25: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %T.loc14_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %n.param: @F.%T.loc14_6.2 (%T) = value_param call_param0 -// CHECK:STDOUT: %T.ref.loc14_19: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %n: @F.%T.loc14_6.2 (%T) = bind_name n, %n.param -// CHECK:STDOUT: %return.param: ref @F.%T.loc14_6.2 (%T) = out_param call_param1 -// CHECK:STDOUT: %return: ref @F.%T.loc14_6.2 (%T) = return_slot %return.param +// CHECK:STDOUT: %T.ref.loc15_25: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %n.param: @F.%T.loc15_6.2 (%T) = value_param call_param0 +// CHECK:STDOUT: %T.ref.loc15_19: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %n: @F.%T.loc15_6.2 (%T) = bind_name n, %n.param +// CHECK:STDOUT: %return.param: ref @F.%T.loc15_6.2 (%T) = out_param call_param1 +// CHECK:STDOUT: %return: ref @F.%T.loc15_6.2 (%T) = return_slot %return.param // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc14_6.1: type) { -// CHECK:STDOUT: %T.loc14_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc14_6.2 [symbolic = %pattern_type (constants.%pattern_type.7dc)] +// CHECK:STDOUT: generic fn @F(%T.loc15_6.1: type) { +// CHECK:STDOUT: %T.loc15_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %pattern_type: type = pattern_type %T.loc15_6.2 [symbolic = %pattern_type (constants.%pattern_type.7dc)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc14_6.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.loc15_6.2 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%n.param: @F.%T.loc14_6.2 (%T)) -> @F.%T.loc14_6.2 (%T) { +// CHECK:STDOUT: fn(%n.param: @F.%T.loc15_6.2 (%T)) -> @F.%T.loc15_6.2 (%T) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %m.patt: @F.%pattern_type (%pattern_type.7dc) = binding_pattern m [concrete] // CHECK:STDOUT: } -// CHECK:STDOUT: %n.ref: @F.%T.loc14_6.2 (%T) = name_ref n, %n -// CHECK:STDOUT: %T.ref.loc15: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] -// CHECK:STDOUT: %m: @F.%T.loc14_6.2 (%T) = bind_name m, %n.ref -// CHECK:STDOUT: %m.ref: @F.%T.loc14_6.2 (%T) = name_ref m, %m +// CHECK:STDOUT: %n.ref: @F.%T.loc15_6.2 (%T) = name_ref n, %n +// CHECK:STDOUT: %T.ref.loc16: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)] +// CHECK:STDOUT: %m: @F.%T.loc15_6.2 (%T) = bind_name m, %n.ref +// CHECK:STDOUT: %m.ref: @F.%T.loc15_6.2 (%T) = name_ref m, %m // CHECK:STDOUT: return %m.ref // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc14_6.2 => constants.%T +// CHECK:STDOUT: %T.loc15_6.2 => constants.%T // CHECK:STDOUT: %pattern_type => constants.%pattern_type.7dc // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/add_to_import.carbon b/toolchain/check/testdata/namespace/add_to_import.carbon index 0844df8eef91..6d6dab6051d5 100644 --- a/toolchain/check/testdata/namespace/add_to_import.carbon +++ b/toolchain/check/testdata/namespace/add_to_import.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -58,16 +59,16 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } @@ -83,9 +84,9 @@ var a: i32 = NS.A(); // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -124,7 +125,7 @@ var a: i32 = NS.A(); // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc4_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_28.2(%int_0) [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] diff --git a/toolchain/check/testdata/namespace/alias.carbon b/toolchain/check/testdata/namespace/alias.carbon index 5b3d92cd7d01..510b245b5da0 100644 --- a/toolchain/check/testdata/namespace/alias.carbon +++ b/toolchain/check/testdata/namespace/alias.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -38,16 +39,16 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %B.type: type = fn_type @B [concrete] @@ -63,9 +64,9 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -82,7 +83,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %NS: = namespace [concrete] { // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %NS.ref.loc16: = name_ref NS, %NS [concrete = %NS] +// CHECK:STDOUT: %NS.ref.loc17: = name_ref NS, %NS [concrete = %NS] // CHECK:STDOUT: %ns: = bind_alias ns, %NS [concrete = %NS] // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] @@ -102,7 +103,7 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } -// CHECK:STDOUT: %NS.ref.loc22: = name_ref NS, %NS [concrete = %NS] +// CHECK:STDOUT: %NS.ref.loc23: = name_ref NS, %NS [concrete = %NS] // CHECK:STDOUT: %A.ref: %A.type = name_ref A, %A.decl [concrete = constants.%A] // CHECK:STDOUT: %C: %A.type = bind_alias C, %A.decl [concrete = constants.%A] // CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [concrete = constants.%D] { @@ -120,13 +121,13 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc18_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc18_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc18_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc18_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc18_28.2: %i32 = converted %int_0, %.loc18_28.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc18_28.2 +// CHECK:STDOUT: %bound_method.loc19_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc19_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc19_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc19_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc19_28.2: %i32 = converted %int_0, %.loc19_28.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc19_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { @@ -134,17 +135,17 @@ fn D() -> i32 { return C(); } // CHECK:STDOUT: %ns.ref: = name_ref ns, file.%ns [concrete = file.%NS] // CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A] // CHECK:STDOUT: %A.call: init %i32 = call %A.ref() -// CHECK:STDOUT: %.loc20_30.1: %i32 = value_of_initializer %A.call -// CHECK:STDOUT: %.loc20_30.2: %i32 = converted %A.call, %.loc20_30.1 -// CHECK:STDOUT: return %.loc20_30.2 +// CHECK:STDOUT: %.loc21_30.1: %i32 = value_of_initializer %A.call +// CHECK:STDOUT: %.loc21_30.2: %i32 = converted %A.call, %.loc21_30.1 +// CHECK:STDOUT: return %.loc21_30.2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @D() -> %i32 { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %C.ref: %A.type = name_ref C, file.%C [concrete = constants.%A] // CHECK:STDOUT: %A.call: init %i32 = call %C.ref() -// CHECK:STDOUT: %.loc24_27.1: %i32 = value_of_initializer %A.call -// CHECK:STDOUT: %.loc24_27.2: %i32 = converted %A.call, %.loc24_27.1 -// CHECK:STDOUT: return %.loc24_27.2 +// CHECK:STDOUT: %.loc25_27.1: %i32 = value_of_initializer %A.call +// CHECK:STDOUT: %.loc25_27.2: %i32 = converted %A.call, %.loc25_27.1 +// CHECK:STDOUT: return %.loc25_27.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon b/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon index 51e40e86c7f5..11f13b32e0a3 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_after_merge.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon index 5600c80b4b65..668c87b6d336 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_first.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon index d8538d08acc4..98741b615ec5 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_nested.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon index c302e735d49c..bd70548c8de8 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_imported_namespace_second.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon index 673a45619244..86a0b77cdc1f 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_first.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon index 92ef02be63e0..a2b64af39f34 100644 --- a/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon +++ b/toolchain/check/testdata/namespace/fail_conflict_in_imports_namespace_second.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon index 1fd35e873c9e..65dbafd27f0d 100644 --- a/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon +++ b/toolchain/check/testdata/namespace/fail_decl_in_alias.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -40,16 +41,16 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } @@ -61,9 +62,9 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -92,12 +93,12 @@ fn ns.A() -> i32 { return 0; } // CHECK:STDOUT: !entry: // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc26_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc26_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc26_28.2(%int_0) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc26_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc26_28.2: %i32 = converted %int_0, %.loc26_28.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc26_28.2 +// CHECK:STDOUT: %bound_method.loc27_28.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc27_28.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc27_28.2(%int_0) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_28.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc27_28.2: %i32 = converted %int_0, %.loc27_28.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc27_28.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_duplicate.carbon b/toolchain/check/testdata/namespace/fail_duplicate.carbon index b3103d94b94a..7f1b69503330 100644 --- a/toolchain/check/testdata/namespace/fail_duplicate.carbon +++ b/toolchain/check/testdata/namespace/fail_duplicate.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -49,10 +50,10 @@ fn Foo.Baz() { // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Foo: = namespace [concrete] { -// CHECK:STDOUT: .Baz = %Baz.decl.loc16 +// CHECK:STDOUT: .Baz = %Baz.decl.loc17 // CHECK:STDOUT: } -// CHECK:STDOUT: %Baz.decl.loc16: %Baz.type.8987ba.1 = fn_decl @Baz.1 [concrete = constants.%Baz.eb4c34.1] {} {} -// CHECK:STDOUT: %Baz.decl.loc26: %Baz.type.8987ba.2 = fn_decl @Baz.2 [concrete = constants.%Baz.eb4c34.2] {} {} +// CHECK:STDOUT: %Baz.decl.loc17: %Baz.type.8987ba.1 = fn_decl @Baz.1 [concrete = constants.%Baz.eb4c34.1] {} {} +// CHECK:STDOUT: %Baz.decl.loc27: %Baz.type.8987ba.2 = fn_decl @Baz.2 [concrete = constants.%Baz.eb4c34.2] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Baz.1() { diff --git a/toolchain/check/testdata/namespace/fail_modifiers.carbon b/toolchain/check/testdata/namespace/fail_modifiers.carbon index 4406dcf596cc..93d87c6726e1 100644 --- a/toolchain/check/testdata/namespace/fail_modifiers.carbon +++ b/toolchain/check/testdata/namespace/fail_modifiers.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_not_top_level.carbon b/toolchain/check/testdata/namespace/fail_not_top_level.carbon index 0ae4eca67fcc..9bcb2b40d1dc 100644 --- a/toolchain/check/testdata/namespace/fail_not_top_level.carbon +++ b/toolchain/check/testdata/namespace/fail_not_top_level.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/fail_params.carbon b/toolchain/check/testdata/namespace/fail_params.carbon index 70a18fb63128..686ecc0a29ce 100644 --- a/toolchain/check/testdata/namespace/fail_params.carbon +++ b/toolchain/check/testdata/namespace/fail_params.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -20,6 +21,10 @@ namespace A(); // Parameters are ignored for error recovery. fn A.F() {} +// CHECK:STDERR: fail_params.carbon:[[@LINE+8]]:16: error: name `Core.Int` implicitly referenced here, but not found [CoreNameNotFound] +// CHECK:STDERR: namespace B(n: i32); +// CHECK:STDERR: ^~~ +// CHECK:STDERR: // CHECK:STDERR: fail_params.carbon:[[@LINE+4]]:12: error: `namespace` declaration cannot have parameters [UnexpectedDeclNameParams] // CHECK:STDERR: namespace B(n: i32); // CHECK:STDERR: ^~~~~~~~ @@ -48,9 +53,6 @@ fn D(T:! type).F() {} // CHECK:STDOUT: %F.type.bd7: type = fn_type @F.1 [concrete] // CHECK:STDOUT: %F.199: %F.type.bd7 = struct_value () [concrete] // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete] -// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete] -// CHECK:STDOUT: %Int.generic: %Int.type = struct_value () [concrete] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete] // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] // CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete] // CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete] @@ -58,11 +60,10 @@ fn D(T:! type).F() {} // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int +// CHECK:STDOUT: .Int = // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -75,15 +76,12 @@ fn D(T:! type).F() {} // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A: = namespace [concrete] { -// CHECK:STDOUT: .F = %F.decl.loc21 +// CHECK:STDOUT: .F = %F.decl.loc22 // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl.loc21: %F.type.bd7 = fn_decl @F.1 [concrete = constants.%F.199] {} {} -// CHECK:STDOUT: %n.param: %i32 = value_param call_param0 -// CHECK:STDOUT: %.loc27: type = splice_block %i32 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] -// CHECK:STDOUT: } -// CHECK:STDOUT: %n: %i32 = bind_name n, %n.param +// CHECK:STDOUT: %F.decl.loc22: %F.type.bd7 = fn_decl @F.1 [concrete = constants.%F.199] {} {} +// CHECK:STDOUT: %n.param: = value_param call_param0 +// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %n: = bind_name n, %n.param [concrete = ] // CHECK:STDOUT: %B: = namespace [concrete] {} // CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = constants.%T] // CHECK:STDOUT: %x.param: %T = value_param call_param0 @@ -91,8 +89,8 @@ fn D(T:! type).F() {} // CHECK:STDOUT: %x: %T = bind_name x, %x.param // CHECK:STDOUT: %C: = namespace [concrete] {} // CHECK:STDOUT: %D: = namespace [concrete] {} -// CHECK:STDOUT: %F.decl.loc43: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] {} { -// CHECK:STDOUT: %T.loc43_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc43_6.2 (constants.%T)] +// CHECK:STDOUT: %F.decl.loc48: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] {} { +// CHECK:STDOUT: %T.loc48_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc48_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -101,8 +99,8 @@ fn D(T:! type).F() {} // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F.2(%T.loc43_6.1: type) { -// CHECK:STDOUT: %T.loc43_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc43_6.2 (constants.%T)] +// CHECK:STDOUT: generic fn @F.2(%T.loc48_6.1: type) { +// CHECK:STDOUT: %T.loc48_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc48_6.2 (constants.%T)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: // CHECK:STDOUT: @@ -113,6 +111,6 @@ fn D(T:! type).F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.2(constants.%T) { -// CHECK:STDOUT: %T.loc43_6.2 => constants.%T +// CHECK:STDOUT: %T.loc48_6.2 => constants.%T // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon index f93de0cb1ba2..2b86079e43c3 100644 --- a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon +++ b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/function.carbon b/toolchain/check/testdata/namespace/function.carbon index 001fc9748b2e..8dda5109f442 100644 --- a/toolchain/check/testdata/namespace/function.carbon +++ b/toolchain/check/testdata/namespace/function.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -47,15 +48,15 @@ fn Bar() { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Foo = %Foo -// CHECK:STDOUT: .Baz = %Baz.decl.loc17 +// CHECK:STDOUT: .Baz = %Baz.decl.loc18 // CHECK:STDOUT: .Bar = %Bar.decl // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Foo: = namespace [concrete] { -// CHECK:STDOUT: .Baz = %Baz.decl.loc20 +// CHECK:STDOUT: .Baz = %Baz.decl.loc21 // CHECK:STDOUT: } -// CHECK:STDOUT: %Baz.decl.loc17: %Baz.type.03f = fn_decl @Baz.1 [concrete = constants.%Baz.5ea] {} {} -// CHECK:STDOUT: %Baz.decl.loc20: %Baz.type.898 = fn_decl @Baz.2 [concrete = constants.%Baz.eb4] {} {} +// CHECK:STDOUT: %Baz.decl.loc18: %Baz.type.03f = fn_decl @Baz.1 [concrete = constants.%Baz.5ea] {} {} +// CHECK:STDOUT: %Baz.decl.loc21: %Baz.type.898 = fn_decl @Baz.2 [concrete = constants.%Baz.eb4] {} {} // CHECK:STDOUT: %Bar.decl: %Bar.type = fn_decl @Bar [concrete = constants.%Bar] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -72,7 +73,7 @@ fn Bar() { // CHECK:STDOUT: fn @Bar() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: %Foo.ref: = name_ref Foo, file.%Foo [concrete = file.%Foo] -// CHECK:STDOUT: %Baz.ref: %Baz.type.898 = name_ref Baz, file.%Baz.decl.loc20 [concrete = constants.%Baz.eb4] +// CHECK:STDOUT: %Baz.ref: %Baz.type.898 = name_ref Baz, file.%Baz.decl.loc21 [concrete = constants.%Baz.eb4] // CHECK:STDOUT: %Baz.call: init %empty_tuple.type = call %Baz.ref() // CHECK:STDOUT: return // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/namespace/imported.carbon b/toolchain/check/testdata/namespace/imported.carbon index 331a05fb761b..3e1a2a2006e8 100644 --- a/toolchain/check/testdata/namespace/imported.carbon +++ b/toolchain/check/testdata/namespace/imported.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/imported_indirect.carbon b/toolchain/check/testdata/namespace/imported_indirect.carbon index 3361177ed453..8fe0c04e9ec9 100644 --- a/toolchain/check/testdata/namespace/imported_indirect.carbon +++ b/toolchain/check/testdata/namespace/imported_indirect.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/merging.carbon b/toolchain/check/testdata/namespace/merging.carbon index 4bdf1bc168b1..d61289e2cb35 100644 --- a/toolchain/check/testdata/namespace/merging.carbon +++ b/toolchain/check/testdata/namespace/merging.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/merging_with_indirections.carbon b/toolchain/check/testdata/namespace/merging_with_indirections.carbon index a8154ebe4d2c..b1acf0ffdf1b 100644 --- a/toolchain/check/testdata/namespace/merging_with_indirections.carbon +++ b/toolchain/check/testdata/namespace/merging_with_indirections.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/nested.carbon b/toolchain/check/testdata/namespace/nested.carbon index 92eae8f56ba6..f9eaf7f9147b 100644 --- a/toolchain/check/testdata/namespace/nested.carbon +++ b/toolchain/check/testdata/namespace/nested.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 4973a4cd52f9..4c1f7885bc59 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -51,16 +52,16 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } @@ -72,25 +73,25 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Core = imports.%Core -// CHECK:STDOUT: .A = %A.decl.loc14 +// CHECK:STDOUT: .A = %A.decl.loc15 // CHECK:STDOUT: .N = %N // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import = import Core -// CHECK:STDOUT: %A.decl.loc14: %A.type.00d = fn_decl @A.1 [concrete = constants.%A.1db] {} {} +// CHECK:STDOUT: %A.decl.loc15: %A.type.00d = fn_decl @A.1 [concrete = constants.%A.1db] {} {} // CHECK:STDOUT: %N: = namespace [concrete] { -// CHECK:STDOUT: .A = %A.decl.loc17 +// CHECK:STDOUT: .A = %A.decl.loc18 // CHECK:STDOUT: .M = %M // CHECK:STDOUT: } -// CHECK:STDOUT: %A.decl.loc17: %A.type.0e8 = fn_decl @A.2 [concrete = constants.%A.281] {} {} +// CHECK:STDOUT: %A.decl.loc18: %A.type.0e8 = fn_decl @A.2 [concrete = constants.%A.281] {} {} // CHECK:STDOUT: %M: = namespace [concrete] { // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .A = @@ -99,8 +100,8 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %return.patt: %pattern_type.7ce = return_slot_pattern [concrete] // CHECK:STDOUT: %return.param_patt: %pattern_type.7ce = out_param_pattern %return.patt, call_param0 [concrete] // CHECK:STDOUT: } { -// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: %return.param: ref %i32 = out_param call_param0 // CHECK:STDOUT: %return: ref %i32 = return_slot %return.param // CHECK:STDOUT: } @@ -112,8 +113,8 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: // CHECK:STDOUT: fn @B() -> %i32 { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %A.ref.loc23: %A.type.0e8 = name_ref A, file.%A.decl.loc17 [concrete = constants.%A.281] -// CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref.loc23() +// CHECK:STDOUT: %A.ref.loc24: %A.type.0e8 = name_ref A, file.%A.decl.loc18 [concrete = constants.%A.281] +// CHECK:STDOUT: %A.call: init %empty_tuple.type = call %A.ref.loc24() // CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] // CHECK:STDOUT: if %true br !if.then else br !if.else // CHECK:STDOUT: @@ -123,32 +124,32 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: %A.var_patt: %pattern_type.7ce = var_pattern %A.patt [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: %A.var: ref %i32 = var %A.var_patt -// CHECK:STDOUT: %int_0.loc25: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc25: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc25_5.1: = bound_method %int_0.loc25, %impl.elem0.loc25 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc25: = specific_function %impl.elem0.loc25, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc25_5.2: = bound_method %int_0.loc25, %specific_fn.loc25 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc25: init %i32 = call %bound_method.loc25_5.2(%int_0.loc25) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc25_5: init %i32 = converted %int_0.loc25, %int.convert_checked.loc25 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: assign %A.var, %.loc25_5 -// CHECK:STDOUT: %.loc25_12: type = splice_block %i32.loc25 [concrete = constants.%i32] { -// CHECK:STDOUT: %int_32.loc25: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] -// CHECK:STDOUT: %i32.loc25: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] +// CHECK:STDOUT: %int_0.loc26: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc26: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc26_5.1: = bound_method %int_0.loc26, %impl.elem0.loc26 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn.loc26: = specific_function %impl.elem0.loc26, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc26_5.2: = bound_method %int_0.loc26, %specific_fn.loc26 [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked.loc26: init %i32 = call %bound_method.loc26_5.2(%int_0.loc26) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc26_5: init %i32 = converted %int_0.loc26, %int.convert_checked.loc26 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: assign %A.var, %.loc26_5 +// CHECK:STDOUT: %.loc26_12: type = splice_block %i32.loc26 [concrete = constants.%i32] { +// CHECK:STDOUT: %int_32.loc26: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] +// CHECK:STDOUT: %i32.loc26: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } // CHECK:STDOUT: %A: ref %i32 = bind_name A, %A.var -// CHECK:STDOUT: %A.ref.loc28: ref %i32 = name_ref A, %A -// CHECK:STDOUT: %.loc28: %i32 = bind_value %A.ref.loc28 -// CHECK:STDOUT: return %.loc28 +// CHECK:STDOUT: %A.ref.loc29: ref %i32 = name_ref A, %A +// CHECK:STDOUT: %.loc29: %i32 = bind_value %A.ref.loc29 +// CHECK:STDOUT: return %.loc29 // CHECK:STDOUT: // CHECK:STDOUT: !if.else: -// CHECK:STDOUT: %int_0.loc30: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] -// CHECK:STDOUT: %impl.elem0.loc30: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] -// CHECK:STDOUT: %bound_method.loc30_11.1: = bound_method %int_0.loc30, %impl.elem0.loc30 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn.loc30: = specific_function %impl.elem0.loc30, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] -// CHECK:STDOUT: %bound_method.loc30_11.2: = bound_method %int_0.loc30, %specific_fn.loc30 [concrete = constants.%bound_method] -// CHECK:STDOUT: %int.convert_checked.loc30: init %i32 = call %bound_method.loc30_11.2(%int_0.loc30) [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc30_11.1: %i32 = value_of_initializer %int.convert_checked.loc30 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: %.loc30_11.2: %i32 = converted %int_0.loc30, %.loc30_11.1 [concrete = constants.%int_0.6a9] -// CHECK:STDOUT: return %.loc30_11.2 +// CHECK:STDOUT: %int_0.loc31: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] +// CHECK:STDOUT: %impl.elem0.loc31: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] +// CHECK:STDOUT: %bound_method.loc31_11.1: = bound_method %int_0.loc31, %impl.elem0.loc31 [concrete = constants.%Convert.bound] +// CHECK:STDOUT: %specific_fn.loc31: = specific_function %impl.elem0.loc31, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %bound_method.loc31_11.2: = bound_method %int_0.loc31, %specific_fn.loc31 [concrete = constants.%bound_method] +// CHECK:STDOUT: %int.convert_checked.loc31: init %i32 = call %bound_method.loc31_11.2(%int_0.loc31) [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc31_11.1: %i32 = value_of_initializer %int.convert_checked.loc31 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: %.loc31_11.2: %i32 = converted %int_0.loc31, %.loc31_11.1 [concrete = constants.%int_0.6a9] +// CHECK:STDOUT: return %.loc31_11.2 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/unqualified_lookup.carbon b/toolchain/check/testdata/namespace/unqualified_lookup.carbon index 2ff9a6911183..2de7140c025e 100644 --- a/toolchain/check/testdata/namespace/unqualified_lookup.carbon +++ b/toolchain/check/testdata/namespace/unqualified_lookup.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/convert.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon index d913f304a6ce..7dc719e545dd 100644 --- a/toolchain/check/testdata/package_expr/fail_not_found.carbon +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -37,7 +38,7 @@ fn Main() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -60,7 +61,7 @@ fn Main() { // CHECK:STDOUT: %package.ref: = name_ref package, package [concrete = package] // CHECK:STDOUT: %x.ref: = name_ref x, [concrete = ] // CHECK:STDOUT: assign %y.var, -// CHECK:STDOUT: %.loc19: type = splice_block %i32 [concrete = constants.%i32] { +// CHECK:STDOUT: %.loc20: type = splice_block %i32 [concrete = constants.%i32] { // CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32] // CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32] // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon index 6c6a9541bdf3..f0f693e6ee40 100644 --- a/toolchain/check/testdata/package_expr/syntax.carbon +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -2,6 +2,7 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon // TODO: Add ranges and switch to "--dump-sem-ir-ranges=only". // EXTRA-ARGS: --dump-sem-ir-ranges=if-present // @@ -57,16 +58,16 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: } @@ -78,9 +79,9 @@ fn Main() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -118,7 +119,7 @@ fn Main() { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] @@ -143,21 +144,21 @@ fn Main() { // CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete] // CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete] // CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete] -// CHECK:STDOUT: %To.c80: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] -// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.3, @impl.4f9(%To.c80) [symbolic] +// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic] +// CHECK:STDOUT: %Convert.type.0f9: type = fn_type @Convert.2, @impl.4f9(%To) [symbolic] // CHECK:STDOUT: %Convert.f06: %Convert.type.0f9 = struct_value () [symbolic] -// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %ImplicitAs.impl_witness.c75: = impl_witness imports.%ImplicitAs.impl_witness_table.a2f, @impl.4f9(%int_32) [concrete] -// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.3, @impl.4f9(%int_32) [concrete] +// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.4f9(%int_32) [concrete] // CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete] -// CHECK:STDOUT: %ImplicitAs.facet.921: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] -// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet.921 [concrete] +// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.c75) [concrete] +// CHECK:STDOUT: %.9c3: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete] // CHECK:STDOUT: %Convert.bound.d04: = bound_method %int_0.5c6, %Convert.956 [concrete] -// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.3(%int_32) [concrete] +// CHECK:STDOUT: %Convert.specific_fn: = specific_function %Convert.956, @Convert.2(%int_32) [concrete] // CHECK:STDOUT: %bound_method.b6e: = bound_method %int_0.5c6, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete] // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] // CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %int_1.5b8: Core.IntLiteral = int_value 1 [concrete] // CHECK:STDOUT: %Convert.bound.ab5: = bound_method %int_1.5b8, %Convert.956 [concrete] // CHECK:STDOUT: %bound_method.9a1: = bound_method %int_1.5b8, %Convert.specific_fn [concrete] // CHECK:STDOUT: %int_1.5d2: %i32 = int_value 1 [concrete] @@ -170,9 +171,9 @@ fn Main() { // CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//prelude/... // CHECK:STDOUT: } -// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/types/int, Int, loaded [concrete = constants.%Int.generic] -// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] -// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/types/int, loc19_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] +// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic] +// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] +// CHECK:STDOUT: %Core.import_ref.a5b: @impl.4f9.%Convert.type (%Convert.type.0f9) = import_ref Core//prelude/parts/int, loc16_39, loaded [symbolic = @impl.4f9.%Convert (constants.%Convert.f06)] // CHECK:STDOUT: %ImplicitAs.impl_witness_table.a2f = impl_witness_table (%Core.import_ref.a5b), @impl.4f9 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -206,7 +207,7 @@ fn Main() { // CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc7_3.1: = bound_method %int_1, %impl.elem0 [concrete = constants.%Convert.bound.ab5] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc7_3.2: = bound_method %int_1, %specific_fn [concrete = constants.%bound_method.9a1] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc7_3.2(%int_1) [concrete = constants.%int_1.5d2] // CHECK:STDOUT: %.loc7_3: init %i32 = converted %int_1, %int.convert_checked [concrete = constants.%int_1.5d2] @@ -238,7 +239,7 @@ fn Main() { // CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6] // CHECK:STDOUT: %impl.elem0: %.9c3 = impl_witness_access constants.%ImplicitAs.impl_witness.c75, element0 [concrete = constants.%Convert.956] // CHECK:STDOUT: %bound_method.loc4_1.1: = bound_method %int_0, %impl.elem0 [concrete = constants.%Convert.bound.d04] -// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.3(constants.%int_32) [concrete = constants.%Convert.specific_fn] +// CHECK:STDOUT: %specific_fn: = specific_function %impl.elem0, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn] // CHECK:STDOUT: %bound_method.loc4_1.2: = bound_method %int_0, %specific_fn [concrete = constants.%bound_method.b6e] // CHECK:STDOUT: %int.convert_checked: init %i32 = call %bound_method.loc4_1.2(%int_0) [concrete = constants.%int_0.6a9] // CHECK:STDOUT: %.loc4: init %i32 = converted %int_0, %int.convert_checked [concrete = constants.%int_0.6a9] diff --git a/toolchain/lower/testdata/operators/and.carbon b/toolchain/lower/testdata/operators/and.carbon index 4fdcb44ef7f2..774494520d00 100644 --- a/toolchain/lower/testdata/operators/and.carbon +++ b/toolchain/lower/testdata/operators/and.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/and.carbon @@ -49,13 +51,13 @@ fn And() -> bool { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "and.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 11, column: 18, scope: !4) -// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main", scope: null, file: !3, line: 12, type: !5, spFlags: DISPFlagDefinition, unit: !2) -// CHECK:STDOUT: !9 = !DILocation(line: 12, column: 18, scope: !8) -// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "And", linkageName: "_CAnd.Main", scope: null, file: !3, line: 14, type: !5, spFlags: DISPFlagDefinition, unit: !2) -// CHECK:STDOUT: !11 = !DILocation(line: 15, column: 10, scope: !10) -// CHECK:STDOUT: !12 = !DILocation(line: 15, column: 18, scope: !10) -// CHECK:STDOUT: !13 = !DILocation(line: 15, column: 3, scope: !10) +// CHECK:STDOUT: !7 = !DILocation(line: 13, column: 18, scope: !4) +// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main", scope: null, file: !3, line: 14, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !9 = !DILocation(line: 14, column: 18, scope: !8) +// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "And", linkageName: "_CAnd.Main", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !11 = !DILocation(line: 17, column: 10, scope: !10) +// CHECK:STDOUT: !12 = !DILocation(line: 17, column: 18, scope: !10) +// CHECK:STDOUT: !13 = !DILocation(line: 17, column: 3, scope: !10) diff --git a/toolchain/lower/testdata/operators/and_empty_block.carbon b/toolchain/lower/testdata/operators/and_empty_block.carbon index 71b421999781..b1e3e33fe6b2 100644 --- a/toolchain/lower/testdata/operators/and_empty_block.carbon +++ b/toolchain/lower/testdata/operators/and_empty_block.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/and_empty_block.carbon @@ -36,8 +38,8 @@ fn And(b: bool, c: bool) -> bool { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "and_empty_block.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "And", linkageName: "_CAnd.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "And", linkageName: "_CAnd.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 10, scope: !4) -// CHECK:STDOUT: !8 = !DILocation(line: 14, column: 3, scope: !4) +// CHECK:STDOUT: !7 = !DILocation(line: 16, column: 10, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 16, column: 3, scope: !4) diff --git a/toolchain/lower/testdata/operators/assignment.carbon b/toolchain/lower/testdata/operators/assignment.carbon index fdcce7a404dd..e1131fe4d8fd 100644 --- a/toolchain/lower/testdata/operators/assignment.carbon +++ b/toolchain/lower/testdata/operators/assignment.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/assignment.carbon @@ -18,7 +20,7 @@ fn Main() { // CHECK:STDOUT: ; ModuleID = 'assignment.carbon' // CHECK:STDOUT: source_filename = "assignment.carbon" // CHECK:STDOUT: -// CHECK:STDOUT: @tuple.loc15_5 = internal constant { i32, i32 } { i32 1, i32 2 } +// CHECK:STDOUT: @tuple.loc17_5 = internal constant { i32, i32 } { i32 1, i32 2 } // CHECK:STDOUT: // CHECK:STDOUT: define void @_CMain.Main() !dbg !4 { // CHECK:STDOUT: entry: @@ -30,7 +32,7 @@ fn Main() { // CHECK:STDOUT: call void @llvm.lifetime.start.p0(i64 8, ptr %b.var), !dbg !8 // CHECK:STDOUT: %tuple.elem0.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 0, !dbg !10 // CHECK:STDOUT: %tuple.elem1.tuple.elem = getelementptr inbounds nuw { i32, i32 }, ptr %b.var, i32 0, i32 1, !dbg !10 -// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.loc15_5, i64 8, i1 false), !dbg !11 +// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %b.var, ptr align 4 @tuple.loc17_5, i64 8, i1 false), !dbg !11 // CHECK:STDOUT: ret void, !dbg !12 // CHECK:STDOUT: } // CHECK:STDOUT: @@ -53,12 +55,12 @@ fn Main() { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "assignment.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Main", linkageName: "_CMain.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Main", linkageName: "_CMain.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 12, column: 3, scope: !4) -// CHECK:STDOUT: !8 = !DILocation(line: 14, column: 3, scope: !4) -// CHECK:STDOUT: !9 = !DILocation(line: 13, column: 3, scope: !4) -// CHECK:STDOUT: !10 = !DILocation(line: 15, column: 7, scope: !4) -// CHECK:STDOUT: !11 = !DILocation(line: 15, column: 3, scope: !4) -// CHECK:STDOUT: !12 = !DILocation(line: 11, column: 1, scope: !4) +// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 3, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 16, column: 3, scope: !4) +// CHECK:STDOUT: !9 = !DILocation(line: 15, column: 3, scope: !4) +// CHECK:STDOUT: !10 = !DILocation(line: 17, column: 7, scope: !4) +// CHECK:STDOUT: !11 = !DILocation(line: 17, column: 3, scope: !4) +// CHECK:STDOUT: !12 = !DILocation(line: 13, column: 1, scope: !4) diff --git a/toolchain/lower/testdata/operators/not.carbon b/toolchain/lower/testdata/operators/not.carbon index 5eee885f9133..9d8a85a75be0 100644 --- a/toolchain/lower/testdata/operators/not.carbon +++ b/toolchain/lower/testdata/operators/not.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/not.carbon @@ -17,8 +19,8 @@ fn Not(b: bool) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_CNot.Main(i1 %b) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc12 = xor i1 %b, true, !dbg !7 -// CHECK:STDOUT: ret i1 %.loc12, !dbg !8 +// CHECK:STDOUT: %.loc14 = xor i1 %b, true, !dbg !7 +// CHECK:STDOUT: ret i1 %.loc14, !dbg !8 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: !llvm.module.flags = !{!0, !1} @@ -28,8 +30,8 @@ fn Not(b: bool) -> bool { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "not.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Not", linkageName: "_CNot.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Not", linkageName: "_CNot.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 12, column: 10, scope: !4) -// CHECK:STDOUT: !8 = !DILocation(line: 12, column: 3, scope: !4) +// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 10, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 14, column: 3, scope: !4) diff --git a/toolchain/lower/testdata/operators/or.carbon b/toolchain/lower/testdata/operators/or.carbon index f3ff4786adef..599c55dbcc71 100644 --- a/toolchain/lower/testdata/operators/or.carbon +++ b/toolchain/lower/testdata/operators/or.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/or.carbon @@ -31,8 +33,8 @@ fn Or() -> bool { // CHECK:STDOUT: define i1 @_COr.Main() !dbg !10 { // CHECK:STDOUT: entry: // CHECK:STDOUT: %F.call = call i1 @_CF.Main(), !dbg !11 -// CHECK:STDOUT: %.loc15_14.3 = xor i1 %F.call, true, !dbg !11 -// CHECK:STDOUT: br i1 %.loc15_14.3, label %or.rhs, label %or.result, !dbg !11 +// CHECK:STDOUT: %.loc17_14.3 = xor i1 %F.call, true, !dbg !11 +// CHECK:STDOUT: br i1 %.loc17_14.3, label %or.rhs, label %or.result, !dbg !11 // CHECK:STDOUT: // CHECK:STDOUT: or.rhs: ; preds = %entry // CHECK:STDOUT: %G.call = call i1 @_CG.Main(), !dbg !12 @@ -50,13 +52,13 @@ fn Or() -> bool { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "or.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "F", linkageName: "_CF.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 11, column: 18, scope: !4) -// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main", scope: null, file: !3, line: 12, type: !5, spFlags: DISPFlagDefinition, unit: !2) -// CHECK:STDOUT: !9 = !DILocation(line: 12, column: 18, scope: !8) -// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "Or", linkageName: "_COr.Main", scope: null, file: !3, line: 14, type: !5, spFlags: DISPFlagDefinition, unit: !2) -// CHECK:STDOUT: !11 = !DILocation(line: 15, column: 10, scope: !10) -// CHECK:STDOUT: !12 = !DILocation(line: 15, column: 17, scope: !10) -// CHECK:STDOUT: !13 = !DILocation(line: 15, column: 3, scope: !10) +// CHECK:STDOUT: !7 = !DILocation(line: 13, column: 18, scope: !4) +// CHECK:STDOUT: !8 = distinct !DISubprogram(name: "G", linkageName: "_CG.Main", scope: null, file: !3, line: 14, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !9 = !DILocation(line: 14, column: 18, scope: !8) +// CHECK:STDOUT: !10 = distinct !DISubprogram(name: "Or", linkageName: "_COr.Main", scope: null, file: !3, line: 16, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !11 = !DILocation(line: 17, column: 10, scope: !10) +// CHECK:STDOUT: !12 = !DILocation(line: 17, column: 17, scope: !10) +// CHECK:STDOUT: !13 = !DILocation(line: 17, column: 3, scope: !10) diff --git a/toolchain/lower/testdata/operators/or_empty_block.carbon b/toolchain/lower/testdata/operators/or_empty_block.carbon index 94988174f445..62b8f47ccb57 100644 --- a/toolchain/lower/testdata/operators/or_empty_block.carbon +++ b/toolchain/lower/testdata/operators/or_empty_block.carbon @@ -2,6 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/bool.carbon +// // AUTOUPDATE // TIP: To test this file alone, run: // TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/lower/testdata/operators/or_empty_block.carbon @@ -19,8 +21,8 @@ fn Or(b: bool, c: bool) -> bool { // CHECK:STDOUT: // CHECK:STDOUT: define i1 @_COr.Main(i1 %b, i1 %c) !dbg !4 { // CHECK:STDOUT: entry: -// CHECK:STDOUT: %.loc14_12.1 = xor i1 %b, true, !dbg !7 -// CHECK:STDOUT: br i1 %.loc14_12.1, label %or.rhs, label %or.result, !dbg !7 +// CHECK:STDOUT: %.loc16_12.1 = xor i1 %b, true, !dbg !7 +// CHECK:STDOUT: br i1 %.loc16_12.1, label %or.rhs, label %or.result, !dbg !7 // CHECK:STDOUT: // CHECK:STDOUT: or.rhs: ; preds = %entry // CHECK:STDOUT: br label %or.result, !dbg !7 @@ -37,8 +39,8 @@ fn Or(b: bool, c: bool) -> bool { // CHECK:STDOUT: !1 = !{i32 2, !"Debug Info Version", i32 3} // CHECK:STDOUT: !2 = distinct !DICompileUnit(language: DW_LANG_C, file: !3, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug) // CHECK:STDOUT: !3 = !DIFile(filename: "or_empty_block.carbon", directory: "") -// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Or", linkageName: "_COr.Main", scope: null, file: !3, line: 11, type: !5, spFlags: DISPFlagDefinition, unit: !2) +// CHECK:STDOUT: !4 = distinct !DISubprogram(name: "Or", linkageName: "_COr.Main", scope: null, file: !3, line: 13, type: !5, spFlags: DISPFlagDefinition, unit: !2) // CHECK:STDOUT: !5 = !DISubroutineType(types: !6) // CHECK:STDOUT: !6 = !{} -// CHECK:STDOUT: !7 = !DILocation(line: 14, column: 10, scope: !4) -// CHECK:STDOUT: !8 = !DILocation(line: 14, column: 3, scope: !4) +// CHECK:STDOUT: !7 = !DILocation(line: 16, column: 10, scope: !4) +// CHECK:STDOUT: !8 = !DILocation(line: 16, column: 3, scope: !4)