//===-- IncludeFixer.h - Include inserter -----------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXER_H #define LLVM_CLANG_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXER_H #include "IncludeFixerContext.h" #include "SymbolIndexManager.h" #include "clang/Format/Format.h" #include "clang/Sema/ExternalSemaSource.h" #include "clang/Tooling/Core/Replacement.h" #include "clang/Tooling/Tooling.h" #include <memory> #include <vector> namespace clang { class CompilerInvocation; class DiagnosticConsumer; class FileManager; class PCHContainerOperations; namespace include_fixer { class IncludeFixerActionFactory : public clang::tooling::ToolAction { … }; /// Create replacements, which are generated by clang-format, for the /// missing header and missing qualifiers insertions. The function uses the /// first header for insertion. /// /// \param Code The source code. /// \param Context The context which contains all information for creating /// clang-include-fixer replacements. /// \param Style clang-format style being used. /// \param AddQualifiers Whether we should add qualifiers to all instances of /// an unidentified symbol. /// /// \return Formatted replacements for inserting, sorting headers and adding /// qualifiers on success; otherwise, an llvm::Error carrying llvm::StringError /// is returned. llvm::Expected<tooling::Replacements> createIncludeFixerReplacements( StringRef Code, const IncludeFixerContext &Context, const format::FormatStyle &Style = format::getLLVMStyle(), bool AddQualifiers = true); /// Handles callbacks from sema, does the include lookup and turns it into an /// IncludeFixerContext. class IncludeFixerSemaSource : public clang::ExternalSemaSource { … }; } // namespace include_fixer } // namespace clang #endif // LLVM_CLANG_TOOLS_EXTRA_INCLUDE_FIXER_INCLUDEFIXER_H