diff --git a/toolchain/check/cpp/export.cpp b/toolchain/check/cpp/export.cpp index cdaa6fdc1e48..0bacf6947d41 100644 --- a/toolchain/check/cpp/export.cpp +++ b/toolchain/check/cpp/export.cpp @@ -261,10 +261,10 @@ static auto BuildCppToCarbonThunkDecl( auto* tinfo = ast_context.getTrivialTypeSourceInfo(thunk_function_type, clang_loc); - const bool uses_fp_intrin = false; - const bool inline_specified = true; - const auto constexpr_kind = clang::ConstexprSpecKind::Unspecified; - const auto trailing_requires_clause = clang::AssociatedConstraint(); + bool uses_fp_intrin = false; + bool inline_specified = true; + auto constexpr_kind = clang::ConstexprSpecKind::Unspecified; + auto trailing_requires_clause = clang::AssociatedConstraint(); clang::FunctionDecl* thunk_function_decl = nullptr; if (auto* parent_class = dyn_cast(decl_context)) { diff --git a/toolchain/check/cpp/generate_ast.cpp b/toolchain/check/cpp/generate_ast.cpp index c0a66b3055ea..b2fde61fc2f5 100644 --- a/toolchain/check/cpp/generate_ast.cpp +++ b/toolchain/check/cpp/generate_ast.cpp @@ -566,9 +566,35 @@ auto CarbonExternalASTSource::CompleteType(clang::TagDecl* tag_decl) -> void { return; } + const auto& class_info = context_->classes().Get(class_type->class_id); class_decl->startDefinition(); - // TODO: Import base class and fields, plus any special member functions that - // affect class properties. + CARBON_CHECK(class_decl->hasDefinition()); + + // If the Carbon class has a base class that we can map into C++, add that as + // a C++ base class. + auto base_type_id = + class_info.GetBaseType(context_->sem_ir(), class_type->specific_id); + if (base_type_id.has_value()) { + auto base_loc = GetCppLocation(*context_, SemIR::LocId(class_info.base_id)); + if (auto base_type = MapToCppType(*context_, base_type_id); + !base_type.isNull() && base_type->isStructureOrClassType() && + !context_->clang_sema().RequireCompleteType( + base_loc, base_type, clang::diag::err_incomplete_base_class)) { + bool is_virtual = false; + bool is_base_of_class = true; + clang::CXXBaseSpecifier base( + clang::SourceRange(base_loc, base_loc), is_virtual, is_base_of_class, + clang::AS_public, + context_->ast_context().getTrivialTypeSourceInfo(base_type, base_loc), + /*EllipsisLoc=*/clang::SourceLocation()); + clang::CXXBaseSpecifier* bases[1] = {&base}; + CARBON_CHECK(class_decl->hasDefinition()); + class_decl->setBases(bases, 1); + } + } + + // TODO: Import fields, plus any special member functions that affect class + // properties. class_decl->completeDefinition(); } diff --git a/toolchain/check/testdata/interop/cpp/class/export/base.carbon b/toolchain/check/testdata/interop/cpp/class/export/base.carbon new file mode 100644 index 000000000000..4b736a720796 --- /dev/null +++ b/toolchain/check/testdata/interop/cpp/class/export/base.carbon @@ -0,0 +1,56 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/export/base.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/export/base.carbon + +// --- derived_to_base.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +base class A {} + +class B { + extend base: A; +} + +inline Cpp ''' +Carbon::A* Convert(Carbon::B* p) { + return p; +} +'''; + +// --- name_lookup.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +base class A { + fn F(); + fn G(n: i32); +} + +class B { + extend base: A; + fn G(); +} + +inline Cpp ''' +void Qualified() { + Carbon::B::F(); + Carbon::B::G(); +} + +void MemberAccess(Carbon::A *a, Carbon::B *b) { + // TODO: These cause a crash. + // b->F(); + // b->G(); +} +'''; diff --git a/toolchain/check/testdata/interop/cpp/class/export/class.carbon b/toolchain/check/testdata/interop/cpp/class/export/class.carbon new file mode 100644 index 000000000000..0b97f6ec21c0 --- /dev/null +++ b/toolchain/check/testdata/interop/cpp/class/export/class.carbon @@ -0,0 +1,120 @@ +// Part of the Carbon Language project, under the Apache License v2.0 with LLVM +// Exceptions. See /LICENSE for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +// INCLUDE-FILE: toolchain/testing/testdata/min_prelude/int.carbon +// +// AUTOUPDATE +// TIP: To test this file alone, run: +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/export/class.carbon +// TIP: To dump output, run: +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/export/class.carbon + +// --- static_members.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +class A { + fn F() {} +} + +inline Cpp ''' +void G() { + Carbon::A::F(); +} +'''; + +// --- nested.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +class A { + class B { + class C { + } + } +} + +inline Cpp ''' +void G() { + Carbon::A::B::C *p = nullptr; +} +'''; + +// --- incomplete.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +class A; + +inline Cpp ''' +Carbon::A *p = nullptr; +'''; + +// --- fail_incomplete_concrete.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +// CHECK:STDERR: fail_incomplete_concrete.carbon:[[@LINE+4]]:1: error: class was forward declared here [ClassForwardDeclaredHere] +// CHECK:STDERR: class A; +// CHECK:STDERR: ^~~~~~~~ +// CHECK:STDERR: +class A; + +inline Cpp ''' +// CHECK:STDERR: fail_incomplete_concrete.carbon:[[@LINE+4]]:11: error: variable has incomplete type 'Carbon::A' [CppInteropParseError] +// CHECK:STDERR: 16 | Carbon::A a; +// CHECK:STDERR: | ^ +// CHECK:STDERR: +Carbon::A a; +'''; + +// --- fail_todo_monomorphization_failure.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +class B(N:! i32) { + var a: array(i8, N); +} + +// TODO: Once we allow this, we should produce an "invalid array bound" error +// during monomorphization triggered by the C++ code. +// CHECK:STDERR: fail_todo_monomorphization_failure.carbon:[[@LINE+4]]:11: error: alias initializer must be a name reference [AliasRequiresNameRef] +// CHECK:STDERR: alias T = B(-1); +// CHECK:STDERR: ^~~~~ +// CHECK:STDERR: +alias T = B(-1); + +inline Cpp ''' +// CHECK:STDERR: fail_todo_monomorphization_failure.carbon:[[@LINE+4]]:9: error: no type named 'T' in namespace 'Carbon' [CppInteropParseError] +// CHECK:STDERR: 22 | Carbon::T t; +// CHECK:STDERR: | ~~~~~~~~^ +// CHECK:STDERR: +Carbon::T t; +'''; + +// --- fail_todo_fields.carbon +library "[[@TEST_NAME]]"; + +import Cpp; + +class A { + var a: i32; + var b: i32; +} + +inline Cpp ''' +// CHECK:STDERR: fail_todo_fields.carbon:[[@LINE+7]]:15: error: static assertion failed due to requirement 'sizeof(Carbon::A) == 2 * sizeof(int)' [CppInteropParseError] +// CHECK:STDERR: 18 | static_assert(sizeof(Carbon::A) == 2 * sizeof(int)); +// CHECK:STDERR: | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: fail_todo_fields.carbon:[[@LINE+4]]:33: note: expression evaluates to '1 == 8' [CppInteropParseNote] +// CHECK:STDERR: 18 | static_assert(sizeof(Carbon::A) == 2 * sizeof(int)); +// CHECK:STDERR: | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~ +// CHECK:STDERR: +static_assert(sizeof(Carbon::A) == 2 * sizeof(int)); +'''; diff --git a/toolchain/check/testdata/interop/cpp/class/abstract.carbon b/toolchain/check/testdata/interop/cpp/class/import/abstract.carbon similarity index 96% rename from toolchain/check/testdata/interop/cpp/class/abstract.carbon rename to toolchain/check/testdata/interop/cpp/class/import/abstract.carbon index 971c8733768b..82dd5220d20c 100644 --- a/toolchain/check/testdata/interop/cpp/class/abstract.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/abstract.carbon @@ -7,9 +7,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/abstract.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/abstract.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/abstract.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/abstract.carbon // --- abstract.h diff --git a/toolchain/check/testdata/interop/cpp/class/access.carbon b/toolchain/check/testdata/interop/cpp/class/import/access.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/access.carbon rename to toolchain/check/testdata/interop/cpp/class/import/access.carbon index 43c350a5be73..26635dec2f16 100644 --- a/toolchain/check/testdata/interop/cpp/class/access.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/access.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/access.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/access.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/access.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/access.carbon // ============================================================================ // Public non-function member diff --git a/toolchain/check/testdata/interop/cpp/class/base.carbon b/toolchain/check/testdata/interop/cpp/class/import/base.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/base.carbon rename to toolchain/check/testdata/interop/cpp/class/import/base.carbon index db49f24cbdaf..8506a845011c 100644 --- a/toolchain/check/testdata/interop/cpp/class/base.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/base.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/base.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/base.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/base.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/base.carbon // --- derived_to_base_conversion.h diff --git a/toolchain/check/testdata/interop/cpp/class/class.carbon b/toolchain/check/testdata/interop/cpp/class/import/class.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/class.carbon rename to toolchain/check/testdata/interop/cpp/class/import/class.carbon index 6806db54922d..213b3d18976e 100644 --- a/toolchain/check/testdata/interop/cpp/class/class.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/class.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/class.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/class.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/class.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/class.carbon // ============================================================================ // Declaration diff --git a/toolchain/check/testdata/interop/cpp/class/constructor.carbon b/toolchain/check/testdata/interop/cpp/class/import/constructor.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/constructor.carbon rename to toolchain/check/testdata/interop/cpp/class/import/constructor.carbon index a5965c2ad217..ab3d898c27cf 100644 --- a/toolchain/check/testdata/interop/cpp/class/constructor.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/constructor.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/constructor.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/constructor.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/constructor.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/constructor.carbon // ============================================================================ // Default constructor diff --git a/toolchain/check/testdata/interop/cpp/class/field.carbon b/toolchain/check/testdata/interop/cpp/class/import/field.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/field.carbon rename to toolchain/check/testdata/interop/cpp/class/import/field.carbon index 565713a4c471..37223428be5d 100644 --- a/toolchain/check/testdata/interop/cpp/class/field.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/field.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/field.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/field.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/field.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/field.carbon // --- struct.h diff --git a/toolchain/check/testdata/interop/cpp/class/invalid.carbon b/toolchain/check/testdata/interop/cpp/class/import/invalid.carbon similarity index 86% rename from toolchain/check/testdata/interop/cpp/class/invalid.carbon rename to toolchain/check/testdata/interop/cpp/class/import/invalid.carbon index fa7b1234e75e..12e14a1ae964 100644 --- a/toolchain/check/testdata/interop/cpp/class/invalid.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/invalid.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/invalid.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/invalid.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/invalid.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/invalid.carbon // --- fail_invalid_base.carbon diff --git a/toolchain/check/testdata/interop/cpp/class/method.carbon b/toolchain/check/testdata/interop/cpp/class/import/method.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/method.carbon rename to toolchain/check/testdata/interop/cpp/class/import/method.carbon index e02b91d9eba9..f1b740d34e0a 100644 --- a/toolchain/check/testdata/interop/cpp/class/method.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/method.carbon @@ -7,9 +7,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/method.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/method.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/method.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/method.carbon // --- object_param_qualifiers.h diff --git a/toolchain/check/testdata/interop/cpp/class/nested.carbon b/toolchain/check/testdata/interop/cpp/class/import/nested.carbon similarity index 81% rename from toolchain/check/testdata/interop/cpp/class/nested.carbon rename to toolchain/check/testdata/interop/cpp/class/import/nested.carbon index 93327ca6075e..3b7f22448d52 100644 --- a/toolchain/check/testdata/interop/cpp/class/nested.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/nested.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/nested.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/nested.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/nested.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/nested.carbon // --- import_nested_class.carbon diff --git a/toolchain/check/testdata/interop/cpp/class/non_aggregate_init.carbon b/toolchain/check/testdata/interop/cpp/class/import/non_aggregate_init.carbon similarity index 91% rename from toolchain/check/testdata/interop/cpp/class/non_aggregate_init.carbon rename to toolchain/check/testdata/interop/cpp/class/import/non_aggregate_init.carbon index 91bbb5bd9049..be298692794d 100644 --- a/toolchain/check/testdata/interop/cpp/class/non_aggregate_init.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/non_aggregate_init.carbon @@ -7,9 +7,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/non_aggregate_init.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/non_aggregate_init.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/non_aggregate_init.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/non_aggregate_init.carbon // ============================================================================ // Non-aggregate class should not be initializable from {} diff --git a/toolchain/check/testdata/interop/cpp/class/struct.carbon b/toolchain/check/testdata/interop/cpp/class/import/struct.carbon similarity index 94% rename from toolchain/check/testdata/interop/cpp/class/struct.carbon rename to toolchain/check/testdata/interop/cpp/class/import/struct.carbon index 7a36a643c535..586371a96436 100644 --- a/toolchain/check/testdata/interop/cpp/class/struct.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/struct.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/struct.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/struct.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/struct.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/struct.carbon // ============================================================================ // Declaration diff --git a/toolchain/check/testdata/interop/cpp/class/template.carbon b/toolchain/check/testdata/interop/cpp/class/import/template.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/template.carbon rename to toolchain/check/testdata/interop/cpp/class/import/template.carbon index 0d1b79d56ad1..a63dcb8cabb0 100644 --- a/toolchain/check/testdata/interop/cpp/class/template.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/template.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/template.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/template.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/template.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/template.carbon // --- class_template.h diff --git a/toolchain/check/testdata/interop/cpp/class/union.carbon b/toolchain/check/testdata/interop/cpp/class/import/union.carbon similarity index 99% rename from toolchain/check/testdata/interop/cpp/class/union.carbon rename to toolchain/check/testdata/interop/cpp/class/import/union.carbon index f069f97efda7..3642f3491e32 100644 --- a/toolchain/check/testdata/interop/cpp/class/union.carbon +++ b/toolchain/check/testdata/interop/cpp/class/import/union.carbon @@ -6,9 +6,9 @@ // // AUTOUPDATE // TIP: To test this file alone, run: -// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/union.carbon +// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/class/import/union.carbon // TIP: To dump output, run: -// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/union.carbon +// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/class/import/union.carbon // ============================================================================ // Declaration