diff --git a/toolchain/check/testdata/alias/no_prelude/local.carbon b/toolchain/check/testdata/alias/min_prelude/local.carbon similarity index 53% rename from toolchain/check/testdata/alias/no_prelude/local.carbon rename to toolchain/check/testdata/alias/min_prelude/local.carbon index 215c109be6bf..00e148f938ac 100644 --- a/toolchain/check/testdata/alias/no_prelude/local.carbon +++ b/toolchain/check/testdata/alias/min_prelude/local.carbon @@ -2,11 +2,18 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/alias/no_prelude/local.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/alias/min_prelude/local.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/alias/no_prelude/local.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/alias/min_prelude/local.carbon + +// --- local.carbon + +library "[[@TEST_NAME]]"; fn F() -> () { var a: () = (); @@ -23,16 +30,24 @@ fn F() -> () { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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: %return.patt: %empty_tuple.type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, call_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc11_12.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc4_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc4_12.2: type = converted %.loc4_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -42,23 +57,29 @@ fn F() -> () { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a -// CHECK:STDOUT: %.loc12_3.1: %empty_tuple.type = var_pattern %a.patt +// CHECK:STDOUT: %.loc5_3.1: %empty_tuple.type = var_pattern %a.patt // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a -// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_16.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc12_3.2: init %empty_tuple.type = converted %.loc12_16.1, %.loc12_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %a.var, %.loc12_3.2 -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc5_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_16.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_3.2: init %empty_tuple.type = converted %.loc5_16.1, %.loc5_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %a.var, %.loc5_3.2 +// CHECK:STDOUT: %.loc5_11.1: type = splice_block %.loc5_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc5_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_11.3: type = converted %.loc5_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var // CHECK:STDOUT: %a.ref: ref %empty_tuple.type = name_ref a, %a // CHECK:STDOUT: %b: ref %empty_tuple.type = bind_alias b, %a // CHECK:STDOUT: %b.ref: ref %empty_tuple.type = name_ref b, %b // CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14: %empty_tuple.type = converted %b.ref, %tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: return %.loc14 +// CHECK:STDOUT: %.loc7: %empty_tuple.type = converted %b.ref, %tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: return %.loc7 +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/alias/no_prelude/fail_not_constant.carbon b/toolchain/check/testdata/alias/no_prelude/fail_not_constant.carbon index 7e194365f217..4e09914f37bf 100644 --- a/toolchain/check/testdata/alias/no_prelude/fail_not_constant.carbon +++ b/toolchain/check/testdata/alias/no_prelude/fail_not_constant.carbon @@ -8,67 +8,65 @@ // TIP: To dump output, run: // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/alias/no_prelude/fail_not_constant.carbon -fn F() { - var a: () = (); - var b: ()* = &a; - // CHECK:STDERR: fail_not_constant.carbon:[[@LINE+4]]:13: error: alias initializer must be a name reference [AliasRequiresNameRef] - // CHECK:STDERR: alias c = *b; - // CHECK:STDERR: ^~ - // CHECK:STDERR: - alias c = *b; -} +var a: () = (); +var b: ()* = &a; + +// CHECK:STDERR: fail_not_constant.carbon:[[@LINE+4]]:11: error: alias initializer must be a name reference [AliasRequiresNameRef] +// CHECK:STDERR: alias c = *b; +// CHECK:STDERR: ^~ +// CHECK:STDERR: +alias c = *b; // CHECK:STDOUT: --- fail_not_constant.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: %ptr: type = ptr_type %empty_tuple.type [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .a = %a +// CHECK:STDOUT: .b = %b +// CHECK:STDOUT: .c = %c // CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { -// CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a -// CHECK:STDOUT: %.loc12_3.1: %empty_tuple.type = var_pattern %a.patt +// CHECK:STDOUT: %.loc11_1: %empty_tuple.type = var_pattern %a.patt // CHECK:STDOUT: } // CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a -// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_16.2: init %empty_tuple.type = tuple_init () to %a.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc12_3.2: init %empty_tuple.type = converted %.loc12_16.1, %.loc12_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %a.var, %.loc12_3.2 -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc11_9.1: type = splice_block %.loc11_9.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc11_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_9.3: type = converted %.loc11_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %ptr = binding_pattern b -// CHECK:STDOUT: %.loc13_3: %ptr = var_pattern %b.patt +// CHECK:STDOUT: %.loc12_1: %ptr = var_pattern %b.patt // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %ptr = var b -// CHECK:STDOUT: %a.ref: ref %empty_tuple.type = name_ref a, %a -// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref -// CHECK:STDOUT: assign %b.var, %addr -// CHECK:STDOUT: %.loc13_12.1: type = splice_block %ptr [concrete = constants.%ptr] { -// CHECK:STDOUT: %.loc13_11: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_12.2: type = converted %.loc13_11, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %ptr: type = ptr_type %.loc13_12.2 [concrete = constants.%ptr] +// CHECK:STDOUT: %.loc12_10.1: type = splice_block %ptr [concrete = constants.%ptr] { +// CHECK:STDOUT: %.loc12_9: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_10.2: type = converted %.loc12_9, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %ptr: type = ptr_type %.loc12_10.2 [concrete = constants.%ptr] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %ptr = bind_name b, %b.var // CHECK:STDOUT: %b.ref: ref %ptr = name_ref b, %b -// CHECK:STDOUT: %.loc18_14: %ptr = bind_value %b.ref -// CHECK:STDOUT: %.loc18_13: ref %empty_tuple.type = deref %.loc18_14 +// CHECK:STDOUT: %.loc18_12: %ptr = bind_value %b.ref +// CHECK:STDOUT: %.loc18_11: ref %empty_tuple.type = deref %.loc18_12 // CHECK:STDOUT: %c: = bind_alias c, [concrete = ] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @__global_init() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %.loc11_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_14.2: init %empty_tuple.type = tuple_init () to file.%a.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_1: init %empty_tuple.type = converted %.loc11_14.1, %.loc11_14.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign file.%a.var, %.loc11_1 +// CHECK:STDOUT: %a.ref: ref %empty_tuple.type = name_ref a, file.%a +// CHECK:STDOUT: %addr: %ptr = addr_of %a.ref +// CHECK:STDOUT: assign file.%b.var, %addr // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/no_prelude/tuple.carbon b/toolchain/check/testdata/as/min_prelude/tuple.carbon similarity index 55% rename from toolchain/check/testdata/as/no_prelude/tuple.carbon rename to toolchain/check/testdata/as/min_prelude/tuple.carbon index 3e40016fb506..b32fabffc2e2 100644 --- a/toolchain/check/testdata/as/no_prelude/tuple.carbon +++ b/toolchain/check/testdata/as/min_prelude/tuple.carbon @@ -2,11 +2,18 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/as/no_prelude/tuple.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/as/min_prelude/tuple.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/as/no_prelude/tuple.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/as/min_prelude/tuple.carbon + +// --- test.carbon + +library "[[@TEST_NAME]]"; class X { // ... @@ -24,7 +31,7 @@ fn Var() { var b: (X, X) = (Make(), Make()) as (X, X); } -// CHECK:STDOUT: --- tuple.carbon +// CHECK:STDOUT: --- test.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %X: type = class_type @X [concrete] @@ -40,13 +47,21 @@ fn Var() { // CHECK:STDOUT: %Var: %Var.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .X = %X.decl // CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: .Let = %Let.decl // CHECK:STDOUT: .Var = %Var.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {} // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { // CHECK:STDOUT: %return.patt: %X = return_slot_pattern @@ -76,30 +91,30 @@ fn Var() { // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %a.patt: %tuple.type.b67 = binding_pattern a // CHECK:STDOUT: } -// CHECK:STDOUT: %Make.ref.loc19_20: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc19_25.1: ref %X = temporary_storage -// CHECK:STDOUT: %Make.call.loc19_25: init %X = call %Make.ref.loc19_20() to %.loc19_25.1 -// CHECK:STDOUT: %Make.ref.loc19_28: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] -// CHECK:STDOUT: %.loc19_33.1: ref %X = temporary_storage -// CHECK:STDOUT: %Make.call.loc19_33: init %X = call %Make.ref.loc19_28() to %.loc19_33.1 -// CHECK:STDOUT: %.loc19_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc19_25, %Make.call.loc19_33) -// CHECK:STDOUT: %X.ref.loc19_40: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %X.ref.loc19_43: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc19_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc19_40, %X.ref.loc19_43) -// CHECK:STDOUT: %.loc19_44.2: type = converted %.loc19_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] -// CHECK:STDOUT: %.loc19_15.1: type = splice_block %.loc19_15.3 [concrete = constants.%tuple.type.b67] { -// CHECK:STDOUT: %X.ref.loc19_11: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %X.ref.loc19_14: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc19_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc19_11, %X.ref.loc19_14) -// CHECK:STDOUT: %.loc19_15.3: type = converted %.loc19_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] +// CHECK:STDOUT: %Make.ref.loc12_20: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %.loc12_25.1: ref %X = temporary_storage +// CHECK:STDOUT: %Make.call.loc12_25: init %X = call %Make.ref.loc12_20() to %.loc12_25.1 +// CHECK:STDOUT: %Make.ref.loc12_28: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %.loc12_33.1: ref %X = temporary_storage +// CHECK:STDOUT: %Make.call.loc12_33: init %X = call %Make.ref.loc12_28() to %.loc12_33.1 +// CHECK:STDOUT: %.loc12_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc12_25, %Make.call.loc12_33) +// CHECK:STDOUT: %X.ref.loc12_40: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %X.ref.loc12_43: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc12_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc12_40, %X.ref.loc12_43) +// CHECK:STDOUT: %.loc12_44.2: type = converted %.loc12_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] +// CHECK:STDOUT: %.loc12_15.1: type = splice_block %.loc12_15.3 [concrete = constants.%tuple.type.b67] { +// CHECK:STDOUT: %X.ref.loc12_11: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %X.ref.loc12_14: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc12_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc12_11, %X.ref.loc12_14) +// CHECK:STDOUT: %.loc12_15.3: type = converted %.loc12_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } -// CHECK:STDOUT: %.loc19_25.2: ref %X = temporary %.loc19_25.1, %Make.call.loc19_25 -// CHECK:STDOUT: %.loc19_25.3: %X = bind_value %.loc19_25.2 -// CHECK:STDOUT: %.loc19_33.2: ref %X = temporary %.loc19_33.1, %Make.call.loc19_33 -// CHECK:STDOUT: %.loc19_33.3: %X = bind_value %.loc19_33.2 -// CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc19_25.3, %.loc19_33.3) -// CHECK:STDOUT: %.loc19_34.2: %tuple.type.b67 = converted %.loc19_34.1, %tuple -// CHECK:STDOUT: %a: %tuple.type.b67 = bind_name a, %.loc19_34.2 +// CHECK:STDOUT: %.loc12_25.2: ref %X = temporary %.loc12_25.1, %Make.call.loc12_25 +// CHECK:STDOUT: %.loc12_25.3: %X = bind_value %.loc12_25.2 +// CHECK:STDOUT: %.loc12_33.2: ref %X = temporary %.loc12_33.1, %Make.call.loc12_33 +// CHECK:STDOUT: %.loc12_33.3: %X = bind_value %.loc12_33.2 +// CHECK:STDOUT: %tuple: %tuple.type.b67 = tuple_value (%.loc12_25.3, %.loc12_33.3) +// CHECK:STDOUT: %.loc12_34.2: %tuple.type.b67 = converted %.loc12_34.1, %tuple +// CHECK:STDOUT: %a: %tuple.type.b67 = bind_name a, %.loc12_34.2 // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: @@ -107,30 +122,36 @@ fn Var() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %tuple.type.b67 = binding_pattern b -// CHECK:STDOUT: %.loc24_3.1: %tuple.type.b67 = var_pattern %b.patt +// CHECK:STDOUT: %.loc17_3.1: %tuple.type.b67 = var_pattern %b.patt // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %tuple.type.b67 = var b -// CHECK:STDOUT: %Make.ref.loc24_20: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.ref.loc17_20: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %tuple.elem0: ref %X = tuple_access %b.var, element0 -// CHECK:STDOUT: %Make.call.loc24_25: init %X = call %Make.ref.loc24_20() to %tuple.elem0 -// CHECK:STDOUT: %Make.ref.loc24_28: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] +// CHECK:STDOUT: %Make.call.loc17_25: init %X = call %Make.ref.loc17_20() to %tuple.elem0 +// CHECK:STDOUT: %Make.ref.loc17_28: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make] // CHECK:STDOUT: %tuple.elem1: ref %X = tuple_access %b.var, element1 -// CHECK:STDOUT: %Make.call.loc24_33: init %X = call %Make.ref.loc24_28() to %tuple.elem1 -// CHECK:STDOUT: %.loc24_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc24_25, %Make.call.loc24_33) -// CHECK:STDOUT: %X.ref.loc24_40: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %X.ref.loc24_43: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc24_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc24_40, %X.ref.loc24_43) -// CHECK:STDOUT: %.loc24_44.2: type = converted %.loc24_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] -// CHECK:STDOUT: %.loc24_34.2: init %tuple.type.b67 = tuple_init (%Make.call.loc24_25, %Make.call.loc24_33) to %b.var -// CHECK:STDOUT: %.loc24_3.2: init %tuple.type.b67 = converted %.loc24_34.1, %.loc24_34.2 -// CHECK:STDOUT: assign %b.var, %.loc24_3.2 -// CHECK:STDOUT: %.loc24_15.1: type = splice_block %.loc24_15.3 [concrete = constants.%tuple.type.b67] { -// CHECK:STDOUT: %X.ref.loc24_11: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %X.ref.loc24_14: type = name_ref X, file.%X.decl [concrete = constants.%X] -// CHECK:STDOUT: %.loc24_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc24_11, %X.ref.loc24_14) -// CHECK:STDOUT: %.loc24_15.3: type = converted %.loc24_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] +// CHECK:STDOUT: %Make.call.loc17_33: init %X = call %Make.ref.loc17_28() to %tuple.elem1 +// CHECK:STDOUT: %.loc17_34.1: %tuple.type.b67 = tuple_literal (%Make.call.loc17_25, %Make.call.loc17_33) +// CHECK:STDOUT: %X.ref.loc17_40: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %X.ref.loc17_43: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc17_44.1: %tuple.type.24b = tuple_literal (%X.ref.loc17_40, %X.ref.loc17_43) +// CHECK:STDOUT: %.loc17_44.2: type = converted %.loc17_44.1, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] +// CHECK:STDOUT: %.loc17_34.2: init %tuple.type.b67 = tuple_init (%Make.call.loc17_25, %Make.call.loc17_33) to %b.var +// CHECK:STDOUT: %.loc17_3.2: init %tuple.type.b67 = converted %.loc17_34.1, %.loc17_34.2 +// CHECK:STDOUT: assign %b.var, %.loc17_3.2 +// CHECK:STDOUT: %.loc17_15.1: type = splice_block %.loc17_15.3 [concrete = constants.%tuple.type.b67] { +// CHECK:STDOUT: %X.ref.loc17_11: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %X.ref.loc17_14: type = name_ref X, file.%X.decl [concrete = constants.%X] +// CHECK:STDOUT: %.loc17_15.2: %tuple.type.24b = tuple_literal (%X.ref.loc17_11, %X.ref.loc17_14) +// CHECK:STDOUT: %.loc17_15.3: type = converted %.loc17_15.2, constants.%tuple.type.b67 [concrete = constants.%tuple.type.b67] // CHECK:STDOUT: } // CHECK:STDOUT: %b: ref %tuple.type.b67 = bind_name b, %b.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/builtins/no_prelude/no_op.carbon b/toolchain/check/testdata/builtins/no_prelude/no_op.carbon index 1408bce57f24..4fcb6b2b048e 100644 --- a/toolchain/check/testdata/builtins/no_prelude/no_op.carbon +++ b/toolchain/check/testdata/builtins/no_prelude/no_op.carbon @@ -44,9 +44,7 @@ library "[[@TEST_NAME]]"; fn NoOp() = "no_op"; -fn F() { - var x: () = NoOp(); -} +var x: () = NoOp(); // --- fail_signature.carbon @@ -178,37 +176,34 @@ fn NoOp() -> {} = "no_op"; // CHECK:STDOUT: %NoOp.type: type = fn_type @NoOp [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %NoOp: %NoOp.type = struct_value () [concrete] -// CHECK:STDOUT: %F.type: type = fn_type @F [concrete] -// CHECK:STDOUT: %F: %F.type = struct_value () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .NoOp = %NoOp.decl -// CHECK:STDOUT: .F = %F.decl +// CHECK:STDOUT: .x = %x // CHECK:STDOUT: } // CHECK:STDOUT: %NoOp.decl: %NoOp.type = fn_decl @NoOp [concrete = constants.%NoOp] {} {} -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc6_1: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @NoOp() = "no_op"; // CHECK:STDOUT: -// CHECK:STDOUT: fn @F() { +// CHECK:STDOUT: fn @__global_init() { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc7_3: %empty_tuple.type = var_pattern %x.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x // CHECK:STDOUT: %NoOp.ref: %NoOp.type = name_ref NoOp, file.%NoOp.decl [concrete = constants.%NoOp] // CHECK:STDOUT: %no_op: init %empty_tuple.type = call %NoOp.ref() [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %no_op -// CHECK:STDOUT: %.loc7_11.1: type = splice_block %.loc7_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: assign file.%x.var, %no_op // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/destroy_calls.carbon b/toolchain/check/testdata/class/min_prelude/destroy_calls.carbon similarity index 95% rename from toolchain/check/testdata/class/no_prelude/destroy_calls.carbon rename to toolchain/check/testdata/class/min_prelude/destroy_calls.carbon index a4f2a35faf64..05af490148da 100644 --- a/toolchain/check/testdata/class/no_prelude/destroy_calls.carbon +++ b/toolchain/check/testdata/class/min_prelude/destroy_calls.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/no_prelude/destroy_calls.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/min_prelude/destroy_calls.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/no_prelude/destroy_calls.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/min_prelude/destroy_calls.carbon // --- types.carbon @@ -126,12 +129,20 @@ fn G() { F({}); } // CHECK:STDOUT: %destroy.8d0: %destroy.type.02f = 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .NoAddr = %NoAddr.decl // CHECK:STDOUT: .ExplicitReturn = %ExplicitReturn.decl // CHECK:STDOUT: .WithAddr = %WithAddr.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NoAddr.decl: type = class_decl @NoAddr [concrete = constants.%NoAddr] {} {} // CHECK:STDOUT: %ExplicitReturn.decl: type = class_decl @ExplicitReturn [concrete = constants.%ExplicitReturn] {} {} // CHECK:STDOUT: %WithAddr.decl: type = class_decl @WithAddr [concrete = constants.%WithAddr] {} {} @@ -267,16 +278,19 @@ fn G() { F({}); } // CHECK:STDOUT: %Main.NoAddr: type = import_ref Main//types, NoAddr, loaded [concrete = constants.%NoAddr] // CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn] // CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr] +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst39 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst41 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded // CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst65 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst67 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded // CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0] // CHECK:STDOUT: } @@ -286,8 +300,10 @@ fn G() { F({}); } // CHECK:STDOUT: .NoAddr = imports.%Main.NoAddr // CHECK:STDOUT: .ExplicitReturn = imports.%Main.ExplicitReturn // CHECK:STDOUT: .WithAddr = imports.%Main.WithAddr +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -388,16 +404,19 @@ fn G() { F({}); } // CHECK:STDOUT: %Main.NoAddr: type = import_ref Main//types, NoAddr, loaded [concrete = constants.%NoAddr] // CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn] // CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr] +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b5b = import_ref Main//types, loc5_22, unloaded // CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst39 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst41 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.b14 = import_ref Main//types, loc10_30, unloaded // CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst65 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst67 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.1cb = import_ref Main//types, loc15_24, unloaded // CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0] // CHECK:STDOUT: } @@ -407,8 +426,10 @@ fn G() { F({}); } // CHECK:STDOUT: .NoAddr = imports.%Main.NoAddr // CHECK:STDOUT: .ExplicitReturn = imports.%Main.ExplicitReturn // CHECK:STDOUT: .WithAddr = imports.%Main.WithAddr +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -532,16 +553,19 @@ fn G() { F({}); } // CHECK:STDOUT: %Main.NoAddr: type = import_ref Main//types, NoAddr, loaded [concrete = constants.%NoAddr] // CHECK:STDOUT: %Main.ExplicitReturn: type = import_ref Main//types, ExplicitReturn, loaded [concrete = constants.%ExplicitReturn] // CHECK:STDOUT: %Main.WithAddr: type = import_ref Main//types, WithAddr, loaded [concrete = constants.%WithAddr] +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//types, loc7_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst16 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.f42 = import_ref Main//types, inst18 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.784: %Make.type.bc9 = import_ref Main//types, loc5_22, loaded [concrete = constants.%Make.1be] // CHECK:STDOUT: %Main.import_ref.7fe: %destroy.type.bc5 = import_ref Main//types, loc6_27, loaded [concrete = constants.%destroy.60f] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//types, loc12_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst39 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ee7 = import_ref Main//types, inst41 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.8e0: %Make.type.378 = import_ref Main//types, loc10_30, loaded [concrete = constants.%Make.960] // CHECK:STDOUT: %Main.import_ref.83a: %destroy.type.dfa = import_ref Main//types, loc11_33, loaded [concrete = constants.%destroy.539] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//types, loc17_1, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst65 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.95d = import_ref Main//types, inst67 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.974: %Make.type.e14 = import_ref Main//types, loc15_24, loaded [concrete = constants.%Make.b0a] // CHECK:STDOUT: %Main.import_ref.54e: %destroy.type.02f = import_ref Main//types, loc16_33, loaded [concrete = constants.%destroy.8d0] // CHECK:STDOUT: } @@ -551,8 +575,10 @@ fn G() { F({}); } // CHECK:STDOUT: .NoAddr = imports.%Main.NoAddr // CHECK:STDOUT: .ExplicitReturn = imports.%Main.ExplicitReturn // CHECK:STDOUT: .WithAddr = imports.%Main.WithAddr +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -644,12 +670,20 @@ fn G() { F({}); } // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .NoSelf = %NoSelf.decl // CHECK:STDOUT: .Args = %Args.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %NoSelf.decl: type = class_decl @NoSelf [concrete = constants.%NoSelf] {} {} // CHECK:STDOUT: %Args.decl: type = class_decl @Args [concrete = constants.%Args] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -747,12 +781,20 @@ fn G() { F({}); } // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] { // CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0, template [template = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -855,3 +897,9 @@ fn G() { F({}); } // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/destroy_decl.carbon b/toolchain/check/testdata/class/min_prelude/destroy_decl.carbon similarity index 95% rename from toolchain/check/testdata/class/no_prelude/destroy_decl.carbon rename to toolchain/check/testdata/class/min_prelude/destroy_decl.carbon index 195c7e685fbf..7924b9cf37f0 100644 --- a/toolchain/check/testdata/class/no_prelude/destroy_decl.carbon +++ b/toolchain/check/testdata/class/min_prelude/destroy_decl.carbon @@ -2,13 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// EXTRA-ARGS: --no-dump-sem-ir +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core --no-dump-sem-ir // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/no_prelude/destroy_decl.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/min_prelude/destroy_decl.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/no_prelude/destroy_decl.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/min_prelude/destroy_decl.carbon // --- self.carbon diff --git a/toolchain/check/testdata/class/no_prelude/fail_abstract.carbon b/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon similarity index 91% rename from toolchain/check/testdata/class/no_prelude/fail_abstract.carbon rename to toolchain/check/testdata/class/min_prelude/fail_abstract.carbon index 86f59253b795..65b2328bf797 100644 --- a/toolchain/check/testdata/class/no_prelude/fail_abstract.carbon +++ b/toolchain/check/testdata/class/min_prelude/fail_abstract.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/no_prelude/fail_abstract.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/min_prelude/fail_abstract.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/no_prelude/fail_abstract.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/min_prelude/fail_abstract.carbon // --- fail_abstract_field.carbon @@ -198,11 +201,19 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Contains: type = class_type @Contains [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract = %Abstract.decl // CHECK:STDOUT: .Contains = %Contains.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Contains.decl: type = class_decl @Contains [concrete = constants.%Contains] {} {} // CHECK:STDOUT: } @@ -239,11 +250,19 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Var: %Var.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Var = %Var.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Var.decl: %Var.type = fn_decl @Var [concrete = constants.%Var] {} {} // CHECK:STDOUT: } @@ -279,11 +298,19 @@ fn CallReturnAbstract() { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %Abstract = binding_pattern a @@ -324,11 +351,19 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Adapter: type = class_type @Adapter [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract = %Abstract.decl // CHECK:STDOUT: .Adapter = %Adapter.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Adapter.decl: type = class_decl @Adapter [concrete = constants.%Adapter] {} {} // CHECK:STDOUT: } @@ -366,12 +401,20 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Call: %Call.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Param = %Param.decl // CHECK:STDOUT: .Call = %Call.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Param.decl: %Param.type = fn_decl @Param [concrete = constants.%Param] { // CHECK:STDOUT: %a.patt: %Abstract = binding_pattern a @@ -426,12 +469,20 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %struct_type.base.d.e0f: type = struct_type {.base: %empty_struct_type, .d: %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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Derived = %Derived.decl // CHECK:STDOUT: .Make = %Make.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] { @@ -494,12 +545,20 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Return: %Return.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Derived = %Derived.decl // CHECK:STDOUT: .Return = %Return.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %Return.decl: %Return.type = fn_decl @Return [concrete = constants.%Return] { @@ -567,12 +626,20 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %Access: %Access.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .Derived = %Derived.decl // CHECK:STDOUT: .Access = %Access.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %Derived.decl: type = class_decl @Derived [concrete = constants.%Derived] {} {} // CHECK:STDOUT: %Access.decl: %Access.type = fn_decl @Access [concrete = constants.%Access] { @@ -641,11 +708,19 @@ fn CallReturnAbstract() { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -682,12 +757,20 @@ fn CallReturnAbstract() { // CHECK:STDOUT: %CallReturnAbstract: %CallReturnAbstract.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: .ReturnAbstract = %ReturnAbstract.decl // CHECK:STDOUT: .CallReturnAbstract = %CallReturnAbstract.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: %ReturnAbstract.decl: %ReturnAbstract.type = fn_decl @ReturnAbstract [concrete = constants.%ReturnAbstract] { // CHECK:STDOUT: %return.patt: %Abstract = return_slot_pattern @@ -718,3 +801,9 @@ fn CallReturnAbstract() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_tuple.carbon b/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon similarity index 89% rename from toolchain/check/testdata/class/no_prelude/fail_abstract_in_tuple.carbon rename to toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon index 71568e893400..c4e13189386f 100644 --- a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_tuple.carbon +++ b/toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/no_prelude/fail_abstract_in_tuple.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/no_prelude/fail_abstract_in_tuple.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/class/min_prelude/fail_abstract_in_tuple.carbon // --- fail_abstract_field.carbon library "[[@TEST_NAME]]"; @@ -132,11 +135,19 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.f19: type = tuple_type (%Abstract1) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract1 = %Abstract1.decl // CHECK:STDOUT: .Contains = %Contains.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract1.decl: type = class_decl @Abstract1 [concrete = constants.%Abstract1] {} {} // CHECK:STDOUT: %Contains.decl: type = class_decl @Contains [concrete = constants.%Contains] {} {} // CHECK:STDOUT: } @@ -177,11 +188,19 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.ac6: type = tuple_type (%Abstract2) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract2 = %Abstract2.decl // CHECK:STDOUT: .Var = %Var.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract2.decl: type = class_decl @Abstract2 [concrete = constants.%Abstract2] {} {} // CHECK:STDOUT: %Var.decl: %Var.type = fn_decl @Var [concrete = constants.%Var] {} {} // CHECK:STDOUT: } @@ -223,11 +242,19 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.fa1: type = tuple_type (%Abstract3) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract3 = %Abstract3.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract3.decl: type = class_decl @Abstract3 [concrete = constants.%Abstract3] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %a.patt: %Abstract3 = binding_pattern a @@ -277,12 +304,20 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.e3e: type = tuple_type (%Abstract4, %Abstract5) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract4 = %Abstract4.decl // CHECK:STDOUT: .Abstract5 = %Abstract5.decl // CHECK:STDOUT: .Var2 = %Var2.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract4.decl: type = class_decl @Abstract4 [concrete = constants.%Abstract4] {} {} // CHECK:STDOUT: %Abstract5.decl: type = class_decl @Abstract5 [concrete = constants.%Abstract5] {} {} // CHECK:STDOUT: %Var2.decl: %Var2.type = fn_decl @Var2 [concrete = constants.%Var2] {} {} @@ -335,11 +370,19 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.d93: type = tuple_type (%Abstract6, %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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract6 = %Abstract6.decl // CHECK:STDOUT: .Var3 = %Var3.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract6.decl: type = class_decl @Abstract6 [concrete = constants.%Abstract6] {} {} // CHECK:STDOUT: %Var3.decl: %Var3.type = fn_decl @Var3 [concrete = constants.%Var3] {} {} // CHECK:STDOUT: } @@ -383,11 +426,19 @@ fn Var5() { // CHECK:STDOUT: %tuple.type.919: type = tuple_type (%empty_struct_type, %Abstract7) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Abstract7 = %Abstract7.decl // CHECK:STDOUT: .Var4 = %Var4.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract7.decl: type = class_decl @Abstract7 [concrete = constants.%Abstract7] {} {} // CHECK:STDOUT: %Var4.decl: %Var4.type = fn_decl @Var4 [concrete = constants.%Var4] {} {} // CHECK:STDOUT: } @@ -427,10 +478,18 @@ fn Var5() { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Abstract = %Abstract.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Abstract.decl: type = class_decl @Abstract [concrete = constants.%Abstract] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -457,15 +516,20 @@ fn Var5() { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Abstract: type = import_ref Main//lib, Abstract, loaded [concrete = constants.%Abstract] +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//lib, loc3_26, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst16 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ee1 = import_ref Main//lib, inst18 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract = imports.%Main.Abstract +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Var5 = %Var5.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %Var5.decl: %Var5.type = fn_decl @Var5 [concrete = constants.%Var5] {} {} // CHECK:STDOUT: } @@ -493,3 +557,9 @@ fn Var5() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon b/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon index 0c62048edbcd..002d5ebba34c 100644 --- a/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon +++ b/toolchain/check/testdata/class/no_prelude/fail_abstract_in_struct.carbon @@ -29,16 +29,14 @@ library "[[@TEST_NAME]]"; abstract class Abstract2 {} -fn Var() { - // CHECK:STDERR: fail_abstract_var.carbon:[[@LINE+7]]:10: error: binding pattern has abstract type `{.m2: Abstract2}` in `var` pattern [AbstractTypeInVarPattern] - // CHECK:STDERR: var v: {.m2: Abstract2}; - // CHECK:STDERR: ^~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_abstract_var.carbon:[[@LINE-6]]:1: note: uses class that was declared abstract here [ClassAbstractHere] - // CHECK:STDERR: abstract class Abstract2 {} - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: - var v: {.m2: Abstract2}; -} +// CHECK:STDERR: fail_abstract_var.carbon:[[@LINE+7]]:8: error: binding pattern has abstract type `{.m2: Abstract2}` in `var` pattern [AbstractTypeInVarPattern] +// CHECK:STDERR: var v: {.m2: Abstract2}; +// CHECK:STDERR: ^~~~~~~~~~~~~~~~ +// CHECK:STDERR: fail_abstract_var.carbon:[[@LINE-5]]:1: note: uses class that was declared abstract here [ClassAbstractHere] +// CHECK:STDERR: abstract class Abstract2 {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +var v: {.m2: Abstract2}; // --- abstract_let.carbon library "[[@TEST_NAME]]"; @@ -56,48 +54,42 @@ library "[[@TEST_NAME]]"; abstract class Abstract4 {} abstract class Abstract5 {} -fn Var2() { - // CHECK:STDERR: fail_abstract_twice.carbon:[[@LINE+7]]:11: error: binding pattern has abstract type `{.m4: Abstract4, .m5: Abstract5}` in `var` pattern [AbstractTypeInVarPattern] - // CHECK:STDERR: var v2: {.m4: Abstract4, .m5: Abstract5}; - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_abstract_twice.carbon:[[@LINE-7]]:1: note: uses class that was declared abstract here [ClassAbstractHere] - // CHECK:STDERR: abstract class Abstract4 {} - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: - var v2: {.m4: Abstract4, .m5: Abstract5}; -} +// CHECK:STDERR: fail_abstract_twice.carbon:[[@LINE+7]]:9: error: binding pattern has abstract type `{.m4: Abstract4, .m5: Abstract5}` in `var` pattern [AbstractTypeInVarPattern] +// CHECK:STDERR: var v2: {.m4: Abstract4, .m5: Abstract5}; +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: fail_abstract_twice.carbon:[[@LINE-6]]:1: note: uses class that was declared abstract here [ClassAbstractHere] +// CHECK:STDERR: abstract class Abstract4 {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +var v2: {.m4: Abstract4, .m5: Abstract5}; // --- fail_abstract_first.carbon library "[[@TEST_NAME]]"; abstract class Abstract6 {} -fn Var3() { - // CHECK:STDERR: fail_abstract_first.carbon:[[@LINE+7]]:11: error: binding pattern has abstract type `{.m6: Abstract6, .c1: ()}` in `var` pattern [AbstractTypeInVarPattern] - // CHECK:STDERR: var v3: {.m6: Abstract6, .c1: ()}; - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_abstract_first.carbon:[[@LINE-6]]:1: note: uses class that was declared abstract here [ClassAbstractHere] - // CHECK:STDERR: abstract class Abstract6 {} - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: - var v3: {.m6: Abstract6, .c1: ()}; -} +// CHECK:STDERR: fail_abstract_first.carbon:[[@LINE+7]]:9: error: binding pattern has abstract type `{.m6: Abstract6, .c1: ()}` in `var` pattern [AbstractTypeInVarPattern] +// CHECK:STDERR: var v3: {.m6: Abstract6, .c1: ()}; +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: fail_abstract_first.carbon:[[@LINE-5]]:1: note: uses class that was declared abstract here [ClassAbstractHere] +// CHECK:STDERR: abstract class Abstract6 {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +var v3: {.m6: Abstract6, .c1: ()}; // --- fail_abstract_second.carbon library "[[@TEST_NAME]]"; abstract class Abstract7 {} -fn Var4() { - // CHECK:STDERR: fail_abstract_second.carbon:[[@LINE+7]]:11: error: binding pattern has abstract type `{.c2: (), .m7: Abstract7}` in `var` pattern [AbstractTypeInVarPattern] - // CHECK:STDERR: var v4: {.c2: (), .m7: Abstract7}; - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: fail_abstract_second.carbon:[[@LINE-6]]:1: note: uses class that was declared abstract here [ClassAbstractHere] - // CHECK:STDERR: abstract class Abstract7 {} - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: - var v4: {.c2: (), .m7: Abstract7}; -} +// CHECK:STDERR: fail_abstract_second.carbon:[[@LINE+7]]:9: error: binding pattern has abstract type `{.c2: (), .m7: Abstract7}` in `var` pattern [AbstractTypeInVarPattern] +// CHECK:STDERR: var v4: {.c2: (), .m7: Abstract7}; +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: fail_abstract_second.carbon:[[@LINE-5]]:1: note: uses class that was declared abstract here [ClassAbstractHere] +// CHECK:STDERR: abstract class Abstract7 {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +var v4: {.c2: (), .m7: Abstract7}; // --- lib.carbon library "[[@TEST_NAME]]"; @@ -109,17 +101,15 @@ library "[[@TEST_NAME]]"; import library "lib"; -fn Var5() { - // CHECK:STDERR: fail_import.carbon:[[@LINE+8]]:11: error: binding pattern has abstract type `{.m: Abstract}` in `var` pattern [AbstractTypeInVarPattern] - // CHECK:STDERR: var v5: {.m: Abstract}; - // CHECK:STDERR: ^~~~~~~~~~~~~~ - // CHECK:STDERR: fail_import.carbon:[[@LINE-6]]:1: in import [InImport] - // CHECK:STDERR: lib.carbon:3:1: note: uses class that was declared abstract here [ClassAbstractHere] - // CHECK:STDERR: abstract class Abstract {} - // CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ - // CHECK:STDERR: - var v5: {.m: Abstract}; -} +// CHECK:STDERR: fail_import.carbon:[[@LINE+8]]:9: error: binding pattern has abstract type `{.m: Abstract}` in `var` pattern [AbstractTypeInVarPattern] +// CHECK:STDERR: var v5: {.m: Abstract}; +// CHECK:STDERR: ^~~~~~~~~~~~~~ +// CHECK:STDERR: fail_import.carbon:[[@LINE-5]]:1: in import [InImport] +// CHECK:STDERR: lib.carbon:3:1: note: uses class that was declared abstract here [ClassAbstractHere] +// CHECK:STDERR: abstract class Abstract {} +// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +var v5: {.m: Abstract}; // CHECK:STDOUT: --- fail_abstract_field.carbon // CHECK:STDOUT: @@ -169,18 +159,25 @@ fn Var5() { // CHECK:STDOUT: %Abstract2: type = class_type @Abstract2 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Var.type: type = fn_type @Var [concrete] -// CHECK:STDOUT: %Var: %Var.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.m2.155: type = struct_type {.m2: %Abstract2} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract2 = %Abstract2.decl -// CHECK:STDOUT: .Var = %Var.decl +// CHECK:STDOUT: .v = %v // CHECK:STDOUT: } // CHECK:STDOUT: %Abstract2.decl: type = class_decl @Abstract2 [concrete = constants.%Abstract2] {} {} -// CHECK:STDOUT: %Var.decl: %Var.type = fn_decl @Var [concrete = constants.%Var] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %v.patt: = binding_pattern v +// CHECK:STDOUT: %.loc12_1: = var_pattern %v.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %v.var: ref = var v +// CHECK:STDOUT: %.loc12_23: type = splice_block %struct_type.m2 [concrete = constants.%struct_type.m2.155] { +// CHECK:STDOUT: %Abstract2.ref: type = name_ref Abstract2, %Abstract2.decl [concrete = constants.%Abstract2] +// CHECK:STDOUT: %struct_type.m2: type = struct_type {.m2: %Abstract2} [concrete = constants.%struct_type.m2.155] +// CHECK:STDOUT: } +// CHECK:STDOUT: %v: = bind_name v, // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract2 { @@ -192,21 +189,6 @@ fn Var5() { // CHECK:STDOUT: .Self = constants.%Abstract2 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Var() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %v.patt: = binding_pattern v -// CHECK:STDOUT: %.loc13_3: = var_pattern %v.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %v.var: ref = var v -// CHECK:STDOUT: %.loc13_25: type = splice_block %struct_type.m2 [concrete = constants.%struct_type.m2.155] { -// CHECK:STDOUT: %Abstract2.ref: type = name_ref Abstract2, file.%Abstract2.decl [concrete = constants.%Abstract2] -// CHECK:STDOUT: %struct_type.m2: type = struct_type {.m2: %Abstract2} [concrete = constants.%struct_type.m2.155] -// CHECK:STDOUT: } -// CHECK:STDOUT: %v: = bind_name v, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- abstract_let.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { @@ -265,8 +247,6 @@ fn Var5() { // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] // CHECK:STDOUT: %Abstract5: type = class_type @Abstract5 [concrete] -// CHECK:STDOUT: %Var2.type: type = fn_type @Var2 [concrete] -// CHECK:STDOUT: %Var2: %Var2.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.m4.m5.c86: type = struct_type {.m4: %Abstract4, .m5: %Abstract5} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -274,11 +254,21 @@ fn Var5() { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract4 = %Abstract4.decl // CHECK:STDOUT: .Abstract5 = %Abstract5.decl -// CHECK:STDOUT: .Var2 = %Var2.decl +// CHECK:STDOUT: .v2 = %v2 // CHECK:STDOUT: } // CHECK:STDOUT: %Abstract4.decl: type = class_decl @Abstract4 [concrete = constants.%Abstract4] {} {} // CHECK:STDOUT: %Abstract5.decl: type = class_decl @Abstract5 [concrete = constants.%Abstract5] {} {} -// CHECK:STDOUT: %Var2.decl: %Var2.type = fn_decl @Var2 [concrete = constants.%Var2] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %v2.patt: = binding_pattern v2 +// CHECK:STDOUT: %.loc13_1: = var_pattern %v2.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %v2.var: ref = var v2 +// CHECK:STDOUT: %.loc13_40: type = splice_block %struct_type.m4.m5 [concrete = constants.%struct_type.m4.m5.c86] { +// CHECK:STDOUT: %Abstract4.ref: type = name_ref Abstract4, %Abstract4.decl [concrete = constants.%Abstract4] +// CHECK:STDOUT: %Abstract5.ref: type = name_ref Abstract5, %Abstract5.decl [concrete = constants.%Abstract5] +// CHECK:STDOUT: %struct_type.m4.m5: type = struct_type {.m4: %Abstract4, .m5: %Abstract5} [concrete = constants.%struct_type.m4.m5.c86] +// CHECK:STDOUT: } +// CHECK:STDOUT: %v2: = bind_name v2, // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract4 { @@ -299,41 +289,34 @@ fn Var5() { // CHECK:STDOUT: .Self = constants.%Abstract5 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Var2() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %v2.patt: = binding_pattern v2 -// CHECK:STDOUT: %.loc14_3: = var_pattern %v2.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %v2.var: ref = var v2 -// CHECK:STDOUT: %.loc14_42: type = splice_block %struct_type.m4.m5 [concrete = constants.%struct_type.m4.m5.c86] { -// CHECK:STDOUT: %Abstract4.ref: type = name_ref Abstract4, file.%Abstract4.decl [concrete = constants.%Abstract4] -// CHECK:STDOUT: %Abstract5.ref: type = name_ref Abstract5, file.%Abstract5.decl [concrete = constants.%Abstract5] -// CHECK:STDOUT: %struct_type.m4.m5: type = struct_type {.m4: %Abstract4, .m5: %Abstract5} [concrete = constants.%struct_type.m4.m5.c86] -// CHECK:STDOUT: } -// CHECK:STDOUT: %v2: = bind_name v2, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_first.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Abstract6: type = class_type @Abstract6 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Var3.type: type = fn_type @Var3 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Var3: %Var3.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.m6.c1.489: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract6 = %Abstract6.decl -// CHECK:STDOUT: .Var3 = %Var3.decl +// CHECK:STDOUT: .v3 = %v3 // CHECK:STDOUT: } // CHECK:STDOUT: %Abstract6.decl: type = class_decl @Abstract6 [concrete = constants.%Abstract6] {} {} -// CHECK:STDOUT: %Var3.decl: %Var3.type = fn_decl @Var3 [concrete = constants.%Var3] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %v3.patt: = binding_pattern v3 +// CHECK:STDOUT: %.loc12_1: = var_pattern %v3.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %v3.var: ref = var v3 +// CHECK:STDOUT: %.loc12_33: type = splice_block %struct_type.m6.c1 [concrete = constants.%struct_type.m6.c1.489] { +// CHECK:STDOUT: %Abstract6.ref: type = name_ref Abstract6, %Abstract6.decl [concrete = constants.%Abstract6] +// CHECK:STDOUT: %.loc12_32.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_32.2: type = converted %.loc12_32.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %struct_type.m6.c1: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete = constants.%struct_type.m6.c1.489] +// CHECK:STDOUT: } +// CHECK:STDOUT: %v3: = bind_name v3, // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract6 { @@ -345,42 +328,34 @@ fn Var5() { // CHECK:STDOUT: .Self = constants.%Abstract6 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Var3() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %v3.patt: = binding_pattern v3 -// CHECK:STDOUT: %.loc13_3: = var_pattern %v3.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %v3.var: ref = var v3 -// CHECK:STDOUT: %.loc13_35: type = splice_block %struct_type.m6.c1 [concrete = constants.%struct_type.m6.c1.489] { -// CHECK:STDOUT: %Abstract6.ref: type = name_ref Abstract6, file.%Abstract6.decl [concrete = constants.%Abstract6] -// CHECK:STDOUT: %.loc13_34.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_34.2: type = converted %.loc13_34.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.m6.c1: type = struct_type {.m6: %Abstract6, .c1: %empty_tuple.type} [concrete = constants.%struct_type.m6.c1.489] -// CHECK:STDOUT: } -// CHECK:STDOUT: %v3: = bind_name v3, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- fail_abstract_second.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Abstract7: type = class_type @Abstract7 [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] -// CHECK:STDOUT: %Var4.type: type = fn_type @Var4 [concrete] // CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Var4: %Var4.type = struct_value () [concrete] // CHECK:STDOUT: %struct_type.c2.m7.4a7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract7 = %Abstract7.decl -// CHECK:STDOUT: .Var4 = %Var4.decl +// CHECK:STDOUT: .v4 = %v4 // CHECK:STDOUT: } // CHECK:STDOUT: %Abstract7.decl: type = class_decl @Abstract7 [concrete = constants.%Abstract7] {} {} -// CHECK:STDOUT: %Var4.decl: %Var4.type = fn_decl @Var4 [concrete = constants.%Var4] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %v4.patt: = binding_pattern v4 +// CHECK:STDOUT: %.loc12_1: = var_pattern %v4.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %v4.var: ref = var v4 +// CHECK:STDOUT: %.loc12_33: type = splice_block %struct_type.c2.m7 [concrete = constants.%struct_type.c2.m7.4a7] { +// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc12_16.2: type = converted %.loc12_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %Abstract7.ref: type = name_ref Abstract7, %Abstract7.decl [concrete = constants.%Abstract7] +// CHECK:STDOUT: %struct_type.c2.m7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete = constants.%struct_type.c2.m7.4a7] +// CHECK:STDOUT: } +// CHECK:STDOUT: %v4: = bind_name v4, // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract7 { @@ -392,23 +367,6 @@ fn Var5() { // CHECK:STDOUT: .Self = constants.%Abstract7 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Var4() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %v4.patt: = binding_pattern v4 -// CHECK:STDOUT: %.loc13_3: = var_pattern %v4.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %v4.var: ref = var v4 -// CHECK:STDOUT: %.loc13_35: type = splice_block %struct_type.c2.m7 [concrete = constants.%struct_type.c2.m7.4a7] { -// CHECK:STDOUT: %.loc13_18.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_18.2: type = converted %.loc13_18.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %Abstract7.ref: type = name_ref Abstract7, file.%Abstract7.decl [concrete = constants.%Abstract7] -// CHECK:STDOUT: %struct_type.c2.m7: type = struct_type {.c2: %empty_tuple.type, .m7: %Abstract7} [concrete = constants.%struct_type.c2.m7.4a7] -// CHECK:STDOUT: } -// CHECK:STDOUT: %v4: = bind_name v4, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: // CHECK:STDOUT: --- lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { @@ -436,8 +394,6 @@ fn Var5() { // CHECK:STDOUT: --- fail_import.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %Var5.type: type = fn_type @Var5 [concrete] -// CHECK:STDOUT: %Var5: %Var5.type = struct_value () [concrete] // CHECK:STDOUT: %Abstract: type = class_type @Abstract [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] // CHECK:STDOUT: %complete_type: = complete_type_witness %empty_struct_type [concrete] @@ -453,10 +409,19 @@ fn Var5() { // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Abstract = imports.%Main.Abstract -// CHECK:STDOUT: .Var5 = %Var5.decl +// CHECK:STDOUT: .v5 = %v5 // CHECK:STDOUT: } // CHECK:STDOUT: %default.import = import -// CHECK:STDOUT: %Var5.decl: %Var5.type = fn_decl @Var5 [concrete = constants.%Var5] {} {} +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %v5.patt: = binding_pattern v5 +// CHECK:STDOUT: %.loc13_1: = var_pattern %v5.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %v5.var: ref = var v5 +// CHECK:STDOUT: %.loc13_22: type = splice_block %struct_type.m [concrete = constants.%struct_type.m.50b] { +// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, imports.%Main.Abstract [concrete = constants.%Abstract] +// CHECK:STDOUT: %struct_type.m: type = struct_type {.m: %Abstract} [concrete = constants.%struct_type.m.50b] +// CHECK:STDOUT: } +// CHECK:STDOUT: %v5: = bind_name v5, // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Abstract [from "lib.carbon"] { @@ -466,18 +431,3 @@ fn Var5() { // CHECK:STDOUT: .Self = imports.%Main.import_ref.ee1 // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: fn @Var5() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %v5.patt: = binding_pattern v5 -// CHECK:STDOUT: %.loc14_3: = var_pattern %v5.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %v5.var: ref = var v5 -// CHECK:STDOUT: %.loc14_24: type = splice_block %struct_type.m [concrete = constants.%struct_type.m.50b] { -// CHECK:STDOUT: %Abstract.ref: type = name_ref Abstract, imports.%Main.Abstract [concrete = constants.%Abstract] -// CHECK:STDOUT: %struct_type.m: type = struct_type {.m: %Abstract} [concrete = constants.%struct_type.m.50b] -// CHECK:STDOUT: } -// CHECK:STDOUT: %v5: = bind_name v5, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/no_prelude/alias.carbon b/toolchain/check/testdata/function/call/min_prelude/alias.carbon similarity index 68% rename from toolchain/check/testdata/function/call/no_prelude/alias.carbon rename to toolchain/check/testdata/function/call/min_prelude/alias.carbon index e8d4501535bb..03ba66348730 100644 --- a/toolchain/check/testdata/function/call/no_prelude/alias.carbon +++ b/toolchain/check/testdata/function/call/min_prelude/alias.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/call/no_prelude/alias.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/call/min_prelude/alias.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/call/no_prelude/alias.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/call/min_prelude/alias.carbon fn A() -> () { return (); } @@ -27,18 +30,26 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.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: } +// 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 // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] { // CHECK:STDOUT: %return.patt: %empty_tuple.type = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, call_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %.loc11_12.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_12.2: type = converted %.loc11_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc14_12.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_12.2: type = converted %.loc14_12.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param call_param0 // CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param // CHECK:STDOUT: } @@ -49,27 +60,33 @@ fn Main() { // CHECK:STDOUT: // CHECK:STDOUT: fn @A() -> %empty_tuple.type { // CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_24: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc14_24: %empty_tuple.type = tuple_literal () // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_25: %empty_tuple.type = converted %.loc11_24, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: return %.loc11_25 +// CHECK:STDOUT: %.loc14_25: %empty_tuple.type = converted %.loc14_24, %empty_tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: return %.loc14_25 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: fn @Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %empty_tuple.type = binding_pattern b -// CHECK:STDOUT: %.loc16_3: %empty_tuple.type = var_pattern %b.patt +// CHECK:STDOUT: %.loc19_3: %empty_tuple.type = var_pattern %b.patt // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var b // CHECK:STDOUT: %B.ref: %A.type = name_ref B, file.%B [concrete = constants.%A] // CHECK:STDOUT: %A.call: init %empty_tuple.type = call %B.ref() // CHECK:STDOUT: assign %b.var, %A.call -// CHECK:STDOUT: %.loc16_11.1: type = splice_block %.loc16_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc16_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_11.3: type = converted %.loc16_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc19_11.1: type = splice_block %.loc19_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc19_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc19_11.3: type = converted %.loc19_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: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/no_prelude/return_implicit.carbon b/toolchain/check/testdata/function/call/min_prelude/return_implicit.carbon similarity index 71% rename from toolchain/check/testdata/function/call/no_prelude/return_implicit.carbon rename to toolchain/check/testdata/function/call/min_prelude/return_implicit.carbon index 8fa806e066de..6baf7d799ef0 100644 --- a/toolchain/check/testdata/function/call/no_prelude/return_implicit.carbon +++ b/toolchain/check/testdata/function/call/min_prelude/return_implicit.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/call/no_prelude/return_implicit.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/call/min_prelude/return_implicit.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/call/no_prelude/return_implicit.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/call/min_prelude/return_implicit.carbon fn MakeImplicitEmptyTuple() { } @@ -25,11 +28,19 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .MakeImplicitEmptyTuple = %MakeImplicitEmptyTuple.decl // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %MakeImplicitEmptyTuple.decl: %MakeImplicitEmptyTuple.type = fn_decl @MakeImplicitEmptyTuple [concrete = constants.%MakeImplicitEmptyTuple] {} {} // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } @@ -43,17 +54,23 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %b.patt: %empty_tuple.type = binding_pattern b -// CHECK:STDOUT: %.loc15_3: %empty_tuple.type = var_pattern %b.patt +// CHECK:STDOUT: %.loc18_3: %empty_tuple.type = var_pattern %b.patt // CHECK:STDOUT: } // CHECK:STDOUT: %b.var: ref %empty_tuple.type = var b // CHECK:STDOUT: %MakeImplicitEmptyTuple.ref: %MakeImplicitEmptyTuple.type = name_ref MakeImplicitEmptyTuple, file.%MakeImplicitEmptyTuple.decl [concrete = constants.%MakeImplicitEmptyTuple] // CHECK:STDOUT: %MakeImplicitEmptyTuple.call: init %empty_tuple.type = call %MakeImplicitEmptyTuple.ref() // CHECK:STDOUT: assign %b.var, %MakeImplicitEmptyTuple.call -// CHECK:STDOUT: %.loc15_11.1: type = splice_block %.loc15_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc15_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc15_11.3: type = converted %.loc15_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc18_11.1: type = splice_block %.loc18_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc18_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc18_11.3: type = converted %.loc18_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: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon b/toolchain/check/testdata/function/declaration/min_prelude/fail_import_incomplete_return.carbon similarity index 92% rename from toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon rename to toolchain/check/testdata/function/declaration/min_prelude/fail_import_incomplete_return.carbon index bc63764e0acc..d02492b23d7a 100644 --- a/toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon +++ b/toolchain/check/testdata/function/declaration/min_prelude/fail_import_incomplete_return.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/declaration/min_prelude/fail_import_incomplete_return.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/declaration/no_prelude/fail_import_incomplete_return.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/declaration/min_prelude/fail_import_incomplete_return.carbon // --- fail_incomplete_return.carbon @@ -103,8 +106,15 @@ fn CallFAndGIncomplete() { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .D = %D.decl.loc5 // CHECK:STDOUT: .ReturnCUnused = %ReturnCUnused.decl @@ -113,6 +123,7 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: .ReturnDUsed = %ReturnDUsed.decl // CHECK:STDOUT: .Call = %Call.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %D.decl.loc5: type = class_decl @D [concrete = constants.%D] {} {} // CHECK:STDOUT: %ReturnCUnused.decl: %ReturnCUnused.type = fn_decl @ReturnCUnused [concrete = constants.%ReturnCUnused] { @@ -205,8 +216,11 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: %Main.ReturnDUnused: %ReturnDUnused.type = import_ref Main//incomplete_return, ReturnDUnused, loaded [concrete = constants.%ReturnDUnused] // CHECK:STDOUT: %Main.ReturnDUsed: %ReturnDUsed.type = import_ref Main//incomplete_return, ReturnDUsed, loaded [concrete = constants.%ReturnDUsed] // CHECK:STDOUT: %Main.Call = import_ref Main//incomplete_return, Call, unloaded +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f2: = import_ref Main//incomplete_return, loc37_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//incomplete_return, inst18 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//incomplete_return, inst20 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -218,8 +232,10 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: .ReturnDUnused = imports.%Main.ReturnDUnused // CHECK:STDOUT: .ReturnDUsed = imports.%Main.ReturnDUsed // CHECK:STDOUT: .Call = imports.%Main.Call +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .CallFAndGIncomplete = %CallFAndGIncomplete.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: %CallFAndGIncomplete.decl: %CallFAndGIncomplete.type = fn_decl @CallFAndGIncomplete [concrete = constants.%CallFAndGIncomplete] {} {} // CHECK:STDOUT: } @@ -258,3 +274,9 @@ fn CallFAndGIncomplete() { // CHECK:STDOUT: // CHECK:STDOUT: fn @ReturnDUsed [from "fail_incomplete_return.carbon"]; // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/no_prelude/fail_local_decl.carbon b/toolchain/check/testdata/function/definition/min_prelude/fail_local_decl.carbon similarity index 82% rename from toolchain/check/testdata/function/definition/no_prelude/fail_local_decl.carbon rename to toolchain/check/testdata/function/definition/min_prelude/fail_local_decl.carbon index 89f5cd3b72e8..b03bb1c66b0a 100644 --- a/toolchain/check/testdata/function/definition/no_prelude/fail_local_decl.carbon +++ b/toolchain/check/testdata/function/definition/min_prelude/fail_local_decl.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/definition/no_prelude/fail_local_decl.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/definition/min_prelude/fail_local_decl.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/definition/no_prelude/fail_local_decl.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/definition/min_prelude/fail_local_decl.carbon // --- fail_virtual.carbon @@ -60,10 +63,18 @@ fn F() { // CHECK:STDOUT: %H: %H.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: } +// 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.b25 = fn_decl @F.1 [concrete = constants.%F.c41] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -89,10 +100,18 @@ fn F() { // CHECK:STDOUT: %empty_struct_type: type = 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: } +// 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: } // CHECK:STDOUT: @@ -121,3 +140,9 @@ fn F() { // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/call.carbon b/toolchain/check/testdata/function/generic/min_prelude/call.carbon similarity index 96% rename from toolchain/check/testdata/function/generic/no_prelude/call.carbon rename to toolchain/check/testdata/function/generic/min_prelude/call.carbon index 2dd82d9dbbe7..7393ab82a69e 100644 --- a/toolchain/check/testdata/function/generic/no_prelude/call.carbon +++ b/toolchain/check/testdata/function/generic/min_prelude/call.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/no_prelude/call.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/min_prelude/call.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/no_prelude/call.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/min_prelude/call.carbon // --- explicit.carbon @@ -76,14 +79,22 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn.1b5: = specific_function %Function, @Function(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Function = %Function.decl // CHECK:STDOUT: .CallGeneric = %CallGeneric.decl // CHECK:STDOUT: .CallGenericPtr = %CallGenericPtr.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .CallSpecific = %CallSpecific.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x @@ -290,14 +301,22 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %Function.specific_fn.1b5: = specific_function %Function, @Function(%C) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Function = %Function.decl // CHECK:STDOUT: .CallGeneric = %CallGeneric.decl // CHECK:STDOUT: .CallGenericPtr = %CallGenericPtr.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .CallSpecific = %CallSpecific.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] { // CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)] // CHECK:STDOUT: %x.patt: @Function.%T.loc4_13.2 (%T) = binding_pattern x @@ -476,3 +495,9 @@ fn CallSpecific(x: C) -> C { // CHECK:STDOUT: %require_complete => constants.%complete_type // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon new file mode 100644 index 000000000000..1c70700cfc26 --- /dev/null +++ b/toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon @@ -0,0 +1,107 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/min_prelude/fail_type_param_mismatch.carbon + +fn F(T:! type, U:! type) { + var p: T*; + // CHECK:STDERR: fail_type_param_mismatch.carbon:[[@LINE+4]]:14: error: name `Core.ImplicitAs` implicitly referenced here, but not found [CoreNameNotFound] + // CHECK:STDERR: let n: U = *p; + // CHECK:STDERR: ^~ + // 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: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] +// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] +// CHECK:STDOUT: %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: %require_complete.b54: = require_complete_type %U [symbolic] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: .ImplicitAs = +// 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: .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.loc14_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_6.2 (constants.%T.patt)] +// CHECK:STDOUT: %U.patt.loc14_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc14_16.2 (constants.%U.patt)] +// CHECK:STDOUT: } { +// CHECK:STDOUT: %T.loc14_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %U.loc14_16.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_16.2 (constants.%U)] +// CHECK:STDOUT: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: generic fn @F(%T.loc14_6.1: type, %U.loc14_16.1: type) { +// CHECK:STDOUT: %T.loc14_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %T.patt.loc14_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_6.2 (constants.%T.patt)] +// CHECK:STDOUT: %U.loc14_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc14_16.2 (constants.%U)] +// CHECK:STDOUT: %U.patt.loc14_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc14_16.2 (constants.%U.patt)] +// CHECK:STDOUT: +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %ptr.loc15_11.2: type = ptr_type %T.loc14_6.2 [symbolic = %ptr.loc15_11.2 (constants.%ptr)] +// CHECK:STDOUT: %require_complete.loc15: = require_complete_type %ptr.loc15_11.2 [symbolic = %require_complete.loc15 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc20: = require_complete_type %U.loc14_16.2 [symbolic = %require_complete.loc20 (constants.%require_complete.b54)] +// CHECK:STDOUT: +// CHECK:STDOUT: fn() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %p.patt: @F.%ptr.loc15_11.2 (%ptr) = binding_pattern p +// CHECK:STDOUT: %.loc15_3: @F.%ptr.loc15_11.2 (%ptr) = var_pattern %p.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %p.var: ref @F.%ptr.loc15_11.2 (%ptr) = var p +// CHECK:STDOUT: %.loc15_11: type = splice_block %ptr.loc15_11.1 [symbolic = %ptr.loc15_11.2 (constants.%ptr)] { +// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %ptr.loc15_11.1: type = ptr_type %T.ref [symbolic = %ptr.loc15_11.2 (constants.%ptr)] +// CHECK:STDOUT: } +// CHECK:STDOUT: %p: ref @F.%ptr.loc15_11.2 (%ptr) = bind_name p, %p.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %n.patt: @F.%U.loc14_16.2 (%U) = binding_pattern n +// CHECK:STDOUT: } +// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc15_11.2 (%ptr) = name_ref p, %p +// CHECK:STDOUT: %.loc20_15: @F.%ptr.loc15_11.2 (%ptr) = bind_value %p.ref +// CHECK:STDOUT: %.loc20_14.1: ref @F.%T.loc14_6.2 (%T) = deref %.loc20_15 +// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc14_16.1 [symbolic = %U.loc14_16.2 (constants.%U)] +// CHECK:STDOUT: %.loc20_14.2: @F.%U.loc14_16.2 (%U) = converted %.loc20_14.1, [concrete = ] +// CHECK:STDOUT: %n: @F.%U.loc14_16.2 (%U) = bind_name n, +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @F(constants.%T, constants.%U) { +// CHECK:STDOUT: %T.loc14_6.2 => constants.%T +// CHECK:STDOUT: %T.patt.loc14_6.2 => constants.%T.patt +// CHECK:STDOUT: %U.loc14_16.2 => constants.%U +// CHECK:STDOUT: %U.patt.loc14_16.2 => constants.%U.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/min_prelude/type_param.carbon b/toolchain/check/testdata/function/generic/min_prelude/type_param.carbon new file mode 100644 index 000000000000..e2cfeb165d9d --- /dev/null +++ b/toolchain/check/testdata/function/generic/min_prelude/type_param.carbon @@ -0,0 +1,93 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/min_prelude/type_param.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/min_prelude/type_param.carbon + +fn F(T:! type) { + var p: T*; + let n: T = *p; +} + +// CHECK:STDOUT: --- type_param.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] +// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] +// CHECK:STDOUT: %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: %require_complete.4ae: = require_complete_type %T [symbolic] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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.loc14_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_6.2 (constants.%T.patt)] +// CHECK:STDOUT: } { +// CHECK:STDOUT: %T.loc14_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc14_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: %T.patt.loc14_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_6.2 (constants.%T.patt)] +// CHECK:STDOUT: +// CHECK:STDOUT: !definition: +// CHECK:STDOUT: %ptr.loc15_11.2: type = ptr_type %T.loc14_6.2 [symbolic = %ptr.loc15_11.2 (constants.%ptr)] +// CHECK:STDOUT: %require_complete.loc15: = require_complete_type %ptr.loc15_11.2 [symbolic = %require_complete.loc15 (constants.%require_complete.6e5)] +// CHECK:STDOUT: %require_complete.loc16: = require_complete_type %T.loc14_6.2 [symbolic = %require_complete.loc16 (constants.%require_complete.4ae)] +// CHECK:STDOUT: +// CHECK:STDOUT: fn() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %p.patt: @F.%ptr.loc15_11.2 (%ptr) = binding_pattern p +// CHECK:STDOUT: %.loc15_3: @F.%ptr.loc15_11.2 (%ptr) = var_pattern %p.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %p.var: ref @F.%ptr.loc15_11.2 (%ptr) = var p +// CHECK:STDOUT: %.loc15_11: type = splice_block %ptr.loc15_11.1 [symbolic = %ptr.loc15_11.2 (constants.%ptr)] { +// CHECK:STDOUT: %T.ref.loc15: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %ptr.loc15_11.1: type = ptr_type %T.ref.loc15 [symbolic = %ptr.loc15_11.2 (constants.%ptr)] +// CHECK:STDOUT: } +// CHECK:STDOUT: %p: ref @F.%ptr.loc15_11.2 (%ptr) = bind_name p, %p.var +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %n.patt: @F.%T.loc14_6.2 (%T) = binding_pattern n +// CHECK:STDOUT: } +// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc15_11.2 (%ptr) = name_ref p, %p +// CHECK:STDOUT: %.loc16_15: @F.%ptr.loc15_11.2 (%ptr) = bind_value %p.ref +// CHECK:STDOUT: %.loc16_14: ref @F.%T.loc14_6.2 (%T) = deref %.loc16_15 +// CHECK:STDOUT: %T.ref.loc16: type = name_ref T, %T.loc14_6.1 [symbolic = %T.loc14_6.2 (constants.%T)] +// CHECK:STDOUT: %n: ref @F.%T.loc14_6.2 (%T) = bind_name n, %.loc16_14 +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: specific @F(constants.%T) { +// CHECK:STDOUT: %T.loc14_6.2 => constants.%T +// CHECK:STDOUT: %T.patt.loc14_6.2 => constants.%T.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon b/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon deleted file mode 100644 index 7627516cab56..000000000000 --- a/toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon +++ /dev/null @@ -1,89 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/no_prelude/fail_type_param_mismatch.carbon - -fn F(T:! type, U:! type) { - var p: T*; - // CHECK:STDERR: fail_type_param_mismatch.carbon:[[@LINE+4]]:14: error: `Core.ImplicitAs` implicitly referenced here, but package `Core` not found [CoreNotFound] - // CHECK:STDERR: let n: U = *p; - // CHECK:STDERR: ^~ - // 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: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic] -// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic] -// CHECK:STDOUT: %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: %require_complete.b54: = require_complete_type %U [symbolic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %U.patt.loc11_16.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %U.loc11_16.1: type = bind_symbolic_name U, 1 [symbolic = %U.loc11_16.2 (constants.%U)] -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc11_6.1: type, %U.loc11_16.1: type) { -// CHECK:STDOUT: %T.loc11_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %T.patt.loc11_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: %U.loc11_16.2: type = bind_symbolic_name U, 1 [symbolic = %U.loc11_16.2 (constants.%U)] -// CHECK:STDOUT: %U.patt.loc11_16.2: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc11_16.2 (constants.%U.patt)] -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ptr.loc12_11.2: type = ptr_type %T.loc11_6.2 [symbolic = %ptr.loc12_11.2 (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc12: = require_complete_type %ptr.loc12_11.2 [symbolic = %require_complete.loc12 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc17: = require_complete_type %U.loc11_16.2 [symbolic = %require_complete.loc17 (constants.%require_complete.b54)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %p.patt: @F.%ptr.loc12_11.2 (%ptr) = binding_pattern p -// CHECK:STDOUT: %.loc12_3: @F.%ptr.loc12_11.2 (%ptr) = var_pattern %p.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.var: ref @F.%ptr.loc12_11.2 (%ptr) = var p -// CHECK:STDOUT: %.loc12_11: type = splice_block %ptr.loc12_11.1 [symbolic = %ptr.loc12_11.2 (constants.%ptr)] { -// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_11.1: type = ptr_type %T.ref [symbolic = %ptr.loc12_11.2 (constants.%ptr)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref @F.%ptr.loc12_11.2 (%ptr) = bind_name p, %p.var -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %n.patt: @F.%U.loc11_16.2 (%U) = binding_pattern n -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc12_11.2 (%ptr) = name_ref p, %p -// CHECK:STDOUT: %.loc17_15: @F.%ptr.loc12_11.2 (%ptr) = bind_value %p.ref -// CHECK:STDOUT: %.loc17_14.1: ref @F.%T.loc11_6.2 (%T) = deref %.loc17_15 -// CHECK:STDOUT: %U.ref: type = name_ref U, %U.loc11_16.1 [symbolic = %U.loc11_16.2 (constants.%U)] -// CHECK:STDOUT: %.loc17_14.2: @F.%U.loc11_16.2 (%U) = converted %.loc17_14.1, [concrete = ] -// CHECK:STDOUT: %n: @F.%U.loc11_16.2 (%U) = bind_name n, -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T, constants.%U) { -// CHECK:STDOUT: %T.loc11_6.2 => constants.%T -// CHECK:STDOUT: %T.patt.loc11_6.2 => constants.%T.patt -// CHECK:STDOUT: %U.loc11_16.2 => constants.%U -// CHECK:STDOUT: %U.patt.loc11_16.2 => constants.%U.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon b/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon deleted file mode 100644 index f4a81654d929..000000000000 --- a/toolchain/check/testdata/function/generic/no_prelude/type_param.carbon +++ /dev/null @@ -1,76 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/function/generic/no_prelude/type_param.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/function/generic/no_prelude/type_param.carbon - -fn F(T:! type) { - var p: T*; - let n: T = *p; -} - -// CHECK:STDOUT: --- type_param.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic] -// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic] -// CHECK:STDOUT: %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: %require_complete.4ae: = require_complete_type %T [symbolic] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .F = %F.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc11_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: } { -// CHECK:STDOUT: %T.loc11_6.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc11_6.1: type) { -// CHECK:STDOUT: %T.loc11_6.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %T.patt.loc11_6.2: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_6.2 (constants.%T.patt)] -// CHECK:STDOUT: -// CHECK:STDOUT: !definition: -// CHECK:STDOUT: %ptr.loc12_11.2: type = ptr_type %T.loc11_6.2 [symbolic = %ptr.loc12_11.2 (constants.%ptr)] -// CHECK:STDOUT: %require_complete.loc12: = require_complete_type %ptr.loc12_11.2 [symbolic = %require_complete.loc12 (constants.%require_complete.6e5)] -// CHECK:STDOUT: %require_complete.loc13: = require_complete_type %T.loc11_6.2 [symbolic = %require_complete.loc13 (constants.%require_complete.4ae)] -// CHECK:STDOUT: -// CHECK:STDOUT: fn() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %p.patt: @F.%ptr.loc12_11.2 (%ptr) = binding_pattern p -// CHECK:STDOUT: %.loc12_3: @F.%ptr.loc12_11.2 (%ptr) = var_pattern %p.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.var: ref @F.%ptr.loc12_11.2 (%ptr) = var p -// CHECK:STDOUT: %.loc12_11: type = splice_block %ptr.loc12_11.1 [symbolic = %ptr.loc12_11.2 (constants.%ptr)] { -// CHECK:STDOUT: %T.ref.loc12: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %ptr.loc12_11.1: type = ptr_type %T.ref.loc12 [symbolic = %ptr.loc12_11.2 (constants.%ptr)] -// CHECK:STDOUT: } -// CHECK:STDOUT: %p: ref @F.%ptr.loc12_11.2 (%ptr) = bind_name p, %p.var -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %n.patt: @F.%T.loc11_6.2 (%T) = binding_pattern n -// CHECK:STDOUT: } -// CHECK:STDOUT: %p.ref: ref @F.%ptr.loc12_11.2 (%ptr) = name_ref p, %p -// CHECK:STDOUT: %.loc13_15: @F.%ptr.loc12_11.2 (%ptr) = bind_value %p.ref -// CHECK:STDOUT: %.loc13_14: ref @F.%T.loc11_6.2 (%T) = deref %.loc13_15 -// CHECK:STDOUT: %T.ref.loc13: type = name_ref T, %T.loc11_6.1 [symbolic = %T.loc11_6.2 (constants.%T)] -// CHECK:STDOUT: %n: ref @F.%T.loc11_6.2 (%T) = bind_name n, %.loc13_14 -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc11_6.2 => constants.%T -// CHECK:STDOUT: %T.patt.loc11_6.2 => constants.%T.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon b/toolchain/check/testdata/impl/lookup/min_prelude/impl_forall.carbon similarity index 98% rename from toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon rename to toolchain/check/testdata/impl/lookup/min_prelude/impl_forall.carbon index b0d3b0616acd..ffc453ad7796 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +++ b/toolchain/check/testdata/impl/lookup/min_prelude/impl_forall.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/lookup/min_prelude/impl_forall.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/lookup/no_prelude/impl_forall.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/lookup/min_prelude/impl_forall.carbon // --- impl_forall.carbon library "[[@TEST_NAME]]"; @@ -124,13 +127,21 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %empty_struct: %empty_struct_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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: .TestGeneric = %TestGeneric.decl // CHECK:STDOUT: .TestSpecific = %TestSpecific.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: %A.type = class_decl @A [concrete = constants.%A.generic] { // CHECK:STDOUT: %T.patt.loc3_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc3_9.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -568,3 +579,9 @@ fn TestSpecific(a: A({})) -> {} { // CHECK:STDOUT: %A.elem => constants.%A.elem.2af // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon b/toolchain/check/testdata/impl/lookup/min_prelude/import.carbon similarity index 95% rename from toolchain/check/testdata/impl/lookup/no_prelude/import.carbon rename to toolchain/check/testdata/impl/lookup/min_prelude/import.carbon index dc1d4391d420..484f690df068 100644 --- a/toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +++ b/toolchain/check/testdata/impl/lookup/min_prelude/import.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/lookup/min_prelude/import.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/lookup/no_prelude/import.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/lookup/min_prelude/import.carbon // --- package_a.carbon @@ -238,11 +241,19 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, (%HasF.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .HasF = %HasF.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {} // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: impl_decl @impl [concrete] {} { @@ -355,6 +366,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [concrete] { // CHECK:STDOUT: .C = %PackageA.C // CHECK:STDOUT: .HasF = %PackageA.HasF @@ -362,20 +376,22 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type] -// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded // CHECK:STDOUT: %PackageA.F: %F.type.dbc = import_ref PackageA//default, F, loaded [concrete = constants.%F.a2b] -// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self.cf3] +// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self.cf3] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageA = imports.%PackageA // CHECK:STDOUT: .HasG = %HasG.decl // CHECK:STDOUT: .D = %D.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageA.import = import PackageA // CHECK:STDOUT: %HasG.decl: type = interface_decl @HasG [concrete = constants.%HasG.type] {} {} // CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {} @@ -569,6 +585,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [concrete] { // CHECK:STDOUT: .C = %PackageA.C // CHECK:STDOUT: .HasF = %PackageA.HasF @@ -576,12 +595,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type] -// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self] +// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: %PackageA.import_ref.c12: = import_ref PackageA//default, loc11_16, loaded [concrete = constants.%HasF.impl_witness] // CHECK:STDOUT: %PackageA.import_ref.29a: type = import_ref PackageA//default, loc11_6, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [concrete = constants.%HasF.type] @@ -589,9 +608,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageA = imports.%PackageA // CHECK:STDOUT: .TestCF = %TestCF.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageA.import = import PackageA // CHECK:STDOUT: %TestCF.decl: %TestCF.type = fn_decl @TestCF [concrete = constants.%TestCF] { // CHECK:STDOUT: %c.patt: %C = binding_pattern c @@ -677,6 +698,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [concrete] { // CHECK:STDOUT: .HasF = %PackageA.HasF // CHECK:STDOUT: import PackageA//default @@ -687,18 +711,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %PackageB.D: type = import_ref PackageB//default, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.8f2: = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst42 [no loc], unloaded // CHECK:STDOUT: %PackageA.HasF: type = import_ref PackageA//default, HasF, loaded [concrete = constants.%HasF.type] -// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.b36: %HasF.assoc_type = import_ref PackageA//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded -// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst17 [no loc], loaded [symbolic = constants.%Self.cf3] +// CHECK:STDOUT: %PackageA.import_ref.e73: %HasF.type = import_ref PackageA//default, inst19 [no loc], loaded [symbolic = constants.%Self.cf3] // CHECK:STDOUT: %PackageA.import_ref.5cd = import_ref PackageA//default, loc11_16, unloaded // CHECK:STDOUT: %PackageA.import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.29a: type = import_ref PackageA//default, loc11_6, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.e8c: type = import_ref PackageA//default, loc11_11, loaded [concrete = constants.%HasF.type] -// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst21 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.910 = import_ref PackageB//default, loc7_21, unloaded // CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded // CHECK:STDOUT: %PackageB.import_ref.ea7 = import_ref PackageB//default, loc13_25, unloaded @@ -714,10 +738,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageA = imports.%PackageA // CHECK:STDOUT: .PackageB = imports.%PackageB // CHECK:STDOUT: .TestDF = %TestDF.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageA.import = import PackageA // CHECK:STDOUT: %PackageB.import = import PackageB // CHECK:STDOUT: %TestDF.decl: %TestDF.type = fn_decl @TestDF [concrete = constants.%TestDF] { @@ -833,6 +859,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageA: = namespace file.%PackageA.import, [concrete] { // CHECK:STDOUT: .C = %PackageA.C // CHECK:STDOUT: import PackageA//default @@ -843,13 +872,13 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %PackageA.C: type = import_ref PackageA//default, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageA.import_ref.8f2: = import_ref PackageA//default, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst38 [no loc], unloaded +// CHECK:STDOUT: %PackageA.import_ref.2c4 = import_ref PackageA//default, inst40 [no loc], unloaded // CHECK:STDOUT: %PackageB.HasG: type = import_ref PackageB//default, HasG, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst21 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst19 [no loc], loaded [symbolic = constants.%Self.fcb] -// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst21 [no loc], loaded [symbolic = constants.%Self.fcb] +// CHECK:STDOUT: %PackageA.import_ref.28c = import_ref PackageA//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageA.import_ref.c63 = import_ref PackageA//default, loc5_21, unloaded // CHECK:STDOUT: %PackageA.F = import_ref PackageA//default, F, unloaded // CHECK:STDOUT: %PackageA.import_ref.5cd = import_ref PackageA//default, loc11_16, unloaded @@ -860,7 +889,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageB.import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [concrete = constants.%HasG.type] // CHECK:STDOUT: %PackageB.import_ref.5ba = import_ref PackageB//default, loc18_25, unloaded // CHECK:STDOUT: %PackageB.import_ref.8f2: = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst42 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.aa9f8a.1: type = import_ref PackageB//default, loc18_6, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.831: type = import_ref PackageB//default, loc18_19, loaded [concrete = constants.%HasF.type] // CHECK:STDOUT: %PackageB.import_ref.569 = import_ref PackageB//default, loc23_16, unloaded @@ -870,10 +899,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageA = imports.%PackageA // CHECK:STDOUT: .PackageB = imports.%PackageB // CHECK:STDOUT: .TestCG = %TestCG.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageA.import = import PackageA // CHECK:STDOUT: %PackageB.import = import PackageB // CHECK:STDOUT: %TestCG.decl: %TestCG.type = fn_decl @TestCG [concrete = constants.%TestCG] { @@ -989,6 +1020,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageB: = namespace file.%PackageB.import, [concrete] { // CHECK:STDOUT: .D = %PackageB.D // CHECK:STDOUT: .HasG = %PackageB.HasG @@ -996,19 +1030,19 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: %PackageB.D: type = import_ref PackageB//default, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %PackageB.import_ref.8f2: = import_ref PackageB//default, loc10_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst40 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.cab = import_ref PackageB//default, inst42 [no loc], unloaded // CHECK:STDOUT: %PackageB.HasG: type = import_ref PackageB//default, HasG, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst19 [no loc], unloaded +// CHECK:STDOUT: %PackageB.import_ref.5d8 = import_ref PackageB//default, inst21 [no loc], unloaded // CHECK:STDOUT: %PackageB.import_ref.6c2: %HasG.assoc_type = import_ref PackageB//default, loc7_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageB.G = import_ref PackageB//default, G, unloaded -// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst19 [no loc], loaded [symbolic = constants.%Self.fcb] +// CHECK:STDOUT: %PackageB.import_ref.ef5: %HasG.type = import_ref PackageB//default, inst21 [no loc], loaded [symbolic = constants.%Self.fcb] // CHECK:STDOUT: %PackageB.import_ref.ea7 = import_ref PackageB//default, loc13_25, unloaded -// CHECK:STDOUT: %PackageB.import_ref.8db: = import_ref PackageB//default, inst49 [indirect], loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageB.import_ref.6a9 = import_ref PackageB//default, inst50 [indirect], unloaded +// CHECK:STDOUT: %PackageB.import_ref.8db: = import_ref PackageB//default, inst51 [indirect], loaded [concrete = constants.%complete_type] +// CHECK:STDOUT: %PackageB.import_ref.6a9 = import_ref PackageB//default, inst52 [indirect], unloaded // CHECK:STDOUT: %PackageB.import_ref.dfb: type = import_ref PackageB//default, loc13_14, loaded [concrete = constants.%C] // CHECK:STDOUT: %PackageB.import_ref.cee586.1: type = import_ref PackageB//default, loc13_20, loaded [concrete = constants.%HasG.type] -// CHECK:STDOUT: %PackageB.import_ref.96f = import_ref PackageB//default, inst74 [indirect], unloaded -// CHECK:STDOUT: %PackageB.import_ref.a0b = import_ref PackageB//default, inst75 [indirect], unloaded +// CHECK:STDOUT: %PackageB.import_ref.96f = import_ref PackageB//default, inst76 [indirect], unloaded +// CHECK:STDOUT: %PackageB.import_ref.a0b = import_ref PackageB//default, inst77 [indirect], unloaded // CHECK:STDOUT: %PackageB.F = import_ref PackageB//default, F, unloaded // CHECK:STDOUT: %PackageB.import_ref.5ba = import_ref PackageB//default, loc18_25, unloaded // CHECK:STDOUT: %PackageB.import_ref.aa9f8a.1: type = import_ref PackageB//default, loc18_6, loaded [concrete = constants.%D] @@ -1020,9 +1054,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageB = imports.%PackageB // CHECK:STDOUT: .TestDG = %TestDG.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageB.import = import PackageB // CHECK:STDOUT: %TestDG.decl: %TestDG.type = fn_decl @TestDG [concrete = constants.%TestDG] { // CHECK:STDOUT: %d.patt: %D = binding_pattern d @@ -1123,10 +1159,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %Z.facet: %Z.type = facet_value %empty_tuple.type, (%Z.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Z = %Z.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: impl_decl @impl [concrete] {} { // CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal () @@ -1218,15 +1262,18 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageAssociatedInterface: = namespace file.%PackageAssociatedInterface.import, [concrete] { // CHECK:STDOUT: .Z = %PackageAssociatedInterface.Z // CHECK:STDOUT: import PackageAssociatedInterface//default // CHECK:STDOUT: } // CHECK:STDOUT: %PackageAssociatedInterface.Z: type = import_ref PackageAssociatedInterface//default, Z, loaded [concrete = constants.%Z.type] -// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.f88 = import_ref PackageAssociatedInterface//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.f88 = import_ref PackageAssociatedInterface//default, inst19 [no loc], unloaded // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.609: %Z.assoc_type = import_ref PackageAssociatedInterface//default, loc5_21, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageAssociatedInterface.H = import_ref PackageAssociatedInterface//default, H, unloaded -// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d26: %Z.type = import_ref PackageAssociatedInterface//default, inst17 [no loc], loaded [symbolic = constants.%Self] +// CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d26: %Z.type = import_ref PackageAssociatedInterface//default, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.d8c: = import_ref PackageAssociatedInterface//default, loc8_14, loaded [concrete = constants.%Z.impl_witness] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.e5c: type = import_ref PackageAssociatedInterface//default, loc8_7, loaded [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: %PackageAssociatedInterface.import_ref.df1: type = import_ref PackageAssociatedInterface//default, loc8_12, loaded [concrete = constants.%Z.type] @@ -1234,9 +1281,11 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageAssociatedInterface = imports.%PackageAssociatedInterface // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageAssociatedInterface.import = import PackageAssociatedInterface // CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [concrete = constants.%J] {} {} // CHECK:STDOUT: } @@ -1303,11 +1352,19 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .AnyParam = %AnyParam.decl // CHECK:STDOUT: .Y = %Y.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %AnyParam.decl: %AnyParam.type = class_decl @AnyParam [concrete = constants.%AnyParam.generic] { // CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)] // CHECK:STDOUT: %X.patt.loc4_26.1: @AnyParam.%T.loc4_16.2 (%T) = symbolic_binding_pattern X, 1 [symbolic = %X.patt.loc4_26.2 (constants.%X.patt)] @@ -1423,6 +1480,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [concrete] { // CHECK:STDOUT: .AnyParam = %PackageHasParam.AnyParam // CHECK:STDOUT: .Y = %PackageHasParam.Y @@ -1432,20 +1492,22 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst41 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1] -// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst39 [no loc], loaded [symbolic = constants.%Self.f64] +// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst41 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageHasParam = imports.%PackageHasParam // CHECK:STDOUT: .GenericInterface = %GenericInterface.decl // CHECK:STDOUT: .L = %L.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageHasParam.import = import PackageHasParam // CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.c92 = interface_decl @GenericInterface [concrete = constants.%GenericInterface.generic] { // CHECK:STDOUT: %U.patt.loc6_28.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_28.2 (constants.%U.patt)] @@ -1636,6 +1698,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [concrete] { // CHECK:STDOUT: .AnyParam = %PackageHasParam.AnyParam // CHECK:STDOUT: .Y = %PackageHasParam.Y @@ -1649,15 +1714,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %PackageGenericInterface.GenericInterface: %GenericInterface.type.0da = import_ref PackageGenericInterface//default, GenericInterface, loaded [concrete = constants.%GenericInterface.generic] // CHECK:STDOUT: %PackageGenericInterface.import_ref.5ab: type = import_ref PackageGenericInterface//default, loc6_28, loaded [symbolic = @GenericInterface.%U (constants.%U)] -// CHECK:STDOUT: %PackageGenericInterface.import_ref.c3b = import_ref PackageGenericInterface//default, inst28 [no loc], unloaded +// CHECK:STDOUT: %PackageGenericInterface.import_ref.c3b = import_ref PackageGenericInterface//default, inst30 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst41 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded -// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst39 [no loc], loaded [symbolic = constants.%Self.f64] +// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst41 [no loc], loaded [symbolic = constants.%Self.f64] // CHECK:STDOUT: %PackageGenericInterface.import_ref.53c: = import_ref PackageGenericInterface//default, loc8_70, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericInterface.import_ref.321: type = import_ref PackageGenericInterface//default, loc8_47, loaded [concrete = constants.%AnyParam.861] // CHECK:STDOUT: %PackageGenericInterface.import_ref.ca6: type = import_ref PackageGenericInterface//default, loc8_67, loaded [concrete = constants.%Y.type] @@ -1665,10 +1730,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageHasParam = imports.%PackageHasParam // CHECK:STDOUT: .PackageGenericInterface = imports.%PackageGenericInterface // CHECK:STDOUT: .M = %M.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageHasParam.import = import PackageHasParam // CHECK:STDOUT: %PackageGenericInterface.import = import PackageGenericInterface // CHECK:STDOUT: %M.decl: %M.type = fn_decl @M [concrete = constants.%M] {} {} @@ -1825,6 +1892,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [concrete] { // CHECK:STDOUT: .AnyParam = %PackageHasParam.AnyParam // CHECK:STDOUT: .Y = %PackageHasParam.Y @@ -1834,20 +1904,22 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst41 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageHasParam.K: %K.type.311 = import_ref PackageHasParam//default, K, loaded [concrete = constants.%K.7a1] -// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst39 [no loc], loaded [symbolic = constants.%Self] +// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst41 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageHasParam = imports.%PackageHasParam // CHECK:STDOUT: .GenericClass = %GenericClass.decl // CHECK:STDOUT: .L = %L.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageHasParam.import = import PackageHasParam // CHECK:STDOUT: %GenericClass.decl: %GenericClass.type = class_decl @GenericClass [concrete = constants.%GenericClass.generic] { // CHECK:STDOUT: %U.patt.loc6_20.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_20.2 (constants.%U.patt)] @@ -2033,6 +2105,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %PackageHasParam: = namespace file.%PackageHasParam.import, [concrete] { // CHECK:STDOUT: .AnyParam = %PackageHasParam.AnyParam // CHECK:STDOUT: .Y = %PackageHasParam.Y @@ -2046,16 +2121,16 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %PackageHasParam.import_ref.5ab: type = import_ref PackageHasParam//default, loc4_16, loaded [symbolic = @AnyParam.%T (constants.%T)] // CHECK:STDOUT: %PackageHasParam.import_ref.34c: @AnyParam.%T (%T) = import_ref PackageHasParam//default, loc4_26, loaded [symbolic = @AnyParam.%X (constants.%X)] // CHECK:STDOUT: %PackageHasParam.import_ref.8f2: = import_ref PackageHasParam//default, loc4_34, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst32 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.601 = import_ref PackageHasParam//default, inst34 [no loc], unloaded // CHECK:STDOUT: %PackageGenericClass.GenericClass: %GenericClass.type = import_ref PackageGenericClass//default, GenericClass, loaded [concrete = constants.%GenericClass.generic] // CHECK:STDOUT: %PackageGenericClass.import_ref.5ab: type = import_ref PackageGenericClass//default, loc6_20, loaded [symbolic = @GenericClass.%U (constants.%U)] // CHECK:STDOUT: %PackageGenericClass.import_ref.8f2: = import_ref PackageGenericClass//default, loc6_31, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %PackageGenericClass.import_ref.065 = import_ref PackageGenericClass//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %PackageGenericClass.import_ref.065 = import_ref PackageGenericClass//default, inst29 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.Y: type = import_ref PackageHasParam//default, Y, loaded [concrete = constants.%Y.type] -// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %PackageHasParam.import_ref.dc1 = import_ref PackageHasParam//default, inst41 [no loc], unloaded // CHECK:STDOUT: %PackageHasParam.import_ref.f69: %Y.assoc_type = import_ref PackageHasParam//default, loc7_22, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %PackageHasParam.K = import_ref PackageHasParam//default, K, unloaded -// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst39 [no loc], loaded [symbolic = constants.%Self] +// CHECK:STDOUT: %PackageHasParam.import_ref.292: %Y.type = import_ref PackageHasParam//default, inst41 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: %PackageGenericClass.import_ref.246: = import_ref PackageGenericClass//default, loc8_66, loaded [concrete = constants.%Y.impl_witness] // CHECK:STDOUT: %PackageGenericClass.import_ref.a0e: type = import_ref PackageGenericClass//default, loc8_43, loaded [concrete = constants.%AnyParam.d71] // CHECK:STDOUT: %PackageGenericClass.import_ref.ca6: type = import_ref PackageGenericClass//default, loc8_63, loaded [concrete = constants.%Y.type] @@ -2063,10 +2138,12 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .PackageHasParam = imports.%PackageHasParam // CHECK:STDOUT: .PackageGenericClass = imports.%PackageGenericClass // CHECK:STDOUT: .M = %M.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %PackageHasParam.import = import PackageHasParam // CHECK:STDOUT: %PackageGenericClass.import = import PackageGenericClass // CHECK:STDOUT: %M.decl: %M.type = fn_decl @M [concrete = constants.%M] {} {} @@ -2224,8 +2301,15 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %I.facet: %I.type = facet_value %C.69b, (%I.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Extra1 = %Extra1.decl // CHECK:STDOUT: .Extra2 = %Extra2.decl // CHECK:STDOUT: .Extra3 = %Extra3.decl @@ -2237,6 +2321,7 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Extra1.decl: type = interface_decl @Extra1 [concrete = constants.%Extra1.type] {} {} // CHECK:STDOUT: %Extra2.decl: type = interface_decl @Extra2 [concrete = constants.%Extra2.type] {} {} // CHECK:STDOUT: %Extra3.decl: type = interface_decl @Extra3 [concrete = constants.%Extra3.type] {} {} @@ -2451,6 +2536,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %HasExtraInterfaces: = namespace file.%HasExtraInterfaces.import, [concrete] { // CHECK:STDOUT: .C = %HasExtraInterfaces.C // CHECK:STDOUT: .I = %HasExtraInterfaces.I @@ -2459,30 +2547,32 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: %HasExtraInterfaces.C: %C.type = import_ref HasExtraInterfaces//default, C, loaded [concrete = constants.%C.generic] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.5ab: type = import_ref HasExtraInterfaces//default, loc13_9, loaded [symbolic = @C.%T (constants.%T)] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.8f2: = import_ref HasExtraInterfaces//default, loc13_20, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.4c0 = import_ref HasExtraInterfaces//default, inst57 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.4c0 = import_ref HasExtraInterfaces//default, inst59 [no loc], unloaded // CHECK:STDOUT: %HasExtraInterfaces.I: type = import_ref HasExtraInterfaces//default, I, loaded [concrete = constants.%I.type] -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.e5d = import_ref HasExtraInterfaces//default, inst64 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.e5d = import_ref HasExtraInterfaces//default, inst66 [no loc], unloaded // CHECK:STDOUT: %HasExtraInterfaces.import_ref.be9: %I.assoc_type = import_ref HasExtraInterfaces//default, loc14_33, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %HasExtraInterfaces.F = import_ref HasExtraInterfaces//default, F, unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.1db: %I.type = import_ref HasExtraInterfaces//default, inst64 [no loc], loaded [symbolic = constants.%Self.013] +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.1db: %I.type = import_ref HasExtraInterfaces//default, inst66 [no loc], loaded [symbolic = constants.%Self.013] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.bca = import_ref HasExtraInterfaces//default, loc16_79, unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.9c8 = import_ref HasExtraInterfaces//default, inst45 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.dfe = import_ref HasExtraInterfaces//default, inst41 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.6b6 = import_ref HasExtraInterfaces//default, inst37 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.576 = import_ref HasExtraInterfaces//default, inst33 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.0dd = import_ref HasExtraInterfaces//default, inst29 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.f83 = import_ref HasExtraInterfaces//default, inst25 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.975 = import_ref HasExtraInterfaces//default, inst21 [no loc], unloaded -// CHECK:STDOUT: %HasExtraInterfaces.import_ref.a3c = import_ref HasExtraInterfaces//default, inst17 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.9c8 = import_ref HasExtraInterfaces//default, inst47 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.dfe = import_ref HasExtraInterfaces//default, inst43 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.6b6 = import_ref HasExtraInterfaces//default, inst39 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.576 = import_ref HasExtraInterfaces//default, inst35 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.0dd = import_ref HasExtraInterfaces//default, inst31 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.f83 = import_ref HasExtraInterfaces//default, inst27 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.975 = import_ref HasExtraInterfaces//default, inst23 [no loc], unloaded +// CHECK:STDOUT: %HasExtraInterfaces.import_ref.a3c = import_ref HasExtraInterfaces//default, inst19 [no loc], unloaded // CHECK:STDOUT: %HasExtraInterfaces.import_ref.aa8: type = import_ref HasExtraInterfaces//default, loc16_72, loaded [concrete = constants.%C.074] // CHECK:STDOUT: %HasExtraInterfaces.import_ref.301: type = import_ref HasExtraInterfaces//default, loc16_77, loaded [concrete = constants.%I.type] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .HasExtraInterfaces = imports.%HasExtraInterfaces // CHECK:STDOUT: .Test = %Test.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %HasExtraInterfaces.import = import HasExtraInterfaces // CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [concrete = constants.%Test] { // CHECK:STDOUT: %c.patt: %C.42e = binding_pattern c @@ -2612,3 +2702,9 @@ fn Test(c: HasExtraInterfaces.C(type)) { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/fail_extend_impl_scope.carbon b/toolchain/check/testdata/impl/min_prelude/fail_extend_impl_scope.carbon similarity index 90% rename from toolchain/check/testdata/impl/no_prelude/fail_extend_impl_scope.carbon rename to toolchain/check/testdata/impl/min_prelude/fail_extend_impl_scope.carbon index 6ad92d86af12..a158432a93fa 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_extend_impl_scope.carbon +++ b/toolchain/check/testdata/impl/min_prelude/fail_extend_impl_scope.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/no_prelude/fail_extend_impl_scope.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/min_prelude/fail_extend_impl_scope.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/no_prelude/fail_extend_impl_scope.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/min_prelude/fail_extend_impl_scope.carbon // --- fail_extend_impl_file_scope.carbon library "[[@TEST_NAME]]"; @@ -69,10 +72,18 @@ fn F() { // CHECK:STDOUT: %I.impl_witness: = impl_witness file.%I.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @impl [concrete] {} { // CHECK:STDOUT: %.loc9_14.1: %empty_tuple.type = tuple_literal () @@ -107,11 +118,19 @@ fn F() { // CHECK:STDOUT: %J.impl_witness: = impl_witness @F.%J.impl_witness_table [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .J = %J.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} // CHECK:STDOUT: } @@ -166,12 +185,20 @@ fn F() { // CHECK:STDOUT: %.766: type = fn_type_with_self_type %Zero.type.822, %Z.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Z = %Z.decl // CHECK:STDOUT: .Point = %Point.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: %Point.decl: type = class_decl @Point [concrete = constants.%Point] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -281,3 +308,9 @@ fn F() { // CHECK:STDOUT: // CHECK:STDOUT: specific @Zero.1(constants.%Z.facet) {} // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/fail_impl_as_scope.carbon b/toolchain/check/testdata/impl/min_prelude/fail_impl_as_scope.carbon similarity index 94% rename from toolchain/check/testdata/impl/no_prelude/fail_impl_as_scope.carbon rename to toolchain/check/testdata/impl/min_prelude/fail_impl_as_scope.carbon index 852ae9041b69..cd1d2365ccbc 100644 --- a/toolchain/check/testdata/impl/no_prelude/fail_impl_as_scope.carbon +++ b/toolchain/check/testdata/impl/min_prelude/fail_impl_as_scope.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/no_prelude/fail_impl_as_scope.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/min_prelude/fail_impl_as_scope.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/no_prelude/fail_impl_as_scope.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/min_prelude/fail_impl_as_scope.carbon // --- fail_impl_as_file_scope.carbon library "[[@TEST_NAME]]"; @@ -107,12 +110,20 @@ class X { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: impl_decl @impl [concrete] {} { @@ -159,12 +170,20 @@ class X { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -234,12 +253,20 @@ class X { // CHECK:STDOUT: %.462: type = fn_type_with_self_type %Method.type.f12, %Z.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Z = %Z.decl // CHECK:STDOUT: .Point = %Point.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {} // CHECK:STDOUT: %Point.decl: type = class_decl @Point [concrete = constants.%Point] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {} @@ -460,13 +487,21 @@ class X { // 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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .X = %X.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {} // CHECK:STDOUT: %C.decl: type = interface_decl @C [concrete = constants.%C.type] {} {} // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {} @@ -549,3 +584,9 @@ class X { // CHECK:STDOUT: // CHECK:STDOUT: specific @B.1(constants.%A.facet) {} // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon b/toolchain/check/testdata/impl/min_prelude/generic_redeclaration.carbon similarity index 96% rename from toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon rename to toolchain/check/testdata/impl/min_prelude/generic_redeclaration.carbon index 073315d3bba5..6e7ca3099179 100644 --- a/toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon +++ b/toolchain/check/testdata/impl/min_prelude/generic_redeclaration.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/min_prelude/generic_redeclaration.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/no_prelude/generic_redeclaration.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/min_prelude/generic_redeclaration.carbon // --- same_self_and_interface.carbon @@ -120,14 +123,22 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %Interface.impl_witness.e9d: = impl_witness file.%Interface.impl_witness_table.loc14, @impl.9e6(%T.1d2) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Interface = %Interface.decl // CHECK:STDOUT: .I = %I.decl // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: .K = %K.decl // CHECK:STDOUT: .L = %L.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} @@ -369,11 +380,19 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %J.impl_witness.a529f4.2: = impl_witness file.%J.impl_witness_table.loc15, @impl.bfd509.2(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .I = %I.decl // CHECK:STDOUT: .J = %J.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {} // CHECK:STDOUT: impl_decl @impl.bfd509.1 [concrete] { @@ -477,11 +496,19 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %I.impl_witness.215123.2: = impl_witness file.%I.impl_witness_table.loc14 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {} // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @impl.7704ae.1 [concrete] {} { @@ -546,10 +573,18 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: %C.specific_fn: = specific_function %C, @C(%T) [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: impl_decl @impl.2caff2.1 [concrete] { // CHECK:STDOUT: %T.patt.loc4_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)] @@ -732,3 +767,9 @@ impl forall [T:! type] T as I { // CHECK:STDOUT: // CHECK:STDOUT: specific @C(@D.%T) {} // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/import_self.carbon b/toolchain/check/testdata/impl/min_prelude/import_self.carbon similarity index 93% rename from toolchain/check/testdata/impl/no_prelude/import_self.carbon rename to toolchain/check/testdata/impl/min_prelude/import_self.carbon index d5c06c36676c..00d3e234a348 100644 --- a/toolchain/check/testdata/impl/no_prelude/import_self.carbon +++ b/toolchain/check/testdata/impl/min_prelude/import_self.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/no_prelude/import_self.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/min_prelude/import_self.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/no_prelude/import_self.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/min_prelude/import_self.carbon // --- a.carbon @@ -42,10 +45,18 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Add = %Add.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Add.decl: type = interface_decl @Add [concrete = constants.%Add.type] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -122,17 +133,22 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: // CHECK:STDOUT: imports { // CHECK:STDOUT: %Main.Add: type = import_ref Main//a, Add, loaded [concrete = constants.%Add.type] -// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst17 [no loc], unloaded +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } +// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst19 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.f99: %Add.assoc_type = import_ref Main//a, loc5_41, loaded [concrete = constants.%assoc0] // CHECK:STDOUT: %Main.Op: %Op.type.31b = import_ref Main//a, Op, loaded [concrete = constants.%Op.d59] -// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst17 [no loc], loaded [symbolic = constants.%Self] +// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst19 [no loc], loaded [symbolic = constants.%Self] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { // CHECK:STDOUT: .Add = imports.%Main.Add +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %default.import = import // CHECK:STDOUT: impl_decl @impl [concrete] {} { // CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal () @@ -241,3 +257,9 @@ fn F(x: (), y: ()) -> () { // CHECK:STDOUT: %Self.as_type => constants.%empty_tuple.type // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon b/toolchain/check/testdata/impl/min_prelude/interface_args.carbon similarity index 97% rename from toolchain/check/testdata/impl/no_prelude/interface_args.carbon rename to toolchain/check/testdata/impl/min_prelude/interface_args.carbon index 6fd517fd16c0..671a39851a71 100644 --- a/toolchain/check/testdata/impl/no_prelude/interface_args.carbon +++ b/toolchain/check/testdata/impl/min_prelude/interface_args.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/no_prelude/interface_args.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/impl/min_prelude/interface_args.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/no_prelude/interface_args.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/impl/min_prelude/interface_args.carbon // --- core.carbon package Core; @@ -232,14 +235,22 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %.584: type = fn_type_with_self_type %Op.type.54d, %Action.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Action = %Action.decl // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: .C = %C.decl // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Action.decl: %Action.type.29c = interface_decl @Action [concrete = constants.%Action.generic] { // CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -450,20 +461,23 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.B: type = import_ref Main//action, B, loaded [concrete = constants.%B] // CHECK:STDOUT: %Main.C = import_ref Main//action, C, unloaded // CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst61 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst63 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst28 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c55: @Action.%Action.assoc_type (%Action.assoc_type.32e) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.f18741.2)] // CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded // CHECK:STDOUT: %Main.import_ref.995: = import_ref Main//action, loc12_21, loaded [concrete = constants.%Action.impl_witness] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst55 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst57 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0] // CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_23, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] +// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst28 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] // CHECK:STDOUT: %Main.import_ref.0e3753.1 = import_ref Main//action, loc5_22, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -474,10 +488,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .B = imports.%Main.B // CHECK:STDOUT: .C = imports.%Main.C // CHECK:STDOUT: .F = imports.%Main.F +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_22.1 = import // CHECK:STDOUT: %default.import.loc2_22.2 = import +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %a.patt: %A = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, call_param0 @@ -624,23 +640,26 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.B = import_ref Main//action, B, unloaded // CHECK:STDOUT: %Main.C: type = import_ref Main//action, C, loaded [concrete = constants.%C] // CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst61 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst63 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst28 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.c55: @Action.%Action.assoc_type (%Action.assoc_type.32e) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.f18)] // CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded // CHECK:STDOUT: %Main.import_ref.19c = import_ref Main//action, loc12_21, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst55 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst57 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0] // CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_23, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] +// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst28 [no loc], loaded [symbolic = @Action.%Self (constants.%Self.e98)] // CHECK:STDOUT: %Main.import_ref.1f6: @Action.%Op.type (%Op.type.036) = import_ref Main//action, loc5_22, loaded [symbolic = @Action.%Op (constants.%Op.6ed)] // CHECK:STDOUT: %Main.import_ref.8f24d3.3: = import_ref Main//action, loc10_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst65 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst67 [no loc], unloaded // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { @@ -650,10 +669,12 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .B = imports.%Main.B // CHECK:STDOUT: .C = imports.%Main.C // CHECK:STDOUT: .F = imports.%Main.F +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_22.1 = import // CHECK:STDOUT: %default.import.loc2_22.2 = import +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] { // CHECK:STDOUT: %a.patt: %A = binding_pattern a // CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, call_param0 @@ -811,12 +832,20 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, (%Factory.impl_witness) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Factory = %Factory.decl // CHECK:STDOUT: .A = %A.decl // CHECK:STDOUT: .B = %B.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Factory.decl: %Factory.type.1a8 = interface_decl @Factory [concrete = constants.%Factory.generic] { // CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)] // CHECK:STDOUT: } { @@ -1054,26 +1083,29 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.Factory: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [concrete = constants.%Factory.generic] // CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.B: type = import_ref Main//factory, B, loaded [concrete = constants.%B] +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude +// CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst80 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst82 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst28 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.46c: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.46d25f.2)] // CHECK:STDOUT: %Main.import_ref.2e4: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.16541d.2)] // CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded // CHECK:STDOUT: %Main.Method = import_ref Main//factory, Method, unloaded // CHECK:STDOUT: %Main.import_ref.6fd: = import_ref Main//factory, loc14_22, loaded [concrete = constants.%Factory.impl_witness] // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst74 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst76 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc14_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.a5d] // CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc15_17, unloaded // CHECK:STDOUT: %Main.import_ref.163 = import_ref Main//factory, loc16_31, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst28 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] // CHECK:STDOUT: %Main.import_ref.21018a.1 = import_ref Main//factory, loc6_17, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst28 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] // CHECK:STDOUT: %Main.import_ref.46fc3c.1 = import_ref Main//factory, loc8_31, unloaded // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1082,11 +1114,13 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: .Factory = imports.%Main.Factory // CHECK:STDOUT: .A = imports.%Main.A // CHECK:STDOUT: .B = imports.%Main.B +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .MakeB = %MakeB.decl // CHECK:STDOUT: .InstanceB = %InstanceB.decl // CHECK:STDOUT: } // CHECK:STDOUT: %default.import.loc2_23.1 = import // CHECK:STDOUT: %default.import.loc2_23.2 = import +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %MakeB.decl: %MakeB.type = fn_decl @MakeB [concrete = constants.%MakeB] { // CHECK:STDOUT: %return.patt: %B = return_slot_pattern // CHECK:STDOUT: %return.param_patt: %B = out_param_pattern %return.patt, call_param0 @@ -1294,28 +1328,29 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.B = import_ref Main//factory, B, unloaded // CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// CHECK:STDOUT: import Core//prelude // CHECK:STDOUT: import Core//default // CHECK:STDOUT: } // CHECK:STDOUT: %Main.import_ref.8f24d3.1: = import_ref Main//factory, loc12_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst80 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst82 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst28 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.46c: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.46d)] // CHECK:STDOUT: %Main.import_ref.2e4: @Factory.%Factory.assoc_type (%Factory.assoc_type.207) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%assoc1 (constants.%assoc1.165)] // CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded // CHECK:STDOUT: %Main.Method = import_ref Main//factory, Method, unloaded // CHECK:STDOUT: %Main.import_ref.4c3 = import_ref Main//factory, loc14_22, unloaded // CHECK:STDOUT: %Main.import_ref.8f24d3.2: = import_ref Main//factory, loc11_10, loaded [concrete = constants.%complete_type] -// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst74 [no loc], unloaded +// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst76 [no loc], unloaded // CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc14_6, loaded [concrete = constants.%A] // CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc14_20, loaded [concrete = constants.%Factory.type.a5d] // CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc15_17, unloaded // CHECK:STDOUT: %Main.import_ref.163 = import_ref Main//factory, loc16_31, unloaded // CHECK:STDOUT: %Main.import_ref.5ab3ec.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Main.import_ref.91b53a.1: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst28 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] // CHECK:STDOUT: %Main.import_ref.1aa: @Factory.%Make.type (%Make.type.598) = import_ref Main//factory, loc6_17, loaded [symbolic = @Factory.%Make (constants.%Make.737)] // CHECK:STDOUT: %Main.import_ref.5ab3ec.3: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)] -// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] +// CHECK:STDOUT: %Main.import_ref.91b53a.2: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst28 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self.9ba)] // CHECK:STDOUT: %Main.import_ref.5be: @Factory.%Method.type (%Method.type.7ee) = import_ref Main//factory, loc8_31, loaded [symbolic = @Factory.%Method (constants.%Method.a71)] // CHECK:STDOUT: } // CHECK:STDOUT: @@ -1499,3 +1534,9 @@ fn InstanceC(a: A) -> C { // CHECK:STDOUT: %assoc1 => constants.%assoc1.263 // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon b/toolchain/check/testdata/interface/min_prelude/as_type_of_type.carbon similarity index 53% rename from toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon rename to toolchain/check/testdata/interface/min_prelude/as_type_of_type.carbon index ddac8d2188d6..6dda99a9b795 100644 --- a/toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon +++ b/toolchain/check/testdata/interface/min_prelude/as_type_of_type.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/min_prelude/as_type_of_type.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/no_prelude/as_type_of_type.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/min_prelude/as_type_of_type.carbon interface Empty {} @@ -27,17 +30,25 @@ fn F(T:! Empty) { // CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {} // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { -// CHECK:STDOUT: %T.patt.loc13_6.1: %Empty.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] +// CHECK:STDOUT: %T.patt.loc16_6.1: %Empty.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_6.2 (constants.%T.patt)] // CHECK:STDOUT: } { // CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type] -// CHECK:STDOUT: %T.loc13_6.1: %Empty.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_6.2 (constants.%T)] +// CHECK:STDOUT: %T.loc16_6.1: %Empty.type = bind_symbolic_name T, 0 [symbolic = %T.loc16_6.2 (constants.%T)] // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: @@ -49,33 +60,39 @@ fn F(T:! Empty) { // CHECK:STDOUT: witness = () // CHECK:STDOUT: } // CHECK:STDOUT: -// CHECK:STDOUT: generic fn @F(%T.loc13_6.1: %Empty.type) { -// CHECK:STDOUT: %T.loc13_6.2: %Empty.type = bind_symbolic_name T, 0 [symbolic = %T.loc13_6.2 (constants.%T)] -// CHECK:STDOUT: %T.patt.loc13_6.2: %Empty.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)] +// CHECK:STDOUT: generic fn @F(%T.loc16_6.1: %Empty.type) { +// CHECK:STDOUT: %T.loc16_6.2: %Empty.type = bind_symbolic_name T, 0 [symbolic = %T.loc16_6.2 (constants.%T)] +// CHECK:STDOUT: %T.patt.loc16_6.2: %Empty.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc16_6.2 (constants.%T.patt)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %T.as_type.loc14_10.2: type = facet_access_type %T.loc13_6.2 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] -// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc14_10.2 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %T.as_type.loc17_10.2: type = facet_access_type %T.loc16_6.2 [symbolic = %T.as_type.loc17_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %require_complete: = require_complete_type %T.as_type.loc17_10.2 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: // CHECK:STDOUT: fn() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt: @F.%T.as_type.loc14_10.2 (%T.as_type) = binding_pattern x -// CHECK:STDOUT: %.loc14_3: @F.%T.as_type.loc14_10.2 (%T.as_type) = var_pattern %x.patt +// CHECK:STDOUT: %x.patt: @F.%T.as_type.loc17_10.2 (%T.as_type) = binding_pattern x +// CHECK:STDOUT: %.loc17_3: @F.%T.as_type.loc17_10.2 (%T.as_type) = var_pattern %x.patt // CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref @F.%T.as_type.loc14_10.2 (%T.as_type) = var x -// CHECK:STDOUT: %.loc14_10.1: type = splice_block %.loc14_10.2 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] { -// CHECK:STDOUT: %T.ref: %Empty.type = name_ref T, %T.loc13_6.1 [symbolic = %T.loc13_6.2 (constants.%T)] -// CHECK:STDOUT: %T.as_type.loc14_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] -// CHECK:STDOUT: %.loc14_10.2: type = converted %T.ref, %T.as_type.loc14_10.1 [symbolic = %T.as_type.loc14_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %x.var: ref @F.%T.as_type.loc17_10.2 (%T.as_type) = var x +// CHECK:STDOUT: %.loc17_10.1: type = splice_block %.loc17_10.2 [symbolic = %T.as_type.loc17_10.2 (constants.%T.as_type)] { +// CHECK:STDOUT: %T.ref: %Empty.type = name_ref T, %T.loc16_6.1 [symbolic = %T.loc16_6.2 (constants.%T)] +// CHECK:STDOUT: %T.as_type.loc17_10.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc17_10.2 (constants.%T.as_type)] +// CHECK:STDOUT: %.loc17_10.2: type = converted %T.ref, %T.as_type.loc17_10.1 [symbolic = %T.as_type.loc17_10.2 (constants.%T.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref @F.%T.as_type.loc14_10.2 (%T.as_type) = bind_name x, %x.var +// CHECK:STDOUT: %x: ref @F.%T.as_type.loc17_10.2 (%T.as_type) = bind_name x, %x.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F(constants.%T) { -// CHECK:STDOUT: %T.loc13_6.2 => constants.%T -// CHECK:STDOUT: %T.patt.loc13_6.2 => constants.%T.patt +// CHECK:STDOUT: %T.loc16_6.2 => constants.%T +// CHECK:STDOUT: %T.patt.loc16_6.2 => constants.%T.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon b/toolchain/check/testdata/interface/min_prelude/default_fn.carbon similarity index 75% rename from toolchain/check/testdata/interface/no_prelude/default_fn.carbon rename to toolchain/check/testdata/interface/min_prelude/default_fn.carbon index 57c290777dd4..845b65829658 100644 --- a/toolchain/check/testdata/interface/no_prelude/default_fn.carbon +++ b/toolchain/check/testdata/interface/min_prelude/default_fn.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/no_prelude/default_fn.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/min_prelude/default_fn.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/no_prelude/default_fn.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/min_prelude/default_fn.carbon class C { interface I { @@ -46,26 +49,34 @@ class C { // CHECK:STDOUT: %.e5b: type = fn_type_with_self_type %F.type.0b5, %I.facet [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: } // CHECK:STDOUT: // CHECK:STDOUT: interface @I { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self] // CHECK:STDOUT: %F.decl: %F.type.0b5 = fn_decl @F.1 [concrete = constants.%F.20c] { -// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc14_16.1 (%Self.as_type) = binding_pattern self -// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc14_16.1 (%Self.as_type) = value_param_pattern %self.patt, call_param0 +// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc17_16.1 (%Self.as_type) = binding_pattern self +// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc17_16.1 (%Self.as_type) = value_param_pattern %self.patt, call_param0 // CHECK:STDOUT: } { -// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc14_16.1 (%Self.as_type) = value_param call_param0 -// CHECK:STDOUT: %.loc14_16.1: type = splice_block %.loc14_16.2 [symbolic = %Self.as_type.loc14_16.1 (constants.%Self.as_type)] { +// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc17_16.1 (%Self.as_type) = value_param call_param0 +// CHECK:STDOUT: %.loc17_16.1: type = splice_block %.loc17_16.2 [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] { // CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc14_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc14_16.1 (constants.%Self.as_type)] -// CHECK:STDOUT: %.loc14_16.2: type = converted %Self.ref, %Self.as_type.loc14_16.2 [symbolic = %Self.as_type.loc14_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc17_16.2: type = facet_access_type %Self.ref [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %.loc17_16.2: type = converted %Self.ref, %Self.as_type.loc17_16.2 [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: } -// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc14_16.1 (%Self.as_type) = bind_name self, %self.param +// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc17_16.1 (%Self.as_type) = bind_name self, %self.param // CHECK:STDOUT: } // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0] // CHECK:STDOUT: @@ -112,22 +123,22 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: generic fn @F.1(@I.%Self: %I.type) { // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = %Self (constants.%Self)] -// CHECK:STDOUT: %Self.as_type.loc14_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc14_16.1 (constants.%Self.as_type)] +// CHECK:STDOUT: %Self.as_type.loc17_16.1: type = facet_access_type %Self [symbolic = %Self.as_type.loc17_16.1 (constants.%Self.as_type)] // CHECK:STDOUT: // CHECK:STDOUT: !definition: -// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc14_16.1 [symbolic = %require_complete (constants.%require_complete)] +// CHECK:STDOUT: %require_complete: = require_complete_type %Self.as_type.loc17_16.1 [symbolic = %require_complete (constants.%require_complete)] // CHECK:STDOUT: -// CHECK:STDOUT: fn(%self.param: @F.1.%Self.as_type.loc14_16.1 (%Self.as_type)) { +// CHECK:STDOUT: fn(%self.param: @F.1.%Self.as_type.loc17_16.1 (%Self.as_type)) { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %c.patt: %C = binding_pattern c -// CHECK:STDOUT: %.loc16_7.1: %C = var_pattern %c.patt +// CHECK:STDOUT: %.loc19_7.1: %C = var_pattern %c.patt // CHECK:STDOUT: } // CHECK:STDOUT: %c.var: ref %C = var c -// CHECK:STDOUT: %.loc16_19.1: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc16_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] -// CHECK:STDOUT: %.loc16_7.2: init %C = converted %.loc16_19.1, %.loc16_19.2 [concrete = constants.%C.val] -// CHECK:STDOUT: assign %c.var, %.loc16_7.2 +// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc19_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val] +// CHECK:STDOUT: %.loc19_7.2: init %C = converted %.loc19_19.1, %.loc19_19.2 [concrete = constants.%C.val] +// CHECK:STDOUT: assign %c.var, %.loc19_7.2 // CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C] // CHECK:STDOUT: %c: ref %C = bind_name c, %c.var // CHECK:STDOUT: %c.ref: ref %C = name_ref c, %c @@ -135,8 +146,8 @@ class C { // CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0] // CHECK:STDOUT: %impl.elem0: %.e5b = impl_witness_access constants.%I.impl_witness, element0 [concrete = constants.%F.eb2] // CHECK:STDOUT: %bound_method: = bound_method %c.ref, %impl.elem0 -// CHECK:STDOUT: %.loc17: %C = bind_value %c.ref -// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%.loc17) +// CHECK:STDOUT: %.loc20: %C = bind_value %c.ref +// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %bound_method(%.loc20) // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: } @@ -148,11 +159,17 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%Self) { // CHECK:STDOUT: %Self => constants.%Self -// CHECK:STDOUT: %Self.as_type.loc14_16.1 => constants.%Self.as_type +// CHECK:STDOUT: %Self.as_type.loc17_16.1 => constants.%Self.as_type // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: specific @F.1(constants.%I.facet) { // CHECK:STDOUT: %Self => constants.%I.facet -// CHECK:STDOUT: %Self.as_type.loc14_16.1 => constants.%C +// CHECK:STDOUT: %Self.as_type.loc17_16.1 => constants.%C +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon b/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon similarity index 97% rename from toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon rename to toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon index d02434c82d0f..c936d82db276 100644 --- a/toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon +++ b/toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/no_prelude/fail_member_lookup.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/min_prelude/fail_member_lookup.carbon // --- core.carbon package Core; @@ -184,6 +187,7 @@ fn G(U:! Different) -> U.(Interface.T); // 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//default // CHECK:STDOUT: } // CHECK:STDOUT: %Core.import_ref.5ab3ec.1: type = import_ref Core//default, loc3_22, loaded [symbolic = @ImplicitAs.%Dest (constants.%Dest)] @@ -345,3 +349,9 @@ fn G(U:! Different) -> U.(Interface.T); // CHECK:STDOUT: %U.patt.loc34_6.2 => constants.%U.patt // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/interface/no_prelude/generic_method.carbon b/toolchain/check/testdata/interface/min_prelude/generic_method.carbon similarity index 98% rename from toolchain/check/testdata/interface/no_prelude/generic_method.carbon rename to toolchain/check/testdata/interface/min_prelude/generic_method.carbon index 08083dc6950e..2aef686dee29 100644 --- a/toolchain/check/testdata/interface/no_prelude/generic_method.carbon +++ b/toolchain/check/testdata/interface/min_prelude/generic_method.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/no_prelude/generic_method.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interface/min_prelude/generic_method.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/no_prelude/generic_method.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interface/min_prelude/generic_method.carbon // --- generic_method_fewer_params.carbon @@ -146,8 +149,15 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.9c8: type = tuple_type (%empty_struct_type, %empty_struct_type, %Z) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .X = %X.decl // CHECK:STDOUT: .Y = %Y.decl @@ -156,6 +166,7 @@ fn CallIndirect() { // CHECK:STDOUT: .CallGeneric = %CallGeneric.decl // CHECK:STDOUT: .CallIndirect = %CallIndirect.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [concrete = constants.%A.generic] { // CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt.e01)] // CHECK:STDOUT: } { @@ -604,8 +615,15 @@ fn CallIndirect() { // CHECK:STDOUT: %complete_type.4d1: = complete_type_witness %tuple.type.a46 [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .X = %X.decl // CHECK:STDOUT: .Y1 = %Y1.decl @@ -615,6 +633,7 @@ fn CallIndirect() { // CHECK:STDOUT: .CallGeneric = %CallGeneric.decl // CHECK:STDOUT: .CallIndirect = %CallIndirect.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [concrete = constants.%A.generic] { // CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt.e01)] // CHECK:STDOUT: } { @@ -1122,3 +1141,9 @@ fn CallIndirect() { // CHECK:STDOUT: %tuple.type.loc6_38.2 => constants.%tuple.type.415 // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/no_prelude/name_poisoning.carbon b/toolchain/check/testdata/namespace/min_prelude/name_poisoning.carbon similarity index 95% rename from toolchain/check/testdata/namespace/no_prelude/name_poisoning.carbon rename to toolchain/check/testdata/namespace/min_prelude/name_poisoning.carbon index 9f8bc4a06487..cbdc3b09959d 100644 --- a/toolchain/check/testdata/namespace/no_prelude/name_poisoning.carbon +++ b/toolchain/check/testdata/namespace/min_prelude/name_poisoning.carbon @@ -2,13 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// EXTRA-ARGS: --no-dump-sem-ir +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core --no-dump-sem-ir // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/namespace/no_prelude/name_poisoning.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/namespace/min_prelude/name_poisoning.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/namespace/no_prelude/name_poisoning.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/namespace/min_prelude/name_poisoning.carbon // --- no_poison.carbon diff --git a/toolchain/check/testdata/patterns/no_prelude/underscore.carbon b/toolchain/check/testdata/patterns/min_prelude/underscore.carbon similarity index 90% rename from toolchain/check/testdata/patterns/no_prelude/underscore.carbon rename to toolchain/check/testdata/patterns/min_prelude/underscore.carbon index ccd3a1b66e45..bdc72cf68c77 100644 --- a/toolchain/check/testdata/patterns/no_prelude/underscore.carbon +++ b/toolchain/check/testdata/patterns/min_prelude/underscore.carbon @@ -7,9 +7,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/patterns/no_prelude/underscore.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/patterns/min_prelude/underscore.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/patterns/no_prelude/underscore.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/patterns/min_prelude/underscore.carbon // --- basic.carbon @@ -126,10 +126,19 @@ fn F() -> {} { // 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: .F = %F.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %_.patt.loc4: %empty_struct_type = binding_pattern _ // CHECK:STDOUT: } @@ -207,12 +216,21 @@ fn F() -> {} { // CHECK:STDOUT: %empty_struct: %empty_struct_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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %_.patt: %empty_struct_type = binding_pattern _ // CHECK:STDOUT: %_.param_patt: %empty_struct_type = value_param_pattern %_.patt, call_param0 @@ -269,11 +287,20 @@ fn F() -> {} { // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %_.patt.loc4_6.1: type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_6.2 (constants.%_.patt)] // CHECK:STDOUT: } { @@ -330,11 +357,20 @@ fn F() -> {} { // CHECK:STDOUT: %F.specific_fn: = specific_function %F, @F(%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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %_.patt.loc4_6.1: type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_6.2 (constants.%_.patt)] // CHECK:STDOUT: } { @@ -381,11 +417,20 @@ fn F() -> {} { // 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: 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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %_.patt.loc4_6.1: type = symbolic_binding_pattern _, 0 [symbolic = %_.patt.loc4_6.2 (constants.%_.patt)] // CHECK:STDOUT: } { @@ -452,10 +497,19 @@ fn F() -> {} { // CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%_ [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: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon b/toolchain/check/testdata/return/min_prelude/import_convert_function.carbon similarity index 99% rename from toolchain/check/testdata/return/no_prelude/import_convert_function.carbon rename to toolchain/check/testdata/return/min_prelude/import_convert_function.carbon index 07f9f79fd785..899406b383ed 100644 --- a/toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +++ b/toolchain/check/testdata/return/min_prelude/import_convert_function.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/return/min_prelude/import_convert_function.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/return/no_prelude/import_convert_function.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/return/min_prelude/import_convert_function.carbon // --- core.carbon @@ -383,6 +386,7 @@ fn F0(n: i32) -> P.D { // 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//default // CHECK:STDOUT: } // CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//default, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic] @@ -1192,17 +1196,18 @@ fn F0(n: i32) -> P.D { // 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//default +// CHECK:STDOUT: } // CHECK:STDOUT: %P: = namespace file.%P.import, [concrete] { // CHECK:STDOUT: .D = %P.D // CHECK:STDOUT: .C = %P.C // CHECK:STDOUT: .Make = %P.Make // CHECK:STDOUT: import P//library // CHECK:STDOUT: } -// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { -// CHECK:STDOUT: .Int = %Core.Int -// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs -// CHECK:STDOUT: import Core//default -// CHECK:STDOUT: } // CHECK:STDOUT: %P.D: type = import_ref P//library, D, loaded [concrete = constants.%D] // CHECK:STDOUT: %P.import_ref.7e5: = import_ref P//library, loc7_35, loaded [concrete = constants.%complete_type.682] // CHECK:STDOUT: %P.import_ref.cab = import_ref P//library, inst48 [no loc], unloaded @@ -1251,12 +1256,12 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .P = imports.%P // CHECK:STDOUT: .Core = imports.%Core +// CHECK:STDOUT: .P = imports.%P // CHECK:STDOUT: .F0 = %F0.decl // CHECK:STDOUT: } -// CHECK:STDOUT: %P.import = import P // CHECK:STDOUT: %Core.import = import Core +// CHECK:STDOUT: %P.import = import P // CHECK:STDOUT: %F0.decl: %F0.type = fn_decl @F0 [concrete = constants.%F0] { // CHECK:STDOUT: %n.patt: %i32.builtin = binding_pattern n // CHECK:STDOUT: %n.param_patt: %i32.builtin = value_param_pattern %n.patt, call_param0 @@ -1725,3 +1730,9 @@ fn F0(n: i32) -> P.D { // CHECK:STDOUT: !definition: // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/tuple/no_prelude/tuple_pattern.carbon b/toolchain/check/testdata/tuple/min_prelude/tuple_pattern.carbon similarity index 92% rename from toolchain/check/testdata/tuple/no_prelude/tuple_pattern.carbon rename to toolchain/check/testdata/tuple/min_prelude/tuple_pattern.carbon index 401034e1f1cb..9172a433144d 100644 --- a/toolchain/check/testdata/tuple/no_prelude/tuple_pattern.carbon +++ b/toolchain/check/testdata/tuple/min_prelude/tuple_pattern.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/tuple/no_prelude/tuple_pattern.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/tuple/min_prelude/tuple_pattern.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/tuple/no_prelude/tuple_pattern.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/tuple/min_prelude/tuple_pattern.carbon // --- basic.carbon @@ -108,10 +111,18 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple: %tuple.type.b6b = tuple_value (%empty_struct, %empty_struct) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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: } // CHECK:STDOUT: @@ -209,13 +220,21 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %H: %H.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: .MakeTuple = %MakeTuple.decl // CHECK:STDOUT: .H = %H.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // 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: %MakeTuple.decl: %MakeTuple.type = fn_decl @MakeTuple [concrete = constants.%MakeTuple] { @@ -394,10 +413,18 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %empty_struct: %empty_struct_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: } +// 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: } // CHECK:STDOUT: @@ -447,11 +474,19 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %empty_struct: %empty_struct_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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .x = %x // CHECK:STDOUT: .y = %y // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x // CHECK:STDOUT: %y.patt: %empty_struct_type = binding_pattern y @@ -488,10 +523,18 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .I = %I.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -500,8 +543,8 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: // CHECK:STDOUT: !members: // CHECK:STDOUT: .Self = %Self -// CHECK:STDOUT: .x = .inst23.loc9_8 -// CHECK:STDOUT: .y = .inst27.loc9_15 +// CHECK:STDOUT: .x = .inst25.loc9_8 +// CHECK:STDOUT: .y = .inst29.loc9_15 // CHECK:STDOUT: has_error // CHECK:STDOUT: witness = () // CHECK:STDOUT: } @@ -530,13 +573,21 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: %tuple.type.8d4: type = tuple_type (%empty_struct_type, %empty_struct_type, %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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .x = .inst19.loc8_6 -// CHECK:STDOUT: .y = .inst23.loc8_13 -// CHECK:STDOUT: .a = .inst33.loc14_6 -// CHECK:STDOUT: .b = .inst37.loc14_13 +// CHECK:STDOUT: .Core = imports.%Core +// CHECK:STDOUT: .x = .inst21.loc8_6 +// CHECK:STDOUT: .y = .inst25.loc8_13 +// CHECK:STDOUT: .a = .inst35.loc14_6 +// CHECK:STDOUT: .b = .inst39.loc14_13 // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x // CHECK:STDOUT: %y.patt: %empty_struct_type = binding_pattern y @@ -560,3 +611,9 @@ let (a: {}, b: {}) = ({}, {}, {}); // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/decl.carbon b/toolchain/check/testdata/var/min_prelude/decl.carbon similarity index 54% rename from toolchain/check/testdata/var/no_prelude/decl.carbon rename to toolchain/check/testdata/var/min_prelude/decl.carbon index bedae9eef3df..f2c983f574d4 100644 --- a/toolchain/check/testdata/var/no_prelude/decl.carbon +++ b/toolchain/check/testdata/var/min_prelude/decl.carbon @@ -2,17 +2,22 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/decl.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/decl.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/decl.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/decl.carbon + +// --- basic.carbon fn Main() { var x: (); } -// CHECK:STDOUT: --- decl.carbon +// CHECK:STDOUT: --- basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -20,10 +25,18 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -31,14 +44,20 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc12_3: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: %.loc3_3: %empty_tuple.type = var_pattern %x.patt // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/min_prelude/decl_with_init.carbon b/toolchain/check/testdata/var/min_prelude/decl_with_init.carbon new file mode 100644 index 000000000000..6561d0ca5e01 --- /dev/null +++ b/toolchain/check/testdata/var/min_prelude/decl_with_init.carbon @@ -0,0 +1,68 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/decl_with_init.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/decl_with_init.carbon + +// --- basic.carbon + +fn Main() { + var x: () = (); +} + +// CHECK:STDOUT: --- basic.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Main = %Main.decl +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc3_3.1: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc3_3.2: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var, %.loc3_3.2 +// CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/min_prelude/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/min_prelude/fail_duplicate_decl.carbon new file mode 100644 index 000000000000..716190995a7a --- /dev/null +++ b/toolchain/check/testdata/var/min_prelude/fail_duplicate_decl.carbon @@ -0,0 +1,90 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/fail_duplicate_decl.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/fail_duplicate_decl.carbon + +// --- fail_basic.carbon + +fn Main() { + var x: () = (); + // CHECK:STDERR: fail_basic.carbon:[[@LINE+7]]:7: error: duplicate name `x` being declared in the same scope [NameDeclDuplicate] + // CHECK:STDERR: var x: () = (); + // CHECK:STDERR: ^ + // CHECK:STDERR: fail_basic.carbon:[[@LINE-4]]:7: note: name is previously declared here [NameDeclPrevious] + // CHECK:STDERR: var x: () = (); + // CHECK:STDERR: ^ + // CHECK:STDERR: + var x: () = (); +} + +// CHECK:STDOUT: --- fail_basic.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Main = %Main.decl +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt.loc3: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc3_3.1: %empty_tuple.type = var_pattern %x.patt.loc3 +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var.loc3: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc3_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc3 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc3_3.2: init %empty_tuple.type = converted %.loc3_16.1, %.loc3_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc3, %.loc3_3.2 +// CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.loc3: ref %empty_tuple.type = bind_name x, %x.var.loc3 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt.loc11: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc11_3.1: %empty_tuple.type = var_pattern %x.patt.loc11 +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var.loc11: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc11_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc11 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc11_3.2: init %empty_tuple.type = converted %.loc11_16.1, %.loc11_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc11, %.loc11_3.2 +// CHECK:STDOUT: %.loc11_11.1: type = splice_block %.loc11_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc11_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc11_11.3: type = converted %.loc11_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.loc11: ref %empty_tuple.type = bind_name x, %x.var.loc11 +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_init_with_self.carbon b/toolchain/check/testdata/var/min_prelude/fail_init_with_self.carbon similarity index 54% rename from toolchain/check/testdata/var/no_prelude/fail_init_with_self.carbon rename to toolchain/check/testdata/var/min_prelude/fail_init_with_self.carbon index e136091d7055..463d9cbad7f9 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_init_with_self.carbon +++ b/toolchain/check/testdata/var/min_prelude/fail_init_with_self.carbon @@ -2,21 +2,26 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/fail_init_with_self.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/fail_init_with_self.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/fail_init_with_self.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/fail_init_with_self.carbon + +// --- fail_basic.carbon fn Main() { - // CHECK:STDERR: fail_init_with_self.carbon:[[@LINE+4]]:15: error: `x` used before initialization [UsedBeforeInitialization] + // CHECK:STDERR: fail_basic.carbon:[[@LINE+4]]:15: error: `x` used before initialization [UsedBeforeInitialization] // CHECK:STDERR: var x: () = x; // CHECK:STDERR: ^ // CHECK:STDERR: var x: () = x; } -// CHECK:STDOUT: --- fail_init_with_self.carbon +// CHECK:STDOUT: --- fail_basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -24,10 +29,18 @@ fn Main() { // CHECK:STDOUT: %Main: %Main.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -35,16 +48,22 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc16_3: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: %.loc7_3: %empty_tuple.type = var_pattern %x.patt // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x // CHECK:STDOUT: %x.ref: = name_ref x, [concrete = ] // CHECK:STDOUT: assign %x.var, -// CHECK:STDOUT: %.loc16_11.1: type = splice_block %.loc16_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc16_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc16_11.3: type = converted %.loc16_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc7_11.1: type = splice_block %.loc7_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc7_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc7_11.3: type = converted %.loc7_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon similarity index 58% rename from toolchain/check/testdata/var/no_prelude/fail_lookup_outside_scope.carbon rename to toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon index c32a4bb68f4c..0d9e37af3e19 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon @@ -2,23 +2,28 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/fail_lookup_outside_scope.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/fail_lookup_outside_scope.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/fail_lookup_outside_scope.carbon + +// --- fail_basic.carbon fn Main() { var x: (); } -// CHECK:STDERR: fail_lookup_outside_scope.carbon:[[@LINE+4]]:13: error: name `x` not found [NameNotFound] +// CHECK:STDERR: fail_basic.carbon:[[@LINE+4]]:13: error: name `x` not found [NameNotFound] // CHECK:STDERR: var y: () = x; // CHECK:STDERR: ^ // CHECK:STDERR: var y: () = x; -// CHECK:STDOUT: --- fail_lookup_outside_scope.carbon +// CHECK:STDOUT: --- fail_basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { // CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] @@ -26,21 +31,29 @@ var y: () = x; // CHECK:STDOUT: %Main: %Main.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core // CHECK:STDOUT: .Main = %Main.decl // CHECK:STDOUT: .y = %y // CHECK:STDOUT: .x = // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %y.patt: %empty_tuple.type = binding_pattern y -// CHECK:STDOUT: %.loc19_1: %empty_tuple.type = var_pattern %y.patt +// CHECK:STDOUT: %.loc10_1: %empty_tuple.type = var_pattern %y.patt // CHECK:STDOUT: } // CHECK:STDOUT: %y.var: ref %empty_tuple.type = var y -// CHECK:STDOUT: %.loc19_9.1: type = splice_block %.loc19_9.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc19_9.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc19_9.3: type = converted %.loc19_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %y: ref %empty_tuple.type = bind_name y, %y.var // CHECK:STDOUT: } @@ -49,12 +62,12 @@ var y: () = x; // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc12_3: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: %.loc3_3: %empty_tuple.type = var_pattern %x.patt // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc3_11.1: type = splice_block %.loc3_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc3_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc3_11.3: type = converted %.loc3_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: return @@ -67,3 +80,9 @@ var y: () = x; // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon new file mode 100644 index 000000000000..25a3dbc3d90c --- /dev/null +++ b/toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon @@ -0,0 +1,102 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/global_lookup_in_scope.carbon + +// --- basic.carbon + +var x: {.v: ()} = {.v = ()}; + +fn Main() { + var y: {.v: ()} = x; +} + +// CHECK:STDOUT: --- basic.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] +// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] +// CHECK:STDOUT: %Main: %Main.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: } +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] { +// CHECK:STDOUT: .Core = imports.%Core +// CHECK:STDOUT: .x = %x +// CHECK:STDOUT: .Main = %Main.decl +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt: %struct_type.v = binding_pattern x +// CHECK:STDOUT: %.loc2_1: %struct_type.v = var_pattern %x.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var: ref %struct_type.v = var x +// CHECK:STDOUT: %.loc2_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { +// CHECK:STDOUT: %.loc2_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc2_14.2: type = converted %.loc2_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %y.patt: %struct_type.v = binding_pattern y +// CHECK:STDOUT: %.loc5_3.1: %struct_type.v = var_pattern %y.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %y.var: ref %struct_type.v = var y +// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x +// CHECK:STDOUT: %.loc5_21.1: ref %empty_tuple.type = struct_access %x.ref, element0 +// CHECK:STDOUT: %.loc5_21.2: ref %empty_tuple.type = struct_access %y.var, element0 +// CHECK:STDOUT: %.loc5_21.3: init %empty_tuple.type = tuple_init () to %.loc5_21.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_21.4: init %empty_tuple.type = converted %.loc5_21.1, %.loc5_21.3 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_21.5: init %struct_type.v = struct_init (%.loc5_21.4) to %y.var [concrete = constants.%struct] +// CHECK:STDOUT: %.loc5_3.2: init %struct_type.v = converted %x.ref, %.loc5_21.5 [concrete = constants.%struct] +// CHECK:STDOUT: assign %y.var, %.loc5_3.2 +// CHECK:STDOUT: %.loc5_17: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { +// CHECK:STDOUT: %.loc5_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_16.2: type = converted %.loc5_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] +// CHECK:STDOUT: } +// CHECK:STDOUT: %y: ref %struct_type.v = bind_name y, %y.var +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @__global_init() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %.loc2_26.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc2_27.1: %struct_type.v = struct_literal (%.loc2_26.1) +// CHECK:STDOUT: %.loc2_27.2: ref %empty_tuple.type = struct_access file.%x.var, element0 +// CHECK:STDOUT: %.loc2_26.2: init %empty_tuple.type = tuple_init () to %.loc2_27.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc2_27.3: init %empty_tuple.type = converted %.loc2_26.1, %.loc2_26.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc2_27.4: init %struct_type.v = struct_init (%.loc2_27.3) to file.%x.var [concrete = constants.%struct] +// CHECK:STDOUT: %.loc2_1: init %struct_type.v = converted %.loc2_27.1, %.loc2_27.4 [concrete = constants.%struct] +// CHECK:STDOUT: assign file.%x.var, %.loc2_1 +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/lookup.carbon b/toolchain/check/testdata/var/min_prelude/lookup.carbon similarity index 58% rename from toolchain/check/testdata/var/no_prelude/lookup.carbon rename to toolchain/check/testdata/var/min_prelude/lookup.carbon index cd20578717aa..8c83b6385591 100644 --- a/toolchain/check/testdata/var/no_prelude/lookup.carbon +++ b/toolchain/check/testdata/var/min_prelude/lookup.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/lookup.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/lookup.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/lookup.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/lookup.carbon fn Main() { var x: () = (); @@ -22,10 +25,18 @@ fn Main() { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .Main = %Main.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} // CHECK:STDOUT: } // CHECK:STDOUT: @@ -33,19 +44,25 @@ fn Main() { // CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc12_3.1: %empty_tuple.type = var_pattern %x.patt +// CHECK:STDOUT: %.loc15_3.1: %empty_tuple.type = var_pattern %x.patt // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc12_3.2: init %empty_tuple.type = converted %.loc12_16.1, %.loc12_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %.loc12_3.2 -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: %.loc15_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_3.2: init %empty_tuple.type = converted %.loc15_16.1, %.loc15_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var, %.loc15_3.2 +// CHECK:STDOUT: %.loc15_11.1: type = splice_block %.loc15_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc15_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc15_11.3: type = converted %.loc15_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var // CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, %x // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/min_prelude/shadowing.carbon b/toolchain/check/testdata/var/min_prelude/shadowing.carbon new file mode 100644 index 000000000000..6fdbc19f886b --- /dev/null +++ b/toolchain/check/testdata/var/min_prelude/shadowing.carbon @@ -0,0 +1,127 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/shadowing.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/shadowing.carbon + +// --- basics.carbon + +namespace NS; + +fn Main() { + var NS: () = (); + NS = (); + + var x: () = (); + if (true) { + var x: () = (); + + // TODO: We should reject this use of the shadowed variable `x`. + x = (); + } +} + +// CHECK:STDOUT: --- basics.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] +// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] +// CHECK:STDOUT: %true: bool = bool_literal true [concrete] +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .NS = %NS +// CHECK:STDOUT: .Main = %Main.decl +// CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core +// CHECK:STDOUT: %NS: = namespace [concrete] {} +// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %NS.patt: %empty_tuple.type = binding_pattern NS +// CHECK:STDOUT: %.loc5_3.1: %empty_tuple.type = var_pattern %NS.patt +// CHECK:STDOUT: } +// CHECK:STDOUT: %NS.var: ref %empty_tuple.type = var NS +// CHECK:STDOUT: %.loc5_17.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_17.2: init %empty_tuple.type = tuple_init () to %NS.var [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc5_3.2: init %empty_tuple.type = converted %.loc5_17.1, %.loc5_17.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %NS.var, %.loc5_3.2 +// CHECK:STDOUT: %.loc5_12.1: type = splice_block %.loc5_12.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc5_12.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc5_12.3: type = converted %.loc5_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %NS: ref %empty_tuple.type = bind_name NS, %NS.var +// CHECK:STDOUT: %NS.ref: ref %empty_tuple.type = name_ref NS, %NS +// CHECK:STDOUT: %.loc6_9.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc6_9.2: init %empty_tuple.type = tuple_init () to %NS.ref [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc6_6: init %empty_tuple.type = converted %.loc6_9.1, %.loc6_9.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %NS.ref, %.loc6_6 +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt.loc8: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc8_3.1: %empty_tuple.type = var_pattern %x.patt.loc8 +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var.loc8: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc8_16.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc8 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc8_3.2: init %empty_tuple.type = converted %.loc8_16.1, %.loc8_16.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc8, %.loc8_3.2 +// CHECK:STDOUT: %.loc8_11.1: type = splice_block %.loc8_11.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc8_11.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc8_11.3: type = converted %.loc8_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.loc8: ref %empty_tuple.type = bind_name x, %x.var.loc8 +// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] +// CHECK:STDOUT: if %true br !if.then else br !if.else +// CHECK:STDOUT: +// CHECK:STDOUT: !if.then: +// CHECK:STDOUT: name_binding_decl { +// CHECK:STDOUT: %x.patt.loc10: %empty_tuple.type = binding_pattern x +// CHECK:STDOUT: %.loc10_5.1: %empty_tuple.type = var_pattern %x.patt.loc10 +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.var.loc10: ref %empty_tuple.type = var x +// CHECK:STDOUT: %.loc10_18.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_18.2: init %empty_tuple.type = tuple_init () to %x.var.loc10 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc10_5.2: init %empty_tuple.type = converted %.loc10_18.1, %.loc10_18.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.var.loc10, %.loc10_5.2 +// CHECK:STDOUT: %.loc10_13.1: type = splice_block %.loc10_13.3 [concrete = constants.%empty_tuple.type] { +// CHECK:STDOUT: %.loc10_13.2: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc10_13.3: type = converted %.loc10_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] +// CHECK:STDOUT: } +// CHECK:STDOUT: %x.loc10: ref %empty_tuple.type = bind_name x, %x.var.loc10 +// CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, %x.loc10 +// CHECK:STDOUT: %.loc13_10.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %.loc13_10.2: init %empty_tuple.type = tuple_init () to %x.ref [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc13_7: init %empty_tuple.type = converted %.loc13_10.1, %.loc13_10.2 [concrete = constants.%empty_tuple] +// CHECK:STDOUT: assign %x.ref, %.loc13_7 +// CHECK:STDOUT: br !if.else +// CHECK:STDOUT: +// CHECK:STDOUT: !if.else: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/var_pattern.carbon b/toolchain/check/testdata/var/min_prelude/var_pattern.carbon similarity index 90% rename from toolchain/check/testdata/var/no_prelude/var_pattern.carbon rename to toolchain/check/testdata/var/min_prelude/var_pattern.carbon index 192366170169..189c7c12d6d6 100644 --- a/toolchain/check/testdata/var/no_prelude/var_pattern.carbon +++ b/toolchain/check/testdata/var/min_prelude/var_pattern.carbon @@ -2,11 +2,14 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// EXTRA-ARGS: --custom-core +// // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/var_pattern.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/min_prelude/var_pattern.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/var_pattern.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/min_prelude/var_pattern.carbon // --- basic.carbon @@ -101,10 +104,18 @@ class C { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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: } // CHECK:STDOUT: @@ -137,10 +148,18 @@ class C { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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: } // CHECK:STDOUT: @@ -185,11 +204,19 @@ class C { // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .F = %F.decl // CHECK:STDOUT: .G = %G.decl // CHECK:STDOUT: } +// CHECK:STDOUT: %Core.import = import Core // CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] { // CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x // CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, call_param0 @@ -256,10 +283,18 @@ class C { // CHECK:STDOUT: %tuple: %tuple.type.bcd = tuple_value (%empty_tuple, %empty_tuple) [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: +// CHECK:STDOUT: imports { +// CHECK:STDOUT: %Core: = namespace file.%Core.import, [concrete] { +// 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: .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: } // CHECK:STDOUT: @@ -343,10 +378,18 @@ class C { // 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: } +// 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: } // CHECK:STDOUT: @@ -371,3 +414,9 @@ class C { // CHECK:STDOUT: // CHECK:STDOUT: fn @F(%self.param: %C); // CHECK:STDOUT: +// CHECK:STDOUT: --- include_files/destroy.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace [concrete] {} +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/decl_with_init.carbon b/toolchain/check/testdata/var/no_prelude/decl_with_init.carbon deleted file mode 100644 index f80026df06b0..000000000000 --- a/toolchain/check/testdata/var/no_prelude/decl_with_init.carbon +++ /dev/null @@ -1,49 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/decl_with_init.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/decl_with_init.carbon - -fn Main() { - var x: () = (); -} - -// CHECK:STDOUT: --- decl_with_init.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Main = %Main.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc12_3.1: %empty_tuple.type = var_pattern %x.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc12_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_16.2: init %empty_tuple.type = tuple_init () to %x.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc12_3.2: init %empty_tuple.type = converted %.loc12_16.1, %.loc12_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var, %.loc12_3.2 -// CHECK:STDOUT: %.loc12_11.1: type = splice_block %.loc12_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc12_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc12_11.3: type = converted %.loc12_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon deleted file mode 100644 index 59ec5f478d7d..000000000000 --- a/toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon +++ /dev/null @@ -1,72 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/fail_duplicate_decl.carbon - - -fn Main() { - var x: () = (); - // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE+7]]:7: error: duplicate name `x` being declared in the same scope [NameDeclDuplicate] - // CHECK:STDERR: var x: () = (); - // CHECK:STDERR: ^ - // CHECK:STDERR: fail_duplicate_decl.carbon:[[@LINE-4]]:7: note: name is previously declared here [NameDeclPrevious] - // CHECK:STDERR: var x: () = (); - // CHECK:STDERR: ^ - // CHECK:STDERR: - var x: () = (); -} - -// CHECK:STDOUT: --- fail_duplicate_decl.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Main = %Main.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt.loc13: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc13_3.1: %empty_tuple.type = var_pattern %x.patt.loc13 -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var.loc13: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc13_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc13 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc13_3.2: init %empty_tuple.type = converted %.loc13_16.1, %.loc13_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc13, %.loc13_3.2 -// CHECK:STDOUT: %.loc13_11.1: type = splice_block %.loc13_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc13_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc13_11.3: type = converted %.loc13_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.loc13: ref %empty_tuple.type = bind_name x, %x.var.loc13 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt.loc21: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc21_3.1: %empty_tuple.type = var_pattern %x.patt.loc21 -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var.loc21: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc21_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc21_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc21 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc21_3.2: init %empty_tuple.type = converted %.loc21_16.1, %.loc21_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc21, %.loc21_3.2 -// CHECK:STDOUT: %.loc21_11.1: type = splice_block %.loc21_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc21_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc21_11.3: type = converted %.loc21_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.loc21: ref %empty_tuple.type = bind_name x, %x.var.loc21 -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon b/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon index 4e07a2f19365..856f79fd93e6 100644 --- a/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon +++ b/toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon @@ -8,48 +8,43 @@ // TIP: To dump output, run: // TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/fail_init_type_mismatch.carbon -fn Main() { - // CHECK:STDERR: fail_init_type_mismatch.carbon:[[@LINE+4]]:3: error: `Core.ImplicitAs` implicitly referenced here, but package `Core` not found [CoreNotFound] - // CHECK:STDERR: var x: {} = (); - // CHECK:STDERR: ^~~~~~~~~ - // CHECK:STDERR: - var x: {} = (); -} +// CHECK:STDERR: fail_init_type_mismatch.carbon:[[@LINE+4]]:1: error: `Core.ImplicitAs` implicitly referenced here, but package `Core` not found [CoreNotFound] +// CHECK:STDERR: var x: {} = (); +// CHECK:STDERR: ^~~~~~~~~ +// CHECK:STDERR: +var x: {} = (); // CHECK:STDOUT: --- fail_init_type_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: constants { -// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] // CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete] +// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] // CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { // CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .Main = %Main.decl +// CHECK:STDOUT: .x = %x // CHECK:STDOUT: } -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() { -// CHECK:STDOUT: !entry: // CHECK:STDOUT: name_binding_decl { // CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x -// CHECK:STDOUT: %.loc16_3.1: %empty_struct_type = var_pattern %x.patt +// CHECK:STDOUT: %.loc15_1: %empty_struct_type = var_pattern %x.patt // CHECK:STDOUT: } // CHECK:STDOUT: %x.var: ref %empty_struct_type = var x -// CHECK:STDOUT: %.loc16_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_16.2: %empty_tuple.type = converted %.loc16_16.1, %empty_tuple [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc16_3.2: %empty_struct_type = converted %.loc16_16.1, [concrete = ] -// CHECK:STDOUT: assign %x.var, -// CHECK:STDOUT: %.loc16_11.1: type = splice_block %.loc16_11.3 [concrete = constants.%empty_struct_type] { -// CHECK:STDOUT: %.loc16_11.2: %empty_struct_type = struct_literal () -// CHECK:STDOUT: %.loc16_11.3: type = converted %.loc16_11.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] +// CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [concrete = constants.%empty_struct_type] { +// CHECK:STDOUT: %.loc15_9.2: %empty_struct_type = struct_literal () +// CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type] // CHECK:STDOUT: } // CHECK:STDOUT: %x: ref %empty_struct_type = bind_name x, %x.var +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @__global_init() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %.loc15_14.1: %empty_tuple.type = tuple_literal () +// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_14.2: %empty_tuple.type = converted %.loc15_14.1, %empty_tuple [concrete = constants.%empty_tuple] +// CHECK:STDOUT: %.loc15_1: %empty_struct_type = converted %.loc15_14.1, [concrete = ] +// CHECK:STDOUT: assign file.%x.var, // CHECK:STDOUT: return // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/no_prelude/global_lookup_in_scope.carbon deleted file mode 100644 index ef255172a569..000000000000 --- a/toolchain/check/testdata/var/no_prelude/global_lookup_in_scope.carbon +++ /dev/null @@ -1,83 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/global_lookup_in_scope.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/global_lookup_in_scope.carbon - -var x: {.v: ()} = {.v = ()}; - -fn Main() { - var y: {.v: ()} = x; -} - -// CHECK:STDOUT: --- global_lookup_in_scope.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %struct: %struct_type.v = struct_value (%empty_tuple) [concrete] -// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] -// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .x = %x -// CHECK:STDOUT: .Main = %Main.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt: %struct_type.v = binding_pattern x -// CHECK:STDOUT: %.loc11_1: %struct_type.v = var_pattern %x.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var: ref %struct_type.v = var x -// CHECK:STDOUT: %.loc11_15: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc11_14.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_14.2: type = converted %.loc11_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x: ref %struct_type.v = bind_name x, %x.var -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %y.patt: %struct_type.v = binding_pattern y -// CHECK:STDOUT: %.loc14_3.1: %struct_type.v = var_pattern %y.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %y.var: ref %struct_type.v = var y -// CHECK:STDOUT: %x.ref: ref %struct_type.v = name_ref x, file.%x -// CHECK:STDOUT: %.loc14_21.1: ref %empty_tuple.type = struct_access %x.ref, element0 -// CHECK:STDOUT: %.loc14_21.2: ref %empty_tuple.type = struct_access %y.var, element0 -// CHECK:STDOUT: %.loc14_21.3: init %empty_tuple.type = tuple_init () to %.loc14_21.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_21.4: init %empty_tuple.type = converted %.loc14_21.1, %.loc14_21.3 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_21.5: init %struct_type.v = struct_init (%.loc14_21.4) to %y.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc14_3.2: init %struct_type.v = converted %x.ref, %.loc14_21.5 [concrete = constants.%struct] -// CHECK:STDOUT: assign %y.var, %.loc14_3.2 -// CHECK:STDOUT: %.loc14_17: type = splice_block %struct_type.v [concrete = constants.%struct_type.v] { -// CHECK:STDOUT: %.loc14_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc14_16.2: type = converted %.loc14_16.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: %struct_type.v: type = struct_type {.v: %empty_tuple.type} [concrete = constants.%struct_type.v] -// CHECK:STDOUT: } -// CHECK:STDOUT: %y: ref %struct_type.v = bind_name y, %y.var -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @__global_init() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: %.loc11_26.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc11_27.1: %struct_type.v = struct_literal (%.loc11_26.1) -// CHECK:STDOUT: %.loc11_27.2: ref %empty_tuple.type = struct_access file.%x.var, element0 -// CHECK:STDOUT: %.loc11_26.2: init %empty_tuple.type = tuple_init () to %.loc11_27.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_27.3: init %empty_tuple.type = converted %.loc11_26.1, %.loc11_26.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc11_27.4: init %struct_type.v = struct_init (%.loc11_27.3) to file.%x.var [concrete = constants.%struct] -// CHECK:STDOUT: %.loc11_1: init %struct_type.v = converted %.loc11_27.1, %.loc11_27.4 [concrete = constants.%struct] -// CHECK:STDOUT: assign file.%x.var, %.loc11_1 -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/no_prelude/shadowing.carbon b/toolchain/check/testdata/var/no_prelude/shadowing.carbon deleted file mode 100644 index 9c6a6a0de89f..000000000000 --- a/toolchain/check/testdata/var/no_prelude/shadowing.carbon +++ /dev/null @@ -1,108 +0,0 @@ -// Part of the Carbon Language project, under the Apache License v2.0 with LLVM -// Exceptions. See /LICENSE for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -// AUTOUPDATE -// TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/var/no_prelude/shadowing.carbon -// TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/var/no_prelude/shadowing.carbon - -namespace NS; - -fn Main() { - var NS: () = (); - NS = (); - - var x: () = (); - if (true) { - var x: () = (); - - // TODO: We should reject this use of the shadowed variable `x`. - x = (); - } -} - -// CHECK:STDOUT: --- shadowing.carbon -// CHECK:STDOUT: -// CHECK:STDOUT: constants { -// CHECK:STDOUT: %Main.type: type = fn_type @Main [concrete] -// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete] -// CHECK:STDOUT: %Main: %Main.type = struct_value () [concrete] -// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete] -// CHECK:STDOUT: %true: bool = bool_literal true [concrete] -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: file { -// CHECK:STDOUT: package: = namespace [concrete] { -// CHECK:STDOUT: .NS = %NS -// CHECK:STDOUT: .Main = %Main.decl -// CHECK:STDOUT: } -// CHECK:STDOUT: %NS: = namespace [concrete] {} -// CHECK:STDOUT: %Main.decl: %Main.type = fn_decl @Main [concrete = constants.%Main] {} {} -// CHECK:STDOUT: } -// CHECK:STDOUT: -// CHECK:STDOUT: fn @Main() { -// CHECK:STDOUT: !entry: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %NS.patt: %empty_tuple.type = binding_pattern NS -// CHECK:STDOUT: %.loc14_3.1: %empty_tuple.type = var_pattern %NS.patt -// CHECK:STDOUT: } -// CHECK:STDOUT: %NS.var: ref %empty_tuple.type = var NS -// CHECK:STDOUT: %.loc14_17.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc14_17.2: init %empty_tuple.type = tuple_init () to %NS.var [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc14_3.2: init %empty_tuple.type = converted %.loc14_17.1, %.loc14_17.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %NS.var, %.loc14_3.2 -// CHECK:STDOUT: %.loc14_12.1: type = splice_block %.loc14_12.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc14_12.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc14_12.3: type = converted %.loc14_12.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %NS: ref %empty_tuple.type = bind_name NS, %NS.var -// CHECK:STDOUT: %NS.ref: ref %empty_tuple.type = name_ref NS, %NS -// CHECK:STDOUT: %.loc15_9.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc15_9.2: init %empty_tuple.type = tuple_init () to %NS.ref [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc15_6: init %empty_tuple.type = converted %.loc15_9.1, %.loc15_9.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %NS.ref, %.loc15_6 -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt.loc17: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc17_3.1: %empty_tuple.type = var_pattern %x.patt.loc17 -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var.loc17: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc17_16.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc17_16.2: init %empty_tuple.type = tuple_init () to %x.var.loc17 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc17_3.2: init %empty_tuple.type = converted %.loc17_16.1, %.loc17_16.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc17, %.loc17_3.2 -// CHECK:STDOUT: %.loc17_11.1: type = splice_block %.loc17_11.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc17_11.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc17_11.3: type = converted %.loc17_11.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.loc17: ref %empty_tuple.type = bind_name x, %x.var.loc17 -// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true] -// CHECK:STDOUT: if %true br !if.then else br !if.else -// CHECK:STDOUT: -// CHECK:STDOUT: !if.then: -// CHECK:STDOUT: name_binding_decl { -// CHECK:STDOUT: %x.patt.loc19: %empty_tuple.type = binding_pattern x -// CHECK:STDOUT: %.loc19_5.1: %empty_tuple.type = var_pattern %x.patt.loc19 -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.var.loc19: ref %empty_tuple.type = var x -// CHECK:STDOUT: %.loc19_18.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc19_18.2: init %empty_tuple.type = tuple_init () to %x.var.loc19 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc19_5.2: init %empty_tuple.type = converted %.loc19_18.1, %.loc19_18.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.var.loc19, %.loc19_5.2 -// CHECK:STDOUT: %.loc19_13.1: type = splice_block %.loc19_13.3 [concrete = constants.%empty_tuple.type] { -// CHECK:STDOUT: %.loc19_13.2: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc19_13.3: type = converted %.loc19_13.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type] -// CHECK:STDOUT: } -// CHECK:STDOUT: %x.loc19: ref %empty_tuple.type = bind_name x, %x.var.loc19 -// CHECK:STDOUT: %x.ref: ref %empty_tuple.type = name_ref x, %x.loc19 -// CHECK:STDOUT: %.loc22_10.1: %empty_tuple.type = tuple_literal () -// CHECK:STDOUT: %.loc22_10.2: init %empty_tuple.type = tuple_init () to %x.ref [concrete = constants.%empty_tuple] -// CHECK:STDOUT: %.loc22_7: init %empty_tuple.type = converted %.loc22_10.1, %.loc22_10.2 [concrete = constants.%empty_tuple] -// CHECK:STDOUT: assign %x.ref, %.loc22_7 -// CHECK:STDOUT: br !if.else -// CHECK:STDOUT: -// CHECK:STDOUT: !if.else: -// CHECK:STDOUT: return -// CHECK:STDOUT: } -// CHECK:STDOUT: diff --git a/toolchain/driver/testdata/fail_flush_errors.carbon b/toolchain/driver/testdata/fail_flush_errors.carbon index bed01311cc50..c45a25622e26 100644 --- a/toolchain/driver/testdata/fail_flush_errors.carbon +++ b/toolchain/driver/testdata/fail_flush_errors.carbon @@ -2,7 +2,8 @@ // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// ARGS: --include-diagnostic-kind compile --no-prelude-import %s +// INCLUDE-FILE: toolchain/testing/min_prelude/destroy.carbon +// ARGS: --include-diagnostic-kind compile --custom-core %s // // AUTOUPDATE // TIP: To test this file alone, run: diff --git a/toolchain/testing/min_prelude/destroy.carbon b/toolchain/testing/min_prelude/destroy.carbon new file mode 100644 index 000000000000..d40b38421d37 --- /dev/null +++ b/toolchain/testing/min_prelude/destroy.carbon @@ -0,0 +1,14 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +// A minimal prelude for tests that require destruction. +package Core library "prelude"; + +// TODO: Uncomment once the interface is used. +// interface Destroy { +// fn Op[self: Self](); +// } +// impl forall [T:! type] T as Destroy { +// fn Op[self: Self]() = "no_op"; +// }