Files
carbon-lang/toolchain/sem_ir/cpp_file.cpp
T
Richard SmithandJon Ross-Perkins d208e950c7 Encapsulate clang::ASTUnit in SemIR::CppFile. (#6459)
This intends to avoid proliferation of dependencies on the exact API of
`clang::ASTUnit`, and would enable us to more easily switch to a
different approach that gives us more control over the construction of
the Clang AST.

Also remove some unnecessary tracking of the `CppFile` and instead
always retrieve it from the `SemIR::File`.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
2025-12-04 21:05:40 +00:00

20 lines
658 B
C++

// 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 "toolchain/sem_ir/cpp_file.h"
namespace Carbon::SemIR {
auto CppFile::VisitLocalTopLevelDecls(
llvm::function_ref<void(const clang::Decl*)> visitor) const -> void {
ast_unit_->visitLocalTopLevelDecls(
&visitor, [](void* erased_visitor_ptr, const clang::Decl* decl) {
auto* visitor_ptr = static_cast<decltype(visitor)*>(erased_visitor_ptr);
(*visitor_ptr)(decl);
return true;
});
}
} // namespace Carbon::SemIR