13#ifndef LLVM_CLANG_FRONTEND_ASTUNIT_H
14#define LLVM_CLANG_FRONTEND_ASTUNIT_H
31#include "llvm/ADT/ArrayRef.h"
32#include "llvm/ADT/DenseMap.h"
33#include "llvm/ADT/IntrusiveRefCntPtr.h"
34#include "llvm/ADT/STLExtras.h"
35#include "llvm/ADT/SmallVector.h"
36#include "llvm/ADT/StringMap.h"
37#include "llvm/ADT/StringRef.h"
38#include "llvm/ADT/iterator_range.h"
62class ASTDeserializationListener;
63class ASTMutationListener;
66class CompilerInstance;
67class CompilerInvocation;
75class PCHContainerOperations;
76class PCHContainerReader;
78class PreprocessorOptions;
81class SyntaxOnlyAction;
105 std::vector<std::pair<unsigned, unsigned>>
Ranges;
110 std::unique_ptr<LangOptions> LangOpts;
111 std::unique_ptr<CodeGenOptions> CodeGenOpts;
116 std::shared_ptr<DiagnosticOptions> DiagOpts;
121 std::unique_ptr<HeaderSearch> HeaderInfo;
123 std::shared_ptr<Preprocessor> PP;
125 std::shared_ptr<TargetOptions> TargetOpts;
126 std::unique_ptr<HeaderSearchOptions> HSOpts;
127 std::shared_ptr<PreprocessorOptions> PPOpts;
129 bool HadModuleLoaderFatalFailure =
false;
130 bool StorePreamblesInMemory =
false;
133 std::unique_ptr<ASTWriterData> WriterData;
136 std::string PreambleStoragePath;
140 std::unique_ptr<ASTConsumer> Consumer;
144 std::unique_ptr<Sema> TheSema;
148 std::shared_ptr<CompilerInvocation> Invocation;
151 std::shared_ptr<CompilerInvocation> CCInvocation;
155 std::shared_ptr<CompilerInvocation> ModifiedInvocation;
163 bool OnlyLocalDecls =
false;
178 bool OwnsRemappedFileBuffers =
true;
187 std::vector<Decl*> TopLevelDecls;
191 using FileDeclsTy = llvm::DenseMap<FileID, std::unique_ptr<LocDeclsTy>>;
195 FileDeclsTy FileDecls;
198 std::string OriginalSourceFile;
216 unsigned NumStoredDiagnosticsFromDriver = 0;
227 unsigned PreambleRebuildCountdown = 0;
230 unsigned PreambleCounter = 0;
238 llvm::StringMap<SourceLocation> PreambleSrcLocCache;
241 std::optional<PrecompiledPreamble> Preamble;
246 std::unique_ptr<llvm::MemoryBuffer> SavedMainFileBuffer;
254 unsigned NumWarningsInPreamble = 0;
258 std::vector<LocalDeclID> TopLevelDeclsInPreamble;
261 bool ShouldCacheCodeCompletionResults : 1;
265 bool IncludeBriefCommentsInCodeCompletion : 1;
269 bool UserFilesAreVolatile : 1;
274 void TranslateStoredDiagnostics(
FileManager &FileMgr,
279 void clearFileLevelDecls();
323 return CachedCompletionTypes;
327 std::shared_ptr<GlobalCodeCompletionAllocator>
329 return CachedCompletionAllocator;
334 CCTUInfo = std::make_unique<CodeCompletionTUInfo>(
335 std::make_shared<GlobalCodeCompletionAllocator>());
341 std::shared_ptr<GlobalCodeCompletionAllocator> CachedCompletionAllocator;
343 std::unique_ptr<CodeCompletionTUInfo> CCTUInfo;
346 std::vector<CachedCodeCompletionResult> CachedCompletionResults;
350 llvm::StringMap<unsigned> CachedCompletionTypes;
357 unsigned CompletionCacheTopLevelHashValue = 0;
364 unsigned PreambleTopLevelHashValue = 0;
368 unsigned CurrentTopLevelHashValue = 0;
372 LLVM_PREFERRED_TYPE(
bool)
373 unsigned UnsafeToFree : 1;
380 void CacheCodeCompletionResults();
383 void ClearCachedCompletionResults();
385 explicit ASTUnit(
bool MainFileIsAST);
387 bool Parse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,
388 std::unique_ptr<llvm::MemoryBuffer> OverrideMainBuffer,
391 std::unique_ptr<llvm::MemoryBuffer> getMainBufferWithPrecompiledPreamble(
392 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
395 unsigned MaxLines = 0);
396 void RealizeTopLevelDeclsFromPreamble();
409 class ConcurrencyState {
419 ConcurrencyState ConcurrencyCheckValue;
429 Self.ConcurrencyCheckValue.start();
433 Self.ConcurrencyCheckValue.finish();
467 Ctx = std::move(ctx);
480 bool hasSema()
const {
return (
bool)TheSema; }
483 assert(TheSema &&
"ASTUnit does not have a Sema object!");
488 assert(LangOpts &&
"ASTUnit does not have language options");
493 assert(HSOpts &&
"ASTUnit does not have header search options");
498 assert(PPOpts &&
"ASTUnit does not have preprocessor options");
511 return OriginalSourceFile;
530 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
531 if (!TopLevelDeclsInPreamble.empty())
532 RealizeTopLevelDeclsFromPreamble();
533 return TopLevelDecls.begin();
537 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
538 if (!TopLevelDeclsInPreamble.empty())
539 RealizeTopLevelDeclsFromPreamble();
540 return TopLevelDecls.end();
544 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
545 return TopLevelDeclsInPreamble.size() + TopLevelDecls.size();
549 assert(!
isMainFileAST() &&
"Invalid call for AST based ASTUnit!");
550 return TopLevelDeclsInPreamble.empty() && TopLevelDecls.empty();
555 TopLevelDecls.push_back(
D);
578 unsigned Line,
unsigned Col)
const;
617 return StoredDiagnostics.begin();
621 return StoredDiagnostics.begin();
625 return StoredDiagnostics.end();
629 return StoredDiagnostics.end();
646 if (NumStoredDiagnosticsFromDriver > StoredDiagnostics.size())
647 NumStoredDiagnosticsFromDriver = 0;
648 return StoredDiagnostics.begin() + NumStoredDiagnosticsFromDriver;
652 std::vector<CachedCodeCompletionResult>::iterator;
655 return CachedCompletionResults.begin();
659 return CachedCompletionResults.end();
663 return CachedCompletionResults.size();
669 llvm::iterator_range<PreprocessingRecord::iterator>
689 std::unique_ptr<llvm::MemoryBuffer>
703 static std::unique_ptr<ASTUnit>
704 create(std::shared_ptr<CompilerInvocation> CI,
705 std::shared_ptr<DiagnosticOptions> DiagOpts,
732 WhatToLoad ToLoad, std::shared_ptr<DiagnosticOptions> DiagOpts,
736 bool OnlyLocalDecls =
false,
738 bool AllowASTWithCompilerErrors =
false,
739 bool UserFilesAreVolatile =
false,
741 llvm::vfs::getRealFileSystem());
758 bool LoadFromCompilerInvocation(
759 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
760 unsigned PrecompilePreambleAfterNParses,
793 std::shared_ptr<CompilerInvocation> CI,
794 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
795 std::shared_ptr<DiagnosticOptions> DiagOpts,
798 bool Persistent =
true, StringRef ResourceFilesPath = StringRef(),
799 bool OnlyLocalDecls =
false,
801 unsigned PrecompilePreambleAfterNParses = 0,
802 bool CacheCodeCompletionResults =
false,
803 bool UserFilesAreVolatile =
false,
804 std::unique_ptr<ASTUnit> *ErrAST =
nullptr);
820 static std::unique_ptr<ASTUnit> LoadFromCompilerInvocation(
821 std::shared_ptr<CompilerInvocation> CI,
822 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
823 std::shared_ptr<DiagnosticOptions> DiagOpts,
827 unsigned PrecompilePreambleAfterNParses = 0,
829 bool CacheCodeCompletionResults =
false,
830 bool IncludeBriefCommentsInCodeCompletion =
false,
831 bool UserFilesAreVolatile =
false);
870 const char **ArgBegin,
const char **ArgEnd,
871 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
872 std::shared_ptr<DiagnosticOptions> DiagOpts,
874 bool StorePreamblesInMemory =
false,
875 StringRef PreambleStoragePath = StringRef(),
bool OnlyLocalDecls =
false,
878 bool RemappedFilesKeepOriginalName =
true,
879 unsigned PrecompilePreambleAfterNParses = 0,
881 bool CacheCodeCompletionResults =
false,
882 bool IncludeBriefCommentsInCodeCompletion =
false,
883 bool AllowPCHWithCompilerErrors =
false,
886 bool SingleFileParse =
false,
bool UserFilesAreVolatile =
false,
887 bool ForSerialization =
false,
888 bool RetainExcludedConditionalBlocks =
false,
889 std::optional<StringRef> ModuleFormat = std::nullopt,
890 std::unique_ptr<ASTUnit> *ErrAST =
nullptr,
891 IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS =
nullptr);
904 bool Reparse(std::shared_ptr<PCHContainerOperations> PCHContainerOps,
905 ArrayRef<RemappedFile> RemappedFiles = {},
906 IntrusiveRefCntPtr<llvm::vfs::FileSystem>
VFS =
nullptr);
938 ArrayRef<RemappedFile> RemappedFiles,
bool IncludeMacros,
939 bool IncludeCodePatterns,
bool IncludeBriefComments,
940 CodeCompleteConsumer &Consumer,
941 std::shared_ptr<PCHContainerOperations> PCHContainerOps,
943 LangOptions &LangOpts,
946 SmallVectorImpl<StoredDiagnostic> &StoredDiagnostics,
947 SmallVectorImpl<const llvm::MemoryBuffer *> &OwnedBuffers,
948 std::unique_ptr<SyntaxOnlyAction> Act);
Defines the clang::ASTContext interface.
Defines the Diagnostic-related interfaces.
Defines the clang::FileSystemOptions interface.
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Defines the clang::LangOptions interface.
static DiagnosticBuilder Diag(DiagnosticsEngine *Diags, const LangOptions &Features, FullSourceLoc TokLoc, const char *TokBegin, const char *TokRangeBegin, const char *TokRangeEnd, unsigned DiagID)
Produce a diagnostic highlighting some portion of a literal.
llvm::MachO::Target Target
Defines the clang::SourceLocation class and associated facilities.
Defines the SourceManager interface.
Defines the clang::TargetOptions class.
Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...
An abstract interface that should be implemented by listeners that want to be notified when an AST en...
ConcurrencyCheck(ASTUnit &Self)
Utility class for loading a ASTContext from an AST file.
const PreprocessorOptions & getPreprocessorOpts() const
unsigned & getCurrentTopLevelHashValue()
Retrieve a reference to the current top-level name hash value.
ASTContext & getASTContext()
CodeCompletionTUInfo & getCodeCompletionTUInfo()
void enableSourceFileDiagnostics()
Enable source-range based diagnostic messages.
stored_diag_iterator stored_diag_end()
void addFileLevelDecl(Decl *D)
Add a new local file-level declaration.
const FileManager & getFileManager() const
void setOwnsRemappedFileBuffers(bool val)
bool isUnsafeToFree() const
void CodeComplete(StringRef File, unsigned Line, unsigned Column, ArrayRef< RemappedFile > RemappedFiles, bool IncludeMacros, bool IncludeCodePatterns, bool IncludeBriefComments, CodeCompleteConsumer &Consumer, std::shared_ptr< PCHContainerOperations > PCHContainerOps, llvm::IntrusiveRefCntPtr< DiagnosticsEngine > Diag, LangOptions &LangOpts, llvm::IntrusiveRefCntPtr< SourceManager > SourceMgr, llvm::IntrusiveRefCntPtr< FileManager > FileMgr, SmallVectorImpl< StoredDiagnostic > &StoredDiagnostics, SmallVectorImpl< const llvm::MemoryBuffer * > &OwnedBuffers, std::unique_ptr< SyntaxOnlyAction > Act)
Perform code completion at the given file, line, and column within this translation unit.
cached_completion_iterator cached_completion_end()
SourceRange mapRangeFromPreamble(SourceRange R) const
bool top_level_empty() const
llvm::IntrusiveRefCntPtr< ASTContext > getASTContextPtr()
bool serialize(raw_ostream &OS)
Serialize this translation unit with the given output stream.
llvm::iterator_range< stored_diag_iterator > diags_range
bool getOwnsRemappedFileBuffers() const
const FileSystemOptions & getFileSystemOpts() const
ASTDeserializationListener * getDeserializationListener()
stored_diag_const_iterator stored_diag_end() const
bool Reparse(std::shared_ptr< PCHContainerOperations > PCHContainerOps, ArrayRef< RemappedFile > RemappedFiles={}, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=nullptr)
Reparse the source files using the same command-line options that were originally used to produce thi...
void setUnsafeToFree(bool Value)
std::unique_ptr< llvm::MemoryBuffer > getBufferForFile(StringRef Filename, std::string *ErrorStr=nullptr)
llvm::StringMap< unsigned > & getCachedCompletionTypes()
Retrieve the mapping from formatted type names to unique type identifiers.
const DiagnosticsEngine & getDiagnostics() const
SourceLocation getLocation(const FileEntry *File, unsigned Line, unsigned Col) const
Get the source location for the given file:line:col triplet.
void ResetForParse()
Free data that will be re-generated on the next parse.
llvm::IntrusiveRefCntPtr< SourceManager > getSourceManagerPtr()
bool getOnlyLocalDecls() const
InputKind getInputKind() const
Determine the input kind this AST unit represents.
OptionalFileEntryRef getPCHFile()
Get the PCH file if one was included.
StringRef getMainFileName() const
static std::unique_ptr< ASTUnit > LoadFromASTFile(StringRef Filename, const PCHContainerReader &PCHContainerRdr, WhatToLoad ToLoad, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, const FileSystemOptions &FileSystemOpts, const HeaderSearchOptions &HSOpts, const LangOptions *LangOpts=nullptr, bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, bool AllowASTWithCompilerErrors=false, bool UserFilesAreVolatile=false, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=llvm::vfs::getRealFileSystem())
Create a ASTUnit from an AST file.
ASTUnit(const ASTUnit &)=delete
stored_diag_const_iterator stored_diag_begin() const
SourceLocation mapLocationToPreamble(SourceLocation Loc) const
If Loc is a local location of the main file but inside the preamble chunk, returns the corresponding ...
cached_completion_iterator cached_completion_begin()
const LangOptions & getLangOpts() const
bool isMainFileAST() const
std::vector< Decl * >::iterator top_level_iterator
const SourceManager & getSourceManager() const
ASTUnit & operator=(const ASTUnit &)=delete
unsigned stored_diag_size() const
const_diags_range storedDiagnostics() const
Preprocessor & getPreprocessor()
DiagnosticsEngine & getDiagnostics()
SourceLocation getEndOfPreambleFileID() const
stored_diag_iterator stored_diag_afterDriver_begin()
llvm::IntrusiveRefCntPtr< DiagnosticsEngine > getDiagnosticsPtr()
static ASTUnit * LoadFromCompilerInvocationAction(std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< PCHContainerOperations > PCHContainerOps, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, FrontendAction *Action=nullptr, ASTUnit *Unit=nullptr, bool Persistent=true, StringRef ResourceFilesPath=StringRef(), bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, unsigned PrecompilePreambleAfterNParses=0, bool CacheCodeCompletionResults=false, bool UserFilesAreVolatile=false, std::unique_ptr< ASTUnit > *ErrAST=nullptr)
Create an ASTUnit from a source file, via a CompilerInvocation object, by invoking the optionally pro...
@ LoadPreprocessorOnly
Load options and the preprocessor state.
@ LoadASTOnly
Load the AST, but do not restore Sema state.
@ LoadEverything
Load everything, including Sema.
top_level_iterator top_level_end()
SourceLocation getStartOfMainFileID() const
SourceRange mapRangeToPreamble(SourceRange R) const
diags_range storedDiagnostics()
FileManager & getFileManager()
IntrusiveRefCntPtr< ASTReader > getASTReader() const
IntrusiveRefCntPtr< FileManager > getFileManagerPtr()
bool(*)(void *context, const Decl *D) DeclVisitorFn
Type for a function iterating over a number of declarations.
bool visitLocalTopLevelDecls(void *context, DeclVisitorFn Fn)
Iterate over local declarations (locally parsed if this is a parsed source file or the loaded declara...
llvm::iterator_range< PreprocessingRecord::iterator > getLocalPreprocessingEntities() const
Returns an iterator range for the local preprocessing entities of the local Preprocessor,...
StringRef getOriginalSourceFileName() const
top_level_iterator top_level_begin()
std::vector< CachedCodeCompletionResult >::iterator cached_completion_iterator
ASTMutationListener * getASTMutationListener()
stored_diag_iterator stored_diag_begin()
TranslationUnitKind getTranslationUnitKind() const
Determine what kind of translation unit this AST represents.
std::shared_ptr< Preprocessor > getPreprocessorPtr() const
static std::unique_ptr< ASTUnit > LoadFromCommandLine(const char **ArgBegin, const char **ArgEnd, std::shared_ptr< PCHContainerOperations > PCHContainerOps, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, StringRef ResourceFilesPath, bool StorePreamblesInMemory=false, StringRef PreambleStoragePath=StringRef(), bool OnlyLocalDecls=false, CaptureDiagsKind CaptureDiagnostics=CaptureDiagsKind::None, ArrayRef< RemappedFile > RemappedFiles={}, bool RemappedFilesKeepOriginalName=true, unsigned PrecompilePreambleAfterNParses=0, TranslationUnitKind TUKind=TU_Complete, bool CacheCodeCompletionResults=false, bool IncludeBriefCommentsInCodeCompletion=false, bool AllowPCHWithCompilerErrors=false, SkipFunctionBodiesScope SkipFunctionBodies=SkipFunctionBodiesScope::None, bool SingleFileParse=false, bool UserFilesAreVolatile=false, bool ForSerialization=false, bool RetainExcludedConditionalBlocks=false, std::optional< StringRef > ModuleFormat=std::nullopt, std::unique_ptr< ASTUnit > *ErrAST=nullptr, IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS=nullptr)
LoadFromCommandLine - Create an ASTUnit from a vector of command line arguments, which must specify e...
void setPreprocessor(std::shared_ptr< Preprocessor > pp)
StringRef getASTFileName() const
If this ASTUnit came from an AST file, returns the filename for it.
bool Save(StringRef File)
Save this translation unit to a file with the given name.
SourceManager & getSourceManager()
const HeaderSearchOptions & getHeaderSearchOpts() const
void setASTContext(llvm::IntrusiveRefCntPtr< ASTContext > ctx)
unsigned getPreambleCounterForTests() const
unsigned cached_completion_size() const
static std::unique_ptr< ASTUnit > create(std::shared_ptr< CompilerInvocation > CI, std::shared_ptr< DiagnosticOptions > DiagOpts, IntrusiveRefCntPtr< DiagnosticsEngine > Diags, CaptureDiagsKind CaptureDiagnostics, bool UserFilesAreVolatile)
Create a ASTUnit. Gets ownership of the passed CompilerInvocation.
void addTopLevelDecl(Decl *D)
Add a new top-level declaration.
const Preprocessor & getPreprocessor() const
std::shared_ptr< GlobalCodeCompletionAllocator > getCachedCompletionAllocator()
Retrieve the allocator used to cache global code completions.
llvm::iterator_range< stored_diag_const_iterator > const_diags_range
bool isInMainFileID(SourceLocation Loc) const
bool isModuleFile() const
Returns true if the ASTUnit was constructed from a serialized module file.
void findFileRegionDecls(FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls)
Get the decls that are contained in a file in the Offset/Length range.
const ASTContext & getASTContext() const
bool isInPreambleFileID(SourceLocation Loc) const
SourceLocation mapLocationFromPreamble(SourceLocation Loc) const
If Loc is a loaded location from the preamble, returns the corresponding local location of the main f...
std::pair< std::string, llvm::MemoryBuffer * > RemappedFile
A mapping from a file name to the memory buffer that stores the remapped contents of that file.
std::size_t top_level_size() const
A "string" used to describe how code completion can be performed for an entity.
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
Helper class for holding the data necessary to invoke the compiler.
Decl - This represents one declaration (or definition), e.g.
Concrete class used by the front-end to report problems and issues.
Level
The level of the diagnostic, after it has been through mapping.
Cached information about one file (either on disk or in the virtual file system).
An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...
Implements support for file system lookup, file system caching, and directory search management.
Keeps track of options that affect how file operations are performed.
Abstract base class for actions which can be performed by the frontend.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
Abstract interface for a module loader.
This abstract interface provides operations for unwrapping containers for serialized ASTs (precompile...
PreprocessorOptions - This class is used for passing the various options used in preprocessor initial...
Engages in a tight little dance with the lexer to efficiently preprocess tokens.
Sema - This implements semantic analysis and AST building for C.
Encodes a location in the source.
This class handles loading and caching of source files into memory.
A trivial tuple used to represent a source range.
SourceLocation getEnd() const
SourceLocation getBegin() const
Represents a diagnostic in a form that can be retained until its corresponding source manager is dest...
A module loader that doesn't know how to create or load modules.
CXCursorKind
Describes the kind of entity that a cursor refers to.
CXAvailabilityKind
Describes the availability of a particular entity, which indicates whether the use of this entity wil...
std::variant< struct RequiresDecl, struct HeaderDecl, struct UmbrellaDirDecl, struct ModuleDecl, struct ExcludeDecl, struct ExportDecl, struct ExportAsDecl, struct ExternModuleDecl, struct UseDecl, struct LinkDecl, struct ConfigMacrosDecl, struct ConflictDecl > Decl
All declarations that can appear in a module declaration.
The JSON file list parser is used to communicate input to InstallAPI.
SkipFunctionBodiesScope
Enumerates the available scopes for skipping function bodies.
@ Parse
Parse the block; this code is always used.
SimplifiedTypeClass
A simplified classification of types used when determining "similar" types for code completion.
CaptureDiagsKind
Enumerates the available kinds for capturing diagnostics.
@ AllWithoutNonErrorsFromIncludes
TranslationUnitKind
Describes the kind of translation unit being processed.
@ TU_Complete
The translation unit is a complete translation unit.
@ None
The alignment was not explicit in code.
Diagnostic wrappers for TextAPI types for error reporting.
A cached code-completion result, which may be introduced in one of many different contexts.
unsigned Type
The type of a non-macro completion result, stored as a unique integer used by the string map of cache...
CXCursorKind Kind
The libclang cursor kind corresponding to this code-completion result.
CXAvailabilityKind Availability
The availability of this code-completion result.
unsigned Priority
The priority given to this code-completion result.
SimplifiedTypeClass TypeClass
The simplified type class for a non-macro completion result.
uint64_t ShowInContexts
A bitmask that indicates which code-completion contexts should contain this completion result.
CodeCompletionString * Completion
The code-completion string corresponding to this completion result.
DiagnosticsEngine::Level Level
std::vector< std::pair< unsigned, unsigned > > Ranges
std::vector< StandaloneFixIt > FixIts
std::pair< unsigned, unsigned > InsertFromRange
std::pair< unsigned, unsigned > RemoveRange
bool BeforePreviousInsertions