diff --git a/toolchain/check/check.cpp b/toolchain/check/check.cpp index 4c16de27b7e1..31ef1188c48e 100644 --- a/toolchain/check/check.cpp +++ b/toolchain/check/check.cpp @@ -13,6 +13,7 @@ #include "toolchain/parse/tree.h" #include "toolchain/parse/tree_node_location_translator.h" #include "toolchain/sem_ir/file.h" +#include "toolchain/sem_ir/typed_insts.h" namespace Carbon::Check { @@ -120,9 +121,18 @@ static auto CheckParseTree(const SemIR::File& builtin_ir, UnitInfo& unit_info, PrettyStackTraceFunction context_dumper( [&](llvm::raw_ostream& output) { context.PrintForStackDump(output); }); - // Add a block for the Parse::Tree. + // Add a block for the file. context.inst_block_stack().Push(); - context.PushScope(); + + // Define the package scope, with an instruction for `package` expressions to + // reference. + auto package_scope = context.name_scopes().Add(); + auto package_inst = context.AddInst(SemIR::Namespace{ + Parse::NodeId::Invalid, + context.GetBuiltinType(SemIR::BuiltinKind::NamespaceType), + package_scope}); + CARBON_CHECK(package_inst == SemIR::InstId::PackageNamespace); + context.PushScope(SemIR::InstId::Invalid, package_scope); AddImports(context, unit_info); diff --git a/toolchain/check/handle_name.cpp b/toolchain/check/handle_name.cpp index 6896fd830caf..c4ca23eb6c4a 100644 --- a/toolchain/check/handle_name.cpp +++ b/toolchain/check/handle_name.cpp @@ -7,6 +7,7 @@ #include "toolchain/check/convert.h" #include "toolchain/lex/token_kind.h" #include "toolchain/sem_ir/inst.h" +#include "toolchain/sem_ir/typed_insts.h" namespace Carbon::Check { @@ -272,6 +273,15 @@ auto HandleQualifiedDecl(Context& context, Parse::NodeId parse_node) -> bool { return true; } +auto HandlePackageExpr(Context& context, Parse::NodeId parse_node) -> bool { + context.AddInstAndPush( + parse_node, + SemIR::NameRef{ + parse_node, context.GetBuiltinType(SemIR::BuiltinKind::NamespaceType), + SemIR::NameId::PackageNamespace, SemIR::InstId::PackageNamespace}); + return true; +} + auto HandleSelfTypeNameExpr(Context& context, Parse::NodeId parse_node) -> bool { auto name_id = SemIR::NameId::SelfType; diff --git a/toolchain/check/node_stack.h b/toolchain/check/node_stack.h index 2f5beaebc8b2..151c75b1159d 100644 --- a/toolchain/check/node_stack.h +++ b/toolchain/check/node_stack.h @@ -303,6 +303,7 @@ class NodeStack { case Parse::NodeKind::InfixOperator: case Parse::NodeKind::MemberAccessExpr: case Parse::NodeKind::NameExpr: + case Parse::NodeKind::PackageExpr: case Parse::NodeKind::ParenExpr: case Parse::NodeKind::PostfixOperator: case Parse::NodeKind::PrefixOperator: diff --git a/toolchain/check/testdata/array/array_in_place.carbon b/toolchain/check/testdata/array/array_in_place.carbon index 3e9d0c18bc21..5fcb51d71dee 100644 --- a/toolchain/check/testdata/array/array_in_place.carbon +++ b/toolchain/check/testdata/array/array_in_place.carbon @@ -21,6 +21,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/assign_return_value.carbon b/toolchain/check/testdata/array/assign_return_value.carbon index 858b868af4be..83acaf531c12 100644 --- a/toolchain/check/testdata/array/assign_return_value.carbon +++ b/toolchain/check/testdata/array/assign_return_value.carbon @@ -19,6 +19,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .Run = %Run} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/assign_var.carbon b/toolchain/check/testdata/array/assign_var.carbon index 8f7210c928d8..f3e6c46a62ca 100644 --- a/toolchain/check/testdata/array/assign_var.carbon +++ b/toolchain/check/testdata/array/assign_var.carbon @@ -17,6 +17,7 @@ var b: [i32; 3] = a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_22.1: (type, type, type) = tuple_literal (i32, i32, i32) // CHECK:STDOUT: %.loc7_22.2: type = converted %.loc7_22.1, constants.%.loc7_22.2 // CHECK:STDOUT: %a.var: ref (i32, i32, i32) = var a diff --git a/toolchain/check/testdata/array/base.carbon b/toolchain/check/testdata/array/base.carbon index f924641addc4..e35ec8fe4c7c 100644 --- a/toolchain/check/testdata/array/base.carbon +++ b/toolchain/check/testdata/array/base.carbon @@ -21,6 +21,7 @@ var c: [(); 5] = ((), (), (), (), (),); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b, .c = %c} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 1] = var a diff --git a/toolchain/check/testdata/array/fail_bound_overflow.carbon b/toolchain/check/testdata/array/fail_bound_overflow.carbon index b3f42e6d5cf8..c8a8a65e071d 100644 --- a/toolchain/check/testdata/array/fail_bound_overflow.carbon +++ b/toolchain/check/testdata/array/fail_bound_overflow.carbon @@ -12,6 +12,7 @@ var a: [1; 39999999999999999993]; // CHECK:STDOUT: --- fail_bound_overflow.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a} // CHECK:STDOUT: %.loc10_9: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_12: i32 = int_literal 39999999999999999993 // CHECK:STDOUT: %a.var: ref = var a diff --git a/toolchain/check/testdata/array/fail_incomplete_element.carbon b/toolchain/check/testdata/array/fail_incomplete_element.carbon index a5a8a268f493..82cf0932edc4 100644 --- a/toolchain/check/testdata/array/fail_incomplete_element.carbon +++ b/toolchain/check/testdata/array/fail_incomplete_element.carbon @@ -26,6 +26,7 @@ var p: Incomplete* = &a[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Incomplete = %Incomplete.decl, .a = %a, .p = %p} // CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete diff --git a/toolchain/check/testdata/array/fail_invalid_type.carbon b/toolchain/check/testdata/array/fail_invalid_type.carbon index 68c6e86b804a..dce3178a3dbf 100644 --- a/toolchain/check/testdata/array/fail_invalid_type.carbon +++ b/toolchain/check/testdata/array/fail_invalid_type.carbon @@ -16,6 +16,7 @@ var a: [1; 1]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a} // CHECK:STDOUT: %.loc10_9: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_12: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_13: type = array_type %.loc10_12, diff --git a/toolchain/check/testdata/array/fail_out_of_bound.carbon b/toolchain/check/testdata/array/fail_out_of_bound.carbon index e15ba364e228..5151c1ce9146 100644 --- a/toolchain/check/testdata/array/fail_out_of_bound.carbon +++ b/toolchain/check/testdata/array/fail_out_of_bound.carbon @@ -17,6 +17,7 @@ var a: [i32; 1] = (1, 2, 3); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a} // CHECK:STDOUT: %.loc10_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_15: type = array_type %.loc10_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 1] = var a diff --git a/toolchain/check/testdata/array/fail_type_mismatch.carbon b/toolchain/check/testdata/array/fail_type_mismatch.carbon index 4fee9b76a289..56e6d16f8607 100644 --- a/toolchain/check/testdata/array/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/array/fail_type_mismatch.carbon @@ -41,6 +41,7 @@ var d: [i32; 3] = t2; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .t1 = %t1, .b = %b, .c = %c, .t2 = %t2, .d = %d} // CHECK:STDOUT: %.loc10_14: i32 = int_literal 3 // CHECK:STDOUT: %.loc10_15: type = array_type %.loc10_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 3] = var a diff --git a/toolchain/check/testdata/array/function_param.carbon b/toolchain/check/testdata/array/function_param.carbon index 9afa2a37394e..fe5db0f07388 100644 --- a/toolchain/check/testdata/array/function_param.carbon +++ b/toolchain/check/testdata/array/function_param.carbon @@ -20,6 +20,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/array/nine_elements.carbon b/toolchain/check/testdata/array/nine_elements.carbon index 8d3ae174f1fe..785a0c341a4d 100644 --- a/toolchain/check/testdata/array/nine_elements.carbon +++ b/toolchain/check/testdata/array/nine_elements.carbon @@ -14,6 +14,7 @@ var a: [i32; 9] = (1, 2, 3, 4, 5, 6, 7, 8, 9); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 9 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 9] = var a diff --git a/toolchain/check/testdata/as/as_type.carbon b/toolchain/check/testdata/as/as_type.carbon index d1cb7b26e979..7e4907392c42 100644 --- a/toolchain/check/testdata/as/as_type.carbon +++ b/toolchain/check/testdata/as/as_type.carbon @@ -14,6 +14,7 @@ let t: type = (i32, i32) as type; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %.loc7_24: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_26: type = converted %.loc7_24, constants.%.loc7_26 // CHECK:STDOUT: %t: type = bind_name t, %.loc7_26 diff --git a/toolchain/check/testdata/as/basic.carbon b/toolchain/check/testdata/as/basic.carbon index c87d1143a13c..6323567e4418 100644 --- a/toolchain/check/testdata/as/basic.carbon +++ b/toolchain/check/testdata/as/basic.carbon @@ -11,6 +11,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/as/fail_no_conversion.carbon b/toolchain/check/testdata/as/fail_no_conversion.carbon index 963affaada80..35717d2cda3f 100644 --- a/toolchain/check/testdata/as/fail_no_conversion.carbon +++ b/toolchain/check/testdata/as/fail_no_conversion.carbon @@ -18,6 +18,7 @@ let n: (i32, i32) = 1 as (i32, i32); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %.loc10_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc10_17.2: type = converted %.loc10_17.1, constants.%.loc10_17.2 // CHECK:STDOUT: %.loc10_21: i32 = int_literal 1 diff --git a/toolchain/check/testdata/as/fail_not_type.carbon b/toolchain/check/testdata/as/fail_not_type.carbon index 06120069251e..4864a2fc95db 100644 --- a/toolchain/check/testdata/as/fail_not_type.carbon +++ b/toolchain/check/testdata/as/fail_not_type.carbon @@ -12,6 +12,7 @@ let n: i32 = 1 as 2; // CHECK:STDOUT: --- fail_not_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %.loc10_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_19: i32 = int_literal 2 // CHECK:STDOUT: %n: i32 = bind_name n, diff --git a/toolchain/check/testdata/as/identity.carbon b/toolchain/check/testdata/as/identity.carbon index 48d0e1292dc4..3771527f35e7 100644 --- a/toolchain/check/testdata/as/identity.carbon +++ b/toolchain/check/testdata/as/identity.carbon @@ -33,6 +33,7 @@ fn Initializing() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.X = %X.decl, .Value = %Value, .Reference = %Reference, .Make = %Make, .Initializing = %Initializing} // CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %Value: = fn_decl @Value diff --git a/toolchain/check/testdata/as/tuple.carbon b/toolchain/check/testdata/as/tuple.carbon index fe1c4162d461..9e6eed853386 100644 --- a/toolchain/check/testdata/as/tuple.carbon +++ b/toolchain/check/testdata/as/tuple.carbon @@ -33,6 +33,7 @@ fn Var() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.X = %X.decl, .Make = %Make, .Let = %Let, .Var = %Var} // CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %Make: = fn_decl @Make diff --git a/toolchain/check/testdata/basics/builtin_insts.carbon b/toolchain/check/testdata/basics/builtin_insts.carbon index c5cf2a6af279..b9a55d089972 100644 --- a/toolchain/check/testdata/basics/builtin_insts.carbon +++ b/toolchain/check/testdata/basics/builtin_insts.carbon @@ -12,7 +12,8 @@ // CHECK:STDOUT: cross_ref_irs_size: 1 // CHECK:STDOUT: functions: {} // CHECK:STDOUT: classes: {} -// CHECK:STDOUT: types: {} +// CHECK:STDOUT: types: +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} // CHECK:STDOUT: type_blocks: {} // CHECK:STDOUT: insts: // CHECK:STDOUT: instTypeType: {kind: CrossRef, arg0: ir0, arg1: instTypeType, type: typeTypeType} @@ -24,6 +25,9 @@ // CHECK:STDOUT: instFunctionType: {kind: CrossRef, arg0: ir0, arg1: instFunctionType, type: typeTypeType} // CHECK:STDOUT: instBoundMethodType: {kind: CrossRef, arg0: ir0, arg1: instBoundMethodType, type: typeTypeType} // CHECK:STDOUT: instNamespaceType: {kind: CrossRef, arg0: ir0, arg1: instNamespaceType, type: typeTypeType} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} +// CHECK:STDOUT: block1: +// CHECK:STDOUT: 0: inst+0 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/builtin_types.carbon b/toolchain/check/testdata/basics/builtin_types.carbon index fd8d6ffe4874..49c95eaf84a0 100644 --- a/toolchain/check/testdata/basics/builtin_types.carbon +++ b/toolchain/check/testdata/basics/builtin_types.carbon @@ -16,6 +16,7 @@ var test_type: type = i32; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.test_i32 = %test_i32, .test_f64 = %test_f64, .test_type = %test_type} // CHECK:STDOUT: %test_i32.var: ref i32 = var test_i32 // CHECK:STDOUT: %test_i32: ref i32 = bind_name test_i32, %test_i32.var // CHECK:STDOUT: %.loc7: i32 = int_literal 0 diff --git a/toolchain/check/testdata/basics/empty.carbon b/toolchain/check/testdata/basics/empty.carbon index a8b7c65a1129..47c2f090f6f6 100644 --- a/toolchain/check/testdata/basics/empty.carbon +++ b/toolchain/check/testdata/basics/empty.carbon @@ -7,5 +7,6 @@ // CHECK:STDOUT: --- empty.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/empty_decl.carbon b/toolchain/check/testdata/basics/empty_decl.carbon index 830ffc1a7cfe..3bbe888bf953 100644 --- a/toolchain/check/testdata/basics/empty_decl.carbon +++ b/toolchain/check/testdata/basics/empty_decl.carbon @@ -9,5 +9,6 @@ // CHECK:STDOUT: --- empty_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_bad_run.carbon b/toolchain/check/testdata/basics/fail_bad_run.carbon index 9180b2dff32d..5c1005fe65a1 100644 --- a/toolchain/check/testdata/basics/fail_bad_run.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run.carbon @@ -20,6 +20,7 @@ fn Run() -> String {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run = %Run} // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_bad_run_2.carbon b/toolchain/check/testdata/basics/fail_bad_run_2.carbon index 15b938822b0e..26cc49f2b5b2 100644 --- a/toolchain/check/testdata/basics/fail_bad_run_2.carbon +++ b/toolchain/check/testdata/basics/fail_bad_run_2.carbon @@ -12,6 +12,7 @@ fn Run(n: i32) {} // CHECK:STDOUT: --- fail_bad_run_2.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run = %Run} // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_name_lookup.carbon b/toolchain/check/testdata/basics/fail_name_lookup.carbon index 8ac252e1df85..e26bf5a256fb 100644 --- a/toolchain/check/testdata/basics/fail_name_lookup.carbon +++ b/toolchain/check/testdata/basics/fail_name_lookup.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_name_lookup.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon index d86a429b9fc9..699f7e6500e0 100644 --- a/toolchain/check/testdata/basics/fail_non_type_as_type.carbon +++ b/toolchain/check/testdata/basics/fail_non_type_as_type.carbon @@ -12,6 +12,7 @@ var x: type = 42; // CHECK:STDOUT: --- fail_non_type_as_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %x.var: ref type = var x // CHECK:STDOUT: %x: ref type = bind_name x, %x.var // CHECK:STDOUT: %.loc10: i32 = int_literal 42 diff --git a/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon b/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon index 7dba40112c17..64feae306965 100644 --- a/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon +++ b/toolchain/check/testdata/basics/fail_qualifier_unsupported.carbon @@ -13,6 +13,7 @@ var y: i32 = x.b; // CHECK:STDOUT: --- fail_qualifier_unsupported.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %x.var: ref i32 = var x // CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var // CHECK:STDOUT: %y.var: ref i32 = var y diff --git a/toolchain/check/testdata/basics/multifile.carbon b/toolchain/check/testdata/basics/multifile.carbon index ff04b549c430..128c38bd8114 100644 --- a/toolchain/check/testdata/basics/multifile.carbon +++ b/toolchain/check/testdata/basics/multifile.carbon @@ -17,6 +17,7 @@ fn B() {} // CHECK:STDOUT: --- a.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: } // CHECK:STDOUT: @@ -28,6 +29,7 @@ fn B() {} // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.B = %B} // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon b/toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon index dd0be22c80bd..a16e47f3a6b6 100644 --- a/toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon +++ b/toolchain/check/testdata/basics/multifile_raw_and_textual_ir.carbon @@ -26,22 +26,26 @@ fn B() {} // CHECK:STDOUT: function0: {name: name0, param_refs: block0, body: [block1]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instFunctionType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instFunctionType, value_rep: {kind: copy, type: type1}} // CHECK:STDOUT: type_blocks: {} // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: FunctionDecl, arg0: function0, type: type0} -// CHECK:STDOUT: inst+1: {kind: Return} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: FunctionDecl, arg0: function0, type: type1} +// CHECK:STDOUT: inst+2: {kind: Return} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+1 // CHECK:STDOUT: ... // CHECK:STDOUT: // CHECK:STDOUT: --- a.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: } // CHECK:STDOUT: @@ -58,22 +62,26 @@ fn B() {} // CHECK:STDOUT: function0: {name: name0, param_refs: block0, body: [block1]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instFunctionType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instFunctionType, value_rep: {kind: copy, type: type1}} // CHECK:STDOUT: type_blocks: {} // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: FunctionDecl, arg0: function0, type: type0} -// CHECK:STDOUT: inst+1: {kind: Return} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: FunctionDecl, arg0: function0, type: type1} +// CHECK:STDOUT: inst+2: {kind: Return} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+1 // CHECK:STDOUT: ... // CHECK:STDOUT: // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.B = %B} // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/multifile_raw_ir.carbon b/toolchain/check/testdata/basics/multifile_raw_ir.carbon index d59fbec6d8f6..d93570452b00 100644 --- a/toolchain/check/testdata/basics/multifile_raw_ir.carbon +++ b/toolchain/check/testdata/basics/multifile_raw_ir.carbon @@ -26,17 +26,20 @@ fn B() {} // CHECK:STDOUT: function0: {name: name0, param_refs: block0, body: [block1]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instFunctionType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instFunctionType, value_rep: {kind: copy, type: type1}} // CHECK:STDOUT: type_blocks: {} // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: FunctionDecl, arg0: function0, type: type0} -// CHECK:STDOUT: inst+1: {kind: Return} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: FunctionDecl, arg0: function0, type: type1} +// CHECK:STDOUT: inst+2: {kind: Return} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+1 // CHECK:STDOUT: ... // CHECK:STDOUT: --- // CHECK:STDOUT: filename: b.carbon @@ -46,15 +49,18 @@ fn B() {} // CHECK:STDOUT: function0: {name: name0, param_refs: block0, body: [block1]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instFunctionType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instFunctionType, value_rep: {kind: copy, type: type1}} // CHECK:STDOUT: type_blocks: {} // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: FunctionDecl, arg0: function0, type: type0} -// CHECK:STDOUT: inst+1: {kind: Return} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: FunctionDecl, arg0: function0, type: type1} +// CHECK:STDOUT: inst+2: {kind: Return} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 0: inst+2 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+1 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/numeric_literals.carbon b/toolchain/check/testdata/basics/numeric_literals.carbon index aff307963dae..b5c4a628cc58 100644 --- a/toolchain/check/testdata/basics/numeric_literals.carbon +++ b/toolchain/check/testdata/basics/numeric_literals.carbon @@ -35,6 +35,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/parens.carbon b/toolchain/check/testdata/basics/parens.carbon index f3c1ebd5e3dd..866dc3a7c5e6 100644 --- a/toolchain/check/testdata/basics/parens.carbon +++ b/toolchain/check/testdata/basics/parens.carbon @@ -9,6 +9,7 @@ var test_i32: i32 = ((1) + (2)); // CHECK:STDOUT: --- parens.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.test_i32 = %test_i32} // CHECK:STDOUT: %test_i32.var: ref i32 = var test_i32 // CHECK:STDOUT: %test_i32: ref i32 = bind_name test_i32, %test_i32.var // CHECK:STDOUT: %.loc7_23: i32 = int_literal 1 diff --git a/toolchain/check/testdata/basics/raw_and_textual_ir.carbon b/toolchain/check/testdata/basics/raw_and_textual_ir.carbon index df2474f95e40..86a7473893a5 100644 --- a/toolchain/check/testdata/basics/raw_and_textual_ir.carbon +++ b/toolchain/check/testdata/basics/raw_and_textual_ir.carbon @@ -17,76 +17,79 @@ fn Foo(n: i32) -> (i32, f64) { // CHECK:STDOUT: sem_ir: // CHECK:STDOUT: cross_ref_irs_size: 1 // CHECK:STDOUT: functions: -// CHECK:STDOUT: function0: {name: name0, param_refs: block1, return_type: type3, return_slot: inst+5, body: [block4]} +// CHECK:STDOUT: function0: {name: name0, param_refs: block1, return_type: type4, return_slot: inst+6, body: [block4]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instIntType, value_rep: {kind: copy, type: type0}} -// CHECK:STDOUT: type1: {inst: inst+1, value_rep: {kind: unknown, type: type}} -// CHECK:STDOUT: type2: {inst: instFloatType, value_rep: {kind: copy, type: type2}} -// CHECK:STDOUT: type3: {inst: inst+3, value_rep: {kind: pointer, type: type4}} -// CHECK:STDOUT: type4: {inst: inst+6, value_rep: {kind: copy, type: type4}} -// CHECK:STDOUT: type5: {inst: instFunctionType, value_rep: {kind: copy, type: type5}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instIntType, value_rep: {kind: copy, type: type1}} +// CHECK:STDOUT: type2: {inst: inst+2, value_rep: {kind: unknown, type: type}} +// CHECK:STDOUT: type3: {inst: instFloatType, value_rep: {kind: copy, type: type3}} +// CHECK:STDOUT: type4: {inst: inst+4, value_rep: {kind: pointer, type: type5}} +// CHECK:STDOUT: type5: {inst: inst+7, value_rep: {kind: copy, type: type5}} +// CHECK:STDOUT: type6: {inst: instFunctionType, value_rep: {kind: copy, type: type6}} // CHECK:STDOUT: type_blocks: // CHECK:STDOUT: typeBlock0: // CHECK:STDOUT: 0: typeTypeType // CHECK:STDOUT: 1: typeTypeType // CHECK:STDOUT: typeBlock1: -// CHECK:STDOUT: 0: type0 -// CHECK:STDOUT: 1: type2 +// CHECK:STDOUT: 0: type1 +// CHECK:STDOUT: 1: type3 // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: Param, arg0: name1, type: type0} -// CHECK:STDOUT: inst+1: {kind: TupleType, arg0: typeBlock0, type: typeTypeType} -// CHECK:STDOUT: inst+2: {kind: TupleLiteral, arg0: block2, type: type1} -// CHECK:STDOUT: inst+3: {kind: TupleType, arg0: typeBlock1, type: typeTypeType} -// CHECK:STDOUT: inst+4: {kind: Converted, arg0: inst+2, arg1: inst+3, type: typeTypeType} -// CHECK:STDOUT: inst+5: {kind: VarStorage, arg0: nameReturnSlot, type: type3} -// CHECK:STDOUT: inst+6: {kind: PointerType, arg0: type3, type: typeTypeType} -// CHECK:STDOUT: inst+7: {kind: FunctionDecl, arg0: function0, type: type5} -// CHECK:STDOUT: inst+8: {kind: NameRef, arg0: name1, arg1: inst+0, type: type0} -// CHECK:STDOUT: inst+9: {kind: IntLiteral, arg0: int3, type: type0} -// CHECK:STDOUT: inst+10: {kind: BinaryOperatorAdd, arg0: inst+8, arg1: inst+9, type: type0} -// CHECK:STDOUT: inst+11: {kind: RealLiteral, arg0: real0, type: type2} -// CHECK:STDOUT: inst+12: {kind: TupleLiteral, arg0: block5, type: type3} -// CHECK:STDOUT: inst+13: {kind: TupleAccess, arg0: inst+5, arg1: element0, type: type0} -// CHECK:STDOUT: inst+14: {kind: InitializeFrom, arg0: inst+10, arg1: inst+13, type: type0} -// CHECK:STDOUT: inst+15: {kind: TupleAccess, arg0: inst+5, arg1: element1, type: type2} -// CHECK:STDOUT: inst+16: {kind: InitializeFrom, arg0: inst+11, arg1: inst+15, type: type2} -// CHECK:STDOUT: inst+17: {kind: TupleInit, arg0: block6, arg1: inst+5, type: type3} -// CHECK:STDOUT: inst+18: {kind: Converted, arg0: inst+12, arg1: inst+17, type: type3} -// CHECK:STDOUT: inst+19: {kind: ReturnExpr, arg0: inst+18} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: Param, arg0: name1, type: type1} +// CHECK:STDOUT: inst+2: {kind: TupleType, arg0: typeBlock0, type: typeTypeType} +// CHECK:STDOUT: inst+3: {kind: TupleLiteral, arg0: block2, type: type2} +// CHECK:STDOUT: inst+4: {kind: TupleType, arg0: typeBlock1, type: typeTypeType} +// CHECK:STDOUT: inst+5: {kind: Converted, arg0: inst+3, arg1: inst+4, type: typeTypeType} +// CHECK:STDOUT: inst+6: {kind: VarStorage, arg0: nameReturnSlot, type: type4} +// CHECK:STDOUT: inst+7: {kind: PointerType, arg0: type4, type: typeTypeType} +// CHECK:STDOUT: inst+8: {kind: FunctionDecl, arg0: function0, type: type6} +// CHECK:STDOUT: inst+9: {kind: NameRef, arg0: name1, arg1: inst+1, type: type1} +// CHECK:STDOUT: inst+10: {kind: IntLiteral, arg0: int3, type: type1} +// CHECK:STDOUT: inst+11: {kind: BinaryOperatorAdd, arg0: inst+9, arg1: inst+10, type: type1} +// CHECK:STDOUT: inst+12: {kind: RealLiteral, arg0: real0, type: type3} +// CHECK:STDOUT: inst+13: {kind: TupleLiteral, arg0: block5, type: type4} +// CHECK:STDOUT: inst+14: {kind: TupleAccess, arg0: inst+6, arg1: element0, type: type1} +// CHECK:STDOUT: inst+15: {kind: InitializeFrom, arg0: inst+11, arg1: inst+14, type: type1} +// CHECK:STDOUT: inst+16: {kind: TupleAccess, arg0: inst+6, arg1: element1, type: type3} +// CHECK:STDOUT: inst+17: {kind: InitializeFrom, arg0: inst+12, arg1: inst+16, type: type3} +// CHECK:STDOUT: inst+18: {kind: TupleInit, arg0: block6, arg1: inst+6, type: type4} +// CHECK:STDOUT: inst+19: {kind: Converted, arg0: inst+13, arg1: inst+18, type: type4} +// CHECK:STDOUT: inst+20: {kind: ReturnExpr, arg0: inst+19} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 0: inst+1 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: instIntType // CHECK:STDOUT: 1: instFloatType // CHECK:STDOUT: block3: -// CHECK:STDOUT: 0: inst+0 -// CHECK:STDOUT: 1: inst+2 -// CHECK:STDOUT: 2: inst+4 -// CHECK:STDOUT: 3: inst+5 +// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 1: inst+3 +// CHECK:STDOUT: 2: inst+5 +// CHECK:STDOUT: 3: inst+6 // CHECK:STDOUT: block4: -// CHECK:STDOUT: 0: inst+8 -// CHECK:STDOUT: 1: inst+9 -// CHECK:STDOUT: 2: inst+10 -// CHECK:STDOUT: 3: inst+11 -// CHECK:STDOUT: 4: inst+12 -// CHECK:STDOUT: 5: inst+13 -// CHECK:STDOUT: 6: inst+14 -// CHECK:STDOUT: 7: inst+15 -// CHECK:STDOUT: 8: inst+16 -// CHECK:STDOUT: 9: inst+17 -// CHECK:STDOUT: 10: inst+18 -// CHECK:STDOUT: 11: inst+19 +// CHECK:STDOUT: 0: inst+9 +// CHECK:STDOUT: 1: inst+10 +// CHECK:STDOUT: 2: inst+11 +// CHECK:STDOUT: 3: inst+12 +// CHECK:STDOUT: 4: inst+13 +// CHECK:STDOUT: 5: inst+14 +// CHECK:STDOUT: 6: inst+15 +// CHECK:STDOUT: 7: inst+16 +// CHECK:STDOUT: 8: inst+17 +// CHECK:STDOUT: 9: inst+18 +// CHECK:STDOUT: 10: inst+19 +// CHECK:STDOUT: 11: inst+20 // CHECK:STDOUT: block5: -// CHECK:STDOUT: 0: inst+10 -// CHECK:STDOUT: 1: inst+11 +// CHECK:STDOUT: 0: inst+11 +// CHECK:STDOUT: 1: inst+12 // CHECK:STDOUT: block6: -// CHECK:STDOUT: 0: inst+14 -// CHECK:STDOUT: 1: inst+16 +// CHECK:STDOUT: 0: inst+15 +// CHECK:STDOUT: 1: inst+17 // CHECK:STDOUT: block7: -// CHECK:STDOUT: 0: inst+7 +// CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+8 // CHECK:STDOUT: ... // CHECK:STDOUT: // CHECK:STDOUT: --- raw_and_textual_ir.carbon @@ -98,6 +101,7 @@ fn Foo(n: i32) -> (i32, f64) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/raw_identifier.carbon b/toolchain/check/testdata/basics/raw_identifier.carbon index 70d544714d42..5b69100dde64 100644 --- a/toolchain/check/testdata/basics/raw_identifier.carbon +++ b/toolchain/check/testdata/basics/raw_identifier.carbon @@ -23,6 +23,7 @@ fn C(r#if: i32) -> i32 { // CHECK:STDOUT: --- raw_identifier.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A, .B = %B, .C = %C} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: %C: = fn_decl @C diff --git a/toolchain/check/testdata/basics/raw_ir.carbon b/toolchain/check/testdata/basics/raw_ir.carbon index a37e0fe22ef9..075d9bb9bfba 100644 --- a/toolchain/check/testdata/basics/raw_ir.carbon +++ b/toolchain/check/testdata/basics/raw_ir.carbon @@ -17,74 +17,77 @@ fn Foo(n: i32) -> (i32, f64) { // CHECK:STDOUT: sem_ir: // CHECK:STDOUT: cross_ref_irs_size: 1 // CHECK:STDOUT: functions: -// CHECK:STDOUT: function0: {name: name0, param_refs: block1, return_type: type3, return_slot: inst+5, body: [block4]} +// CHECK:STDOUT: function0: {name: name0, param_refs: block1, return_type: type4, return_slot: inst+6, body: [block4]} // CHECK:STDOUT: classes: {} // CHECK:STDOUT: types: -// CHECK:STDOUT: type0: {inst: instIntType, value_rep: {kind: copy, type: type0}} -// CHECK:STDOUT: type1: {inst: inst+1, value_rep: {kind: unknown, type: type}} -// CHECK:STDOUT: type2: {inst: instFloatType, value_rep: {kind: copy, type: type2}} -// CHECK:STDOUT: type3: {inst: inst+3, value_rep: {kind: pointer, type: type4}} -// CHECK:STDOUT: type4: {inst: inst+6, value_rep: {kind: copy, type: type4}} -// CHECK:STDOUT: type5: {inst: instFunctionType, value_rep: {kind: copy, type: type5}} +// CHECK:STDOUT: type0: {inst: instNamespaceType, value_rep: {kind: copy, type: type0}} +// CHECK:STDOUT: type1: {inst: instIntType, value_rep: {kind: copy, type: type1}} +// CHECK:STDOUT: type2: {inst: inst+2, value_rep: {kind: unknown, type: type}} +// CHECK:STDOUT: type3: {inst: instFloatType, value_rep: {kind: copy, type: type3}} +// CHECK:STDOUT: type4: {inst: inst+4, value_rep: {kind: pointer, type: type5}} +// CHECK:STDOUT: type5: {inst: inst+7, value_rep: {kind: copy, type: type5}} +// CHECK:STDOUT: type6: {inst: instFunctionType, value_rep: {kind: copy, type: type6}} // CHECK:STDOUT: type_blocks: // CHECK:STDOUT: typeBlock0: // CHECK:STDOUT: 0: typeTypeType // CHECK:STDOUT: 1: typeTypeType // CHECK:STDOUT: typeBlock1: -// CHECK:STDOUT: 0: type0 -// CHECK:STDOUT: 1: type2 +// CHECK:STDOUT: 0: type1 +// CHECK:STDOUT: 1: type3 // CHECK:STDOUT: insts: -// CHECK:STDOUT: inst+0: {kind: Param, arg0: name1, type: type0} -// CHECK:STDOUT: inst+1: {kind: TupleType, arg0: typeBlock0, type: typeTypeType} -// CHECK:STDOUT: inst+2: {kind: TupleLiteral, arg0: block2, type: type1} -// CHECK:STDOUT: inst+3: {kind: TupleType, arg0: typeBlock1, type: typeTypeType} -// CHECK:STDOUT: inst+4: {kind: Converted, arg0: inst+2, arg1: inst+3, type: typeTypeType} -// CHECK:STDOUT: inst+5: {kind: VarStorage, arg0: nameReturnSlot, type: type3} -// CHECK:STDOUT: inst+6: {kind: PointerType, arg0: type3, type: typeTypeType} -// CHECK:STDOUT: inst+7: {kind: FunctionDecl, arg0: function0, type: type5} -// CHECK:STDOUT: inst+8: {kind: NameRef, arg0: name1, arg1: inst+0, type: type0} -// CHECK:STDOUT: inst+9: {kind: IntLiteral, arg0: int3, type: type0} -// CHECK:STDOUT: inst+10: {kind: BinaryOperatorAdd, arg0: inst+8, arg1: inst+9, type: type0} -// CHECK:STDOUT: inst+11: {kind: RealLiteral, arg0: real0, type: type2} -// CHECK:STDOUT: inst+12: {kind: TupleLiteral, arg0: block5, type: type3} -// CHECK:STDOUT: inst+13: {kind: TupleAccess, arg0: inst+5, arg1: element0, type: type0} -// CHECK:STDOUT: inst+14: {kind: InitializeFrom, arg0: inst+10, arg1: inst+13, type: type0} -// CHECK:STDOUT: inst+15: {kind: TupleAccess, arg0: inst+5, arg1: element1, type: type2} -// CHECK:STDOUT: inst+16: {kind: InitializeFrom, arg0: inst+11, arg1: inst+15, type: type2} -// CHECK:STDOUT: inst+17: {kind: TupleInit, arg0: block6, arg1: inst+5, type: type3} -// CHECK:STDOUT: inst+18: {kind: Converted, arg0: inst+12, arg1: inst+17, type: type3} -// CHECK:STDOUT: inst+19: {kind: ReturnExpr, arg0: inst+18} +// CHECK:STDOUT: inst+0: {kind: Namespace, arg0: name_scope0, type: type0} +// CHECK:STDOUT: inst+1: {kind: Param, arg0: name1, type: type1} +// CHECK:STDOUT: inst+2: {kind: TupleType, arg0: typeBlock0, type: typeTypeType} +// CHECK:STDOUT: inst+3: {kind: TupleLiteral, arg0: block2, type: type2} +// CHECK:STDOUT: inst+4: {kind: TupleType, arg0: typeBlock1, type: typeTypeType} +// CHECK:STDOUT: inst+5: {kind: Converted, arg0: inst+3, arg1: inst+4, type: typeTypeType} +// CHECK:STDOUT: inst+6: {kind: VarStorage, arg0: nameReturnSlot, type: type4} +// CHECK:STDOUT: inst+7: {kind: PointerType, arg0: type4, type: typeTypeType} +// CHECK:STDOUT: inst+8: {kind: FunctionDecl, arg0: function0, type: type6} +// CHECK:STDOUT: inst+9: {kind: NameRef, arg0: name1, arg1: inst+1, type: type1} +// CHECK:STDOUT: inst+10: {kind: IntLiteral, arg0: int3, type: type1} +// CHECK:STDOUT: inst+11: {kind: BinaryOperatorAdd, arg0: inst+9, arg1: inst+10, type: type1} +// CHECK:STDOUT: inst+12: {kind: RealLiteral, arg0: real0, type: type3} +// CHECK:STDOUT: inst+13: {kind: TupleLiteral, arg0: block5, type: type4} +// CHECK:STDOUT: inst+14: {kind: TupleAccess, arg0: inst+6, arg1: element0, type: type1} +// CHECK:STDOUT: inst+15: {kind: InitializeFrom, arg0: inst+11, arg1: inst+14, type: type1} +// CHECK:STDOUT: inst+16: {kind: TupleAccess, arg0: inst+6, arg1: element1, type: type3} +// CHECK:STDOUT: inst+17: {kind: InitializeFrom, arg0: inst+12, arg1: inst+16, type: type3} +// CHECK:STDOUT: inst+18: {kind: TupleInit, arg0: block6, arg1: inst+6, type: type4} +// CHECK:STDOUT: inst+19: {kind: Converted, arg0: inst+13, arg1: inst+18, type: type4} +// CHECK:STDOUT: inst+20: {kind: ReturnExpr, arg0: inst+19} // CHECK:STDOUT: inst_blocks: // CHECK:STDOUT: block0: {} // CHECK:STDOUT: block1: -// CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 0: inst+1 // CHECK:STDOUT: block2: // CHECK:STDOUT: 0: instIntType // CHECK:STDOUT: 1: instFloatType // CHECK:STDOUT: block3: -// CHECK:STDOUT: 0: inst+0 -// CHECK:STDOUT: 1: inst+2 -// CHECK:STDOUT: 2: inst+4 -// CHECK:STDOUT: 3: inst+5 +// CHECK:STDOUT: 0: inst+1 +// CHECK:STDOUT: 1: inst+3 +// CHECK:STDOUT: 2: inst+5 +// CHECK:STDOUT: 3: inst+6 // CHECK:STDOUT: block4: -// CHECK:STDOUT: 0: inst+8 -// CHECK:STDOUT: 1: inst+9 -// CHECK:STDOUT: 2: inst+10 -// CHECK:STDOUT: 3: inst+11 -// CHECK:STDOUT: 4: inst+12 -// CHECK:STDOUT: 5: inst+13 -// CHECK:STDOUT: 6: inst+14 -// CHECK:STDOUT: 7: inst+15 -// CHECK:STDOUT: 8: inst+16 -// CHECK:STDOUT: 9: inst+17 -// CHECK:STDOUT: 10: inst+18 -// CHECK:STDOUT: 11: inst+19 +// CHECK:STDOUT: 0: inst+9 +// CHECK:STDOUT: 1: inst+10 +// CHECK:STDOUT: 2: inst+11 +// CHECK:STDOUT: 3: inst+12 +// CHECK:STDOUT: 4: inst+13 +// CHECK:STDOUT: 5: inst+14 +// CHECK:STDOUT: 6: inst+15 +// CHECK:STDOUT: 7: inst+16 +// CHECK:STDOUT: 8: inst+17 +// CHECK:STDOUT: 9: inst+18 +// CHECK:STDOUT: 10: inst+19 +// CHECK:STDOUT: 11: inst+20 // CHECK:STDOUT: block5: -// CHECK:STDOUT: 0: inst+10 -// CHECK:STDOUT: 1: inst+11 +// CHECK:STDOUT: 0: inst+11 +// CHECK:STDOUT: 1: inst+12 // CHECK:STDOUT: block6: -// CHECK:STDOUT: 0: inst+14 -// CHECK:STDOUT: 1: inst+16 +// CHECK:STDOUT: 0: inst+15 +// CHECK:STDOUT: 1: inst+17 // CHECK:STDOUT: block7: -// CHECK:STDOUT: 0: inst+7 +// CHECK:STDOUT: 0: inst+0 +// CHECK:STDOUT: 1: inst+8 // CHECK:STDOUT: ... diff --git a/toolchain/check/testdata/basics/run.carbon b/toolchain/check/testdata/basics/run.carbon index 7b43a77554fe..9feef50f300c 100644 --- a/toolchain/check/testdata/basics/run.carbon +++ b/toolchain/check/testdata/basics/run.carbon @@ -9,6 +9,7 @@ fn Run() {} // CHECK:STDOUT: --- run.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run = %Run} // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/run_i32.carbon b/toolchain/check/testdata/basics/run_i32.carbon index 381333ac0ae0..15fa3101decc 100644 --- a/toolchain/check/testdata/basics/run_i32.carbon +++ b/toolchain/check/testdata/basics/run_i32.carbon @@ -9,6 +9,7 @@ fn Run() -> i32 { return 0; } // CHECK:STDOUT: --- run_i32.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run = %Run} // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/basics/textual_ir.carbon b/toolchain/check/testdata/basics/textual_ir.carbon index 49772975f2bd..2f011157924a 100644 --- a/toolchain/check/testdata/basics/textual_ir.carbon +++ b/toolchain/check/testdata/basics/textual_ir.carbon @@ -21,6 +21,7 @@ fn Foo(n: i32) -> (i32, f64) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/basic.carbon b/toolchain/check/testdata/class/basic.carbon index 557393369a63..571ce74e758d 100644 --- a/toolchain/check/testdata/class/basic.carbon +++ b/toolchain/check/testdata/class/basic.carbon @@ -29,6 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Run = %Run} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/fail_abstract.carbon b/toolchain/check/testdata/class/fail_abstract.carbon index 8b777ad3a794..70c6f2664f7d 100644 --- a/toolchain/check/testdata/class/fail_abstract.carbon +++ b/toolchain/check/testdata/class/fail_abstract.carbon @@ -23,6 +23,7 @@ fn Make() -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Make = %Make} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Make: = fn_decl @Make diff --git a/toolchain/check/testdata/class/fail_addr_not_self.carbon b/toolchain/check/testdata/class/fail_addr_not_self.carbon index 6e92eff9a9a7..cad4b40d9375 100644 --- a/toolchain/check/testdata/class/fail_addr_not_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_not_self.carbon @@ -23,6 +23,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_addr_self.carbon b/toolchain/check/testdata/class/fail_addr_self.carbon index 081430b11ee5..bfd16f1e4dc8 100644 --- a/toolchain/check/testdata/class/fail_addr_self.carbon +++ b/toolchain/check/testdata/class/fail_addr_self.carbon @@ -47,6 +47,7 @@ fn F(c: Class, p: Class*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.2 diff --git a/toolchain/check/testdata/class/fail_incomplete.carbon b/toolchain/check/testdata/class/fail_incomplete.carbon index 4f1707e115ae..1cdf3e31051f 100644 --- a/toolchain/check/testdata/class/fail_incomplete.carbon +++ b/toolchain/check/testdata/class/fail_incomplete.carbon @@ -123,6 +123,7 @@ fn CallReturnIncomplete() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .CallClassFunction = %CallClassFunction, .global_var = %global_var, .ConvertFromStruct = %ConvertFromStruct, .MemberAccess = %MemberAccess, .Copy = %Copy, .Let = %Let, .TakeIncomplete = %TakeIncomplete, .ReturnIncomplete = %ReturnIncomplete, .CallTakeIncomplete = %CallTakeIncomplete, .CallReturnIncomplete = %CallReturnIncomplete} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %.loc15: = fn_decl @.1 diff --git a/toolchain/check/testdata/class/fail_init.carbon b/toolchain/check/testdata/class/fail_init.carbon index 669d67cb6933..d1ebfce80505 100644 --- a/toolchain/check/testdata/class/fail_init.carbon +++ b/toolchain/check/testdata/class/fail_init.carbon @@ -35,6 +35,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/fail_init_as_inplace.carbon b/toolchain/check/testdata/class/fail_init_as_inplace.carbon index 0a43201d8943..22bb6cf7a2d5 100644 --- a/toolchain/check/testdata/class/fail_init_as_inplace.carbon +++ b/toolchain/check/testdata/class/fail_init_as_inplace.carbon @@ -31,6 +31,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .G = %G, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/fail_memaccess_category.carbon b/toolchain/check/testdata/class/fail_memaccess_category.carbon index 9a6b11f2e833..ffd89f0dfd38 100644 --- a/toolchain/check/testdata/class/fail_memaccess_category.carbon +++ b/toolchain/check/testdata/class/fail_memaccess_category.carbon @@ -45,6 +45,7 @@ fn F(s: {.a: A}, b: B) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A.decl, .B = %B.decl, .F = %F} // CHECK:STDOUT: %A.decl = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A // CHECK:STDOUT: %B.decl = class_decl @B, () diff --git a/toolchain/check/testdata/class/fail_member_of_let.carbon b/toolchain/check/testdata/class/fail_member_of_let.carbon index 145a9000e120..7cfbfef99f59 100644 --- a/toolchain/check/testdata/class/fail_member_of_let.carbon +++ b/toolchain/check/testdata/class/fail_member_of_let.carbon @@ -13,10 +13,7 @@ let T: type = Class; // The class name is required to be written in the same way as in the class // declaration. An expression that evaluates to the class name is not accepted. -// CHECK:STDERR: fail_member_of_let.carbon:[[@LINE+6]]:6: ERROR: Declaration qualifiers are only allowed for entities that provide a scope. -// CHECK:STDERR: fn T.F() {} -// CHECK:STDERR: ^ -// CHECK:STDERR: fail_member_of_let.carbon:[[@LINE+3]]:4: Non-scope entity referenced here. +// CHECK:STDERR: fail_member_of_let.carbon:[[@LINE+3]]:4: ERROR: Name `T` not found. // CHECK:STDERR: fn T.F() {} // CHECK:STDERR: ^ fn T.F() {} @@ -28,11 +25,12 @@ fn T.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Class.ref: type = name_ref Class, %Class // CHECK:STDOUT: %T: type = bind_name T, %Class.ref -// CHECK:STDOUT: %.loc22: = fn_decl @.1 +// CHECK:STDOUT: %.loc19: = fn_decl @.1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: class @Class { diff --git a/toolchain/check/testdata/class/fail_method.carbon b/toolchain/check/testdata/class/fail_method.carbon index 4be3b5e2311a..c00cbb6c6ba1 100644 --- a/toolchain/check/testdata/class/fail_method.carbon +++ b/toolchain/check/testdata/class/fail_method.carbon @@ -39,6 +39,7 @@ fn F(c: Class) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon b/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon index 343855b9582b..3bd06107f934 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_introducer.carbon @@ -81,6 +81,7 @@ base class G; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A.decl.loc7, .B = %B.decl.loc16, .C = %C.decl.loc25, .D = %D.decl.loc34, .E = %E.decl.loc43, .F = %F.decl.loc52, .G = %G.decl.loc61} // CHECK:STDOUT: %A.decl.loc7 = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A // CHECK:STDOUT: %A.decl.loc14 = class_decl @A, () diff --git a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon index 23ced33e9a3e..239ffac9a11e 100644 --- a/toolchain/check/testdata/class/fail_redeclaration_scope.carbon +++ b/toolchain/check/testdata/class/fail_redeclaration_scope.carbon @@ -28,6 +28,7 @@ class Y { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A.decl.loc7, .X = %X.decl, .Y = %Y.decl} // CHECK:STDOUT: %A.decl.loc7 = class_decl @A.1, () // CHECK:STDOUT: %A: type = class_type @A.1 // CHECK:STDOUT: %X.decl = class_decl @X, () diff --git a/toolchain/check/testdata/class/fail_redefinition.carbon b/toolchain/check/testdata/class/fail_redefinition.carbon index 186332cc4751..9631ce2b0e48 100644 --- a/toolchain/check/testdata/class/fail_redefinition.carbon +++ b/toolchain/check/testdata/class/fail_redefinition.carbon @@ -31,6 +31,7 @@ fn Class.H() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl.loc7} // CHECK:STDOUT: %Class.decl.loc7 = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Class.decl.loc18 = class_decl @Class, () @@ -44,8 +45,8 @@ fn Class.H() {} // CHECK:STDOUT: %H: = fn_decl @H // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .F = -// CHECK:STDOUT: .H = +// CHECK:STDOUT: .F = +// CHECK:STDOUT: .H = // CHECK:STDOUT: .G = %G // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/class/fail_reorder.carbon b/toolchain/check/testdata/class/fail_reorder.carbon index 9f61b5d373b4..2b8be773a7a0 100644 --- a/toolchain/check/testdata/class/fail_reorder.carbon +++ b/toolchain/check/testdata/class/fail_reorder.carbon @@ -32,6 +32,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/fail_scope.carbon b/toolchain/check/testdata/class/fail_scope.carbon index eb1590e6d1fd..583202535d73 100644 --- a/toolchain/check/testdata/class/fail_scope.carbon +++ b/toolchain/check/testdata/class/fail_scope.carbon @@ -24,6 +24,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .G = %G} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/fail_self.carbon b/toolchain/check/testdata/class/fail_self.carbon index 2cf2928e50de..11c46c343343 100644 --- a/toolchain/check/testdata/class/fail_self.carbon +++ b/toolchain/check/testdata/class/fail_self.carbon @@ -59,6 +59,7 @@ fn CallWrongSelf(ws: WrongSelf) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .WrongSelf = %WrongSelf.decl, .CallWrongSelf = %CallWrongSelf} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.1 diff --git a/toolchain/check/testdata/class/fail_unbound_field.carbon b/toolchain/check/testdata/class/fail_unbound_field.carbon index 54fa2b9284f6..dec14df03e2e 100644 --- a/toolchain/check/testdata/class/fail_unbound_field.carbon +++ b/toolchain/check/testdata/class/fail_unbound_field.carbon @@ -28,6 +28,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .G = %G} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/fail_unknown_member.carbon b/toolchain/check/testdata/class/fail_unknown_member.carbon index 8ab5087ce4a8..79c1ddf3e677 100644 --- a/toolchain/check/testdata/class/fail_unknown_member.carbon +++ b/toolchain/check/testdata/class/fail_unknown_member.carbon @@ -24,6 +24,7 @@ fn G(c: Class) -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .G = %G} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/class/field_access.carbon b/toolchain/check/testdata/class/field_access.carbon index 71cccca80545..86d7a9a0b75d 100644 --- a/toolchain/check/testdata/class/field_access.carbon +++ b/toolchain/check/testdata/class/field_access.carbon @@ -24,6 +24,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Run = %Run} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run diff --git a/toolchain/check/testdata/class/field_access_in_value.carbon b/toolchain/check/testdata/class/field_access_in_value.carbon index a0fd97825174..967d831b47eb 100644 --- a/toolchain/check/testdata/class/field_access_in_value.carbon +++ b/toolchain/check/testdata/class/field_access_in_value.carbon @@ -25,6 +25,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Run = %Run} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run diff --git a/toolchain/check/testdata/class/forward_declared.carbon b/toolchain/check/testdata/class/forward_declared.carbon index f44853a28c6e..30f3e19eca40 100644 --- a/toolchain/check/testdata/class/forward_declared.carbon +++ b/toolchain/check/testdata/class/forward_declared.carbon @@ -11,6 +11,7 @@ fn F(p: Class*) -> Class* { return p; } // CHECK:STDOUT: --- forward_declared.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/init.carbon b/toolchain/check/testdata/class/init.carbon index f03f76c51728..aafea891fa5b 100644 --- a/toolchain/check/testdata/class/init.carbon +++ b/toolchain/check/testdata/class/init.carbon @@ -26,6 +26,7 @@ fn MakeReorder(n: i32, next: Class*) -> Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Make = %Make, .MakeReorder = %MakeReorder} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Make: = fn_decl @Make diff --git a/toolchain/check/testdata/class/init_as.carbon b/toolchain/check/testdata/class/init_as.carbon index f6b2ca20b0d6..b81c08ec3823 100644 --- a/toolchain/check/testdata/class/init_as.carbon +++ b/toolchain/check/testdata/class/init_as.carbon @@ -21,6 +21,7 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/init_nested.carbon b/toolchain/check/testdata/class/init_nested.carbon index aed385303448..854064321ad3 100644 --- a/toolchain/check/testdata/class/init_nested.carbon +++ b/toolchain/check/testdata/class/init_nested.carbon @@ -32,6 +32,7 @@ fn MakeOuter() -> Outer { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Inner = %Inner.decl, .MakeInner = %MakeInner, .Outer = %Outer.decl, .MakeOuter = %MakeOuter} // CHECK:STDOUT: %Inner.decl = class_decl @Inner, () // CHECK:STDOUT: %Inner: type = class_type @Inner // CHECK:STDOUT: %MakeInner: = fn_decl @MakeInner diff --git a/toolchain/check/testdata/class/method.carbon b/toolchain/check/testdata/class/method.carbon index 76627d0e82c1..74a5f2ac20a7 100644 --- a/toolchain/check/testdata/class/method.carbon +++ b/toolchain/check/testdata/class/method.carbon @@ -52,6 +52,7 @@ fn CallGOnInitializingExpr() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Call = %Call, .CallWithAddr = %CallWithAddr, .CallFThroughPointer = %CallFThroughPointer, .CallGThroughPointer = %CallGThroughPointer, .Make = %Make, .CallFOnInitializingExpr = %CallFOnInitializingExpr, .CallGOnInitializingExpr = %CallGOnInitializingExpr} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/nested.carbon b/toolchain/check/testdata/class/nested.carbon index e7d229db450d..bb961efd9ad3 100644 --- a/toolchain/check/testdata/class/nested.carbon +++ b/toolchain/check/testdata/class/nested.carbon @@ -38,6 +38,7 @@ fn F(a: Outer*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Outer = %Outer.decl, .F = %F} // CHECK:STDOUT: %Outer.decl = class_decl @Outer, () // CHECK:STDOUT: %Outer: type = class_type @Outer // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/nested_name.carbon b/toolchain/check/testdata/class/nested_name.carbon index c093f169635a..f4dd8c1e01cd 100644 --- a/toolchain/check/testdata/class/nested_name.carbon +++ b/toolchain/check/testdata/class/nested_name.carbon @@ -29,6 +29,7 @@ fn G(o: Outer) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Outer = %Outer.decl, .F = %F, .G = %G} // CHECK:STDOUT: %Outer.decl = class_decl @Outer, () // CHECK:STDOUT: %Outer: type = class_type @Outer // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/raw_self.carbon b/toolchain/check/testdata/class/raw_self.carbon index 929e27216df8..e5314d0eb6ba 100644 --- a/toolchain/check/testdata/class/raw_self.carbon +++ b/toolchain/check/testdata/class/raw_self.carbon @@ -29,6 +29,7 @@ fn Class.G[self: Class](r#self: i32) -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/raw_self_type.carbon b/toolchain/check/testdata/class/raw_self_type.carbon index c43dd980a1d9..68c4f3e8aec1 100644 --- a/toolchain/check/testdata/class/raw_self_type.carbon +++ b/toolchain/check/testdata/class/raw_self_type.carbon @@ -18,6 +18,7 @@ class Class { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/class/redeclaration.carbon b/toolchain/check/testdata/class/redeclaration.carbon index 7ff76843f616..b60c60a084a4 100644 --- a/toolchain/check/testdata/class/redeclaration.carbon +++ b/toolchain/check/testdata/class/redeclaration.carbon @@ -19,6 +19,7 @@ fn Class.F() {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl.loc7} // CHECK:STDOUT: %Class.decl.loc7 = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Class.decl.loc9 = class_decl @Class, () diff --git a/toolchain/check/testdata/class/redeclaration_introducer.carbon b/toolchain/check/testdata/class/redeclaration_introducer.carbon index 0e11667bf344..77b3dc227280 100644 --- a/toolchain/check/testdata/class/redeclaration_introducer.carbon +++ b/toolchain/check/testdata/class/redeclaration_introducer.carbon @@ -19,6 +19,7 @@ abstract class C {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A.decl.loc7, .B = %B.decl.loc8, .C = %C.decl.loc9} // CHECK:STDOUT: %A.decl.loc7 = class_decl @A, () // CHECK:STDOUT: %A: type = class_type @A // CHECK:STDOUT: %B.decl.loc8 = class_decl @B, () diff --git a/toolchain/check/testdata/class/reenter_scope.carbon b/toolchain/check/testdata/class/reenter_scope.carbon index e9b10ed1d0fc..b03966f307b5 100644 --- a/toolchain/check/testdata/class/reenter_scope.carbon +++ b/toolchain/check/testdata/class/reenter_scope.carbon @@ -20,6 +20,7 @@ fn Class.F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/scope.carbon b/toolchain/check/testdata/class/scope.carbon index 26da34a10225..28bca0084fba 100644 --- a/toolchain/check/testdata/class/scope.carbon +++ b/toolchain/check/testdata/class/scope.carbon @@ -29,6 +29,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .F = %F, .Run = %Run} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F.2 diff --git a/toolchain/check/testdata/class/self.carbon b/toolchain/check/testdata/class/self.carbon index 60208f739b26..37425b801d0b 100644 --- a/toolchain/check/testdata/class/self.carbon +++ b/toolchain/check/testdata/class/self.carbon @@ -27,6 +27,7 @@ fn Class.G[addr self: Class*]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/self_type.carbon b/toolchain/check/testdata/class/self_type.carbon index 309e80514fa7..dae9c801e15f 100644 --- a/toolchain/check/testdata/class/self_type.carbon +++ b/toolchain/check/testdata/class/self_type.carbon @@ -24,6 +24,7 @@ fn Class.F[self: Class]() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/class/static_method.carbon b/toolchain/check/testdata/class/static_method.carbon index 7b59a4c2037f..66b3a40eebe1 100644 --- a/toolchain/check/testdata/class/static_method.carbon +++ b/toolchain/check/testdata/class/static_method.carbon @@ -22,6 +22,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Class = %Class.decl, .Run = %Run} // CHECK:STDOUT: %Class.decl = class_decl @Class, () // CHECK:STDOUT: %Class: type = class_type @Class // CHECK:STDOUT: %Run: = fn_decl @Run diff --git a/toolchain/check/testdata/const/collapse.carbon b/toolchain/check/testdata/const/collapse.carbon index 6cf90700d945..56434c90c7fe 100644 --- a/toolchain/check/testdata/const/collapse.carbon +++ b/toolchain/check/testdata/const/collapse.carbon @@ -15,6 +15,7 @@ fn F(p: const i32**) -> const (const i32)** { // CHECK:STDOUT: --- collapse.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/const/fail_collapse.carbon b/toolchain/check/testdata/const/fail_collapse.carbon index 49b3e44853b9..d08e37e06af4 100644 --- a/toolchain/check/testdata/const/fail_collapse.carbon +++ b/toolchain/check/testdata/const/fail_collapse.carbon @@ -17,6 +17,7 @@ fn G(p: const (const i32)**) -> i32** { // CHECK:STDOUT: --- fail_collapse.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.G = %G} // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon index 2ea35936ede4..db85b04a5909 100644 --- a/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon +++ b/toolchain/check/testdata/expr_category/in_place_tuple_init.carbon @@ -25,6 +25,7 @@ fn H() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .H = %H} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %H: = fn_decl @H diff --git a/toolchain/check/testdata/function/call/empty_struct.carbon b/toolchain/check/testdata/function/call/empty_struct.carbon index 9e2d6bcfcf2c..5c0725e96ede 100644 --- a/toolchain/check/testdata/function/call/empty_struct.carbon +++ b/toolchain/check/testdata/function/call/empty_struct.carbon @@ -20,6 +20,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Echo = %Echo, .Main = %Main} // CHECK:STDOUT: %Echo: = fn_decl @Echo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/empty_tuple.carbon b/toolchain/check/testdata/function/call/empty_tuple.carbon index 68c6d46639fe..fcad4473d2b5 100644 --- a/toolchain/check/testdata/function/call/empty_tuple.carbon +++ b/toolchain/check/testdata/function/call/empty_tuple.carbon @@ -19,6 +19,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Echo = %Echo, .Main = %Main} // CHECK:STDOUT: %Echo: = fn_decl @Echo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_not_callable.carbon b/toolchain/check/testdata/function/call/fail_not_callable.carbon index 70824e00e040..824e19d9ea10 100644 --- a/toolchain/check/testdata/function/call/fail_not_callable.carbon +++ b/toolchain/check/testdata/function/call/fail_not_callable.carbon @@ -18,6 +18,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run = %Run} // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/call/fail_param_count.carbon b/toolchain/check/testdata/function/call/fail_param_count.carbon index 90b681d0c76e..421f8f6d5860 100644 --- a/toolchain/check/testdata/function/call/fail_param_count.carbon +++ b/toolchain/check/testdata/function/call/fail_param_count.carbon @@ -62,6 +62,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Run0 = %Run0, .Run1 = %Run1, .Run2 = %Run2, .Main = %Main} // CHECK:STDOUT: %Run0: = fn_decl @Run0 // CHECK:STDOUT: %Run1: = fn_decl @Run1 // CHECK:STDOUT: %Run2: = fn_decl @Run2 diff --git a/toolchain/check/testdata/function/call/fail_param_type.carbon b/toolchain/check/testdata/function/call/fail_param_type.carbon index 22144dc90c9d..753c4de49a63 100644 --- a/toolchain/check/testdata/function/call/fail_param_type.carbon +++ b/toolchain/check/testdata/function/call/fail_param_type.carbon @@ -23,6 +23,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.G = %G, .F = %F} // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon index 90e8e24930d2..c0b5bfebc08b 100644 --- a/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon +++ b/toolchain/check/testdata/function/call/fail_return_type_mismatch.carbon @@ -16,6 +16,7 @@ fn Run() { // CHECK:STDOUT: --- fail_return_type_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Run = %Run} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/i32.carbon b/toolchain/check/testdata/function/call/i32.carbon index 553690f226a6..a7ec9ef6dffe 100644 --- a/toolchain/check/testdata/function/call/i32.carbon +++ b/toolchain/check/testdata/function/call/i32.carbon @@ -15,6 +15,7 @@ fn Main() { // CHECK:STDOUT: --- i32.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Echo = %Echo, .Main = %Main} // CHECK:STDOUT: %Echo: = fn_decl @Echo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/more_param_ir.carbon b/toolchain/check/testdata/function/call/more_param_ir.carbon index a789cb34f709..2db5e2a2c3ef 100644 --- a/toolchain/check/testdata/function/call/more_param_ir.carbon +++ b/toolchain/check/testdata/function/call/more_param_ir.carbon @@ -18,6 +18,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one.carbon b/toolchain/check/testdata/function/call/params_one.carbon index c9c602c49fa8..878d731593a9 100644 --- a/toolchain/check/testdata/function/call/params_one.carbon +++ b/toolchain/check/testdata/function/call/params_one.carbon @@ -17,6 +17,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_one_comma.carbon b/toolchain/check/testdata/function/call/params_one_comma.carbon index 47b26e8722b1..8bbabf9378a2 100644 --- a/toolchain/check/testdata/function/call/params_one_comma.carbon +++ b/toolchain/check/testdata/function/call/params_one_comma.carbon @@ -18,6 +18,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two.carbon b/toolchain/check/testdata/function/call/params_two.carbon index 26331082f8a5..ff2f327f88fb 100644 --- a/toolchain/check/testdata/function/call/params_two.carbon +++ b/toolchain/check/testdata/function/call/params_two.carbon @@ -17,6 +17,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_two_comma.carbon b/toolchain/check/testdata/function/call/params_two_comma.carbon index a0e866312e5f..d03acda0b678 100644 --- a/toolchain/check/testdata/function/call/params_two_comma.carbon +++ b/toolchain/check/testdata/function/call/params_two_comma.carbon @@ -18,6 +18,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/params_zero.carbon b/toolchain/check/testdata/function/call/params_zero.carbon index 16ffe2ae0e01..037b23fac1d2 100644 --- a/toolchain/check/testdata/function/call/params_zero.carbon +++ b/toolchain/check/testdata/function/call/params_zero.carbon @@ -17,6 +17,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Main = %Main} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/call/return_implicit.carbon b/toolchain/check/testdata/function/call/return_implicit.carbon index 869123ff5c07..b0ee0f37d8d6 100644 --- a/toolchain/check/testdata/function/call/return_implicit.carbon +++ b/toolchain/check/testdata/function/call/return_implicit.carbon @@ -18,6 +18,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.MakeImplicitEmptyTuple = %MakeImplicitEmptyTuple, .Main = %Main} // CHECK:STDOUT: %MakeImplicitEmptyTuple: = fn_decl @MakeImplicitEmptyTuple // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/declaration/simple.carbon b/toolchain/check/testdata/function/declaration/simple.carbon index a434b6ca42ac..065767dbc7b8 100644 --- a/toolchain/check/testdata/function/declaration/simple.carbon +++ b/toolchain/check/testdata/function/declaration/simple.carbon @@ -15,6 +15,7 @@ fn G() { F(); } // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/function/definition/fail_param_name_conflict.carbon b/toolchain/check/testdata/function/definition/fail_param_name_conflict.carbon index b6b3922c27b0..6e2e3c821010 100644 --- a/toolchain/check/testdata/function/definition/fail_param_name_conflict.carbon +++ b/toolchain/check/testdata/function/definition/fail_param_name_conflict.carbon @@ -15,6 +15,7 @@ fn Bar(a: i32, a: i32) {} // CHECK:STDOUT: --- fail_param_name_conflict.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Bar = %Bar} // CHECK:STDOUT: %Bar: = fn_decl @Bar // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/order.carbon b/toolchain/check/testdata/function/definition/order.carbon index 73132648b5fc..4d6cc3f013c2 100644 --- a/toolchain/check/testdata/function/definition/order.carbon +++ b/toolchain/check/testdata/function/definition/order.carbon @@ -11,6 +11,7 @@ fn Baz() {} // CHECK:STDOUT: --- order.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Bar = %Bar, .Baz = %Baz} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Bar: = fn_decl @Bar // CHECK:STDOUT: %Baz: = fn_decl @Baz diff --git a/toolchain/check/testdata/function/definition/params_one.carbon b/toolchain/check/testdata/function/definition/params_one.carbon index 5a855a7fcd8f..e35caa1e925f 100644 --- a/toolchain/check/testdata/function/definition/params_one.carbon +++ b/toolchain/check/testdata/function/definition/params_one.carbon @@ -9,6 +9,7 @@ fn Foo(a: i32) {} // CHECK:STDOUT: --- params_one.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_one_comma.carbon b/toolchain/check/testdata/function/definition/params_one_comma.carbon index e03a9676941c..6fdbe21bd384 100644 --- a/toolchain/check/testdata/function/definition/params_one_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_one_comma.carbon @@ -9,6 +9,7 @@ fn Foo(a: i32,) {} // CHECK:STDOUT: --- params_one_comma.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_two.carbon b/toolchain/check/testdata/function/definition/params_two.carbon index e8adbd13ece2..b65e322a4b9b 100644 --- a/toolchain/check/testdata/function/definition/params_two.carbon +++ b/toolchain/check/testdata/function/definition/params_two.carbon @@ -9,6 +9,7 @@ fn Foo(a: i32, b: i32) {} // CHECK:STDOUT: --- params_two.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_two_comma.carbon b/toolchain/check/testdata/function/definition/params_two_comma.carbon index ece45bb88522..c4d38bc4fe1f 100644 --- a/toolchain/check/testdata/function/definition/params_two_comma.carbon +++ b/toolchain/check/testdata/function/definition/params_two_comma.carbon @@ -9,6 +9,7 @@ fn Foo(a: i32, b: i32,) {} // CHECK:STDOUT: --- params_two_comma.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/params_zero.carbon b/toolchain/check/testdata/function/definition/params_zero.carbon index b9ba1706c181..21bb1fb901d0 100644 --- a/toolchain/check/testdata/function/definition/params_zero.carbon +++ b/toolchain/check/testdata/function/definition/params_zero.carbon @@ -9,6 +9,7 @@ fn Foo() {} // CHECK:STDOUT: --- params_zero.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/function/definition/same_param_name.carbon b/toolchain/check/testdata/function/definition/same_param_name.carbon index e4b20140ced5..5be264a2ae81 100644 --- a/toolchain/check/testdata/function/definition/same_param_name.carbon +++ b/toolchain/check/testdata/function/definition/same_param_name.carbon @@ -10,6 +10,7 @@ fn Bar(a: i32) {} // CHECK:STDOUT: --- same_param_name.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %Foo, .Bar = %Bar} // CHECK:STDOUT: %Foo: = fn_decl @Foo // CHECK:STDOUT: %Bar: = fn_decl @Bar // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/if/else.carbon b/toolchain/check/testdata/if/else.carbon index cb1debde5fd2..f248edebc48f 100644 --- a/toolchain/check/testdata/if/else.carbon +++ b/toolchain/check/testdata/if/else.carbon @@ -24,6 +24,7 @@ fn If(b: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .H = %H, .If = %If} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %H: = fn_decl @H diff --git a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon index 0c14174570bf..a352968eb83a 100644 --- a/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/fail_reachable_fallthrough.carbon @@ -36,6 +36,7 @@ fn If3(b: bool) -> i32 { // CHECK:STDOUT: --- fail_reachable_fallthrough.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.If1 = %If1, .If2 = %If2, .If3 = %If3} // CHECK:STDOUT: %If1: = fn_decl @If1 // CHECK:STDOUT: %If2: = fn_decl @If2 // CHECK:STDOUT: %If3: = fn_decl @If3 diff --git a/toolchain/check/testdata/if/fail_scope.carbon b/toolchain/check/testdata/if/fail_scope.carbon index fbb9993cd801..3ab6048fc63e 100644 --- a/toolchain/check/testdata/if/fail_scope.carbon +++ b/toolchain/check/testdata/if/fail_scope.carbon @@ -18,6 +18,7 @@ fn VarScope(b: bool) -> i32 { // CHECK:STDOUT: --- fail_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.VarScope = %VarScope} // CHECK:STDOUT: %VarScope: = fn_decl @VarScope // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if/no_else.carbon b/toolchain/check/testdata/if/no_else.carbon index eb012b067a3f..938e2545d335 100644 --- a/toolchain/check/testdata/if/no_else.carbon +++ b/toolchain/check/testdata/if/no_else.carbon @@ -21,6 +21,7 @@ fn If(b: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .If = %If} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %If: = fn_decl @If diff --git a/toolchain/check/testdata/if/unreachable_fallthrough.carbon b/toolchain/check/testdata/if/unreachable_fallthrough.carbon index 9e33c8e11442..b222693fe48f 100644 --- a/toolchain/check/testdata/if/unreachable_fallthrough.carbon +++ b/toolchain/check/testdata/if/unreachable_fallthrough.carbon @@ -16,6 +16,7 @@ fn If(b: bool) -> i32 { // CHECK:STDOUT: --- unreachable_fallthrough.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.If = %If} // CHECK:STDOUT: %If: = fn_decl @If // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/basic.carbon b/toolchain/check/testdata/if_expr/basic.carbon index 8e0a3837f958..538553a387c3 100644 --- a/toolchain/check/testdata/if_expr/basic.carbon +++ b/toolchain/check/testdata/if_expr/basic.carbon @@ -11,6 +11,7 @@ fn F(b: bool, n: i32, m: i32) -> i32 { // CHECK:STDOUT: --- basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/constant_condition.carbon b/toolchain/check/testdata/if_expr/constant_condition.carbon index 4e45c1300fb8..9c17a3db26d3 100644 --- a/toolchain/check/testdata/if_expr/constant_condition.carbon +++ b/toolchain/check/testdata/if_expr/constant_condition.carbon @@ -18,6 +18,7 @@ fn G() -> i32 { // CHECK:STDOUT: --- constant_condition.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A, .B = %B, .F = %F, .G = %G} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/if_expr/control_flow.carbon b/toolchain/check/testdata/if_expr/control_flow.carbon index 36458f1b6de3..04bc37bedf07 100644 --- a/toolchain/check/testdata/if_expr/control_flow.carbon +++ b/toolchain/check/testdata/if_expr/control_flow.carbon @@ -14,6 +14,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: --- control_flow.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A, .B = %B, .F = %F} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon index b9451f0d164b..d38c8c6a7fca 100644 --- a/toolchain/check/testdata/if_expr/fail_not_in_function.carbon +++ b/toolchain/check/testdata/if_expr/fail_not_in_function.carbon @@ -51,6 +51,6 @@ class C { // CHECK:STDOUT: if %.loc33 br !if.expr.then else br !if.expr.else // CHECK:STDOUT: // CHECK:STDOUT: !members: -// CHECK:STDOUT: .n = +// CHECK:STDOUT: .n = // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/nested.carbon b/toolchain/check/testdata/if_expr/nested.carbon index 131dc27022ac..cb377ee2e5f9 100644 --- a/toolchain/check/testdata/if_expr/nested.carbon +++ b/toolchain/check/testdata/if_expr/nested.carbon @@ -11,6 +11,7 @@ fn F(a: bool, b: bool, c: bool) -> i32 { // CHECK:STDOUT: --- nested.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/if_expr/struct.carbon b/toolchain/check/testdata/if_expr/struct.carbon index 6f2eefa4ad11..4354d6c747bc 100644 --- a/toolchain/check/testdata/if_expr/struct.carbon +++ b/toolchain/check/testdata/if_expr/struct.carbon @@ -19,6 +19,7 @@ fn F(cond: bool) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.G = %G, .F = %F} // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/array_element_access.carbon b/toolchain/check/testdata/index/array_element_access.carbon index 307226246c2e..b009216ee18f 100644 --- a/toolchain/check/testdata/index/array_element_access.carbon +++ b/toolchain/check/testdata/index/array_element_access.carbon @@ -17,6 +17,7 @@ var d: i32 = a[b]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b, .c = %c, .d = %d} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 2 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 2] = var a diff --git a/toolchain/check/testdata/index/expr_category.carbon b/toolchain/check/testdata/index/expr_category.carbon index c98653cf4eb9..71284a0f2c8d 100644 --- a/toolchain/check/testdata/index/expr_category.carbon +++ b/toolchain/check/testdata/index/expr_category.carbon @@ -32,6 +32,7 @@ fn ValueBinding(b: [i32; 3]) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .ValueBinding = %ValueBinding} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %ValueBinding: = fn_decl @ValueBinding diff --git a/toolchain/check/testdata/index/fail_array_large_index.carbon b/toolchain/check/testdata/index/fail_array_large_index.carbon index d2e54b3e9db2..c11ec29d8b30 100644 --- a/toolchain/check/testdata/index/fail_array_large_index.carbon +++ b/toolchain/check/testdata/index/fail_array_large_index.carbon @@ -18,6 +18,7 @@ var b: i32 = a[0xFFFFFFFFFFFFFFFFF]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 1] = var a diff --git a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon index 1cba0a013e45..84d15f3952a2 100644 --- a/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_array_non_int_indexing.carbon @@ -18,6 +18,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 1] = var a diff --git a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon index a78a9049309f..579713df063a 100644 --- a/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_array_out_of_bound_access.carbon @@ -18,6 +18,7 @@ var b: i32 = a[2]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc7_15: type = array_type %.loc7_14, i32 // CHECK:STDOUT: %a.var: ref [i32; 1] = var a diff --git a/toolchain/check/testdata/index/fail_empty_tuple_access.carbon b/toolchain/check/testdata/index/fail_empty_tuple_access.carbon index 1b58abb96ab6..acad5a80acdd 100644 --- a/toolchain/check/testdata/index/fail_empty_tuple_access.carbon +++ b/toolchain/check/testdata/index/fail_empty_tuple_access.carbon @@ -20,6 +20,7 @@ fn Run() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .Run = %Run} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/fail_expr_category.carbon b/toolchain/check/testdata/index/fail_expr_category.carbon index 7129c8758f72..b491835008cb 100644 --- a/toolchain/check/testdata/index/fail_expr_category.carbon +++ b/toolchain/check/testdata/index/fail_expr_category.carbon @@ -36,6 +36,7 @@ fn G(b: [i32; 3]) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/index/fail_invalid_base.carbon b/toolchain/check/testdata/index/fail_invalid_base.carbon index 4727148a5ded..513dea314a6d 100644 --- a/toolchain/check/testdata/index/fail_invalid_base.carbon +++ b/toolchain/check/testdata/index/fail_invalid_base.carbon @@ -38,6 +38,7 @@ var d: i32 = {.a: i32, .b: i32}[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.N = %.loc11, .a = %a, .F = %F, .b = %b, .c = %c, .d = %d} // CHECK:STDOUT: %.loc11: = namespace {} // CHECK:STDOUT: %a.var: ref i32 = var a // CHECK:STDOUT: %a: ref i32 = bind_name a, %a.var diff --git a/toolchain/check/testdata/index/fail_name_not_found.carbon b/toolchain/check/testdata/index/fail_name_not_found.carbon index 5f8fd2432c92..e4c7ac263922 100644 --- a/toolchain/check/testdata/index/fail_name_not_found.carbon +++ b/toolchain/check/testdata/index/fail_name_not_found.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_name_not_found.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_non_deterministic_type.carbon b/toolchain/check/testdata/index/fail_non_deterministic_type.carbon index 361fdacc72e4..51ad766e6379 100644 --- a/toolchain/check/testdata/index/fail_non_deterministic_type.carbon +++ b/toolchain/check/testdata/index/fail_non_deterministic_type.carbon @@ -20,6 +20,7 @@ var c: i32 = a[b]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b, .c = %c} // CHECK:STDOUT: %.loc7_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%.loc7_17.2 // CHECK:STDOUT: %a.var: ref (i32, i32) = var a diff --git a/toolchain/check/testdata/index/fail_non_tuple_access.carbon b/toolchain/check/testdata/index/fail_non_tuple_access.carbon index 3bb3a9aef780..7a20d3474f31 100644 --- a/toolchain/check/testdata/index/fail_non_tuple_access.carbon +++ b/toolchain/check/testdata/index/fail_non_tuple_access.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_non_tuple_access.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/index/fail_tuple_index_error.carbon b/toolchain/check/testdata/index/fail_tuple_index_error.carbon index 54cf4fc43360..7a8b803f0d03 100644 --- a/toolchain/check/testdata/index/fail_tuple_index_error.carbon +++ b/toolchain/check/testdata/index/fail_tuple_index_error.carbon @@ -19,6 +19,7 @@ var b: i32 = a[oops]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%.loc7_17.2 // CHECK:STDOUT: %a.var: ref (i32, i32) = var a diff --git a/toolchain/check/testdata/index/fail_tuple_large_index.carbon b/toolchain/check/testdata/index/fail_tuple_large_index.carbon index 776e898d8a7e..08a0e9102d76 100644 --- a/toolchain/check/testdata/index/fail_tuple_large_index.carbon +++ b/toolchain/check/testdata/index/fail_tuple_large_index.carbon @@ -19,6 +19,7 @@ var c: i32 = b[0xFFFFFFFFFFFFFFFFF]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b, .c = %c} // CHECK:STDOUT: %.loc7_13.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc7_13.2: type = converted %.loc7_13.1, constants.%.loc7_13.2 // CHECK:STDOUT: %a.var: ref (i32,) = var a diff --git a/toolchain/check/testdata/index/fail_tuple_non_int_indexing.carbon b/toolchain/check/testdata/index/fail_tuple_non_int_indexing.carbon index c812d4e8577b..f4a17a5dbdaa 100644 --- a/toolchain/check/testdata/index/fail_tuple_non_int_indexing.carbon +++ b/toolchain/check/testdata/index/fail_tuple_non_int_indexing.carbon @@ -19,6 +19,7 @@ var b: i32 = a[2.6]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%.loc7_17.2 // CHECK:STDOUT: %a.var: ref (i32, i32) = var a diff --git a/toolchain/check/testdata/index/fail_tuple_out_of_bound_access.carbon b/toolchain/check/testdata/index/fail_tuple_out_of_bound_access.carbon index ca830153ed00..0c81b455e4d2 100644 --- a/toolchain/check/testdata/index/fail_tuple_out_of_bound_access.carbon +++ b/toolchain/check/testdata/index/fail_tuple_out_of_bound_access.carbon @@ -19,6 +19,7 @@ var b: i32 = a[2]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b} // CHECK:STDOUT: %.loc7_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%.loc7_17.2 // CHECK:STDOUT: %a.var: ref (i32, i32) = var a diff --git a/toolchain/check/testdata/index/tuple_element_access.carbon b/toolchain/check/testdata/index/tuple_element_access.carbon index 72ab79526be1..5e6c1dadbb1d 100644 --- a/toolchain/check/testdata/index/tuple_element_access.carbon +++ b/toolchain/check/testdata/index/tuple_element_access.carbon @@ -16,6 +16,7 @@ var c: i32 = b[0]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.a = %a, .b = %b, .c = %c} // CHECK:STDOUT: %.loc7_13.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc7_13.2: type = converted %.loc7_13.1, constants.%.loc7_13.2 // CHECK:STDOUT: %a.var: ref (i32,) = var a diff --git a/toolchain/check/testdata/index/tuple_return_value_access.carbon b/toolchain/check/testdata/index/tuple_return_value_access.carbon index c452daac5110..70051b16a844 100644 --- a/toolchain/check/testdata/index/tuple_return_value_access.carbon +++ b/toolchain/check/testdata/index/tuple_return_value_access.carbon @@ -18,6 +18,7 @@ fn Run() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .Run = %Run} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %Run: = fn_decl @Run // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon index d774691fb7fe..1585861a3f16 100644 --- a/toolchain/check/testdata/ir/duplicate_name_same_line.carbon +++ b/toolchain/check/testdata/ir/duplicate_name_same_line.carbon @@ -9,6 +9,7 @@ fn A() { if (true) { var n: i32 = 1; } if (true) { var n: i32 = 2; } } // CHECK:STDOUT: --- duplicate_name_same_line.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/convert.carbon b/toolchain/check/testdata/let/convert.carbon index c04344374b53..459d7a855724 100644 --- a/toolchain/check/testdata/let/convert.carbon +++ b/toolchain/check/testdata/let/convert.carbon @@ -20,6 +20,7 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_duplicate_decl.carbon b/toolchain/check/testdata/let/fail_duplicate_decl.carbon index bd86fefa2d32..6c8e2c76aac4 100644 --- a/toolchain/check/testdata/let/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/let/fail_duplicate_decl.carbon @@ -17,6 +17,7 @@ fn F(a: i32) { // CHECK:STDOUT: --- fail_duplicate_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/fail_use_in_init.carbon b/toolchain/check/testdata/let/fail_use_in_init.carbon index ea37aa883ee1..c21376106e9e 100644 --- a/toolchain/check/testdata/let/fail_use_in_init.carbon +++ b/toolchain/check/testdata/let/fail_use_in_init.carbon @@ -14,6 +14,7 @@ fn F() { // CHECK:STDOUT: --- fail_use_in_init.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/let/global.carbon b/toolchain/check/testdata/let/global.carbon index 2bbaf765c181..292e318e06e6 100644 --- a/toolchain/check/testdata/let/global.carbon +++ b/toolchain/check/testdata/let/global.carbon @@ -11,6 +11,7 @@ fn F() -> i32 { return n; } // CHECK:STDOUT: --- global.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %.loc7: i32 = int_literal 1 // CHECK:STDOUT: %n: i32 = bind_name n, %.loc7 // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/let/local.carbon b/toolchain/check/testdata/let/local.carbon index c802bda31c31..07554d251206 100644 --- a/toolchain/check/testdata/let/local.carbon +++ b/toolchain/check/testdata/let/local.carbon @@ -12,6 +12,7 @@ fn F(a: i32) -> i32 { // CHECK:STDOUT: --- local.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/fail_duplicate.carbon b/toolchain/check/testdata/namespace/fail_duplicate.carbon index 8e965e80ffd6..f825fd3447f8 100644 --- a/toolchain/check/testdata/namespace/fail_duplicate.carbon +++ b/toolchain/check/testdata/namespace/fail_duplicate.carbon @@ -21,6 +21,7 @@ fn Foo.Baz() { // CHECK:STDOUT: --- fail_duplicate.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %.loc7} // CHECK:STDOUT: %.loc7: = namespace {.Baz = %Baz.loc9} // CHECK:STDOUT: %Baz.loc9: = fn_decl @Baz // CHECK:STDOUT: %Baz.loc18: = fn_decl @Baz diff --git a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon index 110347b030ef..fad174a55df0 100644 --- a/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon +++ b/toolchain/check/testdata/namespace/fail_unresolved_scope.carbon @@ -13,6 +13,7 @@ fn Foo.Baz() { // CHECK:STDOUT: --- fail_unresolved_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %.loc10: = fn_decl @.1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/namespace/function.carbon b/toolchain/check/testdata/namespace/function.carbon index f0cbea0da8a8..5ec9beedcef0 100644 --- a/toolchain/check/testdata/namespace/function.carbon +++ b/toolchain/check/testdata/namespace/function.carbon @@ -24,6 +24,7 @@ fn Bar() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %.loc7, .Baz = %Baz.loc10, .Bar = %Bar} // CHECK:STDOUT: %.loc7: = namespace {.Baz = %Baz.loc13} // CHECK:STDOUT: %Baz.loc10: = fn_decl @Baz.1 // CHECK:STDOUT: %Baz.loc13: = fn_decl @Baz.2 diff --git a/toolchain/check/testdata/namespace/nested.carbon b/toolchain/check/testdata/namespace/nested.carbon index 425fdfcbc3f2..9006afeeeea2 100644 --- a/toolchain/check/testdata/namespace/nested.carbon +++ b/toolchain/check/testdata/namespace/nested.carbon @@ -21,6 +21,7 @@ fn Foo.Bar.Baz() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Foo = %.loc7} // CHECK:STDOUT: %.loc7: = namespace {.Bar = %.loc8} // CHECK:STDOUT: %.loc8: = namespace {.Wiz = %Wiz, .Baz = %Baz} // CHECK:STDOUT: %Wiz: = fn_decl @Wiz diff --git a/toolchain/check/testdata/namespace/shadow.carbon b/toolchain/check/testdata/namespace/shadow.carbon index 049791eea1b6..54b3e4d31071 100644 --- a/toolchain/check/testdata/namespace/shadow.carbon +++ b/toolchain/check/testdata/namespace/shadow.carbon @@ -30,6 +30,7 @@ fn N.M.B() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A.loc7, .N = %.loc9} // CHECK:STDOUT: %A.loc7: = fn_decl @A.1 // CHECK:STDOUT: %.loc9: = namespace {.A = %A.loc10, .M = %.loc12} // CHECK:STDOUT: %A.loc10: = fn_decl @A.2 diff --git a/toolchain/check/testdata/namespace/unqualified_lookup.carbon b/toolchain/check/testdata/namespace/unqualified_lookup.carbon index 15a3d23f6ddb..9d909ada8ae7 100644 --- a/toolchain/check/testdata/namespace/unqualified_lookup.carbon +++ b/toolchain/check/testdata/namespace/unqualified_lookup.carbon @@ -33,6 +33,7 @@ fn OuterN.InnerN.CallABC() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.OuterN = %.loc7, .A = %A, .CallA = %CallA} // CHECK:STDOUT: %.loc7: = namespace {.InnerN = %.loc8, .B = %B, .CallAB = %CallAB} // CHECK:STDOUT: %.loc8: = namespace {.C = %C, .CallABC = %CallABC} // CHECK:STDOUT: %A: = fn_decl @A diff --git a/toolchain/check/testdata/operators/and.carbon b/toolchain/check/testdata/operators/and.carbon index cc6bf2f993c7..3ed1b9309a77 100644 --- a/toolchain/check/testdata/operators/and.carbon +++ b/toolchain/check/testdata/operators/and.carbon @@ -14,6 +14,7 @@ fn And() -> bool { // CHECK:STDOUT: --- and.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .And = %And} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %And: = fn_decl @And diff --git a/toolchain/check/testdata/operators/assignment.carbon b/toolchain/check/testdata/operators/assignment.carbon index 4171bfa81c96..71255eb0a6fa 100644 --- a/toolchain/check/testdata/operators/assignment.carbon +++ b/toolchain/check/testdata/operators/assignment.carbon @@ -32,6 +32,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/binary_op.carbon b/toolchain/check/testdata/operators/binary_op.carbon index 325dafeabb46..f2e6b564d4d0 100644 --- a/toolchain/check/testdata/operators/binary_op.carbon +++ b/toolchain/check/testdata/operators/binary_op.carbon @@ -11,6 +11,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- binary_op.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/fail_assignment_to_error.carbon b/toolchain/check/testdata/operators/fail_assignment_to_error.carbon index 05813407837e..712b88238d7e 100644 --- a/toolchain/check/testdata/operators/fail_assignment_to_error.carbon +++ b/toolchain/check/testdata/operators/fail_assignment_to_error.carbon @@ -18,6 +18,7 @@ fn Main() { // CHECK:STDOUT: --- fail_assignment_to_error.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/fail_assignment_to_non_assignable.carbon b/toolchain/check/testdata/operators/fail_assignment_to_non_assignable.carbon index ffc5345f7830..b8d37b384494 100644 --- a/toolchain/check/testdata/operators/fail_assignment_to_non_assignable.carbon +++ b/toolchain/check/testdata/operators/fail_assignment_to_non_assignable.carbon @@ -55,6 +55,7 @@ fn Main() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .Main = %Main} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/operators/fail_type_mismatch.carbon b/toolchain/check/testdata/operators/fail_type_mismatch.carbon index 2241f395ec8a..3aba03990596 100644 --- a/toolchain/check/testdata/operators/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/operators/fail_type_mismatch.carbon @@ -14,6 +14,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- fail_type_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/fail_type_mismatch_assignment.carbon b/toolchain/check/testdata/operators/fail_type_mismatch_assignment.carbon index 056c449cf51a..f6573b593e59 100644 --- a/toolchain/check/testdata/operators/fail_type_mismatch_assignment.carbon +++ b/toolchain/check/testdata/operators/fail_type_mismatch_assignment.carbon @@ -15,6 +15,7 @@ fn Main() { // CHECK:STDOUT: --- fail_type_mismatch_assignment.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/fail_type_mismatch_once.carbon b/toolchain/check/testdata/operators/fail_type_mismatch_once.carbon index 816a9d4d0367..3f0008f20daa 100644 --- a/toolchain/check/testdata/operators/fail_type_mismatch_once.carbon +++ b/toolchain/check/testdata/operators/fail_type_mismatch_once.carbon @@ -16,6 +16,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- fail_type_mismatch_once.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/operators/or.carbon b/toolchain/check/testdata/operators/or.carbon index de4e76074e48..f56b4fd60f68 100644 --- a/toolchain/check/testdata/operators/or.carbon +++ b/toolchain/check/testdata/operators/or.carbon @@ -14,6 +14,7 @@ fn Or() -> bool { // CHECK:STDOUT: --- or.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .Or = %Or} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %Or: = fn_decl @Or diff --git a/toolchain/check/testdata/operators/unary_op.carbon b/toolchain/check/testdata/operators/unary_op.carbon index 964bd6825c6d..649f3d066dba 100644 --- a/toolchain/check/testdata/operators/unary_op.carbon +++ b/toolchain/check/testdata/operators/unary_op.carbon @@ -11,6 +11,7 @@ fn Not(b: bool) -> bool { // CHECK:STDOUT: --- unary_op.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Not = %Not} // CHECK:STDOUT: %Not: = fn_decl @Not // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/fail_not_found.carbon b/toolchain/check/testdata/package_expr/fail_not_found.carbon new file mode 100644 index 000000000000..f51ea7ed574c --- /dev/null +++ b/toolchain/check/testdata/package_expr/fail_not_found.carbon @@ -0,0 +1,30 @@ +// 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 + +fn Main() { + // CHECK:STDERR: fail_not_found.carbon:[[@LINE+3]]:23: ERROR: Name `x` not found. + // CHECK:STDERR: var y: i32 = package.x; + // CHECK:STDERR: ^ + var y: i32 = package.x; +} + +// CHECK:STDOUT: --- fail_not_found.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} +// CHECK:STDOUT: %Main: = fn_decl @Main +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %y.var: ref i32 = var y +// CHECK:STDOUT: %y: ref i32 = bind_name y, %y.var +// CHECK:STDOUT: %package.ref: = name_ref package, package +// CHECK:STDOUT: %x.ref: = name_ref x, +// CHECK:STDOUT: assign %y.var, +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/package_expr/syntax.carbon b/toolchain/check/testdata/package_expr/syntax.carbon new file mode 100644 index 000000000000..732125f40f51 --- /dev/null +++ b/toolchain/check/testdata/package_expr/syntax.carbon @@ -0,0 +1,133 @@ +// 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 + +// --- global.carbon + +package Global api; + +var x: i32 = 0; + +fn Main() { + var x: i32 = 1; + + var y: i32 = package.x; +} + +// --- inside_fn.carbon + +package InsideFn api; + +var x: i32 = 0; + +fn Main() { + var x: i32 = 1; + + var y: i32 = package.x; +} + +// --- namespace.carbon + +package Namespace api; + +namespace NS; + +class NS.C { + fn Foo() {} +}; + +fn Main() { + package.NS.C.Foo(); +} + +// CHECK:STDOUT: --- global.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .Main = %Main} +// CHECK:STDOUT: %x.var: ref i32 = var x +// CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var +// CHECK:STDOUT: %.loc4: i32 = int_literal 0 +// CHECK:STDOUT: assign %x.var, %.loc4 +// CHECK:STDOUT: %Main: = fn_decl @Main +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %x.var: ref i32 = var x +// CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var +// CHECK:STDOUT: %.loc7: i32 = int_literal 1 +// CHECK:STDOUT: assign %x.var, %.loc7 +// CHECK:STDOUT: %y.var: ref i32 = var y +// CHECK:STDOUT: %y: ref i32 = bind_name y, %y.var +// CHECK:STDOUT: %package.ref: = name_ref package, package +// CHECK:STDOUT: %x.ref: ref i32 = name_ref x, file.%x +// CHECK:STDOUT: %.loc9: i32 = bind_value %x.ref +// CHECK:STDOUT: assign %y.var, %.loc9 +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- inside_fn.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .Main = %Main} +// CHECK:STDOUT: %x.var: ref i32 = var x +// CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var +// CHECK:STDOUT: %.loc4: i32 = int_literal 0 +// CHECK:STDOUT: assign %x.var, %.loc4 +// CHECK:STDOUT: %Main: = fn_decl @Main +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %x.var: ref i32 = var x +// CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var +// CHECK:STDOUT: %.loc7: i32 = int_literal 1 +// CHECK:STDOUT: assign %x.var, %.loc7 +// CHECK:STDOUT: %y.var: ref i32 = var y +// CHECK:STDOUT: %y: ref i32 = bind_name y, %y.var +// CHECK:STDOUT: %package.ref: = name_ref package, package +// CHECK:STDOUT: %x.ref: ref i32 = name_ref x, file.%x +// CHECK:STDOUT: %.loc9: i32 = bind_value %x.ref +// CHECK:STDOUT: assign %y.var, %.loc9 +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: --- namespace.carbon +// CHECK:STDOUT: +// CHECK:STDOUT: constants { +// CHECK:STDOUT: %.loc8: type = struct_type {} +// CHECK:STDOUT: %.loc11: type = tuple_type () +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.NS = %.loc4, .Main = %Main} +// CHECK:STDOUT: %.loc4: = namespace {.C = %C.decl} +// CHECK:STDOUT: %C.decl = class_decl @C, () +// CHECK:STDOUT: %C: type = class_type @C +// CHECK:STDOUT: %Main: = fn_decl @Main +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: class @C { +// CHECK:STDOUT: %Foo: = fn_decl @Foo +// CHECK:STDOUT: +// CHECK:STDOUT: !members: +// CHECK:STDOUT: .Foo = %Foo +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Foo() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: +// CHECK:STDOUT: fn @Main() { +// CHECK:STDOUT: !entry: +// CHECK:STDOUT: %package.ref: = name_ref package, package +// CHECK:STDOUT: %NS.ref: = name_ref NS, file.%.loc4 +// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C +// CHECK:STDOUT: %Foo.ref: = name_ref Foo, @C.%Foo +// CHECK:STDOUT: %.loc11: init () = call %Foo.ref() +// CHECK:STDOUT: return +// CHECK:STDOUT: } +// CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/explicit_imports.carbon b/toolchain/check/testdata/packages/explicit_imports.carbon index 1cfe379490d0..ec7e26089d29 100644 --- a/toolchain/check/testdata/packages/explicit_imports.carbon +++ b/toolchain/check/testdata/packages/explicit_imports.carbon @@ -37,22 +37,26 @@ import library "lib"; // CHECK:STDOUT: --- api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- api_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- same_package.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir2 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- different_package.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir2 // CHECK:STDOUT: %Api: = bind_name Api, %import // CHECK:STDOUT: } @@ -60,11 +64,13 @@ import library "lib"; // CHECK:STDOUT: --- main_lib_api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_import.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_api_not_found.carbon b/toolchain/check/testdata/packages/fail_api_not_found.carbon index df4bd066464b..9d472c282ba1 100644 --- a/toolchain/check/testdata/packages/fail_api_not_found.carbon +++ b/toolchain/check/testdata/packages/fail_api_not_found.carbon @@ -28,6 +28,7 @@ library "Bar" impl; // CHECK:STDOUT: --- no_api.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Foo: = bind_name Foo, %import // CHECK:STDOUT: } @@ -35,6 +36,7 @@ library "Bar" impl; // CHECK:STDOUT: --- no_api_lib.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Foo: = bind_name Foo, %import // CHECK:STDOUT: } @@ -42,6 +44,7 @@ library "Bar" impl; // CHECK:STDOUT: --- no_api_main_lib.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_cycle.carbon b/toolchain/check/testdata/packages/fail_cycle.carbon index bdd9e3f3726c..f83d6b1342a3 100644 --- a/toolchain/check/testdata/packages/fail_cycle.carbon +++ b/toolchain/check/testdata/packages/fail_cycle.carbon @@ -50,6 +50,7 @@ import B; // CHECK:STDOUT: --- a.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %B: = bind_name B, %import // CHECK:STDOUT: } @@ -57,6 +58,7 @@ import B; // CHECK:STDOUT: --- b.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %C: = bind_name C, %import // CHECK:STDOUT: } @@ -64,6 +66,7 @@ import B; // CHECK:STDOUT: --- c.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %A: = bind_name A, %import // CHECK:STDOUT: } @@ -71,6 +74,7 @@ import B; // CHECK:STDOUT: --- c.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %C: = bind_name C, %import // CHECK:STDOUT: } @@ -78,6 +82,7 @@ import B; // CHECK:STDOUT: --- cycle_child.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %B: = bind_name B, %import // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/fail_duplicate_api.carbon b/toolchain/check/testdata/packages/fail_duplicate_api.carbon index b571718bf52e..97bffd846230 100644 --- a/toolchain/check/testdata/packages/fail_duplicate_api.carbon +++ b/toolchain/check/testdata/packages/fail_duplicate_api.carbon @@ -45,40 +45,48 @@ package Package library "lib" api; // CHECK:STDOUT: --- main1.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main2.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib1.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib2.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package1.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package2.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package_lib1.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package_lib2.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_extension.carbon b/toolchain/check/testdata/packages/fail_extension.carbon index 07036d89f4e7..054cfdafd147 100644 --- a/toolchain/check/testdata/packages/fail_extension.carbon +++ b/toolchain/check/testdata/packages/fail_extension.carbon @@ -73,32 +73,38 @@ package SwappedExt impl; // CHECK:STDOUT: --- main.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_redundant_with_swapped_ext.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib_impl.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package_impl.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Package: = bind_name Package, %import // CHECK:STDOUT: } @@ -106,11 +112,13 @@ package SwappedExt impl; // CHECK:STDOUT: --- package_lib.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- package_lib_impl.incorrect // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Package: = bind_name Package, %import // CHECK:STDOUT: } @@ -118,11 +126,13 @@ package SwappedExt impl; // CHECK:STDOUT: --- swapped_ext.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- swapped_ext.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %SwappedExt: = bind_name SwappedExt, %import // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/fail_import_default.carbon b/toolchain/check/testdata/packages/fail_import_default.carbon index d2e6d34386a1..8e09f82699e0 100644 --- a/toolchain/check/testdata/packages/fail_import_default.carbon +++ b/toolchain/check/testdata/packages/fail_import_default.carbon @@ -41,11 +41,13 @@ import library default; // CHECK:STDOUT: --- default_api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- default.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %A: = bind_name A, %import // CHECK:STDOUT: } @@ -53,10 +55,12 @@ import library default; // CHECK:STDOUT: --- main_import_default.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib_import_default.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_import_invalid.carbon b/toolchain/check/testdata/packages/fail_import_invalid.carbon index 4bfb3bb3a43f..6eda8ee14635 100644 --- a/toolchain/check/testdata/packages/fail_import_invalid.carbon +++ b/toolchain/check/testdata/packages/fail_import_invalid.carbon @@ -85,31 +85,37 @@ import ImportNotFound; // CHECK:STDOUT: --- main.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- not_main.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- this.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- this_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit_api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Implicit: = bind_name Implicit, %import // CHECK:STDOUT: } @@ -117,11 +123,13 @@ import ImportNotFound; // CHECK:STDOUT: --- implicit_lib_api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- implicit_lib.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %Implicit: = bind_name Implicit, %import // CHECK:STDOUT: } @@ -129,6 +137,7 @@ import ImportNotFound; // CHECK:STDOUT: --- not_found.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %ImportNotFound: = bind_name ImportNotFound, %import // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/packages/fail_import_repeat.carbon b/toolchain/check/testdata/packages/fail_import_repeat.carbon index 1afb74d1f192..42ab73e596e3 100644 --- a/toolchain/check/testdata/packages/fail_import_repeat.carbon +++ b/toolchain/check/testdata/packages/fail_import_repeat.carbon @@ -61,21 +61,25 @@ import library default; // CHECK:STDOUT: --- api.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- api_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- import.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import.loc2: = import ir1, ir2 // CHECK:STDOUT: %Api: = bind_name Api, %import.loc2 // CHECK:STDOUT: %import.loc20: = import ir3, ir3 @@ -84,6 +88,7 @@ import library default; // CHECK:STDOUT: --- default_import.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/fail_package_main.carbon b/toolchain/check/testdata/packages/fail_package_main.carbon index 3a314f671c9c..907a1aecfb36 100644 --- a/toolchain/check/testdata/packages/fail_package_main.carbon +++ b/toolchain/check/testdata/packages/fail_package_main.carbon @@ -36,20 +36,24 @@ package Main library "lib" api; // CHECK:STDOUT: --- main.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- raw_main.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/packages/implicit_imports.carbon b/toolchain/check/testdata/packages/implicit_imports.carbon index 19b7785fb38e..19a95dcd48ee 100644 --- a/toolchain/check/testdata/packages/implicit_imports.carbon +++ b/toolchain/check/testdata/packages/implicit_imports.carbon @@ -46,21 +46,25 @@ library "lib" impl; // CHECK:STDOUT: --- api_only.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- api_only_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- with_impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- with_impl.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %WithImpl: = bind_name WithImpl, %import // CHECK:STDOUT: } @@ -68,6 +72,7 @@ library "lib" impl; // CHECK:STDOUT: --- with_impl_extra.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %WithImpl: = bind_name WithImpl, %import // CHECK:STDOUT: } @@ -75,11 +80,13 @@ library "lib" impl; // CHECK:STDOUT: --- with_impl_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- with_impl_lib.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: %WithImpl: = bind_name WithImpl, %import // CHECK:STDOUT: } @@ -87,16 +94,19 @@ library "lib" impl; // CHECK:STDOUT: --- main.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: --- main_lib.impl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %import: = import ir1, ir1 // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_deref.carbon b/toolchain/check/testdata/pointer/address_of_deref.carbon index 1f9a9093149c..14fb769ce166 100644 --- a/toolchain/check/testdata/pointer/address_of_deref.carbon +++ b/toolchain/check/testdata/pointer/address_of_deref.carbon @@ -16,6 +16,7 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/address_of_lvalue.carbon b/toolchain/check/testdata/pointer/address_of_lvalue.carbon index ab3dd9e2babb..6482df2dec09 100644 --- a/toolchain/check/testdata/pointer/address_of_lvalue.carbon +++ b/toolchain/check/testdata/pointer/address_of_lvalue.carbon @@ -26,6 +26,7 @@ fn F() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/basic.carbon b/toolchain/check/testdata/pointer/basic.carbon index e164ea578c51..67cf379838d8 100644 --- a/toolchain/check/testdata/pointer/basic.carbon +++ b/toolchain/check/testdata/pointer/basic.carbon @@ -14,6 +14,7 @@ fn F() -> i32 { // CHECK:STDOUT: --- basic.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_address_of_error.carbon b/toolchain/check/testdata/pointer/fail_address_of_error.carbon index 735faf9cb6de..94599c40d2db 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_error.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_error.carbon @@ -26,6 +26,7 @@ fn Test() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Test = %Test} // CHECK:STDOUT: %Test: = fn_decl @Test // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_address_of_value.carbon b/toolchain/check/testdata/pointer/fail_address_of_value.carbon index ff0e51c63f03..e6325b61ad82 100644 --- a/toolchain/check/testdata/pointer/fail_address_of_value.carbon +++ b/toolchain/check/testdata/pointer/fail_address_of_value.carbon @@ -96,6 +96,7 @@ fn AddressOfParam(param: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.G = %G, .H = %H, .AddressOfLiteral = %AddressOfLiteral, .AddressOfOperator = %AddressOfOperator, .AddressOfCall = %AddressOfCall, .AddressOfType = %AddressOfType, .AddressOfTupleElementValue = %AddressOfTupleElementValue, .AddressOfParam = %AddressOfParam} // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %H: = fn_decl @H // CHECK:STDOUT: %AddressOfLiteral: = fn_decl @AddressOfLiteral diff --git a/toolchain/check/testdata/pointer/fail_deref_error.carbon b/toolchain/check/testdata/pointer/fail_deref_error.carbon index ef9906811c4a..41ac2d58fcd5 100644 --- a/toolchain/check/testdata/pointer/fail_deref_error.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_error.carbon @@ -12,6 +12,7 @@ let n: i32 = *undeclared; // CHECK:STDOUT: --- fail_deref_error.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: %undeclared.ref: = name_ref undeclared, // CHECK:STDOUT: %.loc10: ref = deref // CHECK:STDOUT: %n: i32 = bind_name n, diff --git a/toolchain/check/testdata/pointer/fail_deref_function.carbon b/toolchain/check/testdata/pointer/fail_deref_function.carbon index 68ad8a678a7f..f49923e29c11 100644 --- a/toolchain/check/testdata/pointer/fail_deref_function.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_function.carbon @@ -14,6 +14,7 @@ fn A() { // CHECK:STDOUT: --- fail_deref_function.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_deref_namespace.carbon b/toolchain/check/testdata/pointer/fail_deref_namespace.carbon index cfbc5c04a20d..a860e32a0f18 100644 --- a/toolchain/check/testdata/pointer/fail_deref_namespace.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_namespace.carbon @@ -16,6 +16,7 @@ fn F() { // CHECK:STDOUT: --- fail_deref_namespace.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %.loc7, .F = %F} // CHECK:STDOUT: %.loc7: = namespace {} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon index 301b183eadea..0dbf36479f05 100644 --- a/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_not_pointer.carbon @@ -27,6 +27,7 @@ fn Deref(n: i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Deref = %Deref} // CHECK:STDOUT: %Deref: = fn_decl @Deref // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/fail_deref_type.carbon b/toolchain/check/testdata/pointer/fail_deref_type.carbon index 4c97b5cd4615..f2e6fc03e7a5 100644 --- a/toolchain/check/testdata/pointer/fail_deref_type.carbon +++ b/toolchain/check/testdata/pointer/fail_deref_type.carbon @@ -15,6 +15,7 @@ var p: *i32; // CHECK:STDOUT: --- fail_deref_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.p = %p} // CHECK:STDOUT: %.loc13: ref = deref i32 // CHECK:STDOUT: %p.var: ref = var p // CHECK:STDOUT: %p: ref = bind_name p, %p.var diff --git a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon index 35d6f33ee5a1..f922e4151086 100644 --- a/toolchain/check/testdata/pointer/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/pointer/fail_type_mismatch.carbon @@ -18,6 +18,7 @@ fn ConstMismatch(p: const {}*) -> const ({}*) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.ConstMismatch = %ConstMismatch} // CHECK:STDOUT: %ConstMismatch: = fn_decl @ConstMismatch // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/nested_const.carbon b/toolchain/check/testdata/pointer/nested_const.carbon index b3a11be6ab52..a0e552329492 100644 --- a/toolchain/check/testdata/pointer/nested_const.carbon +++ b/toolchain/check/testdata/pointer/nested_const.carbon @@ -12,6 +12,7 @@ fn F(p: const (const (const i32*)*)) -> const i32 { // CHECK:STDOUT: --- nested_const.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/pointer/types.carbon b/toolchain/check/testdata/pointer/types.carbon index e0c7852469ea..194b540abc7e 100644 --- a/toolchain/check/testdata/pointer/types.carbon +++ b/toolchain/check/testdata/pointer/types.carbon @@ -15,6 +15,7 @@ fn ConstPtr(p: const i32*) -> (const i32)* { // CHECK:STDOUT: --- types.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Ptr = %Ptr, .ConstPtr = %ConstPtr} // CHECK:STDOUT: %Ptr: = fn_decl @Ptr // CHECK:STDOUT: %ConstPtr: = fn_decl @ConstPtr // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/code_after_return.carbon b/toolchain/check/testdata/return/code_after_return.carbon index 50b3d4e8bb66..d955542fc369 100644 --- a/toolchain/check/testdata/return/code_after_return.carbon +++ b/toolchain/check/testdata/return/code_after_return.carbon @@ -12,6 +12,7 @@ fn Main() { // CHECK:STDOUT: --- code_after_return.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/code_after_return_value.carbon b/toolchain/check/testdata/return/code_after_return_value.carbon index 20e5e85273bf..4fbcd2e4b970 100644 --- a/toolchain/check/testdata/return/code_after_return_value.carbon +++ b/toolchain/check/testdata/return/code_after_return_value.carbon @@ -19,6 +19,7 @@ fn F(b: bool) -> i32 { // CHECK:STDOUT: --- code_after_return_value.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_call_in_type.carbon b/toolchain/check/testdata/return/fail_call_in_type.carbon index 3b98b531d85b..3c7fece32116 100644 --- a/toolchain/check/testdata/return/fail_call_in_type.carbon +++ b/toolchain/check/testdata/return/fail_call_in_type.carbon @@ -15,6 +15,7 @@ fn Six() -> ReturnType() { return 6; } // CHECK:STDOUT: --- fail_call_in_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.ReturnType = %ReturnType, .Six = %Six} // CHECK:STDOUT: %ReturnType: = fn_decl @ReturnType // CHECK:STDOUT: %Six: = fn_decl @Six // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_error_in_type.carbon b/toolchain/check/testdata/return/fail_error_in_type.carbon index def89d952c42..aa5523dcd0d1 100644 --- a/toolchain/check/testdata/return/fail_error_in_type.carbon +++ b/toolchain/check/testdata/return/fail_error_in_type.carbon @@ -12,6 +12,7 @@ fn Six() -> x; // CHECK:STDOUT: --- fail_error_in_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Six = %Six} // CHECK:STDOUT: %Six: = fn_decl @Six // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_let_in_type.carbon b/toolchain/check/testdata/return/fail_let_in_type.carbon index 4d2354faf8fd..0a95a3fbf4d6 100644 --- a/toolchain/check/testdata/return/fail_let_in_type.carbon +++ b/toolchain/check/testdata/return/fail_let_in_type.carbon @@ -14,6 +14,7 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: --- fail_let_in_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Six = %Six} // CHECK:STDOUT: %x: type = bind_name x, i32 // CHECK:STDOUT: %Six: = fn_decl @Six // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_missing_return.carbon b/toolchain/check/testdata/return/fail_missing_return.carbon index df84031cbd76..742afa388141 100644 --- a/toolchain/check/testdata/return/fail_missing_return.carbon +++ b/toolchain/check/testdata/return/fail_missing_return.carbon @@ -13,6 +13,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- fail_missing_return.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon index dd45a651c773..45a728cf1f60 100644 --- a/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon +++ b/toolchain/check/testdata/return/fail_missing_return_empty_tuple.carbon @@ -17,6 +17,7 @@ fn F() -> () { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon index 0f09fc96a305..8d6cc4415330 100644 --- a/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_var_no_returned_var.carbon @@ -14,6 +14,7 @@ fn Procedure() -> i32 { // CHECK:STDOUT: --- fail_return_var_no_returned_var.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Procedure = %Procedure} // CHECK:STDOUT: %Procedure: = fn_decl @Procedure // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon index 62d9bd756d3a..1aed4cb708b3 100644 --- a/toolchain/check/testdata/return/fail_return_with_returned_var.carbon +++ b/toolchain/check/testdata/return/fail_return_with_returned_var.carbon @@ -35,6 +35,7 @@ fn G() -> C { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .C = %C.decl, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %C.decl = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C diff --git a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon index 83789494fd84..46e5c89422be 100644 --- a/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_no_return_type.carbon @@ -22,6 +22,7 @@ fn Procedure() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Procedure = %Procedure} // CHECK:STDOUT: %Procedure: = fn_decl @Procedure // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon index a6057de1c502..273f8fb450d2 100644 --- a/toolchain/check/testdata/return/fail_returned_var_shadow.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_shadow.carbon @@ -37,6 +37,7 @@ fn DifferentScopes() -> i32 { // CHECK:STDOUT: --- fail_returned_var_shadow.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.SameScope = %SameScope, .DifferentScopes = %DifferentScopes} // CHECK:STDOUT: %SameScope: = fn_decl @SameScope // CHECK:STDOUT: %DifferentScopes: = fn_decl @DifferentScopes // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/fail_returned_var_type.carbon b/toolchain/check/testdata/return/fail_returned_var_type.carbon index c747645516c0..ae8874233272 100644 --- a/toolchain/check/testdata/return/fail_returned_var_type.carbon +++ b/toolchain/check/testdata/return/fail_returned_var_type.carbon @@ -18,6 +18,7 @@ fn Mismatch() -> i32 { // CHECK:STDOUT: --- fail_returned_var_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Mismatch = %Mismatch} // CHECK:STDOUT: %Mismatch: = fn_decl @Mismatch // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_type_mismatch.carbon b/toolchain/check/testdata/return/fail_type_mismatch.carbon index 4a6746295973..e4cff915412d 100644 --- a/toolchain/check/testdata/return/fail_type_mismatch.carbon +++ b/toolchain/check/testdata/return/fail_type_mismatch.carbon @@ -14,6 +14,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- fail_type_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_value_disallowed.carbon b/toolchain/check/testdata/return/fail_value_disallowed.carbon index 722a9c7ff7d6..b08476da8f71 100644 --- a/toolchain/check/testdata/return/fail_value_disallowed.carbon +++ b/toolchain/check/testdata/return/fail_value_disallowed.carbon @@ -17,6 +17,7 @@ fn Main() { // CHECK:STDOUT: --- fail_value_disallowed.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_value_missing.carbon b/toolchain/check/testdata/return/fail_value_missing.carbon index 58ae6547c7be..9252ec74d3f0 100644 --- a/toolchain/check/testdata/return/fail_value_missing.carbon +++ b/toolchain/check/testdata/return/fail_value_missing.carbon @@ -17,6 +17,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- fail_value_missing.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/fail_var_in_type.carbon b/toolchain/check/testdata/return/fail_var_in_type.carbon index 98a099adc2d9..1d09681103aa 100644 --- a/toolchain/check/testdata/return/fail_var_in_type.carbon +++ b/toolchain/check/testdata/return/fail_var_in_type.carbon @@ -13,6 +13,7 @@ fn Six() -> x { return 6; } // CHECK:STDOUT: --- fail_var_in_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .Six = %Six} // CHECK:STDOUT: %x.var: ref type = var x // CHECK:STDOUT: %x: ref type = bind_name x, %x.var // CHECK:STDOUT: assign %x.var, i32 diff --git a/toolchain/check/testdata/return/missing_return_no_return_type.carbon b/toolchain/check/testdata/return/missing_return_no_return_type.carbon index 3cd896faa221..8f0edf4811fd 100644 --- a/toolchain/check/testdata/return/missing_return_no_return_type.carbon +++ b/toolchain/check/testdata/return/missing_return_no_return_type.carbon @@ -10,6 +10,7 @@ fn F() { // CHECK:STDOUT: --- missing_return_no_return_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/no_value.carbon b/toolchain/check/testdata/return/no_value.carbon index 4721164d8e82..2d77a7ecc27b 100644 --- a/toolchain/check/testdata/return/no_value.carbon +++ b/toolchain/check/testdata/return/no_value.carbon @@ -11,6 +11,7 @@ fn Main() { // CHECK:STDOUT: --- no_value.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/returned_var.carbon b/toolchain/check/testdata/return/returned_var.carbon index b768f24d0603..cd33446c554d 100644 --- a/toolchain/check/testdata/return/returned_var.carbon +++ b/toolchain/check/testdata/return/returned_var.carbon @@ -27,6 +27,7 @@ fn G() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.C = %C.decl, .F = %F, .G = %G} // CHECK:STDOUT: %C.decl = class_decl @C, () // CHECK:STDOUT: %C: type = class_type @C // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/return/returned_var_scope.carbon b/toolchain/check/testdata/return/returned_var_scope.carbon index 238f5a60b284..4b3f1fdada5b 100644 --- a/toolchain/check/testdata/return/returned_var_scope.carbon +++ b/toolchain/check/testdata/return/returned_var_scope.carbon @@ -26,6 +26,7 @@ fn EnclosingButAfter(b: bool) -> i32 { // CHECK:STDOUT: --- returned_var_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.UnrelatedScopes = %UnrelatedScopes, .EnclosingButAfter = %EnclosingButAfter} // CHECK:STDOUT: %UnrelatedScopes: = fn_decl @UnrelatedScopes // CHECK:STDOUT: %EnclosingButAfter: = fn_decl @EnclosingButAfter // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/return/struct.carbon b/toolchain/check/testdata/return/struct.carbon index 540d92205460..6555efd50c40 100644 --- a/toolchain/check/testdata/return/struct.carbon +++ b/toolchain/check/testdata/return/struct.carbon @@ -11,6 +11,7 @@ fn Main() -> {.a: i32} { // CHECK:STDOUT: --- struct.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/tuple.carbon b/toolchain/check/testdata/return/tuple.carbon index 085afa2b0c78..a2a83916b18f 100644 --- a/toolchain/check/testdata/return/tuple.carbon +++ b/toolchain/check/testdata/return/tuple.carbon @@ -18,6 +18,7 @@ fn Main() -> (i32, i32) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/return/value.carbon b/toolchain/check/testdata/return/value.carbon index 9394f8361304..6f7b1b1a97c9 100644 --- a/toolchain/check/testdata/return/value.carbon +++ b/toolchain/check/testdata/return/value.carbon @@ -11,6 +11,7 @@ fn Main() -> i32 { // CHECK:STDOUT: --- value.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/empty.carbon b/toolchain/check/testdata/struct/empty.carbon index 5e80aa46868d..6842a2f3fc3a 100644 --- a/toolchain/check/testdata/struct/empty.carbon +++ b/toolchain/check/testdata/struct/empty.carbon @@ -15,6 +15,7 @@ var y: {} = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_9.1: {} = struct_literal () // CHECK:STDOUT: %.loc7_9.2: type = converted %.loc7_9.1, constants.%.loc7_9.1 // CHECK:STDOUT: %x.var: ref {} = var x diff --git a/toolchain/check/testdata/struct/fail_access_into_invalid.carbon b/toolchain/check/testdata/struct/fail_access_into_invalid.carbon index ff61fca870a4..3e1a4fc3a7e2 100644 --- a/toolchain/check/testdata/struct/fail_access_into_invalid.carbon +++ b/toolchain/check/testdata/struct/fail_access_into_invalid.carbon @@ -13,6 +13,7 @@ fn F() { a.b; } // CHECK:STDOUT: --- fail_access_into_invalid.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/fail_assign_empty.carbon b/toolchain/check/testdata/struct/fail_assign_empty.carbon index 447fb42337b3..1a859b9e4ae5 100644 --- a/toolchain/check/testdata/struct/fail_assign_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_empty.carbon @@ -16,6 +16,7 @@ var x: {.a: i32} = {}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_assign_nested.carbon b/toolchain/check/testdata/struct/fail_assign_nested.carbon index 5146c08cd2f3..8eeb367c6d04 100644 --- a/toolchain/check/testdata/struct/fail_assign_nested.carbon +++ b/toolchain/check/testdata/struct/fail_assign_nested.carbon @@ -19,6 +19,7 @@ var x: {.a: {}} = {.b = {}}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_14.1: {} = struct_literal () // CHECK:STDOUT: %.loc10_14.2: type = converted %.loc10_14.1, constants.%.loc10_14.1 // CHECK:STDOUT: %.loc10_15: type = struct_type {.a: {}} diff --git a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon index 4869374cb579..35b0bff18153 100644 --- a/toolchain/check/testdata/struct/fail_assign_to_empty.carbon +++ b/toolchain/check/testdata/struct/fail_assign_to_empty.carbon @@ -18,6 +18,7 @@ var x: {} = {.a = 1}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_9.1: {} = struct_literal () // CHECK:STDOUT: %.loc10_9.2: type = converted %.loc10_9.1, constants.%.loc10_9.1 // CHECK:STDOUT: %x.var: ref {} = var x diff --git a/toolchain/check/testdata/struct/fail_duplicate_name.carbon b/toolchain/check/testdata/struct/fail_duplicate_name.carbon index 16f557300139..3f74e555f0dd 100644 --- a/toolchain/check/testdata/struct/fail_duplicate_name.carbon +++ b/toolchain/check/testdata/struct/fail_duplicate_name.carbon @@ -52,6 +52,7 @@ var y: {.b: i32, .c: i32} = {.b = 3, .b = 4}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .x = %x, .y = %y} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %.loc21_35: i32 = int_literal 1 // CHECK:STDOUT: %.loc21_36: {.a: i32} = struct_literal (%.loc21_35) diff --git a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon index 58d0d9c1d0d8..0b3708925cfe 100644 --- a/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_name_mismatch.carbon @@ -21,6 +21,7 @@ var y: {.b: i32} = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc10_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon index dcdabb8c8255..a6785a700839 100644 --- a/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon +++ b/toolchain/check/testdata/struct/fail_field_type_mismatch.carbon @@ -16,6 +16,7 @@ var x: {.a: i32} = {.b = 1.0}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_member_access_type.carbon b/toolchain/check/testdata/struct/fail_member_access_type.carbon index a7df0376f1e3..e920530c321d 100644 --- a/toolchain/check/testdata/struct/fail_member_access_type.carbon +++ b/toolchain/check/testdata/struct/fail_member_access_type.carbon @@ -13,6 +13,7 @@ var y: i32 = x.b; // CHECK:STDOUT: --- fail_member_access_type.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_16: type = struct_type {.a: f64} // CHECK:STDOUT: %x.var: ref {.a: f64} = var x // CHECK:STDOUT: %x: ref {.a: f64} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_member_of_function.carbon b/toolchain/check/testdata/struct/fail_member_of_function.carbon index f7f2bf11a378..0a784fa50114 100644 --- a/toolchain/check/testdata/struct/fail_member_of_function.carbon +++ b/toolchain/check/testdata/struct/fail_member_of_function.carbon @@ -14,6 +14,7 @@ fn A() { // CHECK:STDOUT: --- fail_member_of_function.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/struct/fail_nested_incomplete.carbon b/toolchain/check/testdata/struct/fail_nested_incomplete.carbon index b5a0a79b9fd1..da6ccd5f1308 100644 --- a/toolchain/check/testdata/struct/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/struct/fail_nested_incomplete.carbon @@ -26,6 +26,7 @@ var p: Incomplete* = &s.a; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Incomplete = %Incomplete.decl, .s = %s, .p = %p} // CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete diff --git a/toolchain/check/testdata/struct/fail_non_member_access.carbon b/toolchain/check/testdata/struct/fail_non_member_access.carbon index 47cfb5b0ef44..550fd66fed46 100644 --- a/toolchain/check/testdata/struct/fail_non_member_access.carbon +++ b/toolchain/check/testdata/struct/fail_non_member_access.carbon @@ -13,6 +13,7 @@ var y: i32 = x.b; // CHECK:STDOUT: --- fail_non_member_access.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_too_few_values.carbon b/toolchain/check/testdata/struct/fail_too_few_values.carbon index 0433154d1c3e..9998730115ee 100644 --- a/toolchain/check/testdata/struct/fail_too_few_values.carbon +++ b/toolchain/check/testdata/struct/fail_too_few_values.carbon @@ -17,6 +17,7 @@ var x: {.a: i32, .b: i32} = {.a = 1}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_25: type = struct_type {.a: i32, .b: i32} // CHECK:STDOUT: %x.var: ref {.a: i32, .b: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32, .b: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_type_assign.carbon b/toolchain/check/testdata/struct/fail_type_assign.carbon index fb1094cc4824..42e410db3151 100644 --- a/toolchain/check/testdata/struct/fail_type_assign.carbon +++ b/toolchain/check/testdata/struct/fail_type_assign.carbon @@ -12,6 +12,7 @@ var x: {.a: i32} = {.a: i32}; // CHECK:STDOUT: --- fail_type_assign.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/fail_value_as_type.carbon b/toolchain/check/testdata/struct/fail_value_as_type.carbon index 30271be6d67a..2b7f0c96231e 100644 --- a/toolchain/check/testdata/struct/fail_value_as_type.carbon +++ b/toolchain/check/testdata/struct/fail_value_as_type.carbon @@ -16,6 +16,7 @@ var x: {.a = 1}; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_14: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_15: {.a: i32} = struct_literal (%.loc10_14) // CHECK:STDOUT: %x.var: ref = var x diff --git a/toolchain/check/testdata/struct/literal_member_access.carbon b/toolchain/check/testdata/struct/literal_member_access.carbon index 98db99264040..04176bd76bd3 100644 --- a/toolchain/check/testdata/struct/literal_member_access.carbon +++ b/toolchain/check/testdata/struct/literal_member_access.carbon @@ -20,6 +20,7 @@ fn F() -> i32 { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.G = %G, .F = %F} // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/member_access.carbon b/toolchain/check/testdata/struct/member_access.carbon index 1769584707f0..c628dd1696a5 100644 --- a/toolchain/check/testdata/struct/member_access.carbon +++ b/toolchain/check/testdata/struct/member_access.carbon @@ -15,6 +15,7 @@ var z: i32 = y; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y, .z = %z} // CHECK:STDOUT: %.loc7_25: type = struct_type {.a: f64, .b: i32} // CHECK:STDOUT: %x.var: ref {.a: f64, .b: i32} = var x // CHECK:STDOUT: %x: ref {.a: f64, .b: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/nested_struct_in_place.carbon b/toolchain/check/testdata/struct/nested_struct_in_place.carbon index f05cdc556d09..ecb4be020ff9 100644 --- a/toolchain/check/testdata/struct/nested_struct_in_place.carbon +++ b/toolchain/check/testdata/struct/nested_struct_in_place.carbon @@ -21,6 +21,7 @@ fn G() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/struct/one_entry.carbon b/toolchain/check/testdata/struct/one_entry.carbon index ace7a6ff7627..e7f29c1c2fdb 100644 --- a/toolchain/check/testdata/struct/one_entry.carbon +++ b/toolchain/check/testdata/struct/one_entry.carbon @@ -10,6 +10,7 @@ var y: {.a: i32} = x; // CHECK:STDOUT: --- one_entry.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_16: type = struct_type {.a: i32} // CHECK:STDOUT: %x.var: ref {.a: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/struct/reorder_fields.carbon b/toolchain/check/testdata/struct/reorder_fields.carbon index 17b2db9b2a64..8176cf857c24 100644 --- a/toolchain/check/testdata/struct/reorder_fields.carbon +++ b/toolchain/check/testdata/struct/reorder_fields.carbon @@ -22,6 +22,7 @@ fn F() -> {.a: i32, .b: f64} { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.MakeI32 = %MakeI32, .MakeF64 = %MakeF64, .F = %F} // CHECK:STDOUT: %MakeI32: = fn_decl @MakeI32 // CHECK:STDOUT: %MakeF64: = fn_decl @MakeF64 // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/struct/tuple_as_element.carbon b/toolchain/check/testdata/struct/tuple_as_element.carbon index 549d2b14a85f..798a6fb750bf 100644 --- a/toolchain/check/testdata/struct/tuple_as_element.carbon +++ b/toolchain/check/testdata/struct/tuple_as_element.carbon @@ -16,6 +16,7 @@ var y: {.a: i32, .b: (i32,)} = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_27.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc7_27.2: type = converted %.loc7_27.1, constants.%.loc7_27.2 // CHECK:STDOUT: %.loc7_28: type = struct_type {.a: i32, .b: (i32,)} diff --git a/toolchain/check/testdata/struct/two_entries.carbon b/toolchain/check/testdata/struct/two_entries.carbon index b19032d607eb..71fe23c70012 100644 --- a/toolchain/check/testdata/struct/two_entries.carbon +++ b/toolchain/check/testdata/struct/two_entries.carbon @@ -14,6 +14,7 @@ var y: {.a: i32, .b: i32} = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_25: type = struct_type {.a: i32, .b: i32} // CHECK:STDOUT: %x.var: ref {.a: i32, .b: i32} = var x // CHECK:STDOUT: %x: ref {.a: i32, .b: i32} = bind_name x, %x.var diff --git a/toolchain/check/testdata/tuples/empty.carbon b/toolchain/check/testdata/tuples/empty.carbon index 54de4c08c6a4..d072bf7ffa85 100644 --- a/toolchain/check/testdata/tuples/empty.carbon +++ b/toolchain/check/testdata/tuples/empty.carbon @@ -14,6 +14,7 @@ var y: () = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_9.1: () = tuple_literal () // CHECK:STDOUT: %.loc7_9.2: type = converted %.loc7_9.1, constants.%.loc7 // CHECK:STDOUT: %x.var: ref () = var x diff --git a/toolchain/check/testdata/tuples/fail_assign_empty.carbon b/toolchain/check/testdata/tuples/fail_assign_empty.carbon index 34207259d433..d613f92ccaad 100644 --- a/toolchain/check/testdata/tuples/fail_assign_empty.carbon +++ b/toolchain/check/testdata/tuples/fail_assign_empty.carbon @@ -18,6 +18,7 @@ var x: (i32,) = (); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_13.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc10_13.2: type = converted %.loc10_13.1, constants.%.loc10_13.2 // CHECK:STDOUT: %x.var: ref (i32,) = var x diff --git a/toolchain/check/testdata/tuples/fail_assign_nested.carbon b/toolchain/check/testdata/tuples/fail_assign_nested.carbon index 70fa384509ca..5cf1c69110e8 100644 --- a/toolchain/check/testdata/tuples/fail_assign_nested.carbon +++ b/toolchain/check/testdata/tuples/fail_assign_nested.carbon @@ -24,6 +24,7 @@ var x: ((i32, i32), (i32, i32)) = ((1, 2, 3), (4, 5, 6)); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_18: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc10_30: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc10_31.1: ((type, type), (type, type)) = tuple_literal (%.loc10_18, %.loc10_30) diff --git a/toolchain/check/testdata/tuples/fail_assign_to_empty.carbon b/toolchain/check/testdata/tuples/fail_assign_to_empty.carbon index 1ee42cfc22a0..be6841c80332 100644 --- a/toolchain/check/testdata/tuples/fail_assign_to_empty.carbon +++ b/toolchain/check/testdata/tuples/fail_assign_to_empty.carbon @@ -16,6 +16,7 @@ var x: () = (66); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_9.1: () = tuple_literal () // CHECK:STDOUT: %.loc10_9.2: type = converted %.loc10_9.1, constants.%.loc10 // CHECK:STDOUT: %x.var: ref () = var x diff --git a/toolchain/check/testdata/tuples/fail_element_type_mismatch.carbon b/toolchain/check/testdata/tuples/fail_element_type_mismatch.carbon index e031f0eb51a3..ba01a9ec1f2e 100644 --- a/toolchain/check/testdata/tuples/fail_element_type_mismatch.carbon +++ b/toolchain/check/testdata/tuples/fail_element_type_mismatch.carbon @@ -19,6 +19,7 @@ var x: (i32, i32) = (2, 65.89); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc10_17.2: type = converted %.loc10_17.1, constants.%.loc10_17.2 // CHECK:STDOUT: %x.var: ref (i32, i32) = var x diff --git a/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon b/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon index 8e03c5206f05..970829a24482 100644 --- a/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon +++ b/toolchain/check/testdata/tuples/fail_nested_incomplete.carbon @@ -28,6 +28,7 @@ var p: Incomplete* = &t[1]; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Incomplete = %Incomplete.decl, .t = %t, .p = %p} // CHECK:STDOUT: %Incomplete.decl = class_decl @Incomplete, () // CHECK:STDOUT: %Incomplete: type = class_type @Incomplete // CHECK:STDOUT: %Incomplete.ref.loc15: type = name_ref Incomplete, %Incomplete diff --git a/toolchain/check/testdata/tuples/fail_too_few_element.carbon b/toolchain/check/testdata/tuples/fail_too_few_element.carbon index 680d37e54c74..8fdd869b5ddc 100644 --- a/toolchain/check/testdata/tuples/fail_too_few_element.carbon +++ b/toolchain/check/testdata/tuples/fail_too_few_element.carbon @@ -19,6 +19,7 @@ var x: (i32, i32) = (2, ); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc10_17.2: type = converted %.loc10_17.1, constants.%.loc10_17.2 // CHECK:STDOUT: %x.var: ref (i32, i32) = var x diff --git a/toolchain/check/testdata/tuples/fail_type_assign.carbon b/toolchain/check/testdata/tuples/fail_type_assign.carbon index 43f6180a2347..4320e0aadfda 100644 --- a/toolchain/check/testdata/tuples/fail_type_assign.carbon +++ b/toolchain/check/testdata/tuples/fail_type_assign.carbon @@ -17,6 +17,7 @@ var x: (i32, ) = (i32, ); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_14.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc10_14.2: type = converted %.loc10_14.1, constants.%.loc10_14.2 // CHECK:STDOUT: %x.var: ref (i32,) = var x diff --git a/toolchain/check/testdata/tuples/fail_value_as_type.carbon b/toolchain/check/testdata/tuples/fail_value_as_type.carbon index 377137344413..87451b305ed2 100644 --- a/toolchain/check/testdata/tuples/fail_value_as_type.carbon +++ b/toolchain/check/testdata/tuples/fail_value_as_type.carbon @@ -17,6 +17,7 @@ var x: (1, ); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc10_9: i32 = int_literal 1 // CHECK:STDOUT: %.loc10_12.1: (i32,) = tuple_literal (%.loc10_9) // CHECK:STDOUT: %.loc10_12.2: type = converted %.loc10_12.1, constants.%.loc10_12.2 diff --git a/toolchain/check/testdata/tuples/nested_tuple.carbon b/toolchain/check/testdata/tuples/nested_tuple.carbon index 42f63e2a7af3..10fa5674d517 100644 --- a/toolchain/check/testdata/tuples/nested_tuple.carbon +++ b/toolchain/check/testdata/tuples/nested_tuple.carbon @@ -19,6 +19,7 @@ var x: ((i32, i32), i32) = ((12, 76), 6); // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %.loc7_18: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_24.1: ((type, type), type) = tuple_literal (%.loc7_18, i32) // CHECK:STDOUT: %.loc7_24.2: type = converted %.loc7_18, constants.%.loc7_24.2 diff --git a/toolchain/check/testdata/tuples/nested_tuple_in_place.carbon b/toolchain/check/testdata/tuples/nested_tuple_in_place.carbon index 231b98390446..d80dc168562b 100644 --- a/toolchain/check/testdata/tuples/nested_tuple_in_place.carbon +++ b/toolchain/check/testdata/tuples/nested_tuple_in_place.carbon @@ -31,6 +31,7 @@ fn H() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.F = %F, .G = %G, .H = %H} // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G // CHECK:STDOUT: %H: = fn_decl @H diff --git a/toolchain/check/testdata/tuples/one_element.carbon b/toolchain/check/testdata/tuples/one_element.carbon index 31ee2556519f..fe5f12b945f3 100644 --- a/toolchain/check/testdata/tuples/one_element.carbon +++ b/toolchain/check/testdata/tuples/one_element.carbon @@ -15,6 +15,7 @@ var y: (i32,) = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_13.1: (type,) = tuple_literal (i32) // CHECK:STDOUT: %.loc7_13.2: type = converted %.loc7_13.1, constants.%.loc7_13.2 // CHECK:STDOUT: %x.var: ref (i32,) = var x diff --git a/toolchain/check/testdata/tuples/two_elements.carbon b/toolchain/check/testdata/tuples/two_elements.carbon index e6309b08a287..0aee410e6c9c 100644 --- a/toolchain/check/testdata/tuples/two_elements.carbon +++ b/toolchain/check/testdata/tuples/two_elements.carbon @@ -16,6 +16,7 @@ var y: (i32, i32) = x; // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %.loc7_17.1: (type, type) = tuple_literal (i32, i32) // CHECK:STDOUT: %.loc7_17.2: type = converted %.loc7_17.1, constants.%.loc7_17.2 // CHECK:STDOUT: %x.var: ref (i32, i32) = var x diff --git a/toolchain/check/testdata/var/decl.carbon b/toolchain/check/testdata/var/decl.carbon index 728a9a7c2a08..510bbbbf6ecc 100644 --- a/toolchain/check/testdata/var/decl.carbon +++ b/toolchain/check/testdata/var/decl.carbon @@ -11,6 +11,7 @@ fn Main() { // CHECK:STDOUT: --- decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/decl_with_init.carbon b/toolchain/check/testdata/var/decl_with_init.carbon index 7176d766cec9..fec7490f0b98 100644 --- a/toolchain/check/testdata/var/decl_with_init.carbon +++ b/toolchain/check/testdata/var/decl_with_init.carbon @@ -11,6 +11,7 @@ fn Main() { // CHECK:STDOUT: --- decl_with_init.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_duplicate_decl.carbon b/toolchain/check/testdata/var/fail_duplicate_decl.carbon index 820d6650a7e4..8622752103fc 100644 --- a/toolchain/check/testdata/var/fail_duplicate_decl.carbon +++ b/toolchain/check/testdata/var/fail_duplicate_decl.carbon @@ -19,6 +19,7 @@ fn Main() { // CHECK:STDOUT: --- fail_duplicate_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_init_type_mismatch.carbon b/toolchain/check/testdata/var/fail_init_type_mismatch.carbon index e4e4c27bd4f8..124bf04fd548 100644 --- a/toolchain/check/testdata/var/fail_init_type_mismatch.carbon +++ b/toolchain/check/testdata/var/fail_init_type_mismatch.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_init_type_mismatch.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_init_with_self.carbon b/toolchain/check/testdata/var/fail_init_with_self.carbon index 71ec7e5d5c7f..401bd63d623a 100644 --- a/toolchain/check/testdata/var/fail_init_with_self.carbon +++ b/toolchain/check/testdata/var/fail_init_with_self.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_init_with_self.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon index a80154c57403..2a95c25f7a06 100644 --- a/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon +++ b/toolchain/check/testdata/var/fail_lookup_outside_scope.carbon @@ -16,6 +16,7 @@ var y: i32 = x; // CHECK:STDOUT: --- fail_lookup_outside_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main, .y = %y} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: %y.var: ref i32 = var y // CHECK:STDOUT: %y: ref i32 = bind_name y, %y.var diff --git a/toolchain/check/testdata/var/fail_not_copyable.carbon b/toolchain/check/testdata/var/fail_not_copyable.carbon index 341eea270666..b02d8ac590a4 100644 --- a/toolchain/check/testdata/var/fail_not_copyable.carbon +++ b/toolchain/check/testdata/var/fail_not_copyable.carbon @@ -32,6 +32,7 @@ fn F(x: X) { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.X = %X.decl, .F = %F} // CHECK:STDOUT: %X.decl = class_decl @X, () // CHECK:STDOUT: %X: type = class_type @X // CHECK:STDOUT: %F: = fn_decl @F diff --git a/toolchain/check/testdata/var/fail_storage_is_literal.carbon b/toolchain/check/testdata/var/fail_storage_is_literal.carbon index b4832caf2b38..c7da5c5ec50a 100644 --- a/toolchain/check/testdata/var/fail_storage_is_literal.carbon +++ b/toolchain/check/testdata/var/fail_storage_is_literal.carbon @@ -14,6 +14,7 @@ fn Main() { // CHECK:STDOUT: --- fail_storage_is_literal.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/global_decl.carbon b/toolchain/check/testdata/var/global_decl.carbon index 1f7a44ce2eaa..fbe89ef356a9 100644 --- a/toolchain/check/testdata/var/global_decl.carbon +++ b/toolchain/check/testdata/var/global_decl.carbon @@ -9,6 +9,7 @@ var x: i32; // CHECK:STDOUT: --- global_decl.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %x.var: ref i32 = var x // CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var // CHECK:STDOUT: } diff --git a/toolchain/check/testdata/var/global_decl_with_init.carbon b/toolchain/check/testdata/var/global_decl_with_init.carbon index 181b25e2a566..1565c633de42 100644 --- a/toolchain/check/testdata/var/global_decl_with_init.carbon +++ b/toolchain/check/testdata/var/global_decl_with_init.carbon @@ -9,6 +9,7 @@ var x: i32 = 0; // CHECK:STDOUT: --- global_decl_with_init.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x} // CHECK:STDOUT: %x.var: ref i32 = var x // CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var // CHECK:STDOUT: %.loc7: i32 = int_literal 0 diff --git a/toolchain/check/testdata/var/global_lookup.carbon b/toolchain/check/testdata/var/global_lookup.carbon index c4e52d213725..385d3f1171a7 100644 --- a/toolchain/check/testdata/var/global_lookup.carbon +++ b/toolchain/check/testdata/var/global_lookup.carbon @@ -10,6 +10,7 @@ var y: i32 = x; // CHECK:STDOUT: --- global_lookup.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .y = %y} // CHECK:STDOUT: %x.var: ref i32 = var x // CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var // CHECK:STDOUT: %.loc7: i32 = int_literal 0 diff --git a/toolchain/check/testdata/var/global_lookup_in_scope.carbon b/toolchain/check/testdata/var/global_lookup_in_scope.carbon index 7a288f756fa2..db49bd601291 100644 --- a/toolchain/check/testdata/var/global_lookup_in_scope.carbon +++ b/toolchain/check/testdata/var/global_lookup_in_scope.carbon @@ -13,6 +13,7 @@ fn Main() { // CHECK:STDOUT: --- global_lookup_in_scope.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.x = %x, .Main = %Main} // CHECK:STDOUT: %x.var: ref i32 = var x // CHECK:STDOUT: %x: ref i32 = bind_name x, %x.var // CHECK:STDOUT: %.loc7: i32 = int_literal 0 diff --git a/toolchain/check/testdata/var/lookup.carbon b/toolchain/check/testdata/var/lookup.carbon index dcf6c5f23363..20c447206074 100644 --- a/toolchain/check/testdata/var/lookup.carbon +++ b/toolchain/check/testdata/var/lookup.carbon @@ -12,6 +12,7 @@ fn Main() { // CHECK:STDOUT: --- lookup.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/var/shadowing.carbon b/toolchain/check/testdata/var/shadowing.carbon index aacb5e93160e..9fca0a8fce34 100644 --- a/toolchain/check/testdata/var/shadowing.carbon +++ b/toolchain/check/testdata/var/shadowing.carbon @@ -17,6 +17,7 @@ fn Main() { // CHECK:STDOUT: --- shadowing.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Main = %Main} // CHECK:STDOUT: %Main: = fn_decl @Main // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/while/break_continue.carbon b/toolchain/check/testdata/while/break_continue.carbon index 88acbc078acc..a0ec28ffe8b3 100644 --- a/toolchain/check/testdata/while/break_continue.carbon +++ b/toolchain/check/testdata/while/break_continue.carbon @@ -29,6 +29,7 @@ fn While() { // CHECK:STDOUT: --- break_continue.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.A = %A, .B = %B, .C = %C, .D = %D, .E = %E, .F = %F, .G = %G, .H = %H, .While = %While} // CHECK:STDOUT: %A: = fn_decl @A // CHECK:STDOUT: %B: = fn_decl @B // CHECK:STDOUT: %C: = fn_decl @C diff --git a/toolchain/check/testdata/while/fail_bad_condition.carbon b/toolchain/check/testdata/while/fail_bad_condition.carbon index 0c7965cc9000..71a97694de7e 100644 --- a/toolchain/check/testdata/while/fail_bad_condition.carbon +++ b/toolchain/check/testdata/while/fail_bad_condition.carbon @@ -18,6 +18,7 @@ fn While() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.While = %While} // CHECK:STDOUT: %While: = fn_decl @While // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/while/fail_break_continue.carbon b/toolchain/check/testdata/while/fail_break_continue.carbon index 55613d1c7a5c..9f75e2d0334a 100644 --- a/toolchain/check/testdata/while/fail_break_continue.carbon +++ b/toolchain/check/testdata/while/fail_break_continue.carbon @@ -30,6 +30,7 @@ fn While() { // CHECK:STDOUT: --- fail_break_continue.carbon // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.While = %While} // CHECK:STDOUT: %While: = fn_decl @While // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/check/testdata/while/unreachable_end.carbon b/toolchain/check/testdata/while/unreachable_end.carbon index d7aaa2b8b7df..3cd61c7047c1 100644 --- a/toolchain/check/testdata/while/unreachable_end.carbon +++ b/toolchain/check/testdata/while/unreachable_end.carbon @@ -26,6 +26,7 @@ fn While() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Cond = %Cond, .F = %F, .G = %G, .H = %H, .While = %While} // CHECK:STDOUT: %Cond: = fn_decl @Cond // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/check/testdata/while/while.carbon b/toolchain/check/testdata/while/while.carbon index d9ed551f616f..77f086694847 100644 --- a/toolchain/check/testdata/while/while.carbon +++ b/toolchain/check/testdata/while/while.carbon @@ -25,6 +25,7 @@ fn While() { // CHECK:STDOUT: } // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {.Cond = %Cond, .F = %F, .G = %G, .H = %H, .While = %While} // CHECK:STDOUT: %Cond: = fn_decl @Cond // CHECK:STDOUT: %F: = fn_decl @F // CHECK:STDOUT: %G: = fn_decl @G diff --git a/toolchain/driver/testdata/stdin.carbon b/toolchain/driver/testdata/stdin.carbon index 80961472ae88..c226c81829ef 100644 --- a/toolchain/driver/testdata/stdin.carbon +++ b/toolchain/driver/testdata/stdin.carbon @@ -9,5 +9,6 @@ // CHECK:STDOUT: --- // CHECK:STDOUT: // CHECK:STDOUT: file { +// CHECK:STDOUT: package: = namespace {} // CHECK:STDOUT: } // CHECK:STDOUT: diff --git a/toolchain/parse/handle_expr.cpp b/toolchain/parse/handle_expr.cpp index 911c398b28f1..d1f55da1bb13 100644 --- a/toolchain/parse/handle_expr.cpp +++ b/toolchain/parse/handle_expr.cpp @@ -147,6 +147,11 @@ auto HandleExprInPostfix(Context& context) -> void { context.PushState(State::ArrayExpr); break; } + case Lex::TokenKind::Package: { + context.AddLeafNode(NodeKind::PackageExpr, context.Consume()); + context.PushState(state); + break; + } case Lex::TokenKind::SelfValueIdentifier: { context.AddLeafNode(NodeKind::SelfValueNameExpr, context.Consume()); context.PushState(state); diff --git a/toolchain/parse/node_kind.def b/toolchain/parse/node_kind.def index 5bdf39027334..74bff85feddb 100644 --- a/toolchain/parse/node_kind.def +++ b/toolchain/parse/node_kind.def @@ -638,6 +638,9 @@ CARBON_PARSE_NODE_KIND_CHILD_COUNT(SelfValueNameExpr, 0, CARBON_PARSE_NODE_KIND_CHILD_COUNT(SelfTypeNameExpr, 0, CARBON_TOKEN(SelfTypeIdentifier)) +// The `package` keyword in an expression. +CARBON_PARSE_NODE_KIND_CHILD_COUNT(PackageExpr, 0, CARBON_TOKEN(Package)) + #undef CARBON_PARSE_NODE_KIND #undef CARBON_PARSE_NODE_KIND_BRACKET #undef CARBON_PARSE_NODE_KIND_CHILD_COUNT diff --git a/toolchain/parse/testdata/package_expr/basic.carbon b/toolchain/parse/testdata/package_expr/basic.carbon new file mode 100644 index 000000000000..1e76280d2cf1 --- /dev/null +++ b/toolchain/parse/testdata/package_expr/basic.carbon @@ -0,0 +1,24 @@ +// 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 + +var x: package.Foo = package.Bar; + +// CHECK:STDOUT: - filename: basic.carbon +// CHECK:STDOUT: parse_tree: [ +// CHECK:STDOUT: {kind: 'FileStart', text: ''}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'Name', text: 'x'}, +// CHECK:STDOUT: {kind: 'PackageExpr', text: 'package'}, +// CHECK:STDOUT: {kind: 'Name', text: 'Foo'}, +// CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'BindingPattern', text: ':', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'VariableInitializer', text: '='}, +// CHECK:STDOUT: {kind: 'PackageExpr', text: 'package'}, +// CHECK:STDOUT: {kind: 'Name', text: 'Bar'}, +// CHECK:STDOUT: {kind: 'MemberAccessExpr', text: '.', subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 11}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: ] diff --git a/toolchain/parse/testdata/package_expr/fail_in_name.carbon b/toolchain/parse/testdata/package_expr/fail_in_name.carbon new file mode 100644 index 000000000000..0fbd2ec7b20f --- /dev/null +++ b/toolchain/parse/testdata/package_expr/fail_in_name.carbon @@ -0,0 +1,38 @@ +// 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 + +// CHECK:STDERR: fail_in_name.carbon:[[@LINE+3]]:5: ERROR: Expected pattern in `var` declaration. +// CHECK:STDERR: var package.val: i32; +// CHECK:STDERR: ^~~~~~~ +var package.val: i32; + +// CHECK:STDERR: fail_in_name.carbon:[[@LINE+3]]:11: ERROR: `namespace` introducer should be followed by a name. +// CHECK:STDERR: namespace package.NS; +// CHECK:STDERR: ^~~~~~~ +namespace package.NS; + +// CHECK:STDERR: fail_in_name.carbon:[[@LINE+3]]:7: ERROR: `class` introducer should be followed by a name. +// CHECK:STDERR: class package.C { +// CHECK:STDERR: ^~~~~~~ +class package.C { +} + +// CHECK:STDOUT: - filename: fail_in_name.carbon +// CHECK:STDOUT: parse_tree: [ +// CHECK:STDOUT: {kind: 'FileStart', text: ''}, +// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'}, +// CHECK:STDOUT: {kind: 'Name', text: 'package', has_error: yes}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: 'package', has_error: yes}, +// CHECK:STDOUT: {kind: 'BindingPattern', text: 'package', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 5}, +// CHECK:STDOUT: {kind: 'NamespaceStart', text: 'namespace'}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: 'package', has_error: yes}, +// CHECK:STDOUT: {kind: 'Namespace', text: ';', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'ClassIntroducer', text: 'class'}, +// CHECK:STDOUT: {kind: 'InvalidParse', text: 'package', has_error: yes}, +// CHECK:STDOUT: {kind: 'ClassDecl', text: 'class', has_error: yes, subtree_size: 3}, +// CHECK:STDOUT: {kind: 'FileEnd', text: ''}, +// CHECK:STDOUT: ] diff --git a/toolchain/sem_ir/formatter.cpp b/toolchain/sem_ir/formatter.cpp index ba53b5a44d33..0f71ec4932f2 100644 --- a/toolchain/sem_ir/formatter.cpp +++ b/toolchain/sem_ir/formatter.cpp @@ -139,6 +139,10 @@ class InstNamer { return BuiltinKind::FromInt(inst_id.index).label().str(); } + if (inst_id == InstId::PackageNamespace) { + return "package"; + } + auto& [inst_scope, inst_name] = insts[inst_id.index]; if (!inst_name) { // This should not happen in valid IR. diff --git a/toolchain/sem_ir/ids.h b/toolchain/sem_ir/ids.h index 6d332966d31f..3feecd4daaa5 100644 --- a/toolchain/sem_ir/ids.h +++ b/toolchain/sem_ir/ids.h @@ -31,6 +31,9 @@ struct InstId : public IdBase, public Printable { #define CARBON_SEM_IR_BUILTIN_KIND_NAME(Name) static const InstId Builtin##Name; #include "toolchain/sem_ir/builtin_kind.def" + // The namespace for a `package` expression. + static const InstId PackageNamespace; + // Returns the cross-reference instruction ID for a builtin. This relies on // File guarantees for builtin cross-reference placement. static constexpr auto ForBuiltin(BuiltinKind kind) -> InstId { @@ -59,6 +62,9 @@ constexpr InstId InstId::Invalid = InstId(InstId::InvalidIndex); InstId::ForBuiltin(BuiltinKind::Name); #include "toolchain/sem_ir/builtin_kind.def" +// The package namespace will be the instruction after builtins. +constexpr InstId InstId::PackageNamespace = InstId(BuiltinKind::ValidCount); + // The ID of a function. struct FunctionId : public IdBase, public Printable { using ValueType = Function; @@ -139,6 +145,8 @@ struct NameId : public IdBase, public Printable { static const NameId SelfType; // The name of the return slot in a function. static const NameId ReturnSlot; + // The name of `package`. + static const NameId PackageNamespace; // Returns the NameId corresponding to a particular IdentifierId. static auto ForIdentifier(IdentifierId id) -> NameId { @@ -165,6 +173,8 @@ struct NameId : public IdBase, public Printable { out << "SelfType"; } else if (*this == ReturnSlot) { out << "ReturnSlot"; + } else if (*this == PackageNamespace) { + out << "PackageNamespace"; } else { CARBON_CHECK(index >= 0) << "Unknown index"; IdBase::Print(out); @@ -176,6 +186,7 @@ constexpr NameId NameId::Invalid = NameId(NameId::InvalidIndex); constexpr NameId NameId::SelfValue = NameId(NameId::InvalidIndex - 1); constexpr NameId NameId::SelfType = NameId(NameId::InvalidIndex - 2); constexpr NameId NameId::ReturnSlot = NameId(NameId::InvalidIndex - 3); +constexpr NameId NameId::PackageNamespace = NameId(NameId::InvalidIndex - 4); // The ID of a name scope. struct NameScopeId : public IdBase, public Printable { diff --git a/toolchain/sem_ir/value_stores.cpp b/toolchain/sem_ir/value_stores.cpp index 6731ce340e91..2782d63d133f 100644 --- a/toolchain/sem_ir/value_stores.cpp +++ b/toolchain/sem_ir/value_stores.cpp @@ -19,6 +19,8 @@ static auto GetSpecialName(NameId name_id, bool for_ir) -> llvm::StringRef { return "Self"; case NameId::ReturnSlot.index: return for_ir ? "return" : ""; + case NameId::PackageNamespace.index: + return "package"; default: CARBON_FATAL() << "Unknown special name"; }