mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 21:10:12 +01:00
Add Support for #include in cpp files imported from Carbon (#4809)
Propagate `FileSystem` to `buildASTFromCodeWithArgs`(). Part of #4666
This commit is contained in:
@@ -358,7 +358,7 @@ auto CheckUnit::ImportCppPackages() -> void {
|
||||
return;
|
||||
}
|
||||
|
||||
ImportCppFile(context_, import.node_id, source_buffer->filename(),
|
||||
ImportCppFile(context_, import.node_id, fs_, source_buffer->filename(),
|
||||
source_buffer->text());
|
||||
}
|
||||
|
||||
|
||||
@@ -19,8 +19,9 @@
|
||||
|
||||
namespace Carbon::Check {
|
||||
|
||||
auto ImportCppFile(Context& context, SemIRLoc loc, llvm::StringRef file_path,
|
||||
llvm::StringRef code) -> void {
|
||||
auto ImportCppFile(Context& context, SemIRLoc loc,
|
||||
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> fs,
|
||||
llvm::StringRef file_path, llvm::StringRef code) -> void {
|
||||
std::string diagnostics_str;
|
||||
llvm::raw_string_ostream diagnostics_stream(diagnostics_str);
|
||||
|
||||
@@ -33,7 +34,7 @@ auto ImportCppFile(Context& context, SemIRLoc loc, llvm::StringRef file_path,
|
||||
code, {}, file_path, "clang-tool",
|
||||
std::make_shared<clang::PCHContainerOperations>(),
|
||||
clang::tooling::getClangStripDependencyFileAdjuster(),
|
||||
clang::tooling::FileContentMappings(), &diagnostics_consumer);
|
||||
clang::tooling::FileContentMappings(), &diagnostics_consumer, fs);
|
||||
// TODO: Implement and use a DynamicRecursiveASTVisitor to traverse the AST.
|
||||
int num_errors = diagnostics_consumer.getNumErrors();
|
||||
int num_warnings = diagnostics_consumer.getNumWarnings();
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
namespace Carbon::Check {
|
||||
|
||||
// Parses the C++ code and report errors and warnings.
|
||||
auto ImportCppFile(Context& context, SemIRLoc loc, llvm::StringRef file_path,
|
||||
llvm::StringRef code) -> void;
|
||||
auto ImportCppFile(Context& context, SemIRLoc loc,
|
||||
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> fs,
|
||||
llvm::StringRef file_path, llvm::StringRef code) -> void;
|
||||
|
||||
} // namespace Carbon::Check
|
||||
|
||||
|
||||
@@ -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
|
||||
// TIP: To test this file alone, run:
|
||||
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/interop/cpp/no_prelude/include.carbon
|
||||
// TIP: To dump output, run:
|
||||
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/interop/cpp/no_prelude/include.carbon
|
||||
|
||||
// --- included_file.h
|
||||
|
||||
void foo();
|
||||
|
||||
// --- including_file.h
|
||||
|
||||
#include "included_file.h"
|
||||
|
||||
// --- import_function_decl.carbon
|
||||
|
||||
library "[[@TEST_NAME]]";
|
||||
|
||||
import Cpp library "including_file.h";
|
||||
|
||||
// CHECK:STDOUT: --- import_function_decl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
Reference in New Issue
Block a user