clang-tools 20.0.0git
|
#include <Headers.h>
Public Member Functions | |
IncludeInserter (StringRef FileName, StringRef Code, const format::FormatStyle &Style, StringRef BuildDir, HeaderSearch *HeaderSearchInfo) | |
void | addExisting (const Inclusion &Inc) |
bool | shouldInsertInclude (PathRef DeclaringHeader, const HeaderFile &InsertedHeader) const |
Checks whether to add an #include of the header into File . | |
std::optional< std::string > | calculateIncludePath (const HeaderFile &InsertedHeader, llvm::StringRef IncludingFile) const |
Determines the preferred way to #include a file, taking into account the search path. | |
std::optional< TextEdit > | insert (llvm::StringRef VerbatimHeader, tooling::IncludeDirective Directive) const |
Calculates an edit that inserts VerbatimHeader into code. | |
|
inline |
void clang::clangd::IncludeInserter::addExisting | ( | const Inclusion & | Inc | ) |
Definition at line 263 of file Headers.cpp.
References clang::clangd::Inclusion::Resolved, and clang::clangd::Inclusion::Written.
std::optional< std::string > clang::clangd::IncludeInserter::calculateIncludePath | ( | const HeaderFile & | InsertedHeader, |
llvm::StringRef | IncludingFile | ||
) | const |
Determines the preferred way to #include a file, taking into account the search path.
Usually this will prefer a shorter representation like 'Foo/Bar.h' over a longer one like 'Baz/include/Foo/Bar.h'.
InsertedHeader | The preferred header to be inserted. |
IncludingFile | is the absolute path of the file that InsertedHeader will be inserted. |
Definition at line 285 of file Headers.cpp.
References clang::clangd::HeaderFile::File, IsAngled, clang::clangd::HeaderFile::valid(), and clang::clangd::HeaderFile::Verbatim.
std::optional< TextEdit > clang::clangd::IncludeInserter::insert | ( | llvm::StringRef | VerbatimHeader, |
tooling::IncludeDirective | Directive | ||
) | const |
Calculates an edit that inserts VerbatimHeader
into code.
If the header is already included, this returns std::nullopt.
Definition at line 315 of file Headers.cpp.
References Directive, and clang::clangd::replacementToEdit().
bool clang::clangd::IncludeInserter::shouldInsertInclude | ( | PathRef | DeclaringHeader, |
const HeaderFile & | InsertedHeader | ||
) | const |
Checks whether to add an #include of the header into File
.
FIXME(ioeric): we might not want to insert an absolute include path if the path is not shortened.
An #include will not be added if:
DeclaringHeader
or InsertedHeader
is already (directly) in Inclusions
(including those included via different paths).DeclaringHeader
or InsertedHeader
is the same as File
.DeclaringHeader | is path of the original header corresponding to InsertedHeader e.g. the header that declares a symbol. |
InsertedHeader | The preferred header to be inserted. This could be the same as DeclaringHeader but must be provided. |
Definition at line 271 of file Headers.cpp.
References clang::clangd::HeaderFile::File, clang::clangd::HeaderFile::valid(), and clang::clangd::HeaderFile::Verbatim.