clang-tools 20.0.0git
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
clang::clangd Namespace Reference

FIXME: Skip testing on windows temporarily due to the different escaping code mode. More...

Namespaces

namespace  config
 
namespace  detail
 
namespace  dex
 
namespace  markup
 
namespace  remote
 
namespace  riff
 
namespace  trace
 

Classes

struct  Anchor
 
class  Annotations
 Same as llvm::Annotations, but adjusts functions to LSP-specific types for positions and ranges. More...
 
struct  ApplyWorkspaceEditParams
 
struct  ApplyWorkspaceEditResponse
 
class  ArgStripper
 
struct  ASTAction
 
struct  ASTNode
 Simplified description of a clang AST node. More...
 
struct  ASTParams
 Payload for textDocument/ast request. More...
 
struct  ASTRetentionPolicy
 Configuration of the AST retention policy. More...
 
struct  ASTSignals
 Signals derived from a valid AST of a file. More...
 
class  AsyncTaskRunner
 Runs tasks on separate (detached) threads and wait for all tasks to finish. More...
 
class  BackgroundIndex
 
class  BackgroundIndexRebuilder
 
class  BackgroundIndexRebuilderTest
 
class  BackgroundIndexStorage
 
class  BackgroundIndexTest
 
class  BackgroundQueue
 
struct  CallHierarchyIncomingCall
 Represents an incoming call, e.g. a caller of a method or constructor. More...
 
struct  CallHierarchyIncomingCallsParams
 The parameter of a callHierarchy/incomingCalls request. More...
 
struct  CallHierarchyItem
 Represents programming constructs like functions or constructors in the context of call hierarchy. More...
 
struct  CallHierarchyOutgoingCall
 Represents an outgoing call, e.g. More...
 
struct  CallHierarchyOutgoingCallsParams
 The parameter of a callHierarchy/outgoingCalls request. More...
 
struct  CallHierarchyPrepareParams
 The parameter of a textDocument/prepareCallHierarchy request. More...
 
class  CancelledError
 Conventional error when no result is returned due to cancellation. More...
 
struct  CancelState
 
class  CanonicalIncludes
 Maps a definition location onto an #include file, based on a set of filename rules. More...
 
struct  CapturedASTCtx
 The captured AST context. More...
 
struct  ChangeAnnotation
 
struct  CheapUnresolvedName
 
struct  ClangdCompileCommand
 Clangd extension that's used in the 'compilationDatabaseChanges' in workspace/didChangeConfiguration to record updates to the in-memory compilation database. More...
 
struct  ClangdDiagnosticOptions
 
class  ClangdLSPServer
 This class exposes ClangdServer's capabilities via Language Server Protocol. More...
 
class  ClangdServer
 Manages a collection of source files and derived data (ASTs, indexes), and provides language-aware features such as code completion. More...
 
struct  ClientCapabilities
 
struct  CodeAction
 A code action represents a change that can be performed in code, e.g. More...
 
struct  CodeActionContext
 
struct  CodeActionParams
 
struct  CodeCompleteOptions
 
struct  CodeCompleteResult
 
struct  CodeCompletion
 
struct  CodeDescription
 Structure to capture a description for an error code. More...
 
class  CollectMainFileMacros
 Collects macro references (e.g. More...
 
class  CollectPragmaMarks
 
struct  Command
 
struct  CommandMangler
 
struct  CompletionContext
 
struct  CompletionItem
 
struct  CompletionItemLabelDetails
 Additional details for a completion item label. More...
 
struct  CompletionList
 Represents a collection of completion items to be presented in the editor. More...
 
struct  CompletionParams
 
struct  CompletionPrefix
 
struct  Config
 Settings that express user/project preferences and control clangd behavior. More...
 
struct  ConfigurationSettings
 Clangd extension: parameters configurable at any time, via the workspace/didChangeConfiguration notification. More...
 
struct  ContainedRefsRequest
 
struct  ContainedRefsResult
 
class  Context
 A context is an immutable container for per-request data that must be propagated through layers that don't care about it. More...
 
class  Deadline
 A point in time we can wait for. More...
 
struct  DebouncePolicy
 Clangd may wait after an update to see if another one comes along. More...
 
struct  DecisionForestScores
 Same semantics as CodeComplete::Score. More...
 
class  DeclRelationSet
 
struct  DefinedMacro
 
class  DelegatingCDB
 
struct  Diag
 A top-level diagnostic that may have Notes and Fixes. More...
 
struct  DiagBase
 Contains basic information about a diagnostic. More...
 
struct  Diagnostic
 
struct  DiagnosticRelatedInformation
 Represents a related message and source code location for a diagnostic. More...
 
struct  DidChangeConfigurationParams
 
struct  DidChangeTextDocumentParams
 
struct  DidChangeWatchedFilesParams
 
struct  DidCloseTextDocumentParams
 
struct  DidOpenTextDocumentParams
 
struct  DidSaveTextDocumentParams
 
struct  DirectiveTree
 Describes the structure of a source file, as seen by the preprocessor. More...
 
class  DirectoryBasedGlobalCompilationDatabase
 Gets compile args from tooling::CompilationDatabases built for parent directories. More...
 
class  DirectoryBasedGlobalCompilationDatabaseCacheTest
 
struct  DocumentFormattingParams
 
struct  DocumentHighlight
 A document highlight is a range inside a text document which deserves special attention. More...
 
struct  DocumentLink
 A range in a text document that links to an internal or external resource, like another text document or a web site. More...
 
struct  DocumentLinkParams
 Parameters for the document link request. More...
 
struct  DocumentOnTypeFormattingParams
 
struct  DocumentRangeFormattingParams
 
struct  DocumentSymbol
 Represents programming constructs like variables, classes, interfaces etc. More...
 
struct  DocumentSymbolParams
 
class  DraftStore
 A thread-safe container for files opened in a workspace, addressed by filenames. More...
 
struct  Edit
 A set of edits generated for a single file. More...
 
struct  EligibleRegion
 Represents locations that can accept a definition. More...
 
class  Event
 An Event<T> allows events of type T to be broadcast to listeners. More...
 
struct  ExecuteCommandParams
 
class  FeatureModule
 A FeatureModule contributes a vertical feature to clangd. More...
 
class  FeatureModuleSet
 A FeatureModuleSet is a collection of feature modules installed in clangd. More...
 
class  FileCache
 Base class for threadsafe cache of data read from a file on disk. More...
 
class  FileDistance
 
struct  FileDistanceOptions
 
struct  FileEvent
 
class  FileIndex
 This manages symbols from files and an in-memory index on all symbols. More...
 
struct  FileShardedIndex
 Takes slabs coming from a TU (multiple files) and shards them per declaration location. More...
 
struct  FileStatus
 Clangd extension: indicates the current state of the file in clangd, sent from server via the textDocument/clangd.fileStatus notification. More...
 
class  FileSymbols
 A container of slabs associated with a key. More...
 
struct  Fix
 Represents a single fix-it that editor can apply to fix the error. More...
 
struct  FoldingRange
 Stores information about a region of code that can be folded. More...
 
struct  FoldingRangeParams
 
struct  FuzzyFindRequest
 
class  FuzzyMatcher
 
class  GlobalCompilationDatabase
 Provides compilation arguments used for parsing C and C++ files. More...
 
struct  HeaderFile
 Represents a header file to be #include'd. More...
 
class  HeuristicResolver
 
struct  HighlightingToken
 
struct  Hover
 
struct  HoverInfo
 Contains detailed information about a Symbol. More...
 
class  IgnoreDiagnostics
 
struct  InactiveRegionsParams
 Parameters for the inactive regions (server-side) push notification. More...
 
struct  IncludeCleanerFindings
 
class  IncludeFixer
 Attempts to recover from error diagnostics by suggesting include insertion fixes. More...
 
struct  IncludeGraphNode
 
class  IncludeInserter
 
class  IncludeStructure
 
struct  Inclusion
 
struct  IndexFileIn
 
struct  IndexFileOut
 
struct  InitializationOptions
 Clangd extension: parameters configurable at initialize time. More...
 
struct  InitializeParams
 
struct  InlayHint
 Inlay hint information. More...
 
struct  InlayHintLabelPart
 An inlay hint label part allows for interactive and composite labels of inlay hints. More...
 
struct  InlayHintsParams
 A parameter literal used in inlay hint requests. More...
 
struct  InputsAndAST
 
struct  InputsAndPreamble
 
class  Key
 Values in a Context are indexed by typed keys. More...
 
struct  LoadedShard
 Represents a shard loaded from storage, stores contents in Shard and metadata about the source file that generated this shard. More...
 
struct  LocatedSymbol
 
struct  Location
 
class  Logger
 Interface to allow custom logging in clangd. More...
 
class  LoggingSession
 Only one LoggingSession can be active at a time. More...
 
struct  LookupRequest
 
class  LSPBinder
 LSPBinder collects a table of functions that handle LSP calls. More...
 
class  LSPClient
 
class  LSPError
 
struct  MacroOccurrence
 
struct  MainFileMacros
 
struct  MarkupContent
 
class  MemIndex
 MemIndex is a naive in-memory index suitable for a small set of symbols. More...
 
class  Memoize
 Memoize is a cache to store and reuse computation results based on a key. More...
 
class  MemoryShardStorage
 
struct  MemoryTree
 A tree that can be used to represent memory usage of nested components while preserving the hierarchy. More...
 
class  MergedIndex
 
struct  MissingIncludeDiagInfo
 
class  MockCompilationDatabase
 
class  MockFS
 
class  ModulesBuilder
 This class handles building module files for a given source file. More...
 
struct  NoParams
 
struct  Note
 Represents a note for the diagnostic. More...
 
class  Notification
 A threadsafe flag that is initially clear. More...
 
class  OpaqueType
 A representation of a type that can be computed based on clang AST and compared for equality. More...
 
class  OptionalMatcher
 
class  OverlayCDB
 Wraps another compilation database, and supports overriding the commands using an in-memory mapping. More...
 
struct  ParameterInformation
 A single parameter of a particular signature. More...
 
class  ParsedAST
 Stores and provides access to parsed AST. More...
 
struct  ParseInputs
 Information required to run clang, e.g. to parse AST or do code completion. More...
 
struct  ParseOptions
 
class  ParsingCallbacks
 
struct  PathMapping
 PathMappings are a collection of paired client and server paths. More...
 
class  PeriodicThrottler
 Used to guard an operation that should run at most every N seconds. More...
 
class  PolySubsequenceMatcher
 
struct  Position
 
struct  PragmaMark
 Represents a #pragma mark in the main file. More...
 
struct  PreambleBuildStats
 Timings and statistics from the premble build. More...
 
struct  PreambleData
 The parsed preamble and associated data. More...
 
class  PreambleFileStatusCache
 Records status information for files open()ed or stat()ed during preamble build (except for the main file), so we can avoid stat()s on the underlying FS when reusing the preamble. More...
 
class  PreamblePatch
 Stores information required to parse a TU using a (possibly stale) Baseline preamble. More...
 
class  PreambleThrottler
 PreambleThrottler controls which preambles can build at any given time. More...
 
struct  PrepareRenameResult
 
class  PrerequisiteModules
 Store all the needed module files information to parse a single source file. More...
 
struct  ProgressParams
 
struct  ProjectInfo
 
class  ProjectModules
 An interface to query the modules information in the project. More...
 
struct  PublishDiagnosticsParams
 
struct  Range
 
class  RealThreadsafeFS
 
struct  Ref
 Represents a symbol occurrence in the source file. More...
 
struct  ReferenceContext
 
struct  ReferenceLoc
 Information about a reference written in the source code, independent of the actual AST node that this reference lives in. More...
 
struct  ReferenceLocation
 Extends Locations returned by textDocument/references with extra info. More...
 
struct  ReferenceParams
 
struct  ReferencesResult
 
class  RefSlab
 An efficient structure of storing large set of symbol references in memory. More...
 
struct  RefsRequest
 
struct  Relation
 Represents a relation between two symbols. More...
 
class  RelationSlab
 
struct  RelationsRequest
 
struct  RenameInputs
 
struct  RenameOptions
 
struct  RenameParams
 
struct  RenameResult
 
struct  ResolveTypeHierarchyItemParams
 Parameters for the typeHierarchy/resolve request. More...
 
class  ScanningAllProjectModules
 TODO: The existing ScanningAllProjectModules is not efficient. More...
 
class  ScopeDistance
 Support lookups like FileDistance, but the lookup keys are symbol scopes. More...
 
struct  SelectionRange
 
struct  SelectionRangeParams
 
class  SelectionTree
 
struct  SemanticToken
 Specifies a single semantic token in the document. More...
 
struct  SemanticTokens
 A versioned set of tokens. More...
 
struct  SemanticTokensDeltaParams
 Body of textDocument/semanticTokens/full/delta request. More...
 
struct  SemanticTokensEdit
 Describes a replacement of a contiguous range of semanticTokens. More...
 
struct  SemanticTokensOrDelta
 This models LSP SemanticTokensDelta | SemanticTokens, which is the result of textDocument/semanticTokens/full/delta. More...
 
struct  SemanticTokensParams
 Body of textDocument/semanticTokens/full request. More...
 
class  Semaphore
 Limits the number of threads that can acquire the lock at the same time. More...
 
struct  ShowMessageParams
 The show message notification is sent from a server to a client to ask the client to display a particular message in the user interface. More...
 
struct  SignatureHelp
 Represents the signature of a callable. More...
 
struct  SignatureInformation
 Represents the signature of something callable. More...
 
struct  SignatureQualitySignals
 
struct  SourceParams
 
struct  SpeculativeFuzzyFind
 A speculative and asynchronous fuzzy find index request (based on cached request) that can be sent before parsing sema. More...
 
struct  SpelledWord
 
struct  StdLibLocation
 
class  StdLibSet
 
class  StoreDiags
 StoreDiags collects the diagnostics that can later be reported by clangd. More...
 
class  StreamLogger
 
class  SubsequenceMatcher
 
class  SwapIndex
 
struct  Symbol
 The class presents a C++ symbol, e.g. More...
 
class  SymbolCollector
 Collect declarations (symbols) from an AST. More...
 
struct  SymbolDetails
 Represents information about identifier. More...
 
class  SymbolID
 
struct  SymbolInclude
 A header and directives as stored in a Symbol. More...
 
class  SymbolIndex
 Interface for symbol indexes that can be used for searching or matching symbols among a set of symbols based on names or unique IDs. More...
 
struct  SymbolInformation
 Represents information about programming constructs like variables, classes, interfaces etc. More...
 
struct  SymbolLocation
 
struct  SymbolQualitySignals
 Attributes of a symbol that affect how much we like it. More...
 
struct  SymbolRange
 Represents a symbol range where the symbol can potentially have multiple tokens. More...
 
struct  SymbolRelevanceSignals
 Attributes of a symbol-query pair that affect how much we like it. More...
 
class  SymbolSlab
 An immutable symbol container that stores a set of symbols. More...
 
class  TestScheme
 unittest: is a scheme that refers to files relative to testRoot(). More...
 
struct  TestTU
 
class  TestWorkspace
 
struct  TextDocumentContentChangeEvent
 
struct  TextDocumentEdit
 
struct  TextDocumentIdentifier
 
struct  TextDocumentItem
 
struct  TextDocumentPositionParams
 
struct  TextEdit
 
class  ThreadCrashReporter
 Allows setting per-thread abort/kill signal callbacks, to print additional information about the crash depending on which thread got signalled. More...
 
class  ThreadingTest
 
class  ThreadsafeFS
 Wrapper for vfs::FileSystem for use in multithreaded programs like clangd. More...
 
struct  Token
 A single C++ or preprocessor token. More...
 
class  TokenStream
 A complete sequence of Tokens representing a source file. More...
 
class  TopN
 TopN<T> is a lossy container that preserves only the "best" N elements. More...
 
class  Transport
 
class  TraverseHeadersToo
 
class  TUScheduler
 Handles running tasks for ClangdServer and managing the resources (e.g., preambles and ASTs) for opened files. More...
 
struct  TUStatus
 
class  Tweak
 An interface base for small context-sensitive refactoring actions. More...
 
struct  TweakArgs
 Arguments for the 'applyTweak' command. More...
 
class  TweakTest
 
struct  TypeHierarchyItem
 
struct  TypeHierarchyPrepareParams
 The type hierarchy params is an extension of the TextDocumentPositionsParams with optional properties which can be used to eagerly resolve the item when requesting from the server. More...
 
class  URI
 A URI describes the location of a source file. More...
 
class  URIDistance
 
struct  URIForFile
 
class  URIScheme
 URIScheme is an extension point for teaching clangd to recognize a custom URI scheme. More...
 
struct  VersionedTextDocumentIdentifier
 
class  WithContext
 WithContext replaces Context::current() with a provided scope. More...
 
class  WithContextValue
 WithContextValue extends Context::current() with a single value. More...
 
struct  WorkDoneProgressBegin
 To start progress reporting a $/progress notification with the following payload must be sent. More...
 
struct  WorkDoneProgressCreateParams
 
struct  WorkDoneProgressEnd
 Signals the end of progress reporting. More...
 
struct  WorkDoneProgressReport
 Reporting progress is done using the following payload. More...
 
struct  WorkspaceEdit
 The edit should either provide changes or documentChanges. More...
 
struct  WorkspaceSymbolParams
 The parameters of a Workspace Symbol Request. More...
 

Typedefs

using CharTypeSet = unsigned char
 
using SystemIncludeExtractorFn = llvm::unique_function< void(tooling::CompileCommand &, llvm::StringRef) const >
 Extracts system include search path from drivers matching QueryDriverGlobs and adds them to the compile flags.
 
using IncludeGraph = llvm::StringMap< IncludeGraphNode >
 
using HeaderFilter = llvm::ArrayRef< std::function< bool(llvm::StringRef)> >
 
using SlabTuple = std::tuple< SymbolSlab, RefSlab, RelationSlab >
 
using IndexFactory = std::function< std::unique_ptr< SymbolIndex >(const Config::ExternalIndexSpec &, AsyncTaskRunner *)>
 A functor to create an index for an external index specification.
 
using PathMappings = std::vector< PathMapping >
 
using PreambleParsedCallback = std::function< void(CapturedASTCtx ASTCtx, std::shared_ptr< const include_cleaner::PragmaIncludes >)>
 
using ChangeAnnotationIdentifier = std::string
 
using InitializedParams = NoParams
 
using CompletionItemKindBitset = std::bitset< CompletionItemKindMax+1 >
 
using SymbolKindBitset = std::bitset< SymbolKindMax+1 >
 
typedef llvm::Registry< TweakTweakRegistry
 A handy typedef to save some typing.
 
using FileDigest = std::array< uint8_t, 8 >
 
using FileEdits = llvm::StringMap< Edit >
 A mapping from absolute file path (the one used for accessing the underlying VFS) to edits.
 
using Canceler = std::function< void()>
 A canceller requests cancellation of a task, when called.
 
template<typename T >
using Callback = llvm::unique_function< void(llvm::Expected< T >)>
 A Callback<T> is a void function that accepts Expected<T>.
 
using Path = std::string
 A typedef to represent a file path.
 
using PathRef = llvm::StringRef
 A typedef to represent a ref to file path.
 
using TidyProvider = llvm::unique_function< void(tidy::ClangTidyOptions &, llvm::StringRef) const >
 A factory to modify a tidy::ClangTidyOptions.
 
using TidyProviderRef = llvm::function_ref< void(tidy::ClangTidyOptions &, llvm::StringRef)>
 A factory to modify a tidy::ClangTidyOptions that doesn't hold any state.
 
using Obj = llvm::json::Object
 
typedef llvm::Registry< URISchemeURISchemeRegistry
 By default, a "file" scheme is supported where URI paths are always absolute in the file system.
 
using RecursionProtectionSet = llvm::SmallSet< const CXXRecordDecl *, 4 >
 

Enumerations

enum class  DeclRelation : unsigned { TemplateInstantiation , TemplatePattern , Alias , Underlying }
 
enum  CharType : unsigned char { Empty = 0 , Lower = 1 , Upper = 2 , Punctuation = 3 }
 
enum  CharRole : unsigned char { Unknown = 0 , Tail = 1 , Head = 2 , Separator = 3 }
 
enum class  IndexType { Light , Heavy }
 Select between in-memory index implementations, which have tradeoffs. More...
 
enum class  DuplicateHandling { PickOne , Merge }
 How to handle duplicated symbols across multiple files. More...
 
enum class  IndexContents : uint8_t {
  None = 0 , Symbols = 1 << 1 , References = 1 << 2 , Relations = 1 << 3 ,
  All = Symbols | References | Relations
}
 Describes what data is covered by an index. More...
 
enum class  RefKind : uint8_t {
  Unknown = 0 , Declaration = 1 << 0 , Definition = 1 << 1 , Reference = 1 << 2 ,
  Spelled = 1 << 3 , Call = 1 << 4 , All = Declaration | Definition | Reference | Spelled
}
 Describes the kind of a cross-reference. More...
 
enum class  RelationKind : uint8_t { BaseOf , OverriddenBy }
 
enum class  IndexFileFormat { RIFF , YAML }
 
enum class  SymbolOrigin : uint16_t {
  Unknown = 0 , AST = 1 << 0 , Open = 1 << 1 , Static = 1 << 2 ,
  Merge = 1 << 3 , Identifier = 1 << 4 , Remote = 1 << 5 , Preamble = 1 << 6 ,
  Background = 1 << 8 , StdLib = 1 << 9
}
 
enum class  ErrorCode {
  ParseError = -32700 , InvalidRequest = -32600 , MethodNotFound = -32601 , InvalidParams = -32602 ,
  InternalError = -32603 , ServerNotInitialized = -32002 , UnknownErrorCode = -32001 , RequestCancelled = -32800 ,
  ContentModified = -32801
}
 
enum class  TraceLevel { Off = 0 , Messages = 1 , Verbose = 2 }
 
enum class  TextDocumentSyncKind { None = 0 , Full = 1 , Incremental = 2 }
 Defines how the host (editor) should sync document changes to the language server. More...
 
enum class  CompletionItemKind {
  Missing = 0 , Text = 1 , Method = 2 , Function = 3 ,
  Constructor = 4 , Field = 5 , Variable = 6 , Class = 7 ,
  Interface = 8 , Module = 9 , Property = 10 , Unit = 11 ,
  Value = 12 , Enum = 13 , Keyword = 14 , Snippet = 15 ,
  Color = 16 , File = 17 , Reference = 18 , Folder = 19 ,
  EnumMember = 20 , Constant = 21 , Struct = 22 , Event = 23 ,
  Operator = 24 , TypeParameter = 25
}
 The kind of a completion entry. More...
 
enum class  SymbolKind {
  File = 1 , Module = 2 , Namespace = 3 , Package = 4 ,
  Class = 5 , Method = 6 , Property = 7 , Field = 8 ,
  Constructor = 9 , Enum = 10 , Interface = 11 , Function = 12 ,
  Variable = 13 , Constant = 14 , String = 15 , Number = 16 ,
  Boolean = 17 , Array = 18 , Object = 19 , Key = 20 ,
  Null = 21 , EnumMember = 22 , Struct = 23 , Event = 24 ,
  Operator = 25 , TypeParameter = 26
}
 A symbol kind. More...
 
enum class  OffsetEncoding { UnsupportedEncoding , UTF16 , UTF8 , UTF32 }
 
enum class  MarkupKind { PlainText , Markdown }
 
enum class  MessageType { Error = 1 , Warning = 2 , Info = 3 , Log = 4 }
 
enum class  FileChangeType { Created = 1 , Changed = 2 , Deleted = 3 }
 
enum  DiagnosticTag { Unnecessary = 1 , Deprecated = 2 }
 
enum class  CompletionTriggerKind { Invoked = 1 , TriggerCharacter = 2 , TriggerTriggerForIncompleteCompletions = 3 }
 
enum class  InsertTextFormat { Missing = 0 , PlainText = 1 , Snippet = 2 }
 Defines whether the insert text in a completion item should be interpreted as plain text or a snippet. More...
 
enum class  DocumentHighlightKind { Text = 1 , Read = 2 , Write = 3 }
 
enum class  TypeHierarchyDirection { Children = 0 , Parents = 1 , Both = 2 }
 
enum class  SymbolTag { Deprecated = 1 }
 
enum class  InlayHintKind {
  Type = 1 , Parameter = 2 , Designator = 3 , BlockEnd = 4 ,
  DefaultArgument = 6
}
 Inlay hint kinds. More...
 
enum class  HighlightingKind {
  Variable = 0 , LocalVariable , Parameter , Function ,
  Method , StaticMethod , Field , StaticField ,
  Class , Interface , Enum , EnumConstant ,
  Typedef , Type , Unknown , Namespace ,
  TemplateParameter , Concept , Primitive , Macro ,
  Modifier , Operator , Bracket , Label ,
  InactiveCode , LastKind = InactiveCode
}
 
enum class  HighlightingModifier {
  Declaration , Definition , Deprecated , Deduced ,
  Readonly , Static , Abstract , Virtual ,
  DependentName , DefaultLibrary , UsedAsMutableReference , UsedAsMutablePointer ,
  ConstructorOrDestructor , UserDefined , FunctionScope , ClassScope ,
  FileScope , GlobalScope , LastModifier = GlobalScope
}
 
enum class  LexFlags : uint8_t { StartsPPLine = 1 << 0 , NeedsCleaning = 1 << 1 }
 
enum class  ErrorResultCode : int { NoShutdownRequest = 1 , CantRunAsXPCService = 2 , CheckFailed = 3 }
 
enum  JSONStreamStyle { Standard , Delimited }
 
enum class  WantDiagnostics { Yes , No , Auto }
 Determines whether diagnostics should be generated for a file snapshot. More...
 
enum class  PreambleAction { Queued , Building , Idle }
 

Functions

bool isImplicitTemplateInstantiation (const NamedDecl *D)
 Indicates if D is a template instantiation implicitly generated by the compiler, e.g.
 
bool isExplicitTemplateSpecialization (const NamedDecl *D)
 Indicates if D is an explicit template specialization, e.g.
 
bool isImplementationDetail (const Decl *D)
 Returns true if the declaration is considered implementation detail based on heuristics.
 
SourceLocation nameLocation (const clang::Decl &D, const SourceManager &SM)
 Find the source location of the identifier for D.
 
std::string printQualifiedName (const NamedDecl &ND)
 Returns the qualified name of ND.
 
static bool isAnonymous (const DeclarationName &N)
 
NestedNameSpecifierLoc getQualifierLoc (const NamedDecl &ND)
 Returns a nested name specifier loc of ND if it was present in the source, e.g.
 
std::string printUsingNamespaceName (const ASTContext &Ctx, const UsingDirectiveDecl &D)
 Returns the name of the namespace inside the 'using namespace' directive, as written in the code.
 
std::string printName (const ASTContext &Ctx, const NamedDecl &ND)
 Prints unqualified name of the decl for the purpose of displaying it to the user.
 
std::string printTemplateSpecializationArgs (const NamedDecl &ND)
 Prints template arguments of a decl as written in the source code, including enclosing '<' and '>', e.g for a partial specialization like: template <typename U> struct Foo<int, U> will return '<int, U>'.
 
std::string printNamespaceScope (const DeclContext &DC)
 Returns the first enclosing namespace scope starting from DC.
 
static llvm::StringRef getNameOrErrForObjCInterface (const ObjCInterfaceDecl *ID)
 
std::string printObjCMethod (const ObjCMethodDecl &Method)
 Print the Objective-C method name, including the full container name, e.g.
 
std::string printObjCContainer (const ObjCContainerDecl &C)
 Print the Objective-C container name including categories, e.g. MyClass,.
 
SymbolID getSymbolID (const Decl *D)
 Gets the symbol ID for a declaration. Returned SymbolID might be null.
 
SymbolID getSymbolID (const llvm::StringRef MacroName, const MacroInfo *MI, const SourceManager &SM)
 Gets the symbol ID for a macro.
 
const ObjCImplDecl * getCorrespondingObjCImpl (const ObjCContainerDecl *D)
 Return the corresponding implementation/definition for the given ObjC container if it has one, otherwise, return nullptr.
 
Symbol::IncludeDirective preferredIncludeDirective (llvm::StringRef FileName, const LangOptions &LangOpts, ArrayRef< Inclusion > MainFileIncludes, ArrayRef< const Decl * > TopLevelDecls)
 Infer the include directive to use for the given FileName.
 
std::string printType (const QualType QT, const DeclContext &CurContext, llvm::StringRef Placeholder="")
 Returns a QualType as string.
 
bool hasReservedName (const Decl &)
 Returns true if this is a NamedDecl with a reserved name.
 
bool hasReservedScope (const DeclContext &)
 Returns true if this scope would be written with a reserved name.
 
QualType declaredType (const TypeDecl *D)
 
std::optional< QualType > getDeducedType (ASTContext &, SourceLocation Loc)
 Retrieves the deduced type at a given location (auto, decltype).
 
TemplateTypeParmTypeLoc getContainedAutoParamType (TypeLoc TL)
 
template<typename TemplateDeclTy >
static NamedDecl * getOnlyInstantiationImpl (TemplateDeclTy *TD)
 
NamedDecl * getOnlyInstantiation (NamedDecl *TemplatedDecl)
 
std::vector< const Attr * > getAttributes (const DynTypedNode &)
 Return attributes attached directly to a node.
 
std::string getQualification (ASTContext &Context, const DeclContext *DestContext, SourceLocation InsertionPoint, const NamedDecl *ND)
 Gets the nested name specifier necessary for spelling ND in DestContext, at InsertionPoint.
 
std::string getQualification (ASTContext &Context, const DeclContext *DestContext, const NamedDecl *ND, llvm::ArrayRef< std::string > VisibleNamespaces)
 This function uses the VisibleNamespaces to figure out if a shorter qualification is sufficient for ND, and ignores any using namespace directives.
 
bool hasUnstableLinkage (const Decl *D)
 Whether we must avoid computing linkage for D during code completion.
 
bool isDeeplyNested (const Decl *D, unsigned MaxDepth=10)
 Checks whether D is more than MaxDepth away from translation unit scope.
 
SmallVector< const ParmVarDecl * > resolveForwardingParameters (const FunctionDecl *D, unsigned MaxDepth=10)
 Recursively resolves the parameters of a FunctionDecl that forwards its parameters to another function via variadic template parameters.
 
bool isExpandedFromParameterPack (const ParmVarDecl *D)
 Checks whether D is instantiated from a function parameter pack whose type is a bare type parameter pack (e.g.
 
static std::vector< llvm::StringRef > semanticTokenTypes ()
 
static std::vector< llvm::StringRef > semanticTokenModifiers ()
 
static std::vector< SymbolInformationflattenSymbolHierarchy (llvm::ArrayRef< DocumentSymbol > Symbols, const URIForFile &FileURI)
 The functions constructs a flattened view of the DocumentSymbol hierarchy.
 
static std::optional< Command > asCommand (const CodeAction &Action)
 
static LocationgetToggle (const TextDocumentPositionParams &Point, LocatedSymbol &Sym)
 
llvm::json::Value serializeTHIForExtension (TypeHierarchyItem THI)
 
static void increment (std::string &S)
 
CompletionPrefix guessCompletionPrefix (llvm::StringRef Content, unsigned Offset)
 
CodeCompleteResult codeCompleteComment (PathRef FileName, unsigned Offset, llvm::StringRef Prefix, const PreambleData *Preamble, const ParseInputs &ParseInput)
 
std::optional< unsigned > maybeFunctionArgumentCommentStart (llvm::StringRef Content)
 
CodeCompleteResult codeComplete (PathRef FileName, Position Pos, const PreambleData *Preamble, const ParseInputs &ParseInput, CodeCompleteOptions Opts, SpeculativeFuzzyFind *SpecFuzzyFind=nullptr)
 Gets code completions at a specified Pos in FileName.
 
SignatureHelp signatureHelp (PathRef FileName, Position Pos, const PreambleData &Preamble, const ParseInputs &ParseInput, MarkupKind DocumentationFormat)
 Get signature help at a specified Pos in FileName.
 
bool isIndexedForCodeCompletion (const NamedDecl &ND, ASTContext &ASTCtx)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const CodeCompletion &C)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const CodeCompleteResult &R)
 
bool isIncludeFile (llvm::StringRef Line)
 
bool allowImplicitCompletion (llvm::StringRef Content, unsigned Offset)
 
raw_ostream & operator<< (raw_ostream &, const CodeCompletion &)
 
raw_ostream & operator<< (raw_ostream &, const CodeCompleteResult &)
 
std::string getDocComment (const ASTContext &Ctx, const CodeCompletionResult &Result, bool CommentsFromHeaders)
 Gets a minimally formatted documentation comment of Result, with comment markers stripped.
 
std::string getDeclComment (const ASTContext &Ctx, const NamedDecl &D)
 Similar to getDocComment, but returns the comment for a NamedDecl.
 
void getSignature (const CodeCompletionString &CCS, std::string *Signature, std::string *Snippet, CodeCompletionResult::ResultKind ResultKind, CXCursorKind CursorKind, bool IncludeFunctionArguments=true, std::string *RequiredQualifiers=nullptr)
 Formats the signature for an item, as a display string and snippet.
 
std::string formatDocumentation (const CodeCompletionString &CCS, llvm::StringRef DocComment)
 Assembles formatted documentation for a completion result.
 
std::string getReturnType (const CodeCompletionString &CCS)
 Gets detail to be used as the detail field in an LSP completion item.
 
std::unique_ptr< PPCallbackscollectPragmaMarksCallback (const SourceManager &, std::vector< PragmaMark > &Out)
 Collect all pragma marks from the main file.
 
std::string printArgv (llvm::ArrayRef< llvm::StringRef > Args)
 
std::string printArgv (llvm::ArrayRef< std::string > Args)
 
void allowCrashPragmasForTest ()
 Respect #pragma clang __debug crash etc, which are usually disabled.
 
void disableUnsupportedOptions (CompilerInvocation &CI)
 Clears CI from options that are not supported by clangd, like codegen or plugins.
 
std::unique_ptr< CompilerInvocation > buildCompilerInvocation (const ParseInputs &Inputs, clang::DiagnosticConsumer &D, std::vector< std::string > *CC1Args=nullptr)
 Builds compiler invocation that could be used to build AST or preamble.
 
std::unique_ptr< CompilerInstance > prepareCompilerInstance (std::unique_ptr< clang::CompilerInvocation > CI, const PrecompiledPreamble *Preamble, std::unique_ptr< llvm::MemoryBuffer > Buffer, llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS, DiagnosticConsumer &DiagsClient)
 
std::unique_ptr< CompilerInstance > prepareCompilerInstance (std::unique_ptr< clang::CompilerInvocation >, const PrecompiledPreamble *, std::unique_ptr< llvm::MemoryBuffer > MainFile, IntrusiveRefCntPtr< llvm::vfs::FileSystem >, DiagnosticConsumer &)
 Creates a compiler instance, configured so that:
 
DecisionForestScores evaluateDecisionForest (const SymbolQualitySignals &Quality, const SymbolRelevanceSignals &Relevance, float Base)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const DiagBase &D)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Fix &F)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Diag &D)
 
Diag toDiag (const llvm::SMDiagnostic &D, Diag::DiagSource Source)
 
void toLSPDiags (const Diag &D, const URIForFile &File, const ClangdDiagnosticOptions &Opts, llvm::function_ref< void(clangd::Diagnostic, llvm::ArrayRef< Fix >)> OutFn)
 Conversion to LSP diagnostics.
 
int getSeverity (DiagnosticsEngine::Level L)
 Convert from clang diagnostic level to LSP severity.
 
static void writeCodeToFixMessage (llvm::raw_ostream &OS, llvm::StringRef Code)
 Sanitizes a piece for presenting it in a synthesized fix message.
 
static void fillNonLocationData (DiagnosticsEngine::Level DiagLevel, const clang::Diagnostic &Info, clangd::DiagBase &D)
 Fills D with all information, except the location-related bits.
 
bool isBuiltinDiagnosticSuppressed (unsigned ID, const llvm::StringSet<> &Suppressed, const LangOptions &)
 Determine whether a (non-clang-tidy) diagnostic is suppressed by config.
 
llvm::StringRef normalizeSuppressedCode (llvm::StringRef)
 Take a user-specified diagnostic code, and convert it to a normalized form stored in the config and consumed by isBuiltinDiagnosticsSuppressed.
 
std::optional< std::string > getDiagnosticDocURI (Diag::DiagSource, unsigned ID, llvm::StringRef Name)
 Returns a URI providing more information about a particular diagnostic.
 
static void increment (std::string &S)
 
static void updateVersion (DraftStore::Draft &D, llvm::StringRef SpecifiedVersion)
 
ASTNode dumpAST (const DynTypedNode &N, const syntax::TokenBuffer &Tokens, const ASTContext &Ctx)
 
std::string versionString ()
 
std::string platformString ()
 
std::string featureString ()
 
static llvm::SmallString< 128 > canonicalize (llvm::StringRef Path)
 
static std::pair< std::string, int > scopeToPath (llvm::StringRef Scope)
 
static FileDistance createScopeFileDistance (llvm::ArrayRef< std::string > QueryScopes)
 
llvm::Expected< LocationindexToLSPLocation (const SymbolLocation &Loc, llvm::StringRef TUPath)
 Helper function for deriving an LSP Location from an index SymbolLocation.
 
llvm::Expected< LocationsymbolToLocation (const Symbol &Sym, llvm::StringRef TUPath)
 Helper function for deriving an LSP Location for a Symbol.
 
llvm::Expected< std::vector< SymbolInformation > > getWorkspaceSymbols (llvm::StringRef Query, int Limit, const SymbolIndex *const Index, llvm::StringRef HintPath)
 Searches for the symbols matching Query.
 
llvm::Expected< std::vector< DocumentSymbol > > getDocumentSymbols (ParsedAST &AST)
 Retrieves the symbols contained in the "main file" section of an AST in the same order that they appear.
 
llvm::SmallVector< std::pair< const NamedDecl *, DeclRelationSet >, 1 > allTargetDecls (const DynTypedNode &, const HeuristicResolver *)
 Similar to targetDecl(), however instead of applying a filter, all possible decls are returned along with their DeclRelationSets.
 
llvm::SmallVector< const NamedDecl *, 1 > targetDecl (const DynTypedNode &, DeclRelationSet Mask, const HeuristicResolver *Resolver)
 targetDecl() finds the declaration referred to by an AST node.
 
llvm::SmallVector< const NamedDecl *, 1 > explicitReferenceTargets (DynTypedNode N, DeclRelationSet Mask, const HeuristicResolver *Resolver)
 Find declarations explicitly referenced in the source code defined by N.
 
void findExplicitReferences (const Stmt *S, llvm::function_ref< void(ReferenceLoc)> Out, const HeuristicResolver *Resolver)
 Recursively traverse S and report all references explicitly written in the code.
 
void findExplicitReferences (const Decl *D, llvm::function_ref< void(ReferenceLoc)> Out, const HeuristicResolver *Resolver)
 
void findExplicitReferences (const ASTContext &AST, llvm::function_ref< void(ReferenceLoc)> Out, const HeuristicResolver *Resolver)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, DeclRelation R)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, DeclRelationSet RS)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, ReferenceLoc R)
 
DeclRelationSet operator| (DeclRelation L, DeclRelation R)
 
DeclRelationSet operator& (DeclRelation L, DeclRelation R)
 
DeclRelationSet operator~ (DeclRelation R)
 
std::vector< tooling::Replacement > formatIncremental (llvm::StringRef Code, unsigned Cursor, llvm::StringRef InsertedText, format::FormatStyle Style)
 Applies limited formatting around new InsertedText.
 
unsigned transformCursorPosition (unsigned Offset, const std::vector< tooling::Replacement > &Replacements)
 Determine the new cursor position after applying Replacements.
 
Path removeDots (PathRef File)
 Returns a version of File that doesn't contain dots and dot dots.
 
static char lower (char C)
 
static bool isAwful (int S)
 
template<typename T >
static T packedLookup (const uint8_t *Data, int I)
 
CharTypeSet calculateRoles (llvm::StringRef Text, llvm::MutableArrayRef< CharRole > Roles)
 
static std::unique_ptr< tooling::CompilationDatabase > parseJSON (PathRef Path, llvm::StringRef Data, std::string &Error)
 
static std::unique_ptr< tooling::CompilationDatabase > parseFixed (PathRef Path, llvm::StringRef Data, std::string &Error)
 
SystemIncludeExtractorFn getSystemIncludeExtractor (llvm::ArrayRef< std::string > QueryDriverGlobs)
 
bool isLiteralInclude (llvm::StringRef Include)
 Returns true if Include is literal include like "path" or <path>.
 
llvm::Expected< HeaderFiletoHeaderFile (llvm::StringRef Header, llvm::StringRef HintPath)
 Creates a HeaderFile from Header which can be either a URI or a literal include.
 
llvm::SmallVector< SymbolInclude, 1 > getRankedIncludes (const Symbol &Sym)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Inclusion &Inc)
 
bool operator== (const Inclusion &LHS, const Inclusion &RHS)
 
IncludeGraphNode::SourceFlag operator| (IncludeGraphNode::SourceFlag A, IncludeGraphNode::SourceFlag B)
 
bool operator& (IncludeGraphNode::SourceFlag A, IncludeGraphNode::SourceFlag B)
 
IncludeGraphNode::SourceFlagoperator|= (IncludeGraphNode::SourceFlag &A, IncludeGraphNode::SourceFlag B)
 
std::optional< PathgetCorrespondingHeaderOrSource (PathRef OriginalFile, llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > VFS)
 Given a header file, returns the best matching source file, and vice visa.
 
std::optional< PathgetCorrespondingHeaderOrSource (PathRef OriginalFile, ParsedAST &AST, const SymbolIndex *Index)
 Given a header file, returns the best matching source file, and vice visa.
 
std::vector< const Decl * > getIndexableLocalDecls (ParsedAST &AST)
 Returns all indexable decls that are present in the main file of the AST.
 
std::optional< HoverInfogetHover (ParsedAST &AST, Position Pos, const format::FormatStyle &Style, const SymbolIndex *Index)
 Get the hover information when hovering at Pos.
 
static std::string formatSize (uint64_t SizeInBits)
 
static std::string formatOffset (uint64_t OffsetInBits)
 
std::optional< llvm::StringRef > getBacktickQuoteRange (llvm::StringRef Line, unsigned Offset)
 
void parseDocumentationLine (llvm::StringRef Line, markup::Paragraph &Out)
 
void parseDocumentation (llvm::StringRef Input, markup::Document &Output)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const HoverInfo::PrintedType &T)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const HoverInfo::Param &P)
 
bool operator== (const HoverInfo::PrintedType &LHS, const HoverInfo::PrintedType &RHS)
 
bool operator== (const HoverInfo::PassType &LHS, const HoverInfo::PassType &RHS)
 
bool operator== (const HoverInfo::Param &LHS, const HoverInfo::Param &RHS)
 
std::vector< include_cleaner::SymbolReference > collectMacroReferences (ParsedAST &AST)
 
include_cleaner::Includes convertIncludes (const ParsedAST &)
 Converts the clangd include representation to include-cleaner include representation.
 
IncludeCleanerFindings computeIncludeCleanerFindings (ParsedAST &AST, bool AnalyzeAngledIncludes)
 
bool isPreferredProvider (const Inclusion &, const include_cleaner::Includes &, llvm::ArrayRef< include_cleaner::Header > Providers)
 Whether this #include is considered to provide a particular symbol.
 
std::vector< DiagissueIncludeCleanerDiagnostics (ParsedAST &AST, llvm::StringRef Code, const IncludeCleanerFindings &Findings, const ThreadsafeFS &TFS, HeaderFilter IgnoreHeaders)
 
std::optional< std::string > qualifiedByUnresolved (const SourceManager &SM, SourceLocation Loc, const LangOptions &LangOpts)
 
std::optional< std::string > getSpelledSpecifier (const CXXScopeSpec &SS, const SourceManager &SM)
 
std::optional< CheapUnresolvedNameextractUnresolvedNameCheaply (const SourceManager &SM, const DeclarationNameInfo &Unresolved, CXXScopeSpec *SS, const LangOptions &LangOpts, bool UnresolvedIsSpecifier)
 
std::vector< std::string > collectAccessibleScopes (Sema &Sem, const DeclarationNameInfo &Typo, Scope *S, Sema::LookupNameKind LookupKind)
 Returns all namespace scopes that the unqualified lookup would visit.
 
static llvm::StringRef filenameWithoutExtension (llvm::StringRef Path)
 
std::vector< LoadedShardloadIndexShards (llvm::ArrayRef< Path > MainFiles, BackgroundIndexStorage::Factory &IndexStorageFactory, const GlobalCompilationDatabase &CDB)
 Loads all shards for the TU MainFile from Storage.
 
SlabTuple indexMainDecls (ParsedAST &AST)
 Retrieves symbols and refs of local top level decls in AST (i.e.
 
SlabTuple indexHeaderSymbols (llvm::StringRef Version, ASTContext &AST, Preprocessor &PP, const include_cleaner::PragmaIncludes &PI)
 Index declarations from AST and macros from PP that are declared in included headers.
 
bool fromJSON (const llvm::json::Value &Parameters, FuzzyFindRequest &Request, llvm::json::Path P)
 
llvm::json::Value toJSON (const FuzzyFindRequest &Request)
 
constexpr IndexContents operator& (IndexContents L, IndexContents R)
 
constexpr IndexContents operator| (IndexContents L, IndexContents R)
 
std::unique_ptr< FrontendAction > createStaticIndexingAction (SymbolCollector::Options Opts, std::function< void(SymbolSlab)> SymbolsCallback, std::function< void(RefSlab)> RefsCallback, std::function< void(RelationSlab)> RelationsCallback, std::function< void(IncludeGraph)> IncludeGraphCallback)
 
static bool prefer (const SymbolLocation &L, const SymbolLocation &R)
 
Symbol mergeSymbol (const Symbol &L, const Symbol &R)
 
std::unique_ptr< SymbolIndexcreateProjectAwareIndex (IndexFactory, bool Sync)
 Returns an index that answers queries using external indices.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, RefKind K)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Ref &R)
 
RefKind operator| (RefKind L, RefKind R)
 
RefKindoperator|= (RefKind &L, RefKind R)
 
RefKind operator& (RefKind A, RefKind B)
 
bool operator< (const Ref &L, const Ref &R)
 
bool operator== (const Ref &L, const Ref &R)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const RelationKind R)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Relation &R)
 
void writeYAML (const IndexFileOut &, llvm::raw_ostream &)
 
llvm::Expected< IndexFileInreadYAML (llvm::StringRef, SymbolOrigin Origin)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const IndexFileOut &O)
 
llvm::Expected< IndexFileInreadIndexFile (llvm::StringRef Data, SymbolOrigin Origin)
 
std::unique_ptr< SymbolIndexloadIndex (llvm::StringRef SymbolFilename, SymbolOrigin Origin, bool UseDex, bool SupportContainedRefs)
 
std::string toYAML (const Symbol &)
 
std::string toYAML (const std::pair< SymbolID, ArrayRef< Ref > > &)
 
std::string toYAML (const Relation &)
 
std::string toYAML (const Ref &)
 
llvm::StringRef getStdlibUmbrellaHeader (const LangOptions &LO)
 
SymbolSlab indexStandardLibrary (llvm::StringRef HeaderSources, std::unique_ptr< CompilerInvocation > CI, const StdLibLocation &Loc, const ThreadsafeFS &TFS)
 
SymbolSlab indexStandardLibrary (std::unique_ptr< CompilerInvocation > Invocation, const StdLibLocation &Loc, const ThreadsafeFS &TFS)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, Symbol::SymbolFlag F)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Symbol &S)
 
float quality (const Symbol &S)
 Computes query-independent quality score for a Symbol.
 
static void own (Symbol &S, llvm::UniqueStringSaver &Strings)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SymbolSlab &Slab)
 
 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ()
 
Symbol::SymbolFlag operator| (Symbol::SymbolFlag A, Symbol::SymbolFlag B)
 
Symbol::SymbolFlagoperator|= (Symbol::SymbolFlag &A, Symbol::SymbolFlag B)
 
template<typename Callback >
void visitStrings (Symbol &S, const Callback &CB)
 Invokes Callback with each StringRef& contained in the Symbol.
 
llvm::StringRef getStdHeader (const Symbol *S, const LangOptions &LangOpts)
 
static bool refIsCall (index::SymbolKind Kind)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SymbolID &ID)
 
llvm::hash_code hash_value (const SymbolID &ID)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SymbolLocation &L)
 
bool operator== (const SymbolLocation::Position &L, const SymbolLocation::Position &R)
 
bool operator< (const SymbolLocation::Position &L, const SymbolLocation::Position &R)
 
bool operator== (const SymbolLocation &L, const SymbolLocation &R)
 
bool operator< (const SymbolLocation &L, const SymbolLocation &R)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, SymbolOrigin O)
 
SymbolOrigin operator| (SymbolOrigin A, SymbolOrigin B)
 
SymbolOriginoperator|= (SymbolOrigin &A, SymbolOrigin B)
 
SymbolOrigin operator& (SymbolOrigin A, SymbolOrigin B)
 
std::string toYAML (const std::pair< SymbolID, llvm::ArrayRef< Ref > > &Data)
 
std::vector< InlayHintinlayHints (ParsedAST &AST, std::optional< Range > RestrictRange)
 Compute and return inlay hints for a file.
 
std::unique_ptr< TransportnewJSONTransport (std::FILE *In, llvm::raw_ostream &Out, llvm::raw_ostream *InMirror, bool Pretty, JSONStreamStyle Style)
 
std::optional< std::string > doPathMapping (llvm::StringRef S, PathMapping::Direction Dir, const PathMappings &Mappings)
 Returns a modified S with the first matching path in Mappings substituted, if applicable.
 
void applyPathMappings (llvm::json::Value &Params, PathMapping::Direction Dir, const PathMappings &Mappings)
 Applies the Mappings to all the file:// URIs in Params.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const PathMapping &M)
 
llvm::Expected< PathMappingsparsePathMappings (llvm::StringRef RawPathMappings)
 Parse the command line RawPathMappings (e.g.
 
std::unique_ptr< TransportcreatePathMappingTransport (std::unique_ptr< Transport > Transp, PathMappings Mappings)
 Creates a wrapping transport over Transp that applies the Mappings to all inbound and outbound LSP messages.
 
std::shared_ptr< const PreambleDatabuildPreamble (PathRef FileName, CompilerInvocation CI, const ParseInputs &Inputs, bool StoreInMemory, PreambleParsedCallback PreambleCallback, PreambleBuildStats *Stats=nullptr)
 Build a preamble for the new inputs unless an old one can be reused.
 
bool isPreambleCompatible (const PreambleData &Preamble, const ParseInputs &Inputs, PathRef FileName, const CompilerInvocation &CI)
 Returns true if Preamble is reusable for Inputs.
 
void escapeBackslashAndQuotes (llvm::StringRef Text, llvm::raw_ostream &OS)
 
static std::vector< DiagpatchDiags (llvm::ArrayRef< Diag > BaselineDiags, const ScannedPreamble &BaselineScan, const ScannedPreamble &ModifiedScan)
 
static std::string getPatchName (llvm::StringRef FileName)
 
bool fromJSON (const llvm::json::Value &E, URIForFile &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const URIForFile &U)
 Serialize/deserialize URIForFile to/from a string URI.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const URIForFile &U)
 
llvm::json::Value toJSON (const TextDocumentIdentifier &R)
 
bool fromJSON (const llvm::json::Value &Params, TextDocumentIdentifier &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const VersionedTextDocumentIdentifier &R)
 
bool fromJSON (const llvm::json::Value &Params, VersionedTextDocumentIdentifier &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, Position &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const Position &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Position &P)
 
bool fromJSON (const llvm::json::Value &Params, Range &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const Range &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Range &R)
 
llvm::json::Value toJSON (const Location &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Location &L)
 
llvm::json::Value toJSON (const ReferenceLocation &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const ReferenceLocation &L)
 
bool fromJSON (const llvm::json::Value &Params, TextDocumentItem &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, TextEdit &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const TextEdit &P)
 
bool fromJSON (const llvm::json::Value &Params, ChangeAnnotation &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const ChangeAnnotation &CA)
 
bool fromJSON (const llvm::json::Value &Params, TextDocumentEdit &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const TextDocumentEdit &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const TextEdit &TE)
 
bool fromJSON (const llvm::json::Value &E, TraceLevel &Out, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &E, SymbolKind &Out, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &E, SymbolKindBitset &Out, llvm::json::Path P)
 
SymbolKind adjustKindToCapability (SymbolKind Kind, SymbolKindBitset &SupportedSymbolKinds)
 
SymbolKind indexSymbolKindToSymbolKind (index::SymbolKind Kind)
 
bool fromJSON (const llvm::json::Value &Params, ClientCapabilities &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, InitializeParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const WorkDoneProgressCreateParams &P)
 
llvm::json::Value toJSON (const WorkDoneProgressBegin &P)
 
llvm::json::Value toJSON (const WorkDoneProgressReport &P)
 
llvm::json::Value toJSON (const WorkDoneProgressEnd &P)
 
llvm::json::Value toJSON (const MessageType &R)
 
llvm::json::Value toJSON (const ShowMessageParams &R)
 
bool fromJSON (const llvm::json::Value &Params, DidOpenTextDocumentParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DidCloseTextDocumentParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DidSaveTextDocumentParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DidChangeTextDocumentParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &E, FileChangeType &Out, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, FileEvent &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DidChangeWatchedFilesParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, TextDocumentContentChangeEvent &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DocumentRangeFormattingParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DocumentOnTypeFormattingParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DocumentFormattingParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, DocumentSymbolParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const DiagnosticRelatedInformation &DRI)
 
llvm::json::Value toJSON (DiagnosticTag Tag)
 
llvm::json::Value toJSON (const CodeDescription &D)
 
llvm::json::Value toJSON (const Diagnostic &D)
 
bool fromJSON (const llvm::json::Value &Params, Diagnostic &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const PublishDiagnosticsParams &PDP)
 
bool fromJSON (const llvm::json::Value &Params, CodeActionContext &R, llvm::json::Path P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Diagnostic &D)
 
bool fromJSON (const llvm::json::Value &Params, CodeActionParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, WorkspaceEdit &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ExecuteCommandParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const SymbolInformation &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const SymbolInformation &SI)
 
bool operator== (const SymbolDetails &LHS, const SymbolDetails &RHS)
 
llvm::json::Value toJSON (const SymbolDetails &P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const SymbolDetails &S)
 
bool fromJSON (const llvm::json::Value &Params, WorkspaceSymbolParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const Command &C)
 
llvm::json::Value toJSON (const CodeAction &CA)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const DocumentSymbol &S)
 
llvm::json::Value toJSON (const DocumentSymbol &S)
 
llvm::json::Value toJSON (const WorkspaceEdit &WE)
 
bool fromJSON (const llvm::json::Value &Params, TweakArgs &A, llvm::json::Path P)
 
llvm::json::Value toJSON (const TweakArgs &A)
 
llvm::json::Value toJSON (const ApplyWorkspaceEditParams &Params)
 
bool fromJSON (const llvm::json::Value &Response, ApplyWorkspaceEditResponse &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, TextDocumentPositionParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, CompletionContext &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, CompletionParams &R, llvm::json::Path P)
 
static llvm::StringRef toTextKind (MarkupKind Kind)
 
bool fromJSON (const llvm::json::Value &V, MarkupKind &K, llvm::json::Path P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, MarkupKind K)
 
llvm::json::Value toJSON (const MarkupContent &MC)
 
llvm::json::Value toJSON (const Hover &H)
 
bool fromJSON (const llvm::json::Value &E, CompletionItemKind &Out, llvm::json::Path P)
 
CompletionItemKind adjustKindToCapability (CompletionItemKind Kind, CompletionItemKindBitset &SupportedCompletionItemKinds)
 
bool fromJSON (const llvm::json::Value &E, CompletionItemKindBitset &Out, llvm::json::Path P)
 
llvm::json::Value toJSON (const CompletionItemLabelDetails &CD)
 
void removeCompletionLabelDetails (CompletionItem &)
 Remove the labelDetails field (for clients that don't support it).
 
llvm::json::Value toJSON (const CompletionItem &CI)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const CompletionItem &I)
 
bool operator< (const CompletionItem &L, const CompletionItem &R)
 
llvm::json::Value toJSON (const CompletionList &L)
 
llvm::json::Value toJSON (const ParameterInformation &PI)
 
llvm::json::Value toJSON (const SignatureInformation &SI)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const SignatureInformation &I)
 
llvm::json::Value toJSON (const SignatureHelp &SH)
 
bool fromJSON (const llvm::json::Value &Params, RenameParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const RenameParams &R)
 
llvm::json::Value toJSON (const PrepareRenameResult &PRR)
 
llvm::json::Value toJSON (const DocumentHighlight &DH)
 
llvm::json::Value toJSON (const FileStatus &FStatus)
 
static llvm::json::Value encodeTokens (llvm::ArrayRef< SemanticToken > Toks)
 
bool operator== (const SemanticToken &L, const SemanticToken &R)
 
llvm::json::Value toJSON (const SemanticTokens &Tokens)
 
llvm::json::Value toJSON (const SemanticTokensEdit &Edit)
 
llvm::json::Value toJSON (const SemanticTokensOrDelta &TE)
 
bool fromJSON (const llvm::json::Value &Params, SemanticTokensParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, SemanticTokensDeltaParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const InactiveRegionsParams &InactiveRegions)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const DocumentHighlight &V)
 
bool fromJSON (const llvm::json::Value &Params, DidChangeConfigurationParams &CCP, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ClangdCompileCommand &CDbUpdate, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ConfigurationSettings &S, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, InitializationOptions &Opts, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &E, TypeHierarchyDirection &Out, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, TypeHierarchyPrepareParams &R, llvm::json::Path P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &O, const TypeHierarchyItem &I)
 
llvm::json::Value toJSON (const TypeHierarchyItem::ResolveParams &RP)
 
bool fromJSON (const llvm::json::Value &Params, TypeHierarchyItem::ResolveParams &RP, llvm::json::Path P)
 
llvm::json::Value toJSON (const TypeHierarchyItem &I)
 
bool fromJSON (const llvm::json::Value &Params, TypeHierarchyItem &I, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ResolveTypeHierarchyItemParams &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ReferenceContext &R, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, ReferenceParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (SymbolTag Tag)
 
llvm::json::Value toJSON (const CallHierarchyItem &I)
 
bool fromJSON (const llvm::json::Value &Params, CallHierarchyItem &I, llvm::json::Path P)
 
bool fromJSON (const llvm::json::Value &Params, CallHierarchyIncomingCallsParams &C, llvm::json::Path P)
 
llvm::json::Value toJSON (const CallHierarchyIncomingCall &C)
 
bool fromJSON (const llvm::json::Value &Params, CallHierarchyOutgoingCallsParams &C, llvm::json::Path P)
 
llvm::json::Value toJSON (const CallHierarchyOutgoingCall &C)
 
bool fromJSON (const llvm::json::Value &Params, InlayHintsParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const InlayHintKind &Kind)
 
llvm::json::Value toJSON (const InlayHint &H)
 
bool operator== (const InlayHint &A, const InlayHint &B)
 
bool operator< (const InlayHint &A, const InlayHint &B)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, InlayHintKind Kind)
 
llvm::json::Value toJSON (const InlayHintLabelPart &L)
 
bool operator== (const InlayHintLabelPart &LHS, const InlayHintLabelPart &RHS)
 
bool operator< (const InlayHintLabelPart &LHS, const InlayHintLabelPart &RHS)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const InlayHintLabelPart &L)
 
static const char * toString (OffsetEncoding OE)
 
llvm::json::Value toJSON (const OffsetEncoding &OE)
 
bool fromJSON (const llvm::json::Value &V, OffsetEncoding &OE, llvm::json::Path P)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, OffsetEncoding Enc)
 
bool fromJSON (const llvm::json::Value &Params, SelectionRangeParams &S, llvm::json::Path P)
 
llvm::json::Value toJSON (const SelectionRange &Out)
 
bool fromJSON (const llvm::json::Value &Params, DocumentLinkParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const DocumentLink &DocumentLink)
 
bool fromJSON (const llvm::json::Value &Params, FoldingRangeParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const FoldingRange &Range)
 
llvm::json::Value toJSON (const MemoryTree &MT)
 Keys starting with an underscore(_) represent leaves, e.g.
 
bool fromJSON (const llvm::json::Value &Params, ASTParams &R, llvm::json::Path P)
 
llvm::json::Value toJSON (const ASTNode &N)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const ASTNode &Root)
 
bool fromJSON (const llvm::json::Value &E, SymbolID &S, llvm::json::Path P)
 
llvm::json::Value toJSON (const SymbolID &S)
 
bool operator== (const TextEdit &L, const TextEdit &R)
 
llvm::json::Value toJSON (const NoParams &)
 
bool fromJSON (const llvm::json::Value &, NoParams &, llvm::json::Path)
 
template<typename T >
llvm::json::Value toJSON (const ProgressParams< T > &P)
 
bool fromJSON (const TypeHierarchyItem::ResolveParams &)
 
static bool hasDeclInMainFile (const Decl &D)
 
static bool hasUsingDeclInMainFile (const CodeCompletionResult &R)
 
static SymbolQualitySignals::SymbolCategory categorize (const NamedDecl &ND)
 
static SymbolQualitySignals::SymbolCategory categorize (const CodeCompletionResult &R)
 
static SymbolQualitySignals::SymbolCategory categorize (const index::SymbolInfo &D)
 
static bool isInstanceMember (const NamedDecl *ND)
 
static bool isInstanceMember (const index::SymbolInfo &D)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SymbolQualitySignals &S)
 
static SymbolRelevanceSignals::AccessibleScope computeScope (const NamedDecl *D)
 
static float fileProximityScore (unsigned FileDistance)
 
static float scopeProximityScore (unsigned ScopeDistance)
 
static std::optional< llvm::StringRef > wordMatching (llvm::StringRef Name, const llvm::StringSet<> *ContextWords)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SymbolRelevanceSignals &S)
 
float evaluateSymbolAndRelevance (float SymbolQuality, float SymbolRelevance)
 Combine symbol quality and relevance into a single score.
 
static uint32_t encodeFloat (float F)
 
std::string sortText (float Score, llvm::StringRef Tiebreak="")
 Returns a string that sorts in the same order as (-Score, Tiebreak), for LSP.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const SignatureQualitySignals &S)
 
SourceLocation insertionPoint (const DeclContext &DC, llvm::ArrayRef< Anchor > Anchors)
 
llvm::Expected< tooling::Replacement > insertDecl (llvm::StringRef Code, const DeclContext &DC, llvm::ArrayRef< Anchor > Anchors)
 
SourceLocation insertionPoint (const CXXRecordDecl &InClass, std::vector< Anchor > Anchors, AccessSpecifier Protection)
 
llvm::Expected< tooling::Replacement > insertDecl (llvm::StringRef Code, const CXXRecordDecl &InClass, std::vector< Anchor > Anchors, AccessSpecifier Protection)
 
bool operator== (const SymbolRange &LHS, const SymbolRange &RHS)
 
bool operator!= (const SymbolRange &LHS, const SymbolRange &RHS)
 
bool operator< (const SymbolRange &LHS, const SymbolRange &RHS)
 
llvm::Expected< RenameResultrename (const RenameInputs &RInputs)
 Renames all occurrences of the symbol.
 
llvm::Expected< EditbuildRenameEdit (llvm::StringRef AbsFilePath, llvm::StringRef InitialCode, std::vector< SymbolRange > Occurrences, llvm::ArrayRef< llvm::StringRef > NewNames)
 Generates rename edits that replaces all given occurrences with the NewName.
 
std::optional< std::vector< SymbolRange > > adjustRenameRanges (llvm::StringRef DraftCode, llvm::StringRef Identifier, std::vector< Range > Indexed, const LangOptions &LangOpts, std::optional< Selector > Selector)
 Adjusts indexed occurrences to match the current state of the file.
 
std::optional< std::vector< SymbolRange > > getMappedRanges (ArrayRef< Range > Indexed, ArrayRef< SymbolRange > Lexed)
 Calculates the lexed occurrences that the given indexed occurrences map to.
 
size_t renameRangeAdjustmentCost (ArrayRef< Range > Indexed, ArrayRef< SymbolRange > Lexed, ArrayRef< size_t > MappedIndex)
 Evaluates how good the mapped result is.
 
std::vector< std::unique_ptr< Tweak > > prepareTweaks (const Tweak::Selection &S, llvm::function_ref< bool(const Tweak &)> Filter, const FeatureModuleSet *Modules)
 Calls prepare() on all tweaks that satisfy the filter, returning those that can run on the selection.
 
llvm::Expected< std::unique_ptr< Tweak > > prepareTweak (StringRef ID, const Tweak::Selection &S, const FeatureModuleSet *Modules)
 
std::unique_ptr< ProjectModulesscanningProjectModules (std::shared_ptr< const clang::tooling::CompilationDatabase > CDB, const ThreadsafeFS &TFS)
 Providing modules information for the project by scanning every file.
 
llvm::SmallString< 256 > abbreviatedString (DynTypedNode N, const PrintingPolicy &PP)
 
static llvm::SmallVector< std::pair< unsigned, unsigned >, 2 > pointBounds (unsigned Offset, const syntax::TokenBuffer &Tokens)
 
std::vector< HighlightingTokengetSemanticHighlightings (ParsedAST &AST, bool IncludeInactiveRegionTokens)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, HighlightingKind K)
 
std::optional< HighlightingKindhighlightingKindFromString (llvm::StringRef Name)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, HighlightingModifier K)
 
std::optional< HighlightingModifierhighlightingModifierFromString (llvm::StringRef Name)
 
bool operator== (const HighlightingToken &L, const HighlightingToken &R)
 
bool operator< (const HighlightingToken &L, const HighlightingToken &R)
 
std::vector< SemanticTokentoSemanticTokens (llvm::ArrayRef< HighlightingToken > Tokens, llvm::StringRef Code)
 
llvm::StringRef toSemanticTokenType (HighlightingKind Kind)
 
llvm::StringRef toSemanticTokenModifier (HighlightingModifier Modifier)
 
std::vector< SemanticTokensEditdiffTokens (llvm::ArrayRef< SemanticToken > Old, llvm::ArrayRef< SemanticToken > New)
 
std::vector< RangegetInactiveRegions (ParsedAST &AST)
 
llvm::Expected< SelectionRangegetSemanticRanges (ParsedAST &AST, Position Pos)
 Returns the list of all interesting ranges around the Position Pos.
 
llvm::Expected< std::vector< FoldingRange > > getFoldingRanges (ParsedAST &AST)
 Returns a list of ranges whose contents might be collapsible in an editor.
 
llvm::Expected< std::vector< FoldingRange > > getFoldingRanges (const std::string &Code, bool LineFoldingOnly)
 Returns a list of ranges whose contents might be collapsible in an editor.
 
template<typename Callback >
static bool iterateCodepoints (llvm::StringRef U8, const Callback &CB)
 
static size_t measureUnits (llvm::StringRef U8, int Units, OffsetEncoding Enc, bool &Valid)
 
static OffsetEncoding lspEncoding ()
 
size_t lspLength (llvm::StringRef Code)
 
llvm::Expected< size_t > positionToOffset (llvm::StringRef Code, Position P, bool AllowColumnsBeyondLineLength=true)
 Turn a [line, column] pair into an offset in Code.
 
Position offsetToPosition (llvm::StringRef Code, size_t Offset)
 Turn an offset in Code into a [line, column] pair.
 
Position sourceLocToPosition (const SourceManager &SM, SourceLocation Loc)
 Turn a SourceLocation into a [line, column] pair.
 
bool isSpelledInSource (SourceLocation Loc, const SourceManager &SM)
 Returns true if the token at Loc is spelled in the source code.
 
bool isValidFileRange (const SourceManager &Mgr, SourceRange R)
 Returns true iff all of the following conditions hold:
 
SourceLocation includeHashLoc (FileID IncludedFile, const SourceManager &SM)
 Returns the #include location through which IncludedFIle was loaded.
 
static unsigned getTokenLengthAtLoc (SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceLocation getLocForTokenEnd (SourceLocation BeginLoc, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceLocation getLocForTokenBegin (SourceLocation EndLoc, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceRange toTokenRange (CharSourceRange Range, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceRange unionTokenRange (SourceRange R1, SourceRange R2, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceRange rangeInCommonFile (SourceRange R, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceRange getExpansionTokenRangeInSameFile (SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts)
 
static SourceRange getTokenFileRange (SourceLocation Loc, const SourceManager &SM, const LangOptions &LangOpts)
 
bool isInsideMainFile (SourceLocation Loc, const SourceManager &SM)
 Returns true iff Loc is inside the main file.
 
std::optional< SourceRange > toHalfOpenFileRange (const SourceManager &Mgr, const LangOptions &LangOpts, SourceRange R)
 Turns a token range into a half-open range and checks its correctness.
 
llvm::StringRef toSourceCode (const SourceManager &SM, SourceRange R)
 Returns the source code covered by the source range.
 
llvm::Expected< SourceLocation > sourceLocationInMainFile (const SourceManager &SM, Position P)
 Return the file location, corresponding to P.
 
Range halfOpenToRange (const SourceManager &SM, CharSourceRange R)
 
void unionRanges (Range &A, Range B)
 
std::pair< size_t, size_t > offsetToClangLineColumn (llvm::StringRef Code, size_t Offset)
 
std::pair< StringRef, StringRef > splitQualifiedName (StringRef QName)
 
TextEdit replacementToEdit (llvm::StringRef Code, const tooling::Replacement &R)
 
std::vector< TextEditreplacementsToEdits (llvm::StringRef Code, const tooling::Replacements &Repls)
 
std::optional< std::string > getCanonicalPath (const FileEntryRef F, FileManager &FileMgr)
 Get the canonical path of F.
 
TextEdit toTextEdit (const FixItHint &FixIt, const SourceManager &M, const LangOptions &L)
 
FileDigest digest (llvm::StringRef Content)
 
std::optional< FileDigestdigestFile (const SourceManager &SM, FileID FID)
 
format::FormatStyle getFormatStyleForFile (llvm::StringRef File, llvm::StringRef Content, const ThreadsafeFS &TFS, bool FormatFile)
 Choose the clang-format style we should apply to a certain file.
 
llvm::Expected< tooling::Replacements > cleanupAndFormat (StringRef Code, const tooling::Replacements &Replaces, const format::FormatStyle &Style)
 Cleanup and format the given replacements.
 
static void lex (llvm::StringRef Code, const LangOptions &LangOpts, llvm::function_ref< void(const syntax::Token &, const SourceManager &SM)> Action)
 
llvm::StringMap< unsigned > collectIdentifiers (llvm::StringRef Content, const format::FormatStyle &Style)
 Collects identifiers with counts in the source code.
 
std::vector< RangecollectIdentifierRanges (llvm::StringRef Identifier, llvm::StringRef Content, const LangOptions &LangOpts)
 Collects all ranges of the given identifier in the source code.
 
bool isKeyword (llvm::StringRef TokenName, const LangOptions &LangOpts)
 Return true if the TokenName is in the list of reversed keywords of the language.
 
std::vector< std::string > visibleNamespaces (llvm::StringRef Code, const LangOptions &LangOpts)
 Heuristically determine namespaces visible at a point, without parsing Code.
 
llvm::StringSet collectWords (llvm::StringRef Content)
 Collects words from the source code.
 
static bool isLikelyIdentifier (llvm::StringRef Word, llvm::StringRef Before, llvm::StringRef After)
 
std::optional< DefinedMacrolocateMacroAt (const syntax::Token &SpelledTok, Preprocessor &PP)
 Gets the macro referenced by SpelledTok.
 
llvm::Error reformatEdit (Edit &E, const format::FormatStyle &Style)
 Formats the edits and code around it according to Style.
 
static void inferFinalNewline (llvm::Expected< size_t > &Err, std::string &Contents, const Position &Pos)
 
llvm::Error applyChange (std::string &Contents, const TextDocumentContentChangeEvent &Change)
 Apply an incremental update to a text document.
 
EligibleRegion getEligiblePoints (llvm::StringRef Code, llvm::StringRef FullyQualifiedName, const LangOptions &LangOpts)
 Returns most eligible region to insert a definition for FullyQualifiedName in the Code.
 
bool isHeaderFile (llvm::StringRef FileName, std::optional< LangOptions > LangOpts=std::nullopt)
 Infers whether this is a header from the FileName and LangOpts (if presents).
 
bool isProtoFile (SourceLocation Loc, const SourceManager &SourceMgr)
 Returns true if the given location is in a generated protobuf file.
 
SourceLocation translatePreamblePatchLocation (SourceLocation Loc, const SourceManager &SM)
 Translates locations inside preamble patch to their main-file equivalent using presumed locations.
 
clangd::Range rangeTillEOL (llvm::StringRef Code, unsigned HashOffset)
 Returns the range starting at offset and spanning the whole line.
 
FileDigest digest (StringRef Content)
 
size_t lspLength (StringRef Code)
 
std::pair< llvm::StringRef, llvm::StringRef > splitQualifiedName (llvm::StringRef QName)
 From "a::b::c", return {"a::b::", "c"}.
 
TextEdit replacementToEdit (StringRef Code, const tooling::Replacement &R)
 
std::vector< TextEditreplacementsToEdits (StringRef Code, const tooling::Replacements &Repls)
 
bool isReservedName (llvm::StringRef Name)
 Returns true if Name is reserved, like _Foo or __Vector_base.
 
void pairBrackets (TokenStream &)
 Identifies bracket token in the stream which should be paired.
 
std::pair< Context, CancelercancelableTask (int Reason=1)
 Defines a new task whose cancellation may be requested.
 
int isCancelled (const Context &Ctx=Context::current())
 If the current context is within a cancelled task, returns the reason.
 
static ContextcurrentContext ()
 
void chooseConditionalBranches (DirectiveTree &, const TokenStream &Code)
 Selects a "taken" branch for each conditional directive in the file.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &, const DirectiveTree &)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &, const DirectiveTree::Code &)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &, const DirectiveTree::Directive &)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &, const DirectiveTree::Conditional &)
 
TokenStream lex (const std::string &, const clang::LangOptions &)
 Extracts a raw token stream from the source code.
 
TokenStream cook (const TokenStream &Code, const LangOptions &LangOpts)
 
template<typename... Ts>
void elog (const char *Fmt, Ts &&... Vals)
 
template<typename... Ts>
void log (const char *Fmt, Ts &&... Vals)
 
template<typename... Ts>
void vlog (const char *Fmt, Ts &&... Vals)
 
template<typename... Ts>
llvm::Error error (std::error_code EC, const char *Fmt, Ts &&... Vals)
 
template<typename... Ts>
llvm::Error error (const char *Fmt, Ts &&... Vals)
 
llvm::Error error (std::error_code EC, std::string Msg)
 
llvm::Error error (std::string Msg)
 
void record (const MemoryTree &MT, std::string RootName, const trace::Metric &Out)
 Records total memory usage of each node under Out.
 
std::string maybeCaseFoldPath (PathRef Path)
 
bool pathEqual (PathRef A, PathRef B)
 
PathRef absoluteParent (PathRef Path)
 Variant of parent_path that operates only on absolute paths.
 
bool pathStartsWith (PathRef Ancestor, PathRef Path, llvm::sys::path::Style Style=llvm::sys::path::Style::native)
 Checks if Ancestor is a proper ancestor of Path.
 
void abortAfterTimeout (std::chrono::seconds Timeout)
 Causes this process to crash if still running after Timeout.
 
void requestShutdown ()
 Sets a flag to indicate that clangd was sent a shutdown signal, and the transport loop should exit at the next opportunity.
 
bool shutdownRequested ()
 Checks whether requestShutdown() was called.
 
template<typename Fun , typename Ret = decltype(std::declval<Fun>()())>
Ret retryAfterSignalUnlessShutdown (const std::enable_if_t< true, Ret > &Fail, const Fun &F)
 Retry an operation if it gets interrupted by a signal.
 
Deadline timeoutSeconds (std::optional< double > Seconds)
 Makes a deadline from a timeout in seconds. std::nullopt means wait forever.
 
void wait (std::unique_lock< std::mutex > &Lock, std::condition_variable &CV, Deadline D)
 Wait once on CV for the specified duration.
 
template<typename Func >
bool wait (std::unique_lock< std::mutex > &Lock, std::condition_variable &CV, Deadline D, Func F)
 Waits on a condition variable until F() is true or D expires.
 
template<typename T >
std::future< T > runAsync (llvm::unique_function< T()> Action)
 Runs Action asynchronously with a new std::thread.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Token &T)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const TokenStream &TS)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const Token::Range &R)
 
clang::LangOptions genericLangOpts (clang::Language=clang::Language::CXX, clang::LangStandard::Kind=clang::LangStandard::lang_unspecified)
 A generic lang options suitable for lexing/parsing a langage.
 
TokenStream stripComments (const TokenStream &)
 Drops comment tokens.
 
TokenStream cook (const TokenStream &, const clang::LangOptions &)
 Decoding raw tokens written in the source code, returning a derived stream.
 
static void mergeCheckList (std::optional< std::string > &Checks, llvm::StringRef List)
 
TidyProvider provideEnvironment ()
 Provider that just sets the defaults.
 
TidyProvider provideDefaultChecks ()
 Provider that will enable a nice set of default checks if none are specified.
 
TidyProvider addTidyChecks (llvm::StringRef Checks, llvm::StringRef WarningsAsErrors={})
 Provider the enables a specific set of checks and warnings as errors.
 
TidyProvider disableUnusableChecks (llvm::ArrayRef< std::string > ExtraBadChecks={})
 Provider that will disable checks known to not work with clangd.
 
TidyProvider provideClangdConfig ()
 
TidyProvider provideClangTidyFiles (ThreadsafeFS &)
 Provider that searches for .clang-tidy configuration files in the directory tree.
 
TidyProvider combine (std::vector< TidyProvider > Providers)
 
tidy::ClangTidyOptions getTidyOptionsForFile (TidyProviderRef Provider, llvm::StringRef Filename)
 
bool isRegisteredTidyCheck (llvm::StringRef Check)
 Returns if Check is a registered clang-tidy check.
 
std::optional< bool > isFastTidyCheck (llvm::StringRef Check)
 Returns if Check is known-fast, known-slow, or its speed is unknown.
 
bool check (llvm::StringRef File, const ThreadsafeFS &TFS, const ClangdLSPServer::Options &Opts)
 
int clangdMain (int argc, char *argv[])
 
unsigned getDefaultAsyncThreadsCount ()
 Returns a number of a default async threads to use for TUScheduler.
 
static clangd::Range toLSPRange (llvm::StringRef Code, llvm::Annotations::Range R)
 
 MATCHER_P (named, N, "")
 
 MATCHER_P (qName, N, "")
 
 MATCHER (declared, "")
 
 MATCHER (defined, "")
 
 MATCHER_P (fileURI, F, "")
 
::testing::Matcher< const RefSlab & > refsAre (std::vector<::testing::Matcher< Ref > > Matchers)
 
 MATCHER (emptyIncludeNode, "")
 
 MATCHER (hadErrors, "")
 
 MATCHER_P (numReferences, N, "")
 
 TEST_F (BackgroundIndexTest, NoCrashOnErrorFile)
 
 TEST_F (BackgroundIndexTest, Config)
 
 TEST_F (BackgroundIndexTest, IndexTwoFiles)
 
 TEST_F (BackgroundIndexTest, MainFileRefs)
 
 TEST_F (BackgroundIndexTest, ShardStorageTest)
 
 TEST_F (BackgroundIndexTest, DirectIncludesTest)
 
 TEST_F (BackgroundIndexTest, ShardStorageLoad)
 
 TEST_F (BackgroundIndexTest, ShardStorageEmptyFile)
 
 TEST_F (BackgroundIndexTest, NoDotsInAbsPath)
 
 TEST_F (BackgroundIndexTest, UncompilableFiles)
 
 TEST_F (BackgroundIndexTest, CmdLineHash)
 
 TEST_F (BackgroundIndexTest, Reindex)
 
 TEST_F (BackgroundIndexRebuilderTest, IndexingTUs)
 
 TEST_F (BackgroundIndexRebuilderTest, LoadingShards)
 
 TEST (BackgroundQueueTest, Priority)
 
 TEST (BackgroundQueueTest, Boost)
 
 TEST (BackgroundQueueTest, Duplicates)
 
 TEST (BackgroundQueueTest, Progress)
 
 TEST (BackgroundIndex, Profile)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &Stream, const CallHierarchyItem &Item)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &Stream, const CallHierarchyIncomingCall &Call)
 
 TEST (DecisionForestRuntime, Evaluate)
 
 MATCHER_P2 (hasFlag, Flag, Path, "")
 
auto hasFlag (llvm::StringRef Flag)
 
 TEST_F (DirectoryBasedGlobalCompilationDatabaseCacheTest, Cacheable)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &Stream, const InlayHint &Hint)
 
static void logBody (llvm::StringRef Method, llvm::json::Value V, bool Send)
 
template<typename... Args>
PolySubsequenceMatcher< Args... > HasSubsequence (Args &&... M)
 
template<typename InnerMatcher >
OptionalMatcher< InnerMatcher > HasValue (const InnerMatcher &inner_matcher)
 
std::unique_ptr< SymbolIndexcreateIndex ()
 
 TEST (ProjectAware, Test)
 
 TEST (ProjectAware, CreatedOnce)
 
 TEST (ContextTests, Simple)
 
 TEST (ContextTests, MoveOps)
 
 TEST (ContextTests, Builders)
 
 TEST_F (ThreadingTest, TaskRunner)
 
 TEST_F (ThreadingTest, Memoize)
 
 TEST_F (ThreadingTest, MemoizeDeterministic)
 
 TEST (PeriodicThrottlerTest, Minimal)
 
void runAddDocument (ClangdServer &Server, PathRef File, llvm::StringRef Contents, llvm::StringRef Version, WantDiagnostics WantDiags, bool ForceRebuild)
 
llvm::Expected< CodeCompleteResultrunCodeComplete (ClangdServer &Server, PathRef File, Position Pos, clangd::CodeCompleteOptions Opts)
 
llvm::Expected< SignatureHelprunSignatureHelp (ClangdServer &Server, PathRef File, Position Pos, MarkupKind DocumentationFormat)
 
llvm::Expected< std::vector< LocatedSymbol > > runLocateSymbolAt (ClangdServer &Server, PathRef File, Position Pos)
 
llvm::Expected< std::vector< DocumentHighlight > > runFindDocumentHighlights (ClangdServer &Server, PathRef File, Position Pos)
 
llvm::Expected< RenameResultrunRename (ClangdServer &Server, PathRef File, Position Pos, llvm::StringRef NewName, const RenameOptions &RenameOpts)
 
llvm::Expected< RenameResultrunPrepareRename (ClangdServer &Server, PathRef File, Position Pos, std::optional< std::string > NewName, const RenameOptions &RenameOpts)
 
llvm::Expected< tooling::Replacements > runFormatFile (ClangdServer &Server, PathRef File, std::optional< Range > Rng)
 
SymbolSlab runFuzzyFind (const SymbolIndex &Index, llvm::StringRef Query)
 
SymbolSlab runFuzzyFind (const SymbolIndex &Index, const FuzzyFindRequest &Req)
 
RefSlab getRefs (const SymbolIndex &Index, SymbolID ID)
 
llvm::Expected< std::vector< SelectionRange > > runSemanticRanges (ClangdServer &Server, PathRef File, const std::vector< Position > &Pos)
 
llvm::Expected< std::optional< clangd::Path > > runSwitchHeaderSource (ClangdServer &Server, PathRef File)
 
llvm::Error runCustomAction (ClangdServer &Server, PathRef File, llvm::function_ref< void(InputsAndAST)> Action)
 
void runAddDocument (ClangdServer &Server, PathRef File, StringRef Contents, StringRef Version="null", WantDiagnostics WantDiags=WantDiagnostics::Auto, bool ForceRebuild=false)
 
llvm::Expected< RenameResultrunRename (ClangdServer &Server, PathRef File, Position Pos, StringRef NewName, const clangd::RenameOptions &RenameOpts)
 
SymbolSlab runFuzzyFind (const SymbolIndex &Index, StringRef Query)
 
llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > buildTestFS (llvm::StringMap< std::string > const &Files, llvm::StringMap< time_t > const &Timestamps)
 
const char * testRoot ()
 
std::string testPath (PathRef File, llvm::sys::path::Style Style)
 
static URISchemeRegistry::Add< TestScheme > X (TestScheme::Scheme, "Test schema")
 
Symbol symbol (llvm::StringRef QName)
 
static std::string replace (llvm::StringRef Haystack, llvm::StringRef Needle, llvm::StringRef Repl)
 
Symbol sym (llvm::StringRef QName, index::SymbolKind Kind, llvm::StringRef USRFormat, llvm::StringRef Signature)
 
Symbol func (llvm::StringRef Name)
 
Symbol cls (llvm::StringRef Name)
 
Symbol enm (llvm::StringRef Name)
 
Symbol enmConstant (llvm::StringRef Name)
 
Symbol var (llvm::StringRef Name)
 
Symbol ns (llvm::StringRef Name)
 
Symbol conceptSym (llvm::StringRef Name)
 
Symbol macro (llvm::StringRef Name, llvm::StringRef ArgList)
 
Symbol objcSym (llvm::StringRef Name, index::SymbolKind Kind, llvm::StringRef USRPrefix)
 
Symbol objcClass (llvm::StringRef Name)
 
Symbol objcCategory (llvm::StringRef Name, llvm::StringRef CategoryName)
 
Symbol objcProtocol (llvm::StringRef Name)
 
SymbolSlab generateSymbols (std::vector< std::string > QualifiedNames)
 
SymbolSlab generateNumSymbols (int Begin, int End)
 
std::string getQualifiedName (const Symbol &Sym)
 
std::vector< std::string > match (const SymbolIndex &I, const FuzzyFindRequest &Req, bool *Incomplete)
 
std::vector< std::string > lookup (const SymbolIndex &I, llvm::ArrayRef< SymbolID > IDs)
 
void initializeModuleCache (CompilerInvocation &CI)
 
void deleteModuleCache (const std::string ModuleCachePath)
 
const SymbolfindSymbol (const SymbolSlab &Slab, llvm::StringRef QName)
 
const NamedDecl & findDecl (ParsedAST &AST, llvm::StringRef QName)
 
const NamedDecl & findDecl (ParsedAST &AST, std::function< bool(const NamedDecl &)> Filter)
 
const NamedDecl & findUnqualifiedDecl (ParsedAST &AST, llvm::StringRef Name)
 
 MATCHER_P2 (FileWithContents, FileName, Contents, "")
 
xpc_object_t jsonToXpc (const json::Value &JSON)
 
json::Value xpcToJson (const xpc_object_t &XPCObject)
 
xpc_object_t jsonToXpc (const llvm::json::Value &JSON)
 
std::unique_ptr< TransportnewXPCTransport ()
 
std::vector< LocatedSymbollocateSymbolTextually (const SpelledWord &Word, ParsedAST &AST, const SymbolIndex *Index, llvm::StringRef MainFilePath, ASTNodeKind NodeKind)
 
const syntax::Token * findNearbyIdentifier (const SpelledWord &Word, const syntax::TokenBuffer &TB)
 
std::vector< LocatedSymbollocateSymbolAt (ParsedAST &AST, Position Pos, const SymbolIndex *Index=nullptr)
 Get definition of symbol at a specified Pos.
 
std::vector< DocumentLinkgetDocumentLinks (ParsedAST &AST)
 Get all document links.
 
std::vector< DocumentHighlightfindDocumentHighlights (ParsedAST &AST, Position Pos)
 Returns highlights for all usages of a symbol at Pos.
 
std::vector< LocatedSymbolfindImplementations (ParsedAST &AST, Position Pos, const SymbolIndex *Index)
 Returns implementations at a specified Pos:
 
ReferencesResult findReferences (ParsedAST &AST, Position Pos, uint32_t Limit, const SymbolIndex *Index=nullptr, bool AddContext=false)
 Returns references of the symbol at a specified Pos.
 
std::vector< SymbolDetailsgetSymbolInfo (ParsedAST &AST, Position Pos)
 Get info about symbols at Pos.
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const LocatedSymbol &S)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &OS, const ReferencesResult::Reference &R)
 
template<typename HierarchyItem >
static std::optional< HierarchyItem > declToHierarchyItem (const NamedDecl &ND, llvm::StringRef TUPath)
 
static std::optional< TypeHierarchyItemdeclToTypeHierarchyItem (const NamedDecl &ND, llvm::StringRef TUPath)
 
static std::optional< CallHierarchyItemdeclToCallHierarchyItem (const NamedDecl &ND, llvm::StringRef TUPath)
 
template<typename HierarchyItem >
static std::optional< HierarchyItem > symbolToHierarchyItem (const Symbol &S, PathRef TUPath)
 
static std::optional< TypeHierarchyItemsymbolToTypeHierarchyItem (const Symbol &S, PathRef TUPath)
 
static std::optional< CallHierarchyItemsymbolToCallHierarchyItem (const Symbol &S, PathRef TUPath)
 
static void fillSubTypes (const SymbolID &ID, std::vector< TypeHierarchyItem > &SubTypes, const SymbolIndex *Index, int Levels, PathRef TUPath)
 
static void fillSuperTypes (const CXXRecordDecl &CXXRD, llvm::StringRef TUPath, TypeHierarchyItem &Item, RecursionProtectionSet &RPSet)
 
std::vector< const CXXRecordDecl * > findRecordTypeAt (ParsedAST &AST, Position Pos)
 Find the record types referenced at Pos.
 
static QualType typeForNode (const SelectionTree::Node *N)
 
static void unwrapFindType (QualType T, const HeuristicResolver *H, llvm::SmallVector< QualType > &Out)
 
static llvm::SmallVector< QualType > unwrapFindType (QualType T, const HeuristicResolver *H)
 
std::vector< LocatedSymbolfindType (ParsedAST &AST, Position Pos, const SymbolIndex *Index)
 Returns symbols for types referenced at Pos.
 
std::vector< const CXXRecordDecl * > typeParents (const CXXRecordDecl *CXXRD)
 Given a record type declaration, find its base (parent) types.
 
std::vector< TypeHierarchyItemgetTypeHierarchy (ParsedAST &AST, Position Pos, int Resolve, TypeHierarchyDirection Direction, const SymbolIndex *Index=nullptr, PathRef TUPath=PathRef{})
 Get type hierarchy information at Pos.
 
std::optional< std::vector< TypeHierarchyItem > > superTypes (const TypeHierarchyItem &Item, const SymbolIndex *Index)
 Returns direct parents of a TypeHierarchyItem using SymbolIDs stored inside the item.
 
std::vector< TypeHierarchyItemsubTypes (const TypeHierarchyItem &Item, const SymbolIndex *Index)
 Returns direct children of a TypeHierarchyItem.
 
void resolveTypeHierarchy (TypeHierarchyItem &Item, int ResolveLevels, TypeHierarchyDirection Direction, const SymbolIndex *Index)
 
std::vector< CallHierarchyItemprepareCallHierarchy (ParsedAST &AST, Position Pos, PathRef TUPath)
 Get call hierarchy information at Pos.
 
std::vector< CallHierarchyIncomingCallincomingCalls (const CallHierarchyItem &Item, const SymbolIndex *Index)
 
std::vector< CallHierarchyOutgoingCalloutgoingCalls (const CallHierarchyItem &Item, const SymbolIndex *Index)
 
llvm::DenseSet< const Decl * > getNonLocalDeclRefs (ParsedAST &AST, const FunctionDecl *FD)
 Returns all decls that are referenced in the FD except local symbols.
 

Variables

static bool AllowCrashPragmasForTest = false
 
static constexpr int AwfulScore = -(1 << 13)
 
static constexpr int PerfectBonus = 4
 
static constexpr uint8_t CharTypes []
 
static constexpr uint8_t CharRoles []
 
static std::atomic< bool > PreventStarvation = {false}
 
constexpr int MaxSuffixComponents = 3
 The maximum number of path components in a key from StdSuffixHeaderMapping.
 
constexpr unsigned SemanticTokenEncodingSize = 5
 
constexpr auto CompletionItemKindMin
 
constexpr auto CompletionItemKindMax
 
constexpr auto SymbolKindMin = static_cast<size_t>(SymbolKind::File)
 
constexpr auto SymbolKindMax = static_cast<size_t>(SymbolKind::TypeParameter)
 
Key< OffsetEncodingkCurrentOffsetEncoding
 
static Key< CancelStateStateKey
 
static constexpr uint64_t CacheDiskMismatch
 
static constexpr uint64_t FileNotFound = CacheDiskMismatch - 1
 
static std::atomic< bool > ShutdownRequested = {false}
 
static thread_local ThreadCrashReporterCurrentReporter = nullptr
 
static clang::clangd::Key< std::string > FileBeingProcessed
 
static int LLVM_ATTRIBUTE_UNUSED UnittestSchemeAnchorDest
 
volatile int UnittestSchemeAnchorSource = 0
 
static int LLVM_ATTRIBUTE_UNUSED UnittestSchemeAnchorDest
 

Detailed Description

FIXME: Skip testing on windows temporarily due to the different escaping code mode.

Typedef Documentation

◆ Callback

template<typename T >
using clang::clangd::Callback = typedef llvm::unique_function<void(llvm::Expected<T>)>

A Callback<T> is a void function that accepts Expected<T>.

This is accepted by ClangdServer functions that logically return T.

Definition at line 28 of file Function.h.

◆ Canceler

using clang::clangd::Canceler = typedef std::function<void()>

A canceller requests cancellation of a task, when called.

Calling it again has no effect.

Definition at line 70 of file Cancellation.h.

◆ ChangeAnnotationIdentifier

using clang::clangd::ChangeAnnotationIdentifier = typedef std::string

Definition at line 241 of file Protocol.h.

◆ CharTypeSet

using clang::clangd::CharTypeSet = typedef unsigned char

Definition at line 49 of file FuzzyMatch.h.

◆ CompletionItemKindBitset

Definition at line 372 of file Protocol.h.

◆ FileDigest

using clang::clangd::FileDigest = typedef std::array<uint8_t, 8>

Definition at line 42 of file SourceCode.h.

◆ FileEdits

using clang::clangd::FileEdits = typedef llvm::StringMap<Edit>

A mapping from absolute file path (the one used for accessing the underlying VFS) to edits.

Definition at line 209 of file SourceCode.h.

◆ HeaderFilter

using clang::clangd::HeaderFilter = typedef llvm::ArrayRef<std::function<bool(llvm::StringRef)> >

Definition at line 60 of file IncludeCleaner.h.

◆ IncludeGraph

using clang::clangd::IncludeGraph = typedef llvm::StringMap<IncludeGraphNode>

Definition at line 101 of file Headers.h.

◆ IndexFactory

using clang::clangd::IndexFactory = typedef std::function<std::unique_ptr<SymbolIndex>( const Config::ExternalIndexSpec &, AsyncTaskRunner *)>

A functor to create an index for an external index specification.

Functor should perform any high latency operation in a separate thread through AsyncTaskRunner, if set. Spec is never None.

Definition at line 24 of file ProjectAware.h.

◆ InitializedParams

Definition at line 321 of file Protocol.h.

◆ Obj

using clang::clangd::Obj = typedef llvm::json::Object

Definition at line 217 of file LSPClient.cpp.

◆ Path

using clang::clangd::Path = typedef std::string

A typedef to represent a file path.

Used solely for more descriptive signatures.

Definition at line 26 of file Path.h.

◆ PathMappings

using clang::clangd::PathMappings = typedef std::vector<PathMapping>

Definition at line 42 of file PathMapping.h.

◆ PathRef

using clang::clangd::PathRef = typedef llvm::StringRef

A typedef to represent a ref to file path.

Used solely for more descriptive signatures.

Definition at line 29 of file Path.h.

◆ PreambleParsedCallback

using clang::clangd::PreambleParsedCallback = typedef std::function<void(CapturedASTCtx ASTCtx, std::shared_ptr<const include_cleaner::PragmaIncludes>)>

Definition at line 130 of file Preamble.h.

◆ RecursionProtectionSet

using clang::clangd::RecursionProtectionSet = typedef llvm::SmallSet<const CXXRecordDecl *, 4>

Definition at line 1793 of file XRefs.cpp.

◆ SlabTuple

Definition at line 156 of file FileIndex.h.

◆ SymbolKindBitset

using clang::clangd::SymbolKindBitset = typedef std::bitset<SymbolKindMax + 1>

Definition at line 411 of file Protocol.h.

◆ SystemIncludeExtractorFn

using clang::clangd::SystemIncludeExtractorFn = typedef llvm::unique_function<void( tooling::CompileCommand &, llvm::StringRef) const>

Extracts system include search path from drivers matching QueryDriverGlobs and adds them to the compile flags.

Returns null when QueryDriverGlobs is empty.

Definition at line 180 of file GlobalCompilationDatabase.h.

◆ TidyProvider

using clang::clangd::TidyProvider = typedef llvm::unique_function<void(tidy::ClangTidyOptions &, llvm::StringRef) const>

A factory to modify a tidy::ClangTidyOptions.

Definition at line 21 of file TidyProvider.h.

◆ TidyProviderRef

using clang::clangd::TidyProviderRef = typedef llvm::function_ref<void(tidy::ClangTidyOptions &, llvm::StringRef)>

A factory to modify a tidy::ClangTidyOptions that doesn't hold any state.

Definition at line 27 of file TidyProvider.h.

◆ TweakRegistry

typedef llvm::Registry<Tweak> clang::clangd::TweakRegistry

A handy typedef to save some typing.

Definition at line 30 of file Tweak.cpp.

◆ URISchemeRegistry

By default, a "file" scheme is supported where URI paths are always absolute in the file system.

Definition at line 131 of file URI.h.

Enumeration Type Documentation

◆ CharRole

enum clang::clangd::CharRole : unsigned char
Enumerator
Unknown 
Tail 
Head 
Separator 

Definition at line 55 of file FuzzyMatch.h.

◆ CharType

enum clang::clangd::CharType : unsigned char
Enumerator
Empty 
Lower 
Upper 
Punctuation 

Definition at line 41 of file FuzzyMatch.h.

◆ CompletionItemKind

The kind of a completion entry.

Enumerator
Missing 
Text 
Method 
Function 
Constructor 
Field 
Variable 
Class 
Interface 
Module 
Property 
Unit 
Value 
Enum 
Keyword 
Snippet 
Color 
File 
Reference 
Folder 
EnumMember 
Constant 
Struct 
Event 
Operator 
TypeParameter 

Definition at line 338 of file Protocol.h.

◆ CompletionTriggerKind

Enumerator
Invoked 

Completion was triggered by typing an identifier (24x7 code complete), manual invocation (e.g Ctrl+Space) or via API.

TriggerCharacter 

Completion was triggered by a trigger character specified by the triggerCharacters properties of the CompletionRegistrationOptions.

TriggerTriggerForIncompleteCompletions 

Completion was re-triggered as the current completion list is incomplete.

Definition at line 1214 of file Protocol.h.

◆ DeclRelation

enum class clang::clangd::DeclRelation : unsigned
strong
Enumerator
TemplateInstantiation 

This is the template instantiation that was referred to.

e.g. template<> class vector<int> (the implicit specialization)

TemplatePattern 

This is the pattern the template specialization was instantiated from.

e.g. class vector<T> (the pattern within the primary template)

Alias 

This declaration is an alias that was referred to.

e.g. using ns::X (the UsingDecl directly referenced), using Z = ns::Y (the TypeAliasDecl directly referenced)

Underlying 

This is the underlying declaration for a renaming-alias, decltype etc.

e.g. class ns::Y (the underlying declaration referenced).

Note that we don't treat using ns::X as a first-class declaration like using Z = ns::Y. Therefore reference to X that goes through this using-decl is considered a direct reference (without the Underlying bit). Nevertheless, we report using ns::X as an Alias, so that some features like go-to-definition can still target it.

Definition at line 93 of file FindTarget.h.

◆ DiagnosticTag

Enumerator
Unnecessary 

Unused or unnecessary code.

Clients are allowed to render diagnostics with this tag faded out instead of having an error squiggle.

Deprecated 

Deprecated or obsolete code.

Clients are allowed to rendered diagnostics with this tag strike through.

Definition at line 899 of file Protocol.h.

◆ DocumentHighlightKind

Enumerator
Text 
Read 
Write 

Definition at line 1451 of file Protocol.h.

◆ DuplicateHandling

How to handle duplicated symbols across multiple files.

Enumerator
PickOne 
Merge 

Definition at line 50 of file FileIndex.h.

◆ ErrorCode

enum class clang::clangd::ErrorCode
strong
Enumerator
ParseError 
InvalidRequest 
MethodNotFound 
InvalidParams 
InternalError 
ServerNotInitialized 
UnknownErrorCode 
RequestCancelled 
ContentModified 

Definition at line 47 of file Protocol.h.

◆ ErrorResultCode

enum class clang::clangd::ErrorResultCode : int
strong
Enumerator
NoShutdownRequest 
CantRunAsXPCService 
CheckFailed 

Definition at line 725 of file ClangdMain.cpp.

◆ FileChangeType

enum class clang::clangd::FileChangeType
strong
Enumerator
Created 

The file got created.

Changed 

The file got changed.

Deleted 

The file got deleted.

Definition at line 811 of file Protocol.h.

◆ HighlightingKind

Enumerator
Variable 
LocalVariable 
Parameter 
Function 
Method 
StaticMethod 
Field 
StaticField 
Class 
Interface 
Enum 
EnumConstant 
Typedef 
Type 
Unknown 
Namespace 
TemplateParameter 
Concept 
Primitive 
Macro 
Modifier 
Operator 
Bracket 
Label 
InactiveCode 
LastKind 

Definition at line 31 of file SemanticHighlighting.h.

◆ HighlightingModifier

Enumerator
Declaration 
Definition 
Deprecated 
Deduced 
Readonly 
Static 
Abstract 
Virtual 
DependentName 
DefaultLibrary 
UsedAsMutableReference 
UsedAsMutablePointer 
ConstructorOrDestructor 
UserDefined 
FunctionScope 
ClassScope 
FileScope 
GlobalScope 
LastModifier 

Definition at line 68 of file SemanticHighlighting.h.

◆ IndexContents

enum class clang::clangd::IndexContents : uint8_t
strong

Describes what data is covered by an index.

Indexes may contain symbols but not references from a file, etc. This affects merging: if a staler index contains a reference but a fresher one does not, we want to trust the fresher index only if it actually includes references in general.

Enumerator
None 
Symbols 
References 
Relations 
All 

Definition at line 114 of file Index.h.

◆ IndexFileFormat

enum class clang::clangd::IndexFileFormat
strong
Enumerator
RIFF 
YAML 

Definition at line 37 of file Serialization.h.

◆ IndexType

enum class clang::clangd::IndexType
strong

Select between in-memory index implementations, which have tradeoffs.

Enumerator
Light 
Heavy 

Definition at line 42 of file FileIndex.h.

◆ InlayHintKind

enum class clang::clangd::InlayHintKind
strong

Inlay hint kinds.

Enumerator
Type 

An inlay hint that for a type annotation.

An example of a type hint is a hint in this position: auto var ^ = expr; which shows the deduced type of the variable.

Parameter 

An inlay hint that is for a parameter.

An example of a parameter hint is a hint in this position: func(^arg); which shows the name of the corresponding parameter.

Designator 

A hint before an element of an aggregate braced initializer list, indicating what it is initializing.

Pair{^1, ^2}; Uses designator syntax, e.g. .first:. This is a clangd extension.

BlockEnd 

A hint after function, type or namespace definition, indicating the defined symbol name of the definition.

An example of a decl name hint in this position: void func() { } ^ Uses comment-like syntax like "// func". This is a clangd extension.

DefaultArgument 

An inlay hint that is for a default argument.

An example of a parameter hint for a default argument: void foo(bool A = true); foo(^); Adds an inlay hint "A: true". This is a clangd extension.

Definition at line 1655 of file Protocol.h.

◆ InsertTextFormat

Defines whether the insert text in a completion item should be interpreted as plain text or a snippet.

Enumerator
Missing 
PlainText 

The primary text to be inserted is treated as a plain string.

Snippet 

The primary text to be inserted is treated as a snippet.

A snippet can define tab stops and placeholders with $1, $2 and ${3:foo}. $0 defines the final tab stop, it defaults to the end of the snippet. Placeholders with equal identifiers are linked, that is typing in one will update others too.

See also: https://github.com/Microsoft/vscode/blob/main/src/vs/editor/contrib/snippet/snippet.md

Definition at line 1261 of file Protocol.h.

◆ JSONStreamStyle

Enumerator
Standard 
Delimited 

Definition at line 66 of file Transport.h.

◆ LexFlags

enum class clang::clangd::LexFlags : uint8_t
strong
Enumerator
StartsPPLine 

Marks the token at the start of a logical preprocessor line.

This is a position where a directive might start.

Here, the first # is StartsPPLine, but second is not (same logical line). #define X(error) \ error // not a directive!

Careful, the directive may not start exactly on the StartsPPLine token: /*comment*‍/ #include <foo.h>

NeedsCleaning 

Marks tokens containing trigraphs, escaped newlines, UCNs etc.

The text() of such tokens will contain the raw trigrah.

Definition at line 211 of file support/Token.h.

◆ MarkupKind

enum class clang::clangd::MarkupKind
strong
Enumerator
PlainText 
Markdown 

Definition at line 439 of file Protocol.h.

◆ MessageType

enum class clang::clangd::MessageType
strong
Enumerator
Error 

An error message.

Warning 

A warning message.

Info 

An information message.

Log 

A log message.

Definition at line 731 of file Protocol.h.

◆ OffsetEncoding

enum class clang::clangd::OffsetEncoding
strong
Enumerator
UnsupportedEncoding 
UTF16 
UTF8 
UTF32 

Definition at line 423 of file Protocol.h.

◆ PreambleAction

enum class clang::clangd::PreambleAction
strong
Enumerator
Queued 
Building 
Idle 

Definition at line 119 of file TUScheduler.h.

◆ RefKind

enum class clang::clangd::RefKind : uint8_t
strong

Describes the kind of a cross-reference.

This is a bitfield which can be combined from different kinds.

Enumerator
Unknown 
Declaration 
Definition 
Reference 
Spelled 
Call 
All 

Definition at line 28 of file Ref.h.

◆ RelationKind

enum class clang::clangd::RelationKind : uint8_t
strong
Enumerator
BaseOf 
OverriddenBy 

Definition at line 20 of file Relation.h.

◆ SymbolKind

enum class clang::clangd::SymbolKind
strong

A symbol kind.

Enumerator
File 
Module 
Namespace 
Package 
Class 
Method 
Property 
Field 
Constructor 
Enum 
Interface 
Function 
Variable 
Constant 
String 
Number 
Boolean 
Array 
Object 
Key 
Null 
EnumMember 
Struct 
Event 
Operator 
TypeParameter 

Definition at line 380 of file Protocol.h.

◆ SymbolOrigin

enum class clang::clangd::SymbolOrigin : uint16_t
strong
Enumerator
Unknown 
AST 
Open 
Static 
Merge 
Identifier 
Remote 
Preamble 
Background 
StdLib 

Definition at line 21 of file SymbolOrigin.h.

◆ SymbolTag

enum class clang::clangd::SymbolTag
strong
Enumerator
Deprecated 

Definition at line 1564 of file Protocol.h.

◆ TextDocumentSyncKind

Defines how the host (editor) should sync document changes to the language server.

Enumerator
None 

Documents should not be synced at all.

Full 

Documents are synced by always sending the full content of the document.

Incremental 

Documents are synced by sending the full content on open.

After that only incremental updates to the document are send.

Definition at line 325 of file Protocol.h.

◆ TraceLevel

enum class clang::clangd::TraceLevel
strong
Enumerator
Off 
Messages 
Verbose 

Definition at line 309 of file Protocol.h.

◆ TypeHierarchyDirection

Enumerator
Children 
Parents 
Both 

Definition at line 1479 of file Protocol.h.

◆ WantDiagnostics

enum class clang::clangd::WantDiagnostics
strong

Determines whether diagnostics should be generated for a file snapshot.

Enumerator
Yes 
No 

Diagnostics must be generated for this snapshot.

Auto 

Diagnostics must not be generated for this snapshot.

Definition at line 53 of file TUScheduler.h.

Function Documentation

◆ abbreviatedString()

llvm::SmallString< 256 > clang::clangd::abbreviatedString ( DynTypedNode  N,
const PrintingPolicy &  PP 
)

Definition at line 996 of file Selection.cpp.

References OS, and Pos.

◆ abortAfterTimeout()

void clang::clangd::abortAfterTimeout ( std::chrono::seconds  Timeout)

Causes this process to crash if still running after Timeout.

Definition at line 18 of file Shutdown.cpp.

Referenced by clangdMain().

◆ absoluteParent()

PathRef clang::clangd::absoluteParent ( PathRef  Path)

Variant of parent_path that operates only on absolute paths.

Unlike parent_path doesn't consider C: a parent of C:.

Definition at line 22 of file Path.cpp.

Referenced by clang::clangd::config::Provider::fromAncestorRelativeYAMLFiles().

◆ addTidyChecks()

TidyProvider clang::clangd::addTidyChecks ( llvm::StringRef  Checks,
llvm::StringRef  WarningsAsErrors 
)

Provider the enables a specific set of checks and warnings as errors.

Definition at line 187 of file TidyProvider.cpp.

References addTidyChecks(), and mergeCheckList().

Referenced by addTidyChecks().

◆ adjustKindToCapability() [1/2]

CompletionItemKind clang::clangd::adjustKindToCapability ( CompletionItemKind  Kind,
CompletionItemKindBitset SupportedCompletionItemKinds 
)

Definition at line 1080 of file Protocol.cpp.

References Class, CompletionItemKindMin, Enum, EnumMember, File, Folder, Kind, Struct, and Text.

◆ adjustKindToCapability() [2/2]

SymbolKind clang::clangd::adjustKindToCapability ( SymbolKind  Kind,
SymbolKindBitset SupportedSymbolKinds 
)

Definition at line 280 of file Protocol.cpp.

References Kind, and SymbolKindMin.

◆ adjustRenameRanges()

std::optional< std::vector< SymbolRange > > clang::clangd::adjustRenameRanges ( llvm::StringRef  DraftCode,
llvm::StringRef  Identifier,
std::vector< Range Indexed,
const LangOptions &  LangOpts,
std::optional< Selector >  Selector 
)

Adjusts indexed occurrences to match the current state of the file.

The Index is not always up to date. Blindly editing at the locations reported by the index may mangle the code in such cases. This function determines whether the indexed occurrences can be applied to this file, and heuristically repairs the occurrences if necessary.

The API assumes that Indexed contains only named occurrences (each occurrence has the same length). REQUIRED: Indexed is sorted.

Definition at line 1241 of file Rename.cpp.

References getMappedRanges(), and Identifier.

◆ allowCrashPragmasForTest()

void clang::clangd::allowCrashPragmasForTest ( )

Respect #pragma clang __debug crash etc, which are usually disabled.

This may only be called before threads are spawned.

Definition at line 44 of file Compiler.cpp.

References AllowCrashPragmasForTest.

Referenced by clangdMain().

◆ allowImplicitCompletion()

bool clang::clangd::allowImplicitCompletion ( llvm::StringRef  Content,
unsigned  Offset 
)

Definition at line 2427 of file CodeComplete.cpp.

References allowImplicitCompletion(), isIncludeFile(), Offset, and Pos.

Referenced by allowImplicitCompletion().

◆ allTargetDecls()

llvm::SmallVector< std::pair< const NamedDecl *, DeclRelationSet >, 1 > clang::clangd::allTargetDecls ( const DynTypedNode &  ,
const HeuristicResolver  
)

Similar to targetDecl(), however instead of applying a filter, all possible decls are returned along with their DeclRelationSets.

This is suitable for indexing, where everything is recorded and filtering is applied later.

Definition at line 552 of file FindTarget.cpp.

References Decl, dlog, and Flags.

Referenced by explicitReferenceTargets(), and targetDecl().

◆ applyChange()

llvm::Error clang::clangd::applyChange ( std::string &  Contents,
const TextDocumentContentChangeEvent Change 
)

◆ applyPathMappings()

void clang::clangd::applyPathMappings ( llvm::json::Value &  Params,
PathMapping::Direction  Dir,
const PathMappings Mappings 
)

Applies the Mappings to all the file:// URIs in Params.

NOTE: The first matching mapping will be applied, otherwise Params will be untouched.

Definition at line 48 of file PathMapping.cpp.

References applyPathMappings(), Dir, doPathMapping(), K, and Kind.

Referenced by applyPathMappings().

◆ asCommand()

static std::optional< Command > clang::clangd::asCommand ( const CodeAction Action)
static

Definition at line 1031 of file ClangdLSPServer.cpp.

References Action, and asCommand().

Referenced by asCommand().

◆ buildCompilerInvocation()

std::unique_ptr< CompilerInvocation > clang::clangd::buildCompilerInvocation ( const ParseInputs Inputs,
clang::DiagnosticConsumer &  D,
std::vector< std::string > *  CC1Args 
)

Builds compiler invocation that could be used to build AST or preamble.

Definition at line 95 of file Compiler.cpp.

References CI, clang::clangd::ParseInputs::CompileCommand, disableUnsupportedOptions(), clang::clangd::ParseInputs::TFS, and clang::clangd::ThreadsafeFS::view().

Referenced by clang::clangd::TestTU::build(), and clang::clangd::TestTU::preamble().

◆ buildPreamble()

std::shared_ptr< const PreambleData > clang::clangd::buildPreamble ( PathRef  FileName,
CompilerInvocation  CI,
const ParseInputs Inputs,
bool  StoreInMemory,
PreambleParsedCallback  PreambleCallback,
PreambleBuildStats Stats = nullptr 
)

◆ buildRenameEdit()

llvm::Expected< Edit > clang::clangd::buildRenameEdit ( llvm::StringRef  AbsFilePath,
llvm::StringRef  InitialCode,
std::vector< SymbolRange Occurrences,
llvm::ArrayRef< llvm::StringRef >  NewNames 
)

Generates rename edits that replaces all given occurrences with the NewName.

Exposed for testing only. REQUIRED: Occurrences is sorted and doesn't have duplicated ranges.

Definition at line 1157 of file Rename.cpp.

References clang::clangd::Range::end, error(), clang::clangd::Position::line, Offset, positionToOffset(), SPAN_ATTACH, and clang::clangd::Range::start.

◆ buildTestFS()

llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem > clang::clangd::buildTestFS ( llvm::StringMap< std::string > const &  Files,
llvm::StringMap< time_t > const &  Timestamps 
)

Definition at line 33 of file TestFS.cpp.

References File, and testRoot().

Referenced by clang::clangd::MockFS::viewImpl().

◆ calculateRoles()

CharTypeSet clang::clangd::calculateRoles ( llvm::StringRef  Text,
llvm::MutableArrayRef< CharRole Roles 
)

◆ cancelableTask()

std::pair< Context, Canceler > clang::clangd::cancelableTask ( int  Reason = 1)

Defines a new task whose cancellation may be requested.

The returned Context defines the scope of the task. When the context is active, isCancelled() is 0 until the Canceler is invoked, and equal to Reason afterwards. Conventionally, Reason may be the LSP error code to return.

Definition at line 24 of file Cancellation.cpp.

References clang::clangd::CancelState::Cancelled, clang::clangd::Context::current(), clang::clangd::Context::derive(), clang::clangd::Context::get(), clang::clangd::CancelState::Parent, and StateKey.

◆ canonicalize()

static llvm::SmallString< 128 > clang::clangd::canonicalize ( llvm::StringRef  Path)
static

◆ categorize() [1/3]

static SymbolQualitySignals::SymbolCategory clang::clangd::categorize ( const CodeCompletionResult &  R)
static

◆ categorize() [2/3]

static SymbolQualitySignals::SymbolCategory clang::clangd::categorize ( const index::SymbolInfo &  D)
static

◆ categorize() [3/3]

static SymbolQualitySignals::SymbolCategory clang::clangd::categorize ( const NamedDecl &  ND)
static

◆ check()

bool clang::clangd::check ( llvm::StringRef  File,
const ThreadsafeFS TFS,
const ClangdLSPServer::Options Opts 
)

Definition at line 462 of file Check.cpp.

References C, check(), elog(), and ParseError.

Referenced by check(), and clangdMain().

◆ chooseConditionalBranches()

void clang::clangd::chooseConditionalBranches ( DirectiveTree ,
const TokenStream Code 
)

Selects a "taken" branch for each conditional directive in the file.

The choice is somewhat arbitrary, but aims to produce a useful parse:

  • idioms like #if 0 are respected
  • we avoid paths that reach #error
  • we try to maximize the amount of code seen The choice may also be "no branch taken".

Choices are also made for conditionals themselves inside not-taken branches: #if 1 // taken! #else // not taken #if 1 // taken! #endif #endif

The choices are stored in Conditional::Taken nodes.

Definition at line 318 of file DirectiveTree.cpp.

Referenced by getFoldingRanges().

◆ clangdMain()

int clang::clangd::clangdMain ( int  argc,
char *  argv[] 
)

Definition at line 731 of file ClangdMain.cpp.

References abortAfterTimeout(), allowCrashPragmasForTest(), clang::clangd::CodeCompleteOptions::BundleOverloads, CantRunAsXPCService, check(), CheckFailed, clang::clangd::config::Provider::combine(), combine(), clang::clangd::trace::createCSVMetricTracer(), clang::clangd::trace::createJSONTracer(), createPathMappingTransport(), createProjectAwareIndex(), clang::clangd::CodeCompleteOptions::DecisionForest, Delimited, disableUnusableChecks(), elog(), Error, featureString(), clang::clangd::CodeCompleteOptions::ForceLoadPreamble, clang::clangd::config::Provider::fromAncestorRelativeYAMLFiles(), clang::clangd::config::Provider::fromYAMLFile(), clang::clangd::CodeCompleteOptions::ImportInsertions, clang::clangd::CodeCompleteOptions::IncludeIndicator, clang::clangd::CodeCompleteOptions::IncludeIneligibleResults, clang::clangd::CodeCompleteOptions::IncludeInsertionIndicator::Insert, clang::clangd::CodeCompleteOptions::InsertIncludes, clang::clangd::CodeCompleteOptions::Limit, log(), newJSONTransport(), newXPCTransport(), clang::clangd::CodeCompleteOptions::IncludeInsertionIndicator::NoInsert, NoShutdownRequest, OS, parsePathMappings(), platformString(), clang::clangd::BackgroundQueue::preventThreadStarvationInTests(), provideClangdConfig(), provideClangTidyFiles(), provideDefaultChecks(), provideEnvironment(), clang::clangd::CodeCompleteOptions::RankingModel, requestShutdown(), clang::clangd::ClangdLSPServer::run(), clang::clangd::ThreadCrashReporter::runCrashHandlers(), clang::clangd::CodeCompleteOptions::RunParser, clang::clangd::CodeCompleteOptions::ShowOrigins, UnsupportedEncoding, clang::clangd::Logger::Verbose, versionString(), vlog(), and X.

Referenced by main().

◆ cleanupAndFormat()

llvm::Expected< tooling::Replacements > clang::clangd::cleanupAndFormat ( StringRef  Code,
const tooling::Replacements &  Replaces,
const format::FormatStyle &  Style 
)

Cleanup and format the given replacements.

Definition at line 612 of file SourceCode.cpp.

References Replaces.

Referenced by reformatEdit().

◆ cls()

Symbol clang::clangd::cls ( llvm::StringRef  Name)

Definition at line 66 of file TestIndex.cpp.

References Name, and sym().

◆ codeComplete()

CodeCompleteResult clang::clangd::codeComplete ( PathRef  FileName,
Position  Pos,
const PreambleData Preamble,
const ParseInputs ParseInput,
CodeCompleteOptions  Opts,
SpeculativeFuzzyFind SpecFuzzyFind = nullptr 
)

Gets code completions at a specified Pos in FileName.

If Preamble is nullptr, this runs code completion without compiling the code.

If SpecFuzzyFind is set, a speculative and asynchronous fuzzy find index request (based on cached request) will be run before parsing sema. In case the speculative result is used by code completion (e.g. speculation failed), the speculative result is not consumed, and SpecFuzzyFind is only destroyed when the async request finishes.

Definition at line 2229 of file CodeComplete.cpp.

References codeComplete(), codeCompleteComment(), elog(), FileName, maybeFunctionArgumentCommentStart(), Offset, ParseInput, Pos, positionToOffset(), and Preamble.

Referenced by clang::clangd::ClangdServer::codeComplete(), and codeComplete().

◆ codeCompleteComment()

CodeCompleteResult clang::clangd::codeCompleteComment ( PathRef  FileName,
unsigned  Offset,
llvm::StringRef  Prefix,
const PreambleData Preamble,
const ParseInputs ParseInput 
)

◆ collectAccessibleScopes()

std::vector< std::string > clang::clangd::collectAccessibleScopes ( Sema &  Sem,
const DeclarationNameInfo &  Typo,
Scope *  S,
Sema::LookupNameKind  LookupKind 
)

Returns all namespace scopes that the unqualified lookup would visit.

Definition at line 467 of file clangd/IncludeFixer.cpp.

References Out, and printNamespaceScope().

Referenced by clang::clangd::IncludeFixer::UnresolvedNameRecorder::CorrectTypo().

◆ collectIdentifierRanges()

std::vector< Range > clang::clangd::collectIdentifierRanges ( llvm::StringRef  Identifier,
llvm::StringRef  Content,
const LangOptions &  LangOpts 
)

Collects all ranges of the given identifier in the source code.

Definition at line 646 of file SourceCode.cpp.

References halfOpenToRange(), Identifier, lex(), and clang::clangd::Token::text().

◆ collectIdentifiers()

llvm::StringMap< unsigned > clang::clangd::collectIdentifiers ( llvm::StringRef  Content,
const format::FormatStyle &  Style 
)

Collects identifiers with counts in the source code.

Definition at line 632 of file SourceCode.cpp.

References Keyword, lex(), and clang::clangd::Token::text().

◆ collectMacroReferences()

std::vector< include_cleaner::SymbolReference > clang::clangd::collectMacroReferences ( ParsedAST AST)

Definition at line 299 of file IncludeCleaner.cpp.

References AST, Loc, locateMacroAt(), Macro, and clang::clangd::Token::text().

Referenced by computeIncludeCleanerFindings().

◆ collectPragmaMarksCallback()

std::unique_ptr< PPCallbacks > clang::clangd::collectPragmaMarksCallback ( const SourceManager &  SM,
std::vector< PragmaMark > &  Out 
)

Collect all pragma marks from the main file.

Definition at line 126 of file CollectMacros.cpp.

References Out.

◆ collectWords()

llvm::StringSet clang::clangd::collectWords ( llvm::StringRef  Content)

Collects words from the source code.

Unlike collectIdentifiers:

  • also finds text in comments:
  • splits text into words
  • drops stopwords like "get" and "for"

Definition at line 871 of file SourceCode.cpp.

References C, calculateRoles(), collectWords(), Head, Separator, Tail, Unknown, and Word.

Referenced by collectWords().

◆ combine()

TidyProvider clang::clangd::combine ( std::vector< TidyProvider Providers)

Definition at line 274 of file TidyProvider.cpp.

References combine(), and Filename.

Referenced by clangdMain(), and combine().

◆ computeIncludeCleanerFindings()

IncludeCleanerFindings clang::clangd::computeIncludeCleanerFindings ( ParsedAST AST,
bool  AnalyzeAngledIncludes 
)

◆ computeScope()

static SymbolRelevanceSignals::AccessibleScope clang::clangd::computeScope ( const NamedDecl *  D)
static

◆ conceptSym()

Symbol clang::clangd::conceptSym ( llvm::StringRef  Name)

Definition at line 86 of file TestIndex.cpp.

References Name, and sym().

◆ convertIncludes()

include_cleaner::Includes clang::clangd::convertIncludes ( const ParsedAST AST)

Converts the clangd include representation to include-cleaner include representation.

Definition at line 327 of file IncludeCleaner.cpp.

References AST, Dir, and elog().

Referenced by computeIncludeCleanerFindings().

◆ cook() [1/2]

TokenStream clang::clangd::cook ( const TokenStream ,
const clang::LangOptions &   
)

Decoding raw tokens written in the source code, returning a derived stream.

  • escaped newlines within tokens are removed
  • trigraphs are replaced with the characters they encode
  • UCNs within raw_identifiers are replaced by the characters they encode (UCNs within strings, comments etc are not translated)
  • raw_identifier tokens are assigned their correct keyword type
  • the >> token is split into separate > > tokens (we use a modified grammar where >> is a nonterminal, not a token)

The StartsPPLine flag is preserved.

Formally the identifier correctly happens before preprocessing, while we should only cook raw_identifiers that survive preprocessing. However, ignoring the Token::Kind of tokens in directives achieves the same. (And having cooked token kinds in PP-disabled sections is useful for us).

◆ cook() [2/2]

TokenStream clang::clangd::cook ( const TokenStream Code,
const LangOptions &  LangOpts 
)

◆ createIndex()

std::unique_ptr< SymbolIndex > clang::clangd::createIndex ( )

Definition at line 29 of file ProjectAwareIndexTests.cpp.

References clang::clangd::MemIndex::build(), Builder, and symbol().

Referenced by TEST().

◆ createPathMappingTransport()

std::unique_ptr< Transport > clang::clangd::createPathMappingTransport ( std::unique_ptr< Transport Transp,
PathMappings  Mappings 
)

Creates a wrapping transport over Transp that applies the Mappings to all inbound and outbound LSP messages.

All calls are then delegated to the regular transport (e.g. XPC, JSON).

Definition at line 190 of file PathMapping.cpp.

Referenced by clangdMain().

◆ createProjectAwareIndex()

std::unique_ptr< SymbolIndex > clang::clangd::createProjectAwareIndex ( IndexFactory  ,
bool  Sync 
)

Returns an index that answers queries using external indices.

IndexFactory specifies how to generate an index from an external source. If Sync is set, index won't own any asnyc task runner. IndexFactory must be injected because this code cannot depend on the remote index client.

Definition at line 148 of file ProjectAware.cpp.

Referenced by clangdMain(), and TEST().

◆ createScopeFileDistance()

static FileDistance clang::clangd::createScopeFileDistance ( llvm::ArrayRef< std::string >  QueryScopes)
static

◆ createStaticIndexingAction()

std::unique_ptr< FrontendAction > clang::clangd::createStaticIndexingAction ( SymbolCollector::Options  Opts,
std::function< void(SymbolSlab)>  SymbolsCallback,
std::function< void(RefSlab)>  RefsCallback,
std::function< void(RelationSlab)>  RelationsCallback,
std::function< void(IncludeGraph)>  IncludeGraphCallback 
)

Definition at line 212 of file IndexAction.cpp.

References All, Static, and Unknown.

Referenced by indexStandardLibrary().

◆ currentContext()

static Context & clang::clangd::currentContext ( )
static

◆ declaredType()

QualType clang::clangd::declaredType ( const TypeDecl *  D)

Definition at line 438 of file AST.cpp.

References Args.

◆ declToCallHierarchyItem()

static std::optional< CallHierarchyItem > clang::clangd::declToCallHierarchyItem ( const NamedDecl &  ND,
llvm::StringRef  TUPath 
)
static

Definition at line 1722 of file XRefs.cpp.

References declToCallHierarchyItem(), getSymbolID(), and ID.

Referenced by declToCallHierarchyItem(), and prepareCallHierarchy().

◆ declToHierarchyItem()

template<typename HierarchyItem >
static std::optional< HierarchyItem > clang::clangd::declToHierarchyItem ( const NamedDecl &  ND,
llvm::StringRef  TUPath 
)
static

◆ declToTypeHierarchyItem()

static std::optional< TypeHierarchyItem > clang::clangd::declToTypeHierarchyItem ( const NamedDecl &  ND,
llvm::StringRef  TUPath 
)
static

Definition at line 1708 of file XRefs.cpp.

References declToTypeHierarchyItem(), and getSymbolID().

Referenced by declToTypeHierarchyItem(), fillSuperTypes(), and getTypeHierarchy().

◆ deleteModuleCache()

void clang::clangd::deleteModuleCache ( const std::string  ModuleCachePath)

Definition at line 90 of file TestTU.cpp.

Referenced by clang::clangd::TestTU::build(), and clang::clangd::TestTU::preamble().

◆ diffTokens()

std::vector< SemanticTokensEdit > clang::clangd::diffTokens ( llvm::ArrayRef< SemanticToken Old,
llvm::ArrayRef< SemanticToken New 
)

Definition at line 1524 of file SemanticHighlighting.cpp.

References diffTokens(), and Offset.

Referenced by diffTokens().

◆ digest() [1/2]

FileDigest clang::clangd::digest ( llvm::StringRef  Content)

Definition at line 565 of file SourceCode.cpp.

Referenced by digestFile().

◆ digest() [2/2]

FileDigest clang::clangd::digest ( StringRef  Content)

◆ digestFile()

std::optional< FileDigest > clang::clangd::digestFile ( const SourceManager &  SM,
FileID  FID 
)

Definition at line 575 of file SourceCode.cpp.

References digest().

◆ disableUnsupportedOptions()

void clang::clangd::disableUnsupportedOptions ( CompilerInvocation &  CI)

Clears CI from options that are not supported by clangd, like codegen or plugins.

This should be combined with CommandMangler::adjust, which provides similar functionality for options that needs to be stripped from compile flags.

Definition at line 46 of file Compiler.cpp.

References AllowCrashPragmasForTest, and CI.

Referenced by buildCompilerInvocation().

◆ disableUnusableChecks()

TidyProvider clang::clangd::disableUnusableChecks ( llvm::ArrayRef< std::string >  ExtraBadChecks = {})

Provider that will disable checks known to not work with clangd.

ExtraBadChecks specifies any other checks that should be always disabled.

Definition at line 197 of file TidyProvider.cpp.

References disableUnusableChecks(), and Separator.

Referenced by clangdMain(), and disableUnusableChecks().

◆ doPathMapping()

std::optional< std::string > clang::clangd::doPathMapping ( llvm::StringRef  S,
PathMapping::Direction  Dir,
const PathMappings Mappings 
)

Returns a modified S with the first matching path in Mappings substituted, if applicable.

Definition at line 20 of file PathMapping.cpp.

References clang::clangd::PathMapping::ClientToServer, Dir, clang::clangd::URI::parse(), and clang::clangd::URI::toString().

Referenced by applyPathMappings().

◆ dumpAST()

ASTNode clang::clangd::dumpAST ( const DynTypedNode &  N,
const syntax::TokenBuffer &  Tokens,
const ASTContext &  Ctx 
)

Definition at line 416 of file DumpAST.cpp.

References Decl, and elog().

Referenced by clang::clangd::ClangdServer::getAST().

◆ elog()

template<typename... Ts>
void clang::clangd::elog ( const char *  Fmt,
Ts &&...  Vals 
)

◆ encodeFloat()

static uint32_t clang::clangd::encodeFloat ( float  F)
static

Definition at line 537 of file Quality.cpp.

Referenced by sortText().

◆ encodeTokens()

static llvm::json::Value clang::clangd::encodeTokens ( llvm::ArrayRef< SemanticToken Toks)
static

Definition at line 1261 of file Protocol.cpp.

References SemanticTokenEncodingSize.

Referenced by toJSON().

◆ enm()

Symbol clang::clangd::enm ( llvm::StringRef  Name)

Definition at line 70 of file TestIndex.cpp.

References Name, and sym().

◆ enmConstant()

Symbol clang::clangd::enmConstant ( llvm::StringRef  Name)

Definition at line 74 of file TestIndex.cpp.

References Name, and sym().

◆ error() [1/4]

template<typename... Ts>
llvm::Error clang::clangd::error ( const char *  Fmt,
Ts &&...  Vals 
)

Definition at line 85 of file Logger.h.

References clang::clangd::detail::error(), and clang::clangd::detail::wrap().

◆ error() [2/4]

template<typename... Ts>
llvm::Error clang::clangd::error ( std::error_code  EC,
const char *  Fmt,
Ts &&...  Vals 
)

◆ error() [3/4]

llvm::Error clang::clangd::error ( std::error_code  EC,
std::string  Msg 
)
inline

Definition at line 91 of file Logger.h.

References clang::clangd::detail::error().

◆ error() [4/4]

llvm::Error clang::clangd::error ( std::string  Msg)
inline

Definition at line 95 of file Logger.h.

References clang::clangd::detail::error().

◆ escapeBackslashAndQuotes()

void clang::clangd::escapeBackslashAndQuotes ( llvm::StringRef  Text,
llvm::raw_ostream &  OS 
)

Definition at line 759 of file Preamble.cpp.

References C, OS, and Text.

◆ evaluateDecisionForest()

DecisionForestScores clang::clangd::evaluateDecisionForest ( const SymbolQualitySignals Quality,
const SymbolRelevanceSignals Relevance,
float  Base 
)

Definition at line 18 of file DecisionForest.cpp.

◆ evaluateSymbolAndRelevance()

float clang::clangd::evaluateSymbolAndRelevance ( float  SymbolQuality,
float  SymbolRelevance 
)

Combine symbol quality and relevance into a single score.

Definition at line 531 of file Quality.cpp.

Referenced by getWorkspaceSymbols(), and locateSymbolTextually().

◆ explicitReferenceTargets()

llvm::SmallVector< const NamedDecl *, 1 > clang::clangd::explicitReferenceTargets ( DynTypedNode  N,
DeclRelationSet  Mask,
const HeuristicResolver Resolver 
)

Find declarations explicitly referenced in the source code defined by N.

For templates, will prefer to return a template instantiation whenever possible. However, can also return a template pattern if the specialization cannot be picked, e.g. in dependent code or when there is no corresponding Decl for a template instantiation, e.g. for templated using decls: template <class T> using Ptr = T*; Ptr<int> x; ^~~ there is no Decl for 'Ptr<int>', so we return the template pattern. Mask should not contain TemplatePattern or TemplateInstantiation.

Definition at line 593 of file FindTarget.cpp.

References allTargetDecls(), TemplateInstantiation, and TemplatePattern.

Referenced by findRecordTypeAt(), and getHover().

◆ extractUnresolvedNameCheaply()

std::optional< CheapUnresolvedName > clang::clangd::extractUnresolvedNameCheaply ( const SourceManager &  SM,
const DeclarationNameInfo &  Unresolved,
CXXScopeSpec *  SS,
const LangOptions &  LangOpts,
bool  UnresolvedIsSpecifier 
)

◆ featureString()

std::string clang::clangd::featureString ( )

Definition at line 33 of file Feature.cpp.

Referenced by clangdMain().

◆ filenameWithoutExtension()

static llvm::StringRef clang::clangd::filenameWithoutExtension ( llvm::StringRef  Path)
static

Definition at line 153 of file Background.cpp.

Referenced by clang::clangd::BackgroundIndex::boostRelated().

◆ fileProximityScore()

static float clang::clangd::fileProximityScore ( unsigned  FileDistance)
static

◆ fillNonLocationData()

static void clang::clangd::fillNonLocationData ( DiagnosticsEngine::Level  DiagLevel,
const clang::Diagnostic &  Info,
clangd::DiagBase D 
)
static

Fills D with all information, except the location-related bits.

Also note that ID and Name are not part of clangd::DiagBase and should be set elsewhere.

Definition at line 658 of file Diagnostics.cpp.

References Info.

Referenced by clang::clangd::StoreDiags::HandleDiagnostic().

◆ fillSubTypes()

static void clang::clangd::fillSubTypes ( const SymbolID ID,
std::vector< TypeHierarchyItem > &  SubTypes,
const SymbolIndex Index,
int  Levels,
PathRef  TUPath 
)
static

◆ fillSuperTypes()

static void clang::clangd::fillSuperTypes ( const CXXRecordDecl &  CXXRD,
llvm::StringRef  TUPath,
TypeHierarchyItem Item,
RecursionProtectionSet RPSet 
)
static

◆ findDecl() [1/2]

const NamedDecl & clang::clangd::findDecl ( ParsedAST AST,
llvm::StringRef  QName 
)

Definition at line 219 of file TestTU.cpp.

References AST, and Name.

Referenced by findUnqualifiedDecl().

◆ findDecl() [2/2]

const NamedDecl & clang::clangd::findDecl ( ParsedAST AST,
std::function< bool(const NamedDecl &)>  Filter 
)

Definition at line 239 of file TestTU.cpp.

References AST.

◆ findDocumentHighlights()

std::vector< DocumentHighlight > clang::clangd::findDocumentHighlights ( ParsedAST AST,
Position  Pos 
)

Returns highlights for all usages of a symbol at Pos.

Definition at line 1218 of file XRefs.cpp.

References Alias, AST, clang::clangd::SelectionTree::createEach(), Loc, Offset, Pos, sourceLocationInMainFile(), targetDecl(), and TemplatePattern.

Referenced by clang::clangd::ClangdServer::findDocumentHighlights().

◆ findExplicitReferences() [1/3]

void clang::clangd::findExplicitReferences ( const ASTContext &  AST,
llvm::function_ref< void(ReferenceLoc)>  Out,
const HeuristicResolver Resolver 
)

Definition at line 1174 of file FindTarget.cpp.

References AST, and Out.

◆ findExplicitReferences() [2/3]

void clang::clangd::findExplicitReferences ( const Decl D,
llvm::function_ref< void(ReferenceLoc)>  Out,
const HeuristicResolver Resolver 
)

Definition at line 1168 of file FindTarget.cpp.

References Decl, and Out.

◆ findExplicitReferences() [3/3]

void clang::clangd::findExplicitReferences ( const Stmt *  S,
llvm::function_ref< void(ReferenceLoc)>  Out,
const HeuristicResolver Resolver 
)

Recursively traverse S and report all references explicitly written in the code.

The main use-case is refactorings that need to process all references in some subrange of the file and apply simple edits, e.g. add qualifiers. FIXME: currently this does not report references to overloaded operators. FIXME: extend to report location information about declaration names too.

Definition at line 1162 of file FindTarget.cpp.

References Out.

Referenced by clang::clangd::ASTSignals::derive(), getNonLocalDeclRefs(), and getSemanticHighlightings().

◆ findImplementations()

std::vector< LocatedSymbol > clang::clangd::findImplementations ( ParsedAST AST,
Position  Pos,
const SymbolIndex Index 
)

Returns implementations at a specified Pos:

  • overrides for a virtual method;
  • subclasses for a base class;

Definition at line 1259 of file XRefs.cpp.

References Alias, AST, BaseOf, elog(), getSymbolID(), OverriddenBy, Pos, sourceLocationInMainFile(), and TemplatePattern.

Referenced by clang::clangd::ClangdServer::findImplementations().

◆ findNearbyIdentifier()

const syntax::Token * clang::clangd::findNearbyIdentifier ( const SpelledWord Word,
const syntax::TokenBuffer &  TB 
)

Definition at line 656 of file XRefs.cpp.

References File, Line, Loc, clang::clangd::Token::text(), vlog(), and Word.

Referenced by locateSymbolAt().

◆ findRecordTypeAt()

std::vector< const CXXRecordDecl * > clang::clangd::findRecordTypeAt ( ParsedAST AST,
Position  Pos 
)

Find the record types referenced at Pos.

Definition at line 1827 of file XRefs.cpp.

References explicitReferenceTargets(), findRecordTypeAt(), Method, Offset, Pos, positionToOffset(), and Records.

Referenced by findRecordTypeAt(), and getTypeHierarchy().

◆ findReferences()

ReferencesResult clang::clangd::findReferences ( ParsedAST AST,
Position  Pos,
uint32_t  Limit,
const SymbolIndex Index = nullptr,
bool  AddContext = false 
)

◆ findSymbol()

const Symbol & clang::clangd::findSymbol ( const SymbolSlab Slab,
llvm::StringRef  QName 
)

Definition at line 185 of file TestTU.cpp.

◆ findType()

std::vector< LocatedSymbol > clang::clangd::findType ( ParsedAST AST,
Position  Pos,
const SymbolIndex Index 
)

Returns symbols for types referenced at Pos.

For example, given b^ar() wher bar return Foo, this function returns the definition of class Foo.

Definition at line 2053 of file XRefs.cpp.

References elog(), findType(), Offset, Pos, positionToOffset(), Type, typeForNode(), and unwrapFindType().

Referenced by findType(), and clang::clangd::ClangdServer::findType().

◆ findUnqualifiedDecl()

const NamedDecl & clang::clangd::findUnqualifiedDecl ( ParsedAST AST,
llvm::StringRef  Name 
)

Definition at line 260 of file TestTU.cpp.

References AST, findDecl(), ID, and Name.

◆ flattenSymbolHierarchy()

static std::vector< SymbolInformation > clang::clangd::flattenSymbolHierarchy ( llvm::ArrayRef< DocumentSymbol Symbols,
const URIForFile FileURI 
)
static

◆ formatDocumentation()

std::string clang::clangd::formatDocumentation ( const CodeCompletionString &  CCS,
llvm::StringRef  DocComment 
)

Assembles formatted documentation for a completion result.

This includes documentation comments and other relevant information like annotations.

Parameters
DocCommentis a documentation comment for the original declaration, it should be obtained via getDocComment or getParameterDocComment.

Definition at line 282 of file CodeCompletionStrings.cpp.

◆ formatIncremental()

std::vector< tooling::Replacement > clang::clangd::formatIncremental ( llvm::StringRef  Code,
unsigned  Cursor,
llvm::StringRef  InsertedText,
format::FormatStyle  Style 
)

Applies limited formatting around new InsertedText.

The Code already contains the updated text before Cursor, and may have had additional / characters (such as indentation) inserted by the editor.

Example breaking a line (^ is the cursor): === before newline is typed === if(1){^} === after newline is typed and editor indents === if(1){ ^} === after formatIncremental(InsertedText="\n") === if (1) { ^ }

We return sorted vector<tooling::Replacement>, not tooling::Replacements! We may insert text both before and after the cursor. tooling::Replacements would merge these, and thus lose information about cursor position.

Definition at line 277 of file Format.cpp.

References dlog, elog(), Filename, Incremental, and vlog().

Referenced by clang::clangd::ClangdServer::formatOnType().

◆ formatOffset()

static std::string clang::clangd::formatOffset ( uint64_t  OffsetInBits)
static

Definition at line 1417 of file Hover.cpp.

References formatSize(), and Offset.

Referenced by clang::clangd::HoverInfo::present().

◆ formatSize()

static std::string clang::clangd::formatSize ( uint64_t  SizeInBits)
static

Definition at line 1409 of file Hover.cpp.

References Unit, and Value.

Referenced by formatOffset(), and clang::clangd::HoverInfo::present().

◆ fromJSON() [1/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  ,
NoParams ,
llvm::json::Path   
)
inline

Definition at line 318 of file Protocol.h.

◆ fromJSON() [2/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
CompletionItemKind Out,
llvm::json::Path  P 
)

Definition at line 1067 of file Protocol.cpp.

References E, Out, Text, and TypeParameter.

◆ fromJSON() [3/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
CompletionItemKindBitset Out,
llvm::json::Path  P 
)

Definition at line 1101 of file Protocol.cpp.

References E, fromJSON(), and Out.

◆ fromJSON() [4/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
FileChangeType Out,
llvm::json::Path  P 
)

Definition at line 640 of file Protocol.cpp.

References Created, Deleted, E, and Out.

◆ fromJSON() [5/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
SymbolID S,
llvm::json::Path  P 
)

Definition at line 1726 of file Protocol.cpp.

References E, elog(), clang::clangd::SymbolID::fromStr(), and ID.

◆ fromJSON() [6/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
SymbolKind Out,
llvm::json::Path  P 
)

Definition at line 256 of file Protocol.cpp.

References E, and Out.

◆ fromJSON() [7/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
SymbolKindBitset Out,
llvm::json::Path  P 
)

Definition at line 267 of file Protocol.cpp.

References E, fromJSON(), and Out.

◆ fromJSON() [8/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
TraceLevel Out,
llvm::json::Path  P 
)

Definition at line 238 of file Protocol.cpp.

References E, Messages, Off, Out, and Verbose.

◆ fromJSON() [9/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
TypeHierarchyDirection Out,
llvm::json::Path  P 
)

Definition at line 1366 of file Protocol.cpp.

References Both, Children, E, and Out.

◆ fromJSON() [10/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  E,
URIForFile R,
llvm::json::Path  P 
)

Definition at line 67 of file Protocol.cpp.

References E, clang::clangd::URIForFile::fromURI(), and clang::clangd::URI::parse().

◆ fromJSON() [11/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Parameters,
FuzzyFindRequest Request,
llvm::json::Path  P 
)

◆ fromJSON() [12/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ASTParams R,
llvm::json::Path  P 
)

◆ fromJSON() [13/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CallHierarchyIncomingCallsParams C,
llvm::json::Path  P 
)

Definition at line 1485 of file Protocol.cpp.

References C.

◆ fromJSON() [14/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CallHierarchyItem I,
llvm::json::Path  P 
)

◆ fromJSON() [15/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CallHierarchyOutgoingCallsParams C,
llvm::json::Path  P 
)

Definition at line 1495 of file Protocol.cpp.

References C.

◆ fromJSON() [16/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ChangeAnnotation R,
llvm::json::Path  P 
)

◆ fromJSON() [17/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ClangdCompileCommand CDbUpdate,
llvm::json::Path  P 
)

◆ fromJSON() [18/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ClientCapabilities R,
llvm::json::Path  P 
)

Definition at line 359 of file Protocol.cpp.

References clang::clangd::ClientCapabilities::CancelsStaleRequests, clang::clangd::ClientCapabilities::ChangeAnnotation, clang::clangd::ClientCapabilities::CodeActionStructure, clang::clangd::ClientCapabilities::CompletionDocumentationFormat, clang::clangd::ClientCapabilities::CompletionFixes, clang::clangd::ClientCapabilities::CompletionItemKinds, clang::clangd::ClientCapabilities::CompletionLabelDetail, clang::clangd::ClientCapabilities::CompletionSnippets, clang::clangd::ClientCapabilities::DiagnosticCategory, clang::clangd::ClientCapabilities::DiagnosticFixes, clang::clangd::ClientCapabilities::DiagnosticRelatedInformation, Diagnostics, clang::clangd::ClientCapabilities::DocumentChanges, fromJSON(), clang::clangd::ClientCapabilities::HasSignatureHelp, clang::clangd::ClientCapabilities::HierarchicalDocumentSymbol, clang::clangd::ClientCapabilities::HoverContentFormat, clang::clangd::ClientCapabilities::ImplicitProgressCreation, clang::clangd::ClientCapabilities::InactiveRegions, Info, clang::clangd::ClientCapabilities::LineFoldingOnly, clang::clangd::ClientCapabilities::offsetEncoding, clang::clangd::ClientCapabilities::OffsetsInSignatureHelp, Parameter, clang::clangd::ClientCapabilities::ReferenceContainer, References, clang::clangd::ClientCapabilities::RenamePrepareSupport, clang::clangd::ClientCapabilities::SemanticTokenRefreshSupport, clang::clangd::ClientCapabilities::SemanticTokens, clang::clangd::ClientCapabilities::SignatureHelpDocumentationFormat, clang::clangd::ClientCapabilities::TheiaSemanticHighlighting, clang::clangd::ClientCapabilities::WorkDoneProgress, and clang::clangd::ClientCapabilities::WorkspaceSymbolKinds.

◆ fromJSON() [19/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CodeActionContext R,
llvm::json::Path  P 
)

◆ fromJSON() [20/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CodeActionParams R,
llvm::json::Path  P 
)

◆ fromJSON() [21/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CompletionContext R,
llvm::json::Path  P 
)

◆ fromJSON() [22/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
CompletionParams R,
llvm::json::Path  P 
)

◆ fromJSON() [23/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ConfigurationSettings S,
llvm::json::Path  P 
)

Definition at line 1345 of file Protocol.cpp.

◆ fromJSON() [24/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
Diagnostic R,
llvm::json::Path  P 
)

◆ fromJSON() [25/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidChangeConfigurationParams CCP,
llvm::json::Path  P 
)

◆ fromJSON() [26/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidChangeTextDocumentParams R,
llvm::json::Path  P 
)

◆ fromJSON() [27/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidChangeWatchedFilesParams R,
llvm::json::Path  P 
)

Definition at line 658 of file Protocol.cpp.

References clang::clangd::DidChangeWatchedFilesParams::changes.

◆ fromJSON() [28/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidCloseTextDocumentParams R,
llvm::json::Path  P 
)

◆ fromJSON() [29/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidOpenTextDocumentParams R,
llvm::json::Path  P 
)

◆ fromJSON() [30/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DidSaveTextDocumentParams R,
llvm::json::Path  P 
)

◆ fromJSON() [31/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DocumentFormattingParams R,
llvm::json::Path  P 
)

◆ fromJSON() [32/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DocumentLinkParams R,
llvm::json::Path  P 
)

Definition at line 1640 of file Protocol.cpp.

References clang::clangd::DocumentLinkParams::textDocument.

◆ fromJSON() [33/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DocumentOnTypeFormattingParams R,
llvm::json::Path  P 
)

◆ fromJSON() [34/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DocumentRangeFormattingParams R,
llvm::json::Path  P 
)

◆ fromJSON() [35/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
DocumentSymbolParams R,
llvm::json::Path  P 
)

Definition at line 690 of file Protocol.cpp.

References clang::clangd::DocumentSymbolParams::textDocument.

◆ fromJSON() [36/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ExecuteCommandParams R,
llvm::json::Path  P 
)

◆ fromJSON() [37/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
FileEvent R,
llvm::json::Path  P 
)

Definition at line 652 of file Protocol.cpp.

References clang::clangd::FileEvent::type, and clang::clangd::FileEvent::uri.

◆ fromJSON() [38/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
FoldingRangeParams R,
llvm::json::Path  P 
)

Definition at line 1653 of file Protocol.cpp.

References clang::clangd::FoldingRangeParams::textDocument.

◆ fromJSON() [39/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
InitializationOptions Opts,
llvm::json::Path  P 
)

Definition at line 1354 of file Protocol.cpp.

References fromJSON().

◆ fromJSON() [40/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
InitializeParams R,
llvm::json::Path  P 
)

◆ fromJSON() [41/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
InlayHintsParams R,
llvm::json::Path  P 
)

◆ fromJSON() [42/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
Position R,
llvm::json::Path  P 
)

◆ fromJSON() [43/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
Range R,
llvm::json::Path  P 
)

Definition at line 138 of file Protocol.cpp.

References clang::clangd::Range::end, and clang::clangd::Range::start.

◆ fromJSON() [44/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ReferenceContext R,
llvm::json::Path  P 
)

◆ fromJSON() [45/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ReferenceParams R,
llvm::json::Path  P 
)

Definition at line 1446 of file Protocol.cpp.

References clang::clangd::ReferenceParams::context, and fromJSON().

◆ fromJSON() [46/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
RenameParams R,
llvm::json::Path  P 
)

◆ fromJSON() [47/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
ResolveTypeHierarchyItemParams R,
llvm::json::Path  P 
)

◆ fromJSON() [48/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
SelectionRangeParams S,
llvm::json::Path  P 
)

Definition at line 1625 of file Protocol.cpp.

◆ fromJSON() [49/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
SemanticTokensDeltaParams R,
llvm::json::Path  P 
)

◆ fromJSON() [50/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
SemanticTokensParams R,
llvm::json::Path  P 
)

Definition at line 1303 of file Protocol.cpp.

References clang::clangd::SemanticTokensParams::textDocument.

◆ fromJSON() [51/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextDocumentContentChangeEvent R,
llvm::json::Path  P 
)

◆ fromJSON() [52/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextDocumentEdit R,
llvm::json::Path  P 
)

◆ fromJSON() [53/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextDocumentIdentifier R,
llvm::json::Path  P 
)

Definition at line 102 of file Protocol.cpp.

References clang::clangd::TextDocumentIdentifier::uri.

◆ fromJSON() [54/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextDocumentItem R,
llvm::json::Path  P 
)

◆ fromJSON() [55/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextDocumentPositionParams R,
llvm::json::Path  P 
)

◆ fromJSON() [56/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TextEdit R,
llvm::json::Path  P 
)

◆ fromJSON() [57/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TweakArgs A,
llvm::json::Path  P 
)

Definition at line 966 of file Protocol.cpp.

◆ fromJSON() [58/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TypeHierarchyItem I,
llvm::json::Path  P 
)

◆ fromJSON() [59/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TypeHierarchyItem::ResolveParams RP,
llvm::json::Path  P 
)

◆ fromJSON() [60/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
TypeHierarchyPrepareParams R,
llvm::json::Path  P 
)

◆ fromJSON() [61/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
VersionedTextDocumentIdentifier R,
llvm::json::Path  P 
)

◆ fromJSON() [62/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
WorkspaceEdit R,
llvm::json::Path  P 
)

◆ fromJSON() [63/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Params,
WorkspaceSymbolParams R,
llvm::json::Path  P 
)

◆ fromJSON() [64/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  Response,
ApplyWorkspaceEditResponse R,
llvm::json::Path  P 
)

◆ fromJSON() [65/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  V,
MarkupKind K,
llvm::json::Path  P 
)

Definition at line 1027 of file Protocol.cpp.

References K, Markdown, and PlainText.

◆ fromJSON() [66/67]

bool clang::clangd::fromJSON ( const llvm::json::Value &  V,
OffsetEncoding OE,
llvm::json::Path  P 
)

Definition at line 1609 of file Protocol.cpp.

References UnsupportedEncoding, UTF16, UTF32, and UTF8.

◆ fromJSON() [67/67]

bool clang::clangd::fromJSON ( const TypeHierarchyItem::ResolveParams )

◆ func()

Symbol clang::clangd::func ( llvm::StringRef  Name)

Definition at line 62 of file TestIndex.cpp.

References Name, and sym().

◆ generateNumSymbols()

SymbolSlab clang::clangd::generateNumSymbols ( int  Begin,
int  End 
)

Definition at line 128 of file TestIndex.cpp.

References generateSymbols().

◆ generateSymbols()

SymbolSlab clang::clangd::generateSymbols ( std::vector< std::string >  QualifiedNames)

Definition at line 121 of file TestIndex.cpp.

References clang::clangd::SymbolSlab::Builder::insert(), and symbol().

Referenced by generateNumSymbols().

◆ genericLangOpts()

clang::LangOptions clang::clangd::genericLangOpts ( clang::Language  Lang,
clang::LangStandard::Kind  Standard 
)

A generic lang options suitable for lexing/parsing a langage.

Definition at line 96 of file Token.cpp.

References Lang, and Standard.

Referenced by getFoldingRanges().

◆ getAttributes()

std::vector< const Attr * > clang::clangd::getAttributes ( const DynTypedNode &  N)

Return attributes attached directly to a node.

Definition at line 636 of file AST.cpp.

References Decl.

◆ getBacktickQuoteRange()

std::optional< llvm::StringRef > clang::clangd::getBacktickQuoteRange ( llvm::StringRef  Line,
unsigned  Offset 
)

Definition at line 1575 of file Hover.cpp.

References Line, Offset, and Suffix.

Referenced by parseDocumentationLine().

◆ getCanonicalPath()

std::optional< std::string > clang::clangd::getCanonicalPath ( const FileEntryRef  F,
FileManager &  FileMgr 
)

Get the canonical path of F.

This means:

  • Absolute path
  • Symlinks resolved
  • No "." or ".." component
  • No duplicate or trailing directory separator

This function should be used when paths needs to be used outside the component that generate it, so that paths are normalized as much as possible.

Definition at line 520 of file SourceCode.cpp.

References Dir, and elog().

Referenced by declToHierarchyItem(), clang::clangd::Tweak::Effect::fileEdit(), clang::clangd::StoreDiags::HandleDiagnostic(), clang::clangd::IncludeStructure::RecordHeaders::InclusionDirective(), and clang::clangd::SymbolCollector::HeaderFileURICache::toURI().

◆ getContainedAutoParamType()

TemplateTypeParmTypeLoc clang::clangd::getContainedAutoParamType ( TypeLoc  TL)

Definition at line 597 of file AST.cpp.

References getContainedAutoParamType().

Referenced by getContainedAutoParamType().

◆ getCorrespondingHeaderOrSource() [1/2]

std::optional< Path > clang::clangd::getCorrespondingHeaderOrSource ( PathRef  OriginalFile,
llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem >  VFS 
)

Given a header file, returns the best matching source file, and vice visa.

It only uses the filename heuristics to do the inference.

Definition at line 21 of file HeaderSourceSwitch.cpp.

Referenced by clang::clangd::ClangdServer::switchSourceHeader().

◆ getCorrespondingHeaderOrSource() [2/2]

std::optional< Path > clang::clangd::getCorrespondingHeaderOrSource ( PathRef  OriginalFile,
ParsedAST AST,
const SymbolIndex Index 
)

Given a header file, returns the best matching source file, and vice visa.

The heuristics incorporate with the AST and the index (if provided).

Definition at line 67 of file HeaderSourceSwitch.cpp.

References AST, clang::clangd::Symbol::CanonicalDeclaration, clang::clangd::Symbol::Definition, elog(), clang::clangd::SymbolLocation::FileURI, getIndexableLocalDecls(), getSymbolID(), ID, clang::clangd::LookupRequest::IDs, isHeaderFile(), pathEqual(), and clang::clangd::URI::resolve().

◆ getCorrespondingObjCImpl()

const ObjCImplDecl * clang::clangd::getCorrespondingObjCImpl ( const ObjCContainerDecl *  D)

Return the corresponding implementation/definition for the given ObjC container if it has one, otherwise, return nullptr.

Objective-C classes can have three types of declarations:

  • forward declaration: "@class MyClass;"
  • true declaration (interface definition): "@interface MyClass ... @end"
  • true definition (implementation): "@implementation MyClass ... @end"

Objective-C categories are extensions on classes:

  • declaration: "@interface MyClass (Ext) ... @end"
  • definition: "@implementation MyClass (Ext) ... @end"

With one special case, a class extension, which is normally used to keep some declarations internal to a file without exposing them in a header.

  • class extension declaration: "@interface MyClass () ... @end"
  • which really links to class definition: "@implementation MyClass ... @end"

For Objective-C protocols, e.g. "@protocol MyProtocol ... @end" this will return nullptr as protocols don't have an implementation.

Definition at line 348 of file AST.cpp.

References ID.

◆ getDeclComment()

std::string clang::clangd::getDeclComment ( const ASTContext &  Ctx,
const NamedDecl &  Decl 
)

Similar to getDocComment, but returns the comment for a NamedDecl.

Definition at line 95 of file CodeCompletionStrings.cpp.

References Decl.

Referenced by getDocComment().

◆ getDeducedType()

std::optional< QualType > clang::clangd::getDeducedType ( ASTContext &  ,
SourceLocation  Loc 
)

Retrieves the deduced type at a given location (auto, decltype).

It will return the underlying type. If the type is an undeduced auto, returns the type itself.

Definition at line 587 of file AST.cpp.

References Loc.

Referenced by getHover(), locateSymbolAt(), and typeForNode().

◆ getDefaultAsyncThreadsCount()

unsigned clang::clangd::getDefaultAsyncThreadsCount ( )

Returns a number of a default async threads to use for TUScheduler.

Returned value is always >= 1 (i.e. will not cause requests to be processed synchronously).

Definition at line 1614 of file TUScheduler.cpp.

References getDefaultAsyncThreadsCount().

Referenced by getDefaultAsyncThreadsCount().

◆ getDiagnosticDocURI()

std::optional< std::string > clang::clangd::getDiagnosticDocURI ( Diag::DiagSource  Source,
unsigned  ID,
llvm::StringRef  Name 
)

Returns a URI providing more information about a particular diagnostic.

Definition at line 922 of file Diagnostics.cpp.

References clang::clangd::Diag::Clang, clang::clangd::Diag::Clangd, clang::clangd::Diag::ClangdConfig, clang::clangd::Diag::ClangTidy, Module, Name, and clang::clangd::Diag::Unknown.

Referenced by toLSPDiags().

◆ getDocComment()

std::string clang::clangd::getDocComment ( const ASTContext &  Ctx,
const CodeCompletionResult &  Result,
bool  CommentsFromHeaders 
)

Gets a minimally formatted documentation comment of Result, with comment markers stripped.

See clang::RawComment::getFormattedText() for the detailed explanation of how the comment text is transformed. Returns empty string when no comment is available. If CommentsFromHeaders parameter is set, only comments from the main file will be returned. It is used to workaround crashes when parsing comments in the stale headers, coming from completion preamble.

Definition at line 83 of file CodeCompletionStrings.cpp.

References getDeclComment().

◆ getDocumentLinks()

std::vector< DocumentLink > clang::clangd::getDocumentLinks ( ParsedAST AST)

Get all document links.

Definition at line 826 of file XRefs.cpp.

References AST, clang::clangd::URIForFile::canonicalize(), and halfOpenToRange().

Referenced by clang::clangd::ClangdServer::documentLinks().

◆ getDocumentSymbols()

llvm::Expected< std::vector< DocumentSymbol > > clang::clangd::getDocumentSymbols ( ParsedAST AST)

Retrieves the symbols contained in the "main file" section of an AST in the same order that they appear.

Definition at line 652 of file FindSymbols.cpp.

References getDocumentSymbols().

Referenced by clang::clangd::ClangdServer::documentSymbols(), and getDocumentSymbols().

◆ getEligiblePoints()

EligibleRegion clang::clangd::getEligiblePoints ( llvm::StringRef  Code,
llvm::StringRef  FullyQualifiedName,
const LangOptions &  LangOpts 
)

Returns most eligible region to insert a definition for FullyQualifiedName in the Code.

Pseudo parses \pCode under the hood to determine namespace decls and possible insertion points. Choses the region that matches the longest prefix of FullyQualifiedName. Returns EOF if there are no shared namespaces. FullyQualifiedName should not contain anonymous namespaces.

Definition at line 1167 of file SourceCode.cpp.

References clang::clangd::EligibleRegion::EligiblePoints, clang::clangd::EligibleRegion::EnclosingNamespace, getEligiblePoints(), and offsetToPosition().

Referenced by getEligiblePoints().

◆ getExpansionTokenRangeInSameFile()

static SourceRange clang::clangd::getExpansionTokenRangeInSameFile ( SourceLocation  Loc,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 378 of file SourceCode.cpp.

References Loc, rangeInCommonFile(), and toTokenRange().

Referenced by getTokenFileRange().

◆ getFoldingRanges() [1/2]

llvm::Expected< std::vector< FoldingRange > > clang::clangd::getFoldingRanges ( const std::string &  Code,
bool  LineFoldingOnly 
)

◆ getFoldingRanges() [2/2]

llvm::Expected< std::vector< FoldingRange > > clang::clangd::getFoldingRanges ( ParsedAST AST)

Returns a list of ranges whose contents might be collapsible in an editor.

This should include large scopes, preprocessor blocks etc.

Definition at line 170 of file SemanticSelection.cpp.

References AST.

Referenced by clang::clangd::ClangdServer::foldingRanges().

◆ getFormatStyleForFile()

format::FormatStyle clang::clangd::getFormatStyleForFile ( llvm::StringRef  File,
llvm::StringRef  Content,
const ThreadsafeFS TFS,
bool  FormatFile 
)

Choose the clang-format style we should apply to a certain file.

This will usually use FS to look for .clang-format directories. FIXME: should we be caching the .clang-format file search? This uses format::DefaultFormatStyle and format::DefaultFallbackStyle, though the latter may have been overridden in main()! FormatFile indicates whether the returned FormatStyle is used to format the entire main file (or a range selected by the user which can be arbitrarily long).

Definition at line 583 of file SourceCode.cpp.

References File, log(), and clang::clangd::ThreadsafeFS::view().

Referenced by clang::clangd::ClangdServer::applyTweak(), clang::clangd::ParsedAST::build(), clang::clangd::ClangdServer::findHover(), clang::clangd::ClangdServer::formatFile(), clang::clangd::ClangdServer::formatOnType(), and clang::clangd::ClangdServer::rename().

◆ getHover()

std::optional< HoverInfo > clang::clangd::getHover ( ParsedAST AST,
Position  Pos,
const format::FormatStyle &  Style,
const SymbolIndex Index 
)

◆ getInactiveRegions()

std::vector< Range > clang::clangd::getInactiveRegions ( ParsedAST AST)

◆ getIndexableLocalDecls()

std::vector< const Decl * > clang::clangd::getIndexableLocalDecls ( ParsedAST AST)

Returns all indexable decls that are present in the main file of the AST.

Exposed for unittests.

Definition at line 122 of file HeaderSourceSwitch.cpp.

References AST, Decl, Results, and clang::clangd::SymbolCollector::shouldCollectSymbol().

Referenced by getCorrespondingHeaderOrSource().

◆ getLocForTokenBegin()

static SourceLocation clang::clangd::getLocForTokenBegin ( SourceLocation  EndLoc,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 310 of file SourceCode.cpp.

References getTokenLengthAtLoc().

Referenced by toTokenRange().

◆ getLocForTokenEnd()

static SourceLocation clang::clangd::getLocForTokenEnd ( SourceLocation  BeginLoc,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 302 of file SourceCode.cpp.

References getTokenLengthAtLoc().

Referenced by unionTokenRange().

◆ getMappedRanges()

std::optional< std::vector< SymbolRange > > clang::clangd::getMappedRanges ( ArrayRef< Range Indexed,
ArrayRef< SymbolRange Lexed 
)

Calculates the lexed occurrences that the given indexed occurrences map to.

Returns std::nullopt if we don't find a mapping.

Exposed for testing only.

REQUIRED: Indexed and Lexed are sorted.

Definition at line 1254 of file Rename.cpp.

References renameRangeAdjustmentCost(), SPAN_ATTACH, and vlog().

Referenced by adjustRenameRanges().

◆ getNameOrErrForObjCInterface()

static llvm::StringRef clang::clangd::getNameOrErrForObjCInterface ( const ObjCInterfaceDecl *  ID)
static

Definition at line 289 of file AST.cpp.

References ID.

Referenced by printObjCContainer().

◆ getNonLocalDeclRefs()

llvm::DenseSet< const Decl * > clang::clangd::getNonLocalDeclRefs ( ParsedAST AST,
const FunctionDecl *  FD 
)

Returns all decls that are referenced in the FD except local symbols.

Definition at line 2369 of file XRefs.cpp.

References Decl, findExplicitReferences(), and getNonLocalDeclRefs().

Referenced by getNonLocalDeclRefs().

◆ getOnlyInstantiation()

NamedDecl * clang::clangd::getOnlyInstantiation ( NamedDecl *  TemplatedDecl)

Definition at line 624 of file AST.cpp.

References getOnlyInstantiationImpl().

◆ getOnlyInstantiationImpl()

template<typename TemplateDeclTy >
static NamedDecl * clang::clangd::getOnlyInstantiationImpl ( TemplateDeclTy *  TD)
static

Definition at line 612 of file AST.cpp.

Referenced by getOnlyInstantiation().

◆ getPatchName()

static std::string clang::clangd::getPatchName ( llvm::StringRef  FileName)
static

◆ getQualification() [1/2]

std::string clang::clangd::getQualification ( ASTContext &  Context,
const DeclContext *  DestContext,
const NamedDecl *  ND,
llvm::ArrayRef< std::string >  VisibleNamespaces 
)

This function uses the VisibleNamespaces to figure out if a shorter qualification is sufficient for ND, and ignores any using namespace directives.

It can be useful if there's no AST for the DestContext, but some pseudo-parsing is done. i.e. if ND is ns1::ns2::X and DestContext is ns1::, users can provide ns2:: as visible to change the result to be empty. Elements in VisibleNamespaces should be in the form: ns::, with trailing "::". Note that this is just textual and might be incorrect. e.g. when there are two namespaces ns1::a and ns2::a, the function will early exit if "a::" is present in VisibleNamespaces, no matter whether it is from ns1:: or ns2::

Definition at line 679 of file AST.cpp.

References getQualification().

◆ getQualification() [2/2]

std::string clang::clangd::getQualification ( ASTContext &  Context,
const DeclContext *  DestContext,
SourceLocation  InsertionPoint,
const NamedDecl *  ND 
)

Gets the nested name specifier necessary for spelling ND in DestContext, at InsertionPoint.

It selects the shortest suffix of ND such that it is visible in DestContext. Returns an empty string if no qualification is necessary. For example, if you want to qualify clang::clangd::bar::foo in clang::clangd::x, this function will return bar. Note that the result might be sub-optimal for classes, e.g. when the ND is a member of the base class.

This version considers all the using namespace directives before InsertionPoint. i.e, if you have using namespace clang::clangd::bar, this function will return an empty string for the example above since no qualification is necessary in that case. FIXME: Also take using directives and namespace aliases inside function body into account.

Definition at line 660 of file AST.cpp.

References getQualification().

Referenced by getQualification().

◆ getQualifiedName()

std::string clang::clangd::getQualifiedName ( const Symbol Sym)

◆ getQualifierLoc()

NestedNameSpecifierLoc clang::clangd::getQualifierLoc ( const NamedDecl &  ND)

Returns a nested name specifier loc of ND if it was present in the source, e.g.

void ns::something::foo() -> returns 'ns::something' void foo() -> returns null

Definition at line 203 of file AST.cpp.

Referenced by printName().

◆ getRankedIncludes()

llvm::SmallVector< SymbolInclude, 1 > clang::clangd::getRankedIncludes ( const Symbol Sym)

◆ getRefs()

RefSlab clang::clangd::getRefs ( const SymbolIndex Index,
SymbolID  ID 
)

◆ getReturnType()

std::string clang::clangd::getReturnType ( const CodeCompletionString &  CCS)

Gets detail to be used as the detail field in an LSP completion item.

This is usually the return type of a function.

Definition at line 312 of file CodeCompletionStrings.cpp.

◆ getSemanticHighlightings()

std::vector< HighlightingToken > clang::clangd::getSemanticHighlightings ( ParsedAST AST,
bool  IncludeInactiveRegionTokens 
)

◆ getSemanticRanges()

llvm::Expected< SelectionRange > clang::clangd::getSemanticRanges ( ParsedAST AST,
Position  Pos 
)

Returns the list of all interesting ranges around the Position Pos.

The interesting ranges corresponds to the AST nodes in the SelectionTree containing Pos. If pos is not in any interesting range, return [Pos, Pos).

Definition at line 112 of file SemanticSelection.cpp.

References AST, clang::clangd::SelectionTree::commonAncestor(), clang::clangd::SelectionTree::createRight(), Decl, Empty, clang::clangd::Range::end, Head, Node, Offset, Pos, positionToOffset(), sourceLocToPosition(), clang::clangd::Range::start, Tail, and toHalfOpenFileRange().

Referenced by clang::clangd::ClangdServer::semanticRanges().

◆ getSeverity()

int clang::clangd::getSeverity ( DiagnosticsEngine::Level  L)

Convert from clang diagnostic level to LSP severity.

Definition at line 555 of file Diagnostics.cpp.

Referenced by toLSPDiags().

◆ getSignature()

void clang::clangd::getSignature ( const CodeCompletionString &  CCS,
std::string *  Signature,
std::string *  Snippet,
CodeCompletionResult::ResultKind  ResultKind,
CXCursorKind  CursorKind,
bool  IncludeFunctionArguments = true,
std::string *  RequiredQualifiers = nullptr 
)

Formats the signature for an item, as a display string and snippet.

e.g. for const_reference std::vector<T>::at(size_type) const, this returns: *Signature = "(size_type) const" *Snippet = "(${1:size_type})" If set, RequiredQualifiers is the text that must be typed before the name. e.g "Base::" when calling a base class member function that's hidden.

If IncludeFunctionArguments is disabled, the Snippet will only contain function name and template arguments, if any.

When ResultKind is RK_Pattern, the last placeholder will be $0, indicating the cursor should stay there. Note that for certain CursorKind like CXCursor_Constructor, $0 won't be emitted in order to avoid overlapping normal parameters.

Definition at line 119 of file CodeCompletionStrings.cpp.

References C, Signature, and Snippet.

Referenced by clang::clangd::SymbolCollector::handleMacroOccurrence().

◆ getSpelledSpecifier()

std::optional< std::string > clang::clangd::getSpelledSpecifier ( const CXXScopeSpec &  SS,
const SourceManager &  SM 
)

Definition at line 384 of file clangd/IncludeFixer.cpp.

References toSourceCode().

Referenced by extractUnresolvedNameCheaply().

◆ getStdHeader()

llvm::StringRef clang::clangd::getStdHeader ( const Symbol S,
const LangOptions &  LangOpts 
)

Definition at line 894 of file SymbolCollector.cpp.

References Lang.

Referenced by clang::clangd::SymbolCollector::finish().

◆ getStdlibUmbrellaHeader()

llvm::StringRef clang::clangd::getStdlibUmbrellaHeader ( const LangOptions &  LO)

Definition at line 95 of file StdLib.cpp.

References C, and Lang.

Referenced by indexStandardLibrary().

◆ getSymbolID() [1/2]

SymbolID clang::clangd::getSymbolID ( const Decl D)

◆ getSymbolID() [2/2]

SymbolID clang::clangd::getSymbolID ( const llvm::StringRef  MacroName,
const MacroInfo *  MI,
const SourceManager &  SM 
)

Gets the symbol ID for a macro.

Returned SymbolID might be null. Currently, this is an encoded USR of the macro, which incorporates macro locations (e.g. file name, offset in file). FIXME: the USR semantics might not be stable enough as the ID for index macro (e.g. a change in definition offset can result in a different USR). We could change these semantics in the future by reimplementing this funcure (e.g. avoid USR for macros).

Definition at line 338 of file AST.cpp.

References MacroName, and USR.

◆ getSymbolInfo()

std::vector< SymbolDetails > clang::clangd::getSymbolInfo ( ParsedAST AST,
Position  Pos 
)

◆ getSystemIncludeExtractor()

SystemIncludeExtractorFn clang::clangd::getSystemIncludeExtractor ( llvm::ArrayRef< std::string >  QueryDriverGlobs)

Definition at line 534 of file SystemIncludeExtractor.cpp.

Referenced by main().

◆ getTidyOptionsForFile()

tidy::ClangTidyOptions clang::clangd::getTidyOptionsForFile ( TidyProviderRef  Provider,
llvm::StringRef  Filename 
)

◆ getToggle()

static Location * clang::clangd::getToggle ( const TextDocumentPositionParams Point,
LocatedSymbol Sym 
)
static

◆ getTokenFileRange()

static SourceRange clang::clangd::getTokenFileRange ( SourceLocation  Loc,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 395 of file SourceCode.cpp.

References getExpansionTokenRangeInSameFile(), Loc, and unionTokenRange().

Referenced by toHalfOpenFileRange().

◆ getTokenLengthAtLoc()

static unsigned clang::clangd::getTokenLengthAtLoc ( SourceLocation  Loc,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 286 of file SourceCode.cpp.

References Loc.

Referenced by getLocForTokenBegin(), getLocForTokenEnd(), and toHalfOpenFileRange().

◆ getTypeHierarchy()

std::vector< TypeHierarchyItem > clang::clangd::getTypeHierarchy ( ParsedAST AST,
Position  Pos,
int  ResolveLevels,
TypeHierarchyDirection  Direction,
const SymbolIndex Index,
PathRef  TUPath 
)

◆ getWorkspaceSymbols()

llvm::Expected< std::vector< SymbolInformation > > clang::clangd::getWorkspaceSymbols ( llvm::StringRef  Query,
int  Limit,
const SymbolIndex *const  Index,
llvm::StringRef  HintPath 
)

Searches for the symbols matching Query.

The syntax of Query can be the non-qualified name or fully qualified of a symbol. For example, "vector" will match the symbol std::vector and "std::vector" would also match it. Direct children of scopes (namespaces, etc) can be listed with a trailing "::". For example, "std::" will list all children of the std namespace and "::" alone will list all children of the global namespace. Limit limits the number of results returned (0 means no limit). HintPath This is used when resolving URIs. If empty, URI resolution can fail if a hint path is required for the scheme of a specific URI.

Definition at line 84 of file FindSymbols.cpp.

References clang::clangd::FuzzyFindRequest::AnyScope, dlog, evaluateSymbolAndRelevance(), clang::clangd::SymbolRelevanceSignals::Generic, indexSymbolKindToSymbolKind(), Info, clang::clangd::FuzzyFindRequest::Limit, Loc, clang::clangd::Symbol::Name, clang::clangd::SymbolRelevanceSignals::Name, clang::clangd::TopN< T, Compare >::push(), Quality, clang::clangd::FuzzyFindRequest::Query, clang::clangd::Symbol::Scope, clang::clangd::FuzzyFindRequest::Scopes, Score, splitQualifiedName(), clang::clangd::Symbol::SymInfo, and clang::clangd::Symbol::TemplateSpecializationArgs.

◆ guessCompletionPrefix()

CompletionPrefix clang::clangd::guessCompletionPrefix ( llvm::StringRef  Content,
unsigned  Offset 
)

Definition at line 2144 of file CodeComplete.cpp.

References guessCompletionPrefix(), and Offset.

Referenced by guessCompletionPrefix().

◆ halfOpenToRange()

Range clang::clangd::halfOpenToRange ( const SourceManager &  SM,
CharSourceRange  R 
)

◆ hasDeclInMainFile()

static bool clang::clangd::hasDeclInMainFile ( const Decl D)
static

Definition at line 34 of file Quality.cpp.

References isInsideMainFile().

Referenced by clang::clangd::SymbolRelevanceSignals::merge().

◆ hasFlag()

auto clang::clangd::hasFlag ( llvm::StringRef  Flag)

Definition at line 515 of file GlobalCompilationDatabaseTests.cpp.

References hasFlag().

Referenced by hasFlag(), and TEST_F().

◆ hash_value()

llvm::hash_code clang::clangd::hash_value ( const SymbolID ID)
inline

Definition at line 66 of file SymbolID.h.

References ID, and clang::clangd::SymbolID::RawSize.

◆ hasReservedName()

bool clang::clangd::hasReservedName ( const Decl D)

Returns true if this is a NamedDecl with a reserved name.

Definition at line 420 of file AST.cpp.

References isReservedName().

Referenced by hasReservedScope(), and clang::clangd::SymbolCollector::shouldCollectSymbol().

◆ hasReservedScope()

bool clang::clangd::hasReservedScope ( const DeclContext &  )

Returns true if this scope would be written with a reserved name.

This does not include unwritten scope elements like __1 in std::__1::vector.

Definition at line 427 of file AST.cpp.

References hasReservedName().

Referenced by clang::clangd::SymbolCollector::shouldCollectSymbol().

◆ HasSubsequence()

template<typename... Args>
PolySubsequenceMatcher< Args... > clang::clangd::HasSubsequence ( Args &&...  M)

Definition at line 106 of file clangd/unittests/Matchers.h.

References Args, and M.

◆ hasUnstableLinkage()

bool clang::clangd::hasUnstableLinkage ( const Decl D)

Whether we must avoid computing linkage for D during code completion.

Clang aggressively caches linkage computation, which is stable after the AST is built. Unfortunately the AST is incomplete during code completion, so linkage may still change.

Example: auto x = []{^} at file scope. During code completion, the initializer for x hasn't been parsed yet. x has type undeduced auto, and external linkage. If we compute linkage at this point, the external linkage will be cached.

After code completion the initializer is attached, and x has a lambda type. This means x has "unique external" linkage. If we computed linkage above, the cached value is incorrect. (clang catches this with an assertion).

Definition at line 699 of file AST.cpp.

References hasUnstableLinkage().

Referenced by clang::clangd::SymbolRelevanceSignals::computeASTSignals(), computeScope(), and hasUnstableLinkage().

◆ hasUsingDeclInMainFile()

static bool clang::clangd::hasUsingDeclInMainFile ( const CodeCompletionResult &  R)
static

Definition at line 43 of file Quality.cpp.

References isInsideMainFile().

Referenced by clang::clangd::SymbolRelevanceSignals::merge().

◆ HasValue()

template<typename InnerMatcher >
OptionalMatcher< InnerMatcher > clang::clangd::HasValue ( const InnerMatcher &  inner_matcher)
inline

Definition at line 194 of file clangd/unittests/Matchers.h.

References HasValue().

Referenced by HasValue().

◆ highlightingKindFromString()

std::optional< HighlightingKind > clang::clangd::highlightingKindFromString ( llvm::StringRef  Name)

Definition at line 1280 of file SemanticHighlighting.cpp.

References highlightingKindFromString(), and Name.

Referenced by highlightingKindFromString().

◆ highlightingModifierFromString()

std::optional< HighlightingModifier > clang::clangd::highlightingModifierFromString ( llvm::StringRef  Name)

Definition at line 1324 of file SemanticHighlighting.cpp.

References highlightingModifierFromString(), and Name.

Referenced by highlightingModifierFromString().

◆ includeHashLoc()

SourceLocation clang::clangd::includeHashLoc ( FileID  IncludedFile,
const SourceManager &  SM 
)

Returns the #include location through which IncludedFIle was loaded.

Where SM.getIncludeLoc() returns the location of the filename, which may be in a macro, includeHashLoc() returns the location of the #.

Definition at line 264 of file SourceCode.cpp.

References Offset.

Referenced by rangeInCommonFile().

◆ incomingCalls()

std::vector< CallHierarchyIncomingCall > clang::clangd::incomingCalls ( const CallHierarchyItem Item,
const SymbolIndex Index 
)

◆ increment() [1/2]

static void clang::clangd::increment ( std::string &  S)
static

Definition at line 1559 of file ClangdLSPServer.cpp.

References C, and increment().

Referenced by increment(), and updateVersion().

◆ increment() [2/2]

static void clang::clangd::increment ( std::string &  S)
static

Definition at line 39 of file DraftStore.cpp.

References E.

◆ indexHeaderSymbols()

SlabTuple clang::clangd::indexHeaderSymbols ( llvm::StringRef  Version,
ASTContext &  AST,
Preprocessor &  PP,
const include_cleaner::PragmaIncludes &  PI 
)

Index declarations from AST and macros from PP that are declared in included headers.

Definition at line 230 of file FileIndex.cpp.

References AST.

Referenced by clang::clangd::TestTU::headerSymbols(), and clang::clangd::FileIndex::updatePreamble().

◆ indexMainDecls()

SlabTuple clang::clangd::indexMainDecls ( ParsedAST AST)

Retrieves symbols and refs of local top level decls in AST (i.e.

AST.getLocalTopLevelDecls()). Exposed to assist in unit tests.

Definition at line 223 of file FileIndex.cpp.

References AST.

Referenced by clang::clangd::TestTU::headerRefs(), and clang::clangd::FileIndex::updateMain().

◆ indexStandardLibrary() [1/2]

SymbolSlab clang::clangd::indexStandardLibrary ( llvm::StringRef  HeaderSources,
std::unique_ptr< CompilerInvocation >  CI,
const StdLibLocation Loc,
const ThreadsafeFS TFS 
)

◆ indexStandardLibrary() [2/2]

SymbolSlab clang::clangd::indexStandardLibrary ( std::unique_ptr< CompilerInvocation >  Invocation,
const StdLibLocation Loc,
const ThreadsafeFS TFS 
)

Definition at line 266 of file StdLib.cpp.

References getStdlibUmbrellaHeader(), indexStandardLibrary(), and Loc.

◆ indexSymbolKindToSymbolKind()

SymbolKind clang::clangd::indexSymbolKindToSymbolKind ( index::SymbolKind  Kind)

Definition at line 298 of file Protocol.cpp.

References Kind.

Referenced by declToHierarchyItem(), getWorkspaceSymbols(), and symbolToHierarchyItem().

◆ indexToLSPLocation()

llvm::Expected< Location > clang::clangd::indexToLSPLocation ( const SymbolLocation Loc,
llvm::StringRef  TUPath 
)

Helper function for deriving an LSP Location from an index SymbolLocation.

Definition at line 59 of file FindSymbols.cpp.

References clang::clangd::URIForFile::canonicalize(), error(), Loc, and clang::clangd::URI::resolve().

Referenced by incomingCalls(), locateSymbolTextually(), outgoingCalls(), and symbolToLocation().

◆ inferFinalNewline()

static void clang::clangd::inferFinalNewline ( llvm::Expected< size_t > &  Err,
std::string &  Contents,
const Position Pos 
)
static

Definition at line 1106 of file SourceCode.cpp.

References inferFinalNewline(), and Pos.

Referenced by applyChange(), and inferFinalNewline().

◆ initializeModuleCache()

void clang::clangd::initializeModuleCache ( CompilerInvocation &  CI)

Definition at line 81 of file TestTU.cpp.

References CI.

Referenced by clang::clangd::TestTU::build(), and clang::clangd::TestTU::preamble().

◆ inlayHints()

std::vector< InlayHint > clang::clangd::inlayHints ( ParsedAST AST,
std::optional< Range RestrictRange 
)

Compute and return inlay hints for a file.

If RestrictRange is set, return only hints whose location is in that range.

Definition at line 1185 of file InlayHints.cpp.

References AST, clang::clangd::Config::current(), clang::clangd::Config::Enabled, clang::clangd::Config::InlayHints, and Results.

Referenced by clang::clangd::ClangdServer::inlayHints().

◆ insertDecl() [1/2]

llvm::Expected< tooling::Replacement > clang::clangd::insertDecl ( llvm::StringRef  Code,
const CXXRecordDecl &  InClass,
std::vector< Anchor Anchors,
AccessSpecifier  Protection 
)

Definition at line 136 of file InsertionPoint.cpp.

References clang::clangd::Anchor::Below, error(), insertionPoint(), and Loc.

◆ insertDecl() [2/2]

llvm::Expected< tooling::Replacement > clang::clangd::insertDecl ( llvm::StringRef  Code,
const DeclContext &  DC,
llvm::ArrayRef< Anchor Anchors 
)

Definition at line 113 of file InsertionPoint.cpp.

References error(), insertionPoint(), and Loc.

◆ insertionPoint() [1/2]

SourceLocation clang::clangd::insertionPoint ( const CXXRecordDecl &  InClass,
std::vector< Anchor Anchors,
AccessSpecifier  Protection 
)

Definition at line 126 of file InsertionPoint.cpp.

References Decl, Inner, and insertionPoint().

◆ insertionPoint() [2/2]

SourceLocation clang::clangd::insertionPoint ( const DeclContext &  DC,
llvm::ArrayRef< Anchor Anchors 
)

Definition at line 98 of file InsertionPoint.cpp.

References clang::clangd::Anchor::Above, and dlog.

Referenced by insertDecl(), and insertionPoint().

◆ isAnonymous()

static bool clang::clangd::isAnonymous ( const DeclarationName &  N)
static

Definition at line 199 of file AST.cpp.

Referenced by printName().

◆ isAwful()

static bool clang::clangd::isAwful ( int  S)
static

◆ isBuiltinDiagnosticSuppressed()

bool clang::clangd::isBuiltinDiagnosticSuppressed ( unsigned  ID,
const llvm::StringSet<> &  Suppress,
const LangOptions &  LangOpts 
)

Determine whether a (non-clang-tidy) diagnostic is suppressed by config.

Definition at line 897 of file Diagnostics.cpp.

References ID, normalizeSuppressedCode(), and Warning.

Referenced by clang::clangd::ParsedAST::build(), and buildPreamble().

◆ isCancelled()

int clang::clangd::isCancelled ( const Context Ctx = Context::current())

If the current context is within a cancelled task, returns the reason.

(If the context is within multiple nested tasks, true if any are cancelled). Always zero if there is no active cancelable task. This isn't free (context lookup) - don't call it in a tight loop.

Definition at line 35 of file Cancellation.cpp.

References StateKey.

Referenced by clang::clangd::ClangdServer::codeComplete().

◆ isDeeplyNested()

bool clang::clangd::isDeeplyNested ( const Decl D,
unsigned  MaxDepth = 10 
)

Checks whether D is more than MaxDepth away from translation unit scope.

This is useful for limiting traversals to keep operation latencies reasonable.

Definition at line 706 of file AST.cpp.

References isDeeplyNested().

Referenced by isDeeplyNested().

◆ isExpandedFromParameterPack()

bool clang::clangd::isExpandedFromParameterPack ( const ParmVarDecl *  D)

Checks whether D is instantiated from a function parameter pack whose type is a bare type parameter pack (e.g.

Args...), or a reference to one (e.g. Args&... or Args&&...).

Definition at line 1003 of file AST.cpp.

References isExpandedFromParameterPack().

Referenced by isExpandedFromParameterPack().

◆ isExplicitTemplateSpecialization()

bool clang::clangd::isExplicitTemplateSpecialization ( const NamedDecl *  D)

Indicates if D is an explicit template specialization, e.g.

template <class T> struct vector {}; template <> struct vector<bool> {}; // <– explicit specialization

Note that explicit instantiations are NOT explicit specializations, albeit they look similar. template struct vector<bool>; // <– explicit instantiation, NOT an explicit specialization.

Definition at line 163 of file AST.cpp.

Referenced by isIndexedForCodeCompletion().

◆ isFastTidyCheck()

std::optional< bool > clang::clangd::isFastTidyCheck ( llvm::StringRef  Check)

Returns if Check is known-fast, known-slow, or its speed is unknown.

By default, only fast checks will run in clangd.

Definition at line 321 of file TidyProvider.cpp.

References isFastTidyCheck().

Referenced by isFastTidyCheck().

◆ isHeaderFile()

bool clang::clangd::isHeaderFile ( llvm::StringRef  FileName,
std::optional< LangOptions >  LangOpts 
)

◆ isImplementationDetail()

bool clang::clangd::isImplementationDetail ( const Decl D)

Returns true if the declaration is considered implementation detail based on heuristics.

For example, a declaration whose name is not explicitly spelled in code is considered implementation detail.

Definition at line 167 of file AST.cpp.

References isSpelledInSource().

Referenced by clang::clangd::SymbolQualitySignals::merge().

◆ isImplicitTemplateInstantiation()

bool clang::clangd::isImplicitTemplateInstantiation ( const NamedDecl *  D)

Indicates if D is a template instantiation implicitly generated by the compiler, e.g.

template <class T> struct vector {}; vector<int> v; // 'vector<int>' is an implicit instantiation

Definition at line 159 of file AST.cpp.

◆ isIncludeFile()

bool clang::clangd::isIncludeFile ( llvm::StringRef  Line)

Definition at line 2411 of file CodeComplete.cpp.

References isIncludeFile(), and Line.

Referenced by allowImplicitCompletion(), and isIncludeFile().

◆ isIndexedForCodeCompletion()

bool clang::clangd::isIndexedForCodeCompletion ( const NamedDecl &  ND,
ASTContext &  ASTCtx 
)

◆ isInsideMainFile()

bool clang::clangd::isInsideMainFile ( SourceLocation  Loc,
const SourceManager &  SM 
)

Returns true iff Loc is inside the main file.

This function handles file & macro locations. For macro locations, returns iff the macro is being expanded inside the main file.

The function is usually used to check whether a declaration is inside the the main file.

Definition at line 423 of file SourceCode.cpp.

References Loc.

Referenced by clang::clangd::IncludeFixer::UnresolvedNameRecorder::CorrectTypo(), clang::clangd::CollectMainFileMacros::FileChanged(), clang::clangd::StoreDiags::HandleDiagnostic(), hasDeclInMainFile(), hasUsingDeclInMainFile(), clang::clangd::IncludeStructure::RecordHeaders::InclusionDirective(), and clang::clangd::CollectPragmaMarks::PragmaMark().

◆ isInstanceMember() [1/2]

static bool clang::clangd::isInstanceMember ( const index::SymbolInfo &  D)
static

Definition at line 164 of file Quality.cpp.

◆ isInstanceMember() [2/2]

static bool clang::clangd::isInstanceMember ( const NamedDecl *  ND)
static

Definition at line 154 of file Quality.cpp.

References CM.

Referenced by clang::clangd::SymbolRelevanceSignals::merge().

◆ isKeyword()

bool clang::clangd::isKeyword ( llvm::StringRef  NewName,
const LangOptions &  LangOpts 
)

Return true if the TokenName is in the list of reversed keywords of the language.

Definition at line 659 of file SourceCode.cpp.

◆ isLikelyIdentifier()

static bool clang::clangd::isLikelyIdentifier ( llvm::StringRef  Word,
llvm::StringRef  Before,
llvm::StringRef  After 
)
static

Definition at line 909 of file SourceCode.cpp.

References isLikelyIdentifier(), Pos, Tag, and Word.

Referenced by isLikelyIdentifier(), and clang::clangd::SpelledWord::touching().

◆ isLiteralInclude()

bool clang::clangd::isLiteralInclude ( llvm::StringRef  Include)

Returns true if Include is literal include like "path" or <path>.

Definition at line 134 of file Headers.cpp.

Referenced by toHeaderFile(), and clang::clangd::HeaderFile::valid().

◆ isPreambleCompatible()

bool clang::clangd::isPreambleCompatible ( const PreambleData Preamble,
const ParseInputs Inputs,
PathRef  FileName,
const CompilerInvocation &  CI 
)

Returns true if Preamble is reusable for Inputs.

Note that it will return true when some missing headers are now available. FIXME: Should return more information about the delta between Preamble and Inputs, e.g. new headers.

Definition at line 745 of file Preamble.cpp.

References Bounds, CI, clang::clangd::ParseInputs::CompileCommand, clang::clangd::ParseInputs::Contents, FileName, Preamble, clang::clangd::ParseInputs::TFS, and clang::clangd::ThreadsafeFS::view().

◆ isPreferredProvider()

bool clang::clangd::isPreferredProvider ( const Inclusion ,
const include_cleaner::Includes &  ,
llvm::ArrayRef< include_cleaner::Header >  Providers 
)

Whether this #include is considered to provide a particular symbol.

This means it satisfies the reference, and no other #include does better. Providers is the symbol's candidate headers according to walkUsed().

Definition at line 469 of file IncludeCleaner.cpp.

References clang::clangd::Inclusion::HashLine, and isPreferredProvider().

Referenced by isPreferredProvider().

◆ isProtoFile()

bool clang::clangd::isProtoFile ( SourceLocation  Loc,
const SourceManager &  SM 
)

Returns true if the given location is in a generated protobuf file.

Definition at line 1232 of file SourceCode.cpp.

References FileName, isProtoFile(), and Loc.

Referenced by isProtoFile().

◆ isRegisteredTidyCheck()

bool clang::clangd::isRegisteredTidyCheck ( llvm::StringRef  Check)

Returns if Check is a registered clang-tidy check.

Precondition
must not be empty, must not contain '*' or ',' or start with '-'.

Definition at line 301 of file TidyProvider.cpp.

References E, and isRegisteredTidyCheck().

Referenced by isRegisteredTidyCheck().

◆ isReservedName()

bool clang::clangd::isReservedName ( llvm::StringRef  Name)
inline

Returns true if Name is reserved, like _Foo or __Vector_base.

Definition at line 334 of file SourceCode.h.

References Name.

Referenced by hasReservedName(), and clang::clangd::SymbolQualitySignals::merge().

◆ isSpelledInSource()

bool clang::clangd::isSpelledInSource ( SourceLocation  Loc,
const SourceManager &  SM 
)

Returns true if the token at Loc is spelled in the source code.

This is not the case for:

  • symbols formed via macro concatenation, the spelling location will be "<scratch space>"
  • symbols controlled and defined by a compile command-line option -DName=foo, the spelling location will be "<command line>".

Definition at line 231 of file SourceCode.cpp.

References Loc.

Referenced by isImplementationDetail(), and nameLocation().

◆ issueIncludeCleanerDiagnostics()

std::vector< Diag > clang::clangd::issueIncludeCleanerDiagnostics ( ParsedAST AST,
llvm::StringRef  Code,
const IncludeCleanerFindings Findings,
const ThreadsafeFS TFS,
HeaderFilter  IgnoreHeaders 
)

◆ isValidFileRange()

bool clang::clangd::isValidFileRange ( const SourceManager &  Mgr,
SourceRange  R 
)

Returns true iff all of the following conditions hold:

  • start and end locations are valid,
  • start and end locations are file locations from the same file (i.e. expansion locations are not taken into account).
  • start offset <= end offset. FIXME: introduce a type for source range with this invariant.

Definition at line 249 of file SourceCode.cpp.

Referenced by toHalfOpenFileRange(), and toSourceCode().

◆ iterateCodepoints()

template<typename Callback >
static bool clang::clangd::iterateCodepoints ( llvm::StringRef  U8,
const Callback CB 
)
static

Definition at line 63 of file SourceCode.cpp.

References C, and elog().

Referenced by lspLength(), and measureUnits().

◆ jsonToXpc() [1/2]

xpc_object_t clang::clangd::jsonToXpc ( const json::Value &  JSON)

Definition at line 20 of file Conversion.cpp.

Referenced by main().

◆ jsonToXpc() [2/2]

xpc_object_t clang::clangd::jsonToXpc ( const llvm::json::Value &  JSON)

◆ lex() [1/2]

TokenStream clang::clangd::lex ( const std::string &  ,
const clang::LangOptions &   
)

Extracts a raw token stream from the source code.

All tokens will reference the data of the provided string. "word-like" tokens such as identifiers and keywords will be raw_identifier.

Definition at line 19 of file Lex.cpp.

References C, clang::clangd::Token::Data, Indent, clang::clangd::Token::Indent, clang::clangd::Token::Kind, clang::clangd::Token::Length, Line, clang::clangd::Token::Line, NeedsCleaning, Offset, clang::clangd::Token::OriginalIndex, clang::clangd::Token::setFlag(), and StartsPPLine.

◆ lex() [2/2]

static void clang::clangd::lex ( llvm::StringRef  Code,
const LangOptions &  LangOpts,
llvm::function_ref< void(const syntax::Token &, const SourceManager &SM)>  Action 
)
static

Definition at line 621 of file SourceCode.cpp.

References Action.

Referenced by collectIdentifierRanges(), collectIdentifiers(), and getFoldingRanges().

◆ LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE()

clang::clangd::LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE ( )

◆ loadIndex()

std::unique_ptr< SymbolIndex > clang::clangd::loadIndex ( llvm::StringRef  SymbolFilename,
SymbolOrigin  Origin,
bool  UseDex,
bool  SupportContainedRefs 
)

◆ loadIndexShards()

std::vector< LoadedShard > clang::clangd::loadIndexShards ( llvm::ArrayRef< Path MainFiles,
BackgroundIndexStorage::Factory IndexStorageFactory,
const GlobalCompilationDatabase CDB 
)

Loads all shards for the TU MainFile from Storage.

Definition at line 120 of file BackgroundIndexLoader.cpp.

References loadIndexShards(), and MainFile.

Referenced by loadIndexShards().

◆ locateMacroAt()

std::optional< DefinedMacro > clang::clangd::locateMacroAt ( const syntax::Token &  SpelledTok,
Preprocessor &  PP 
)

Gets the macro referenced by SpelledTok.

It must be a spelled token aligned to the beginning of an identifier.

Definition at line 999 of file SourceCode.cpp.

References Loc, locateMacroAt(), SpelledTok, and translatePreamblePatchLocation().

Referenced by collectMacroReferences(), findReferences(), getHover(), getSymbolInfo(), locateMacroAt(), and rename().

◆ locateSymbolAt()

std::vector< LocatedSymbol > clang::clangd::locateSymbolAt ( ParsedAST AST,
Position  Pos,
const SymbolIndex Index = nullptr 
)

Get definition of symbol at a specified Pos.

Multiple locations may be returned, corresponding to distinct symbols.

Definition at line 747 of file XRefs.cpp.

References AST, Deduced, elog(), File, findNearbyIdentifier(), getDeducedType(), locateSymbolTextually(), log(), Macro, Pos, sourceLocationInMainFile(), clang::clangd::SpelledWord::touching(), vlog(), and Word.

Referenced by clang::clangd::ClangdServer::locateSymbolAt().

◆ locateSymbolTextually()

std::vector< LocatedSymbol > clang::clangd::locateSymbolTextually ( const SpelledWord Word,
ParsedAST AST,
const SymbolIndex Index,
llvm::StringRef  MainFilePath,
ASTNodeKind  NodeKind 
)

◆ log()

template<typename... Ts>
void clang::clangd::log ( const char *  Fmt,
Ts &&...  Vals 
)

◆ logBody()

static void clang::clangd::logBody ( llvm::StringRef  Method,
llvm::json::Value  V,
bool  Send 
)
static

Definition at line 78 of file LSPClient.cpp.

References Method, and vlog().

Referenced by clang::clangd::LSPClient::call(), and clang::clangd::LSPClient::notify().

◆ lookup()

std::vector< std::string > clang::clangd::lookup ( const SymbolIndex I,
llvm::ArrayRef< SymbolID IDs 
)

◆ lower()

static char clang::clangd::lower ( char  C)
static

Definition at line 68 of file FuzzyMatch.cpp.

References C.

Referenced by clang::clangd::FuzzyMatcher::FuzzyMatcher().

◆ lspEncoding()

static OffsetEncoding clang::clangd::lspEncoding ( )
static

◆ lspLength() [1/2]

size_t clang::clangd::lspLength ( llvm::StringRef  Code)

◆ lspLength() [2/2]

size_t clang::clangd::lspLength ( StringRef  Code)

◆ macro()

Symbol clang::clangd::macro ( llvm::StringRef  Name,
llvm::StringRef  ArgList 
)

Definition at line 90 of file TestIndex.cpp.

References Name, and sym().

◆ match()

std::vector< std::string > clang::clangd::match ( const SymbolIndex I,
const FuzzyFindRequest Req,
bool *  Incomplete 
)

Definition at line 139 of file TestIndex.cpp.

References clang::clangd::SymbolIndex::fuzzyFind(), and getQualifiedName().

Referenced by TEST().

◆ MATCHER() [1/4]

clang::clangd::MATCHER ( declared  ,
""   
)

Definition at line 32 of file BackgroundIndexTests.cpp.

◆ MATCHER() [2/4]

clang::clangd::MATCHER ( defined  ,
""   
)

Definition at line 35 of file BackgroundIndexTests.cpp.

◆ MATCHER() [3/4]

clang::clangd::MATCHER ( emptyIncludeNode  ,
""   
)

Definition at line 42 of file BackgroundIndexTests.cpp.

References clang::clangd::IncludeGraphNode::None.

◆ MATCHER() [4/4]

clang::clangd::MATCHER ( hadErrors  ,
""   
)

◆ MATCHER_P() [1/4]

clang::clangd::MATCHER_P ( fileURI  ,
,
""   
)

Definition at line 36 of file BackgroundIndexTests.cpp.

◆ MATCHER_P() [2/4]

clang::clangd::MATCHER_P ( named  ,
,
""   
)

Definition at line 30 of file BackgroundIndexTests.cpp.

◆ MATCHER_P() [3/4]

clang::clangd::MATCHER_P ( numReferences  ,
,
""   
)

Definition at line 51 of file BackgroundIndexTests.cpp.

◆ MATCHER_P() [4/4]

clang::clangd::MATCHER_P ( qName  ,
,
""   
)

Definition at line 31 of file BackgroundIndexTests.cpp.

◆ MATCHER_P2() [1/2]

clang::clangd::MATCHER_P2 ( FileWithContents  ,
FileName  ,
Contents  ,
""   
)

Definition at line 103 of file TweakTesting.h.

References FileName.

◆ MATCHER_P2() [2/2]

clang::clangd::MATCHER_P2 ( hasFlag  ,
Flag  ,
Path  ,
""   
)

Definition at line 500 of file GlobalCompilationDatabaseTests.cpp.

References printArgv().

◆ maybeCaseFoldPath()

std::string clang::clangd::maybeCaseFoldPath ( PathRef  Path)

Definition at line 18 of file Path.cpp.

◆ maybeFunctionArgumentCommentStart()

std::optional< unsigned > clang::clangd::maybeFunctionArgumentCommentStart ( llvm::StringRef  Content)

◆ measureUnits()

static size_t clang::clangd::measureUnits ( llvm::StringRef  U8,
int  Units,
OffsetEncoding  Enc,
bool &  Valid 
)
static

Definition at line 105 of file SourceCode.cpp.

References iterateCodepoints(), UnsupportedEncoding, UTF16, UTF32, and UTF8.

Referenced by positionToOffset().

◆ mergeCheckList()

static void clang::clangd::mergeCheckList ( std::optional< std::string > &  Checks,
llvm::StringRef  List 
)
static

Definition at line 141 of file TidyProvider.cpp.

References mergeCheckList().

Referenced by addTidyChecks(), mergeCheckList(), and provideClangdConfig().

◆ mergeSymbol()

Symbol clang::clangd::mergeSymbol ( const Symbol L,
const Symbol R 
)

◆ nameLocation()

SourceLocation clang::clangd::nameLocation ( const clang::Decl &  D,
const SourceManager &  SM 
)

Find the source location of the identifier for D.

Transforms macro locations to locations spelled inside files. All code that needs locations of declaration names (e.g. the index) should go through this function.

Definition at line 172 of file AST.cpp.

References isSpelledInSource().

Referenced by declToHierarchyItem(), and getSymbolInfo().

◆ newJSONTransport()

std::unique_ptr< Transport > clang::clangd::newJSONTransport ( std::FILE *  In,
llvm::raw_ostream &  Out,
llvm::raw_ostream *  InMirror,
bool  Pretty,
JSONStreamStyle  Style 
)

Definition at line 327 of file JSONTransport.cpp.

References Out.

Referenced by clangdMain(), and LLVMFuzzerTestOneInput().

◆ newXPCTransport()

std::unique_ptr< Transport > clang::clangd::newXPCTransport ( )

Definition at line 214 of file XPCTransport.cpp.

Referenced by clangdMain().

◆ normalizeSuppressedCode()

llvm::StringRef clang::clangd::normalizeSuppressedCode ( llvm::StringRef  )

Take a user-specified diagnostic code, and convert it to a normalized form stored in the config and consumed by isBuiltinDiagnosticsSuppressed.

(This strips err_ and -W prefix so we can match with or without them.)

Definition at line 916 of file Diagnostics.cpp.

Referenced by isBuiltinDiagnosticSuppressed().

◆ ns()

Symbol clang::clangd::ns ( llvm::StringRef  Name)

Definition at line 82 of file TestIndex.cpp.

References Name, and sym().

◆ objcCategory()

Symbol clang::clangd::objcCategory ( llvm::StringRef  Name,
llvm::StringRef  CategoryName 
)

Definition at line 112 of file TestIndex.cpp.

References Name, and objcSym().

◆ objcClass()

Symbol clang::clangd::objcClass ( llvm::StringRef  Name)

Definition at line 108 of file TestIndex.cpp.

References Name, and objcSym().

◆ objcProtocol()

Symbol clang::clangd::objcProtocol ( llvm::StringRef  Name)

Definition at line 117 of file TestIndex.cpp.

References Name, and objcSym().

◆ objcSym()

Symbol clang::clangd::objcSym ( llvm::StringRef  Name,
index::SymbolKind  Kind,
llvm::StringRef  USRPrefix 
)

◆ offsetToClangLineColumn()

std::pair< size_t, size_t > clang::clangd::offsetToClangLineColumn ( llvm::StringRef  Code,
size_t  Offset 
)

Definition at line 487 of file SourceCode.cpp.

References Lines, and Offset.

◆ offsetToPosition()

Position clang::clangd::offsetToPosition ( llvm::StringRef  Code,
size_t  Offset 
)

Turn an offset in Code into a [line, column] pair.

The offset must be in range [0, Code.size()].

Definition at line 202 of file SourceCode.cpp.

References Lines, lspLength(), Offset, and Pos.

Referenced by codeCompleteComment(), getEligiblePoints(), getFoldingRanges(), clang::clangd::Annotations::points(), clang::clangd::Annotations::pointsWithPayload(), clang::clangd::Annotations::pointWithPayload(), rangeTillEOL(), replacementToEdit(), and toLSPRange().

◆ operator!=()

bool clang::clangd::operator!= ( const SymbolRange LHS,
const SymbolRange RHS 
)

Definition at line 1024 of file Rename.cpp.

◆ operator&() [1/5]

DeclRelationSet clang::clangd::operator& ( DeclRelation  L,
DeclRelation  R 
)
inline

Definition at line 211 of file FindTarget.h.

◆ operator&() [2/5]

bool clang::clangd::operator& ( IncludeGraphNode::SourceFlag  A,
IncludeGraphNode::SourceFlag  B 
)
inline

Definition at line 109 of file Headers.h.

◆ operator&() [3/5]

constexpr IndexContents clang::clangd::operator& ( IndexContents  L,
IndexContents  R 
)
inlineconstexpr

Definition at line 122 of file Index.h.

◆ operator&() [4/5]

RefKind clang::clangd::operator& ( RefKind  A,
RefKind  B 
)
inline

Definition at line 77 of file Ref.h.

◆ operator&() [5/5]

SymbolOrigin clang::clangd::operator& ( SymbolOrigin  A,
SymbolOrigin  B 
)
inline

Definition at line 42 of file SymbolOrigin.h.

◆ operator<() [1/8]

bool clang::clangd::operator< ( const CompletionItem L,
const CompletionItem R 
)

◆ operator<() [2/8]

bool clang::clangd::operator< ( const HighlightingToken L,
const HighlightingToken R 
)

◆ operator<() [3/8]

bool clang::clangd::operator< ( const InlayHint A,
const InlayHint B 
)

Definition at line 1540 of file Protocol.cpp.

◆ operator<() [4/8]

bool clang::clangd::operator< ( const InlayHintLabelPart LHS,
const InlayHintLabelPart RHS 
)

◆ operator<() [5/8]

bool clang::clangd::operator< ( const Ref L,
const Ref R 
)
inline

Definition at line 98 of file Ref.h.

References clang::clangd::Ref::Container, clang::clangd::Ref::Kind, and clang::clangd::Ref::Location.

Referenced by operator<().

◆ operator<() [6/8]

bool clang::clangd::operator< ( const SymbolLocation L,
const SymbolLocation R 
)
inline

◆ operator<() [7/8]

bool clang::clangd::operator< ( const SymbolLocation::Position L,
const SymbolLocation::Position R 
)
inline

◆ operator<() [8/8]

bool clang::clangd::operator< ( const SymbolRange LHS,
const SymbolRange RHS 
)

Definition at line 1027 of file Rename.cpp.

◆ operator<<() [1/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  ,
const DirectiveTree  
)

◆ operator<<() [2/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  ,
const DirectiveTree::Code  
)

◆ operator<<() [3/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  ,
const DirectiveTree::Conditional  
)

◆ operator<<() [4/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  ,
const DirectiveTree::Directive  
)

◆ operator<<() [5/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const CompletionItem I 
)

Definition at line 1162 of file Protocol.cpp.

References clang::clangd::CompletionItem::label, and toJSON().

◆ operator<<() [6/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const DocumentHighlight V 
)

◆ operator<<() [7/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const DocumentSymbol S 
)

Definition at line 927 of file Protocol.cpp.

References toJSON().

◆ operator<<() [8/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const SignatureInformation I 
)

Definition at line 1204 of file Protocol.cpp.

References clang::clangd::SignatureInformation::label, and toJSON().

◆ operator<<() [9/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const SymbolDetails S 
)

Definition at line 882 of file Protocol.cpp.

References toJSON().

◆ operator<<() [10/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const SymbolInformation SI 
)

◆ operator<<() [11/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  O,
const TypeHierarchyItem I 
)

Definition at line 1387 of file Protocol.cpp.

References clang::clangd::TypeHierarchyItem::name, and toJSON().

◆ operator<<() [12/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const ASTNode Root 
)

◆ operator<<() [13/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const CodeCompleteResult R 
)

◆ operator<<() [14/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const CodeCompletion C 
)

Definition at line 2395 of file CodeComplete.cpp.

References C, operator<<(), and OS.

Referenced by operator<<().

◆ operator<<() [15/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Diag D 
)

Definition at line 418 of file Diagnostics.cpp.

References OS.

◆ operator<<() [16/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const DiagBase D 
)

Definition at line 399 of file Diagnostics.cpp.

References OS.

◆ operator<<() [17/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Diagnostic D 
)

Definition at line 768 of file Protocol.cpp.

References OS.

◆ operator<<() [18/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Fix F 
)

Definition at line 408 of file Diagnostics.cpp.

References OS.

◆ operator<<() [19/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const HoverInfo::Param P 
)

◆ operator<<() [20/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const HoverInfo::PrintedType T 
)

Definition at line 1648 of file Hover.cpp.

References OS.

◆ operator<<() [21/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Inclusion Inc 
)

◆ operator<<() [22/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const IndexFileOut O 
)

Definition at line 681 of file Serialization.cpp.

References clang::clangd::IndexFileOut::Format, OS, RIFF, writeYAML(), and YAML.

◆ operator<<() [23/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const InlayHintLabelPart L 
)

Definition at line 1587 of file Protocol.cpp.

References OS.

◆ operator<<() [24/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const LocatedSymbol S 
)

Definition at line 1642 of file XRefs.cpp.

References operator<<(), and OS.

◆ operator<<() [25/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Location L 
)

Definition at line 161 of file Protocol.cpp.

References OS.

◆ operator<<() [26/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const PathMapping M 
)

Definition at line 164 of file PathMapping.cpp.

References M, and OS.

◆ operator<<() [27/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Position P 
)

◆ operator<<() [28/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Range R 
)

Definition at line 150 of file Protocol.cpp.

References clang::clangd::Range::end, OS, and clang::clangd::Range::start.

◆ operator<<() [29/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Ref R 
)

Definition at line 32 of file Ref.cpp.

References clang::clangd::Ref::Kind, clang::clangd::Ref::Location, and OS.

◆ operator<<() [30/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const ReferenceLocation L 
)

Definition at line 175 of file Protocol.cpp.

References OS.

◆ operator<<() [31/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const ReferencesResult::Reference R 
)

◆ operator<<() [32/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Relation R 
)

◆ operator<<() [33/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const RelationKind  R 
)

Definition at line 16 of file Relation.cpp.

References BaseOf, OS, and OverriddenBy.

◆ operator<<() [34/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SignatureQualitySignals S 
)

Definition at line 560 of file Quality.cpp.

References OS.

◆ operator<<() [35/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Symbol S 
)

Definition at line 27 of file Symbol.cpp.

References OS.

◆ operator<<() [36/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SymbolID ID 
)

Definition at line 46 of file SymbolID.cpp.

References ID, and OS.

◆ operator<<() [37/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SymbolLocation L 
)

Definition at line 28 of file SymbolLocation.cpp.

References OS.

◆ operator<<() [38/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SymbolQualitySignals S 
)

Definition at line 246 of file Quality.cpp.

References OS.

◆ operator<<() [39/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SymbolRelevanceSignals S 
)

◆ operator<<() [40/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const SymbolSlab Slab 
)

Definition at line 69 of file Symbol.cpp.

References OS.

◆ operator<<() [41/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const TextEdit TE 
)

◆ operator<<() [42/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Token T 
)

Definition at line 18 of file Token.cpp.

References OS.

◆ operator<<() [43/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const Token::Range R 
)

◆ operator<<() [44/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const TokenStream TS 
)

◆ operator<<() [45/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
const URIForFile U 
)

Definition at line 94 of file Protocol.cpp.

References OS, and clang::clangd::URIForFile::uri().

◆ operator<<() [46/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
DeclRelation  R 
)

Definition at line 1181 of file FindTarget.cpp.

References Alias, REL_CASE, TemplateInstantiation, TemplatePattern, and Underlying.

◆ operator<<() [47/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
DeclRelationSet  RS 
)

Definition at line 1194 of file FindTarget.cpp.

◆ operator<<() [48/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
HighlightingKind  K 
)

Definition at line 1224 of file SemanticHighlighting.cpp.

References K, operator<<(), and OS.

◆ operator<<() [49/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
HighlightingModifier  K 
)

Definition at line 1311 of file SemanticHighlighting.cpp.

References K, operator<<(), OS, and toSemanticTokenModifier().

◆ operator<<() [50/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
InlayHintKind  Kind 
)

Definition at line 1549 of file Protocol.cpp.

References BlockEnd, DefaultArgument, Designator, K, Kind, OS, Parameter, and Type.

◆ operator<<() [51/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
MarkupKind  K 
)

Definition at line 1044 of file Protocol.cpp.

References K, OS, and toTextKind().

◆ operator<<() [52/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
OffsetEncoding  Enc 
)

Definition at line 1621 of file Protocol.cpp.

References OS, and toString().

◆ operator<<() [53/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
ReferenceLoc  R 
)

◆ operator<<() [54/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
RefKind  K 
)

Definition at line 15 of file Ref.cpp.

References K, Messages, OS, and Unknown.

◆ operator<<() [55/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
Symbol::SymbolFlag  F 
)

◆ operator<<() [56/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  OS,
SymbolOrigin  O 
)

Definition at line 14 of file SymbolOrigin.cpp.

References OS, and Unknown.

◆ operator<<() [57/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  Stream,
const CallHierarchyIncomingCall Call 
)

Definition at line 26 of file CallHierarchyTests.cpp.

References Call.

◆ operator<<() [58/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  Stream,
const CallHierarchyItem Item 
)

◆ operator<<() [59/61]

llvm::raw_ostream & clang::clangd::operator<< ( llvm::raw_ostream &  Stream,
const InlayHint Hint 
)

◆ operator<<() [60/61]

raw_ostream & clang::clangd::operator<< ( raw_ostream &  ,
const CodeCompleteResult  
)

◆ operator<<() [61/61]

raw_ostream & clang::clangd::operator<< ( raw_ostream &  ,
const CodeCompletion  
)

◆ operator==() [1/14]

bool clang::clangd::operator== ( const HighlightingToken L,
const HighlightingToken R 
)

◆ operator==() [2/14]

bool clang::clangd::operator== ( const HoverInfo::Param LHS,
const HoverInfo::Param RHS 
)
inline

◆ operator==() [3/14]

bool clang::clangd::operator== ( const HoverInfo::PassType LHS,
const HoverInfo::PassType RHS 
)
inline

◆ operator==() [4/14]

bool clang::clangd::operator== ( const HoverInfo::PrintedType LHS,
const HoverInfo::PrintedType RHS 
)
inline

◆ operator==() [5/14]

bool clang::clangd::operator== ( const Inclusion LHS,
const Inclusion RHS 
)

◆ operator==() [6/14]

bool clang::clangd::operator== ( const InlayHint A,
const InlayHint B 
)

Definition at line 1536 of file Protocol.cpp.

◆ operator==() [7/14]

bool clang::clangd::operator== ( const InlayHintLabelPart LHS,
const InlayHintLabelPart RHS 
)

◆ operator==() [8/14]

bool clang::clangd::operator== ( const Ref L,
const Ref R 
)
inline

◆ operator==() [9/14]

bool clang::clangd::operator== ( const SemanticToken L,
const SemanticToken R 
)

◆ operator==() [10/14]

bool clang::clangd::operator== ( const SymbolDetails LHS,
const SymbolDetails RHS 
)

◆ operator==() [11/14]

bool clang::clangd::operator== ( const SymbolLocation L,
const SymbolLocation R 
)
inline

◆ operator==() [12/14]

bool clang::clangd::operator== ( const SymbolLocation::Position L,
const SymbolLocation::Position R 
)
inline

◆ operator==() [13/14]

bool clang::clangd::operator== ( const SymbolRange LHS,
const SymbolRange RHS 
)

Definition at line 1021 of file Rename.cpp.

◆ operator==() [14/14]

bool clang::clangd::operator== ( const TextEdit L,
const TextEdit R 
)
inline

Definition at line 256 of file Protocol.h.

References clang::clangd::TextEdit::newText, and clang::clangd::TextEdit::range.

◆ operator|() [1/6]

DeclRelationSet clang::clangd::operator| ( DeclRelation  L,
DeclRelation  R 
)
inline

Definition at line 208 of file FindTarget.h.

◆ operator|() [2/6]

Definition at line 103 of file Headers.h.

◆ operator|() [3/6]

constexpr IndexContents clang::clangd::operator| ( IndexContents  L,
IndexContents  R 
)
inlineconstexpr

Definition at line 127 of file Index.h.

◆ operator|() [4/6]

RefKind clang::clangd::operator| ( RefKind  L,
RefKind  R 
)
inline

Definition at line 72 of file Ref.h.

◆ operator|() [5/6]

Symbol::SymbolFlag clang::clangd::operator| ( Symbol::SymbolFlag  A,
Symbol::SymbolFlag  B 
)
inline

Definition at line 156 of file Symbol.h.

◆ operator|() [6/6]

SymbolOrigin clang::clangd::operator| ( SymbolOrigin  A,
SymbolOrigin  B 
)
inline

Definition at line 35 of file SymbolOrigin.h.

◆ operator|=() [1/4]

IncludeGraphNode::SourceFlag & clang::clangd::operator|= ( IncludeGraphNode::SourceFlag A,
IncludeGraphNode::SourceFlag  B 
)
inline

Definition at line 115 of file Headers.h.

◆ operator|=() [2/4]

RefKind & clang::clangd::operator|= ( RefKind L,
RefKind  R 
)
inline

Definition at line 76 of file Ref.h.

◆ operator|=() [3/4]

Symbol::SymbolFlag & clang::clangd::operator|= ( Symbol::SymbolFlag A,
Symbol::SymbolFlag  B 
)
inline

Definition at line 161 of file Symbol.h.

◆ operator|=() [4/4]

SymbolOrigin & clang::clangd::operator|= ( SymbolOrigin A,
SymbolOrigin  B 
)
inline

Definition at line 39 of file SymbolOrigin.h.

◆ operator~()

DeclRelationSet clang::clangd::operator~ ( DeclRelation  R)
inline

Definition at line 214 of file FindTarget.h.

◆ outgoingCalls()

std::vector< CallHierarchyOutgoingCall > clang::clangd::outgoingCalls ( const CallHierarchyItem Item,
const SymbolIndex Index 
)

◆ own()

static void clang::clangd::own ( Symbol S,
llvm::UniqueStringSaver &  Strings 
)
static

Definition at line 48 of file Symbol.cpp.

References Strings, and visitStrings().

Referenced by clang::clangd::SymbolSlab::Builder::insert().

◆ packedLookup()

template<typename T >
static T clang::clangd::packedLookup ( const uint8_t *  Data,
int  I 
)
static

Definition at line 151 of file FuzzyMatch.cpp.

◆ pairBrackets()

void clang::clangd::pairBrackets ( TokenStream )

Identifies bracket token in the stream which should be paired.

Sets Token::Pair accordingly.

Definition at line 148 of file Bracket.cpp.

Referenced by getFoldingRanges().

◆ parseDocumentation()

void clang::clangd::parseDocumentation ( llvm::StringRef  Input,
markup::Document Output 
)

Definition at line 1619 of file Hover.cpp.

References Line, Output, and parseDocumentationLine().

Referenced by clang::clangd::HoverInfo::present().

◆ parseDocumentationLine()

void clang::clangd::parseDocumentationLine ( llvm::StringRef  Line,
markup::Paragraph Out 
)

Definition at line 1603 of file Hover.cpp.

References getBacktickQuoteRange(), Line, Out, and parseDocumentationLine().

Referenced by parseDocumentation(), and parseDocumentationLine().

◆ parseFixed()

static std::unique_ptr< tooling::CompilationDatabase > clang::clangd::parseFixed ( PathRef  Path,
llvm::StringRef  Data,
std::string &  Error 
)
static

Definition at line 266 of file GlobalCompilationDatabase.cpp.

References Error.

◆ parseJSON()

static std::unique_ptr< tooling::CompilationDatabase > clang::clangd::parseJSON ( PathRef  Path,
llvm::StringRef  Data,
std::string &  Error 
)
static

Definition at line 249 of file GlobalCompilationDatabase.cpp.

References Error.

◆ parsePathMappings()

llvm::Expected< PathMappings > clang::clangd::parsePathMappings ( llvm::StringRef  RawPathMappings)

Parse the command line RawPathMappings (e.g.

"/client=/server") into pairs. Returns an error if the mappings are malformed, i.e. not absolute or not a proper pair.

Definition at line 169 of file PathMapping.cpp.

References error().

Referenced by clangdMain().

◆ patchDiags()

static std::vector< Diag > clang::clangd::patchDiags ( llvm::ArrayRef< Diag BaselineDiags,
const ScannedPreamble &  BaselineScan,
const ScannedPreamble &  ModifiedScan 
)
static

Definition at line 775 of file Preamble.cpp.

◆ pathEqual()

bool clang::clangd::pathEqual ( PathRef  A,
PathRef  B 
)

Definition at line 19 of file Path.cpp.

Referenced by getCorrespondingHeaderOrSource(), and pathStartsWith().

◆ pathStartsWith()

bool clang::clangd::pathStartsWith ( PathRef  Ancestor,
PathRef  Path,
llvm::sys::path::Style  Style = llvm::sys::path::Style::native 
)

Checks if Ancestor is a proper ancestor of Path.

This is just a smarter lexical prefix match, e.g: foo/bar/baz doesn't start with foo/./bar. Both Ancestor and Path must be absolute.

Definition at line 36 of file Path.cpp.

References pathEqual().

Referenced by clang::clangd::TestScheme::getAbsolutePath().

◆ platformString()

std::string clang::clangd::platformString ( )

Definition at line 20 of file Feature.cpp.

Referenced by clangdMain().

◆ pointBounds()

static llvm::SmallVector< std::pair< unsigned, unsigned >, 2 > clang::clangd::pointBounds ( unsigned  Offset,
const syntax::TokenBuffer &  Tokens 
)
static

Definition at line 1038 of file Selection.cpp.

References Loc, and Offset.

Referenced by clang::clangd::SelectionTree::createEach().

◆ positionToOffset()

llvm::Expected< size_t > clang::clangd::positionToOffset ( llvm::StringRef  Code,
Position  P,
bool  AllowColumnsBeyondLineLength = true 
)

Turn a [line, column] pair into an offset in Code.

If P.character exceeds the line length, returns the offset at end-of-line. (If !AllowColumnsBeyondLineLength, then returns an error instead). If the line number is out of range, returns an error.

The returned value is in the range [0, Code.size()].

Definition at line 173 of file SourceCode.cpp.

References C, clang::clangd::Position::character, error(), clang::clangd::Position::line, Line, lspEncoding(), and measureUnits().

Referenced by applyChange(), buildRenameEdit(), codeComplete(), findRecordTypeAt(), findType(), clang::clangd::ClangdServer::formatFile(), clang::clangd::ClangdServer::formatOnType(), clang::clangd::ClangdServer::getAST(), getSemanticRanges(), rename(), signatureHelp(), sourceLocationInMainFile(), and toSemanticTokens().

◆ prefer()

static bool clang::clangd::prefer ( const SymbolLocation L,
const SymbolLocation R 
)
static

Definition at line 226 of file Merge.cpp.

References Loc, and Suffix.

Referenced by mergeSymbol().

◆ preferredIncludeDirective()

Symbol::IncludeDirective clang::clangd::preferredIncludeDirective ( llvm::StringRef  FileName,
const LangOptions &  LangOpts,
ArrayRef< Inclusion MainFileIncludes,
ArrayRef< const Decl * >  TopLevelDecls 
)

Infer the include directive to use for the given FileName.

It aims for #import for ObjC files and #include for the rest.

  • For source files we use LangOpts directly to infer ObjC-ness.
  • For header files we also check for symbols declared by the file and existing include directives, as the language can be set to ObjC++ as a fallback in the absence of compile flags.

Definition at line 363 of file AST.cpp.

References Decl, FileName, clang::clangd::Symbol::Import, clang::clangd::Symbol::Include, and isHeaderFile().

Referenced by clang::clangd::ParsedAST::build(), and clang::clangd::ASTSignals::derive().

◆ prepareCallHierarchy()

std::vector< CallHierarchyItem > clang::clangd::prepareCallHierarchy ( ParsedAST AST,
Position  Pos,
PathRef  TUPath 
)

Get call hierarchy information at Pos.

Definition at line 2217 of file XRefs.cpp.

References Decl, declToCallHierarchyItem(), elog(), Loc, Pos, prepareCallHierarchy(), and sourceLocationInMainFile().

Referenced by prepareCallHierarchy(), and clang::clangd::ClangdServer::prepareCallHierarchy().

◆ prepareCompilerInstance() [1/2]

std::unique_ptr< CompilerInstance > clang::clangd::prepareCompilerInstance ( std::unique_ptr< clang::CompilerInvocation >  CI,
const PrecompiledPreamble *  Preamble,
std::unique_ptr< llvm::MemoryBuffer >  Buffer,
llvm::IntrusiveRefCntPtr< llvm::vfs::FileSystem >  VFS,
DiagnosticConsumer DiagsClient 
)

Definition at line 129 of file Compiler.cpp.

References CI, Clang, and Preamble.

Referenced by clang::clangd::ParsedAST::build(), and indexStandardLibrary().

◆ prepareCompilerInstance() [2/2]

std::unique_ptr< CompilerInstance > clang::clangd::prepareCompilerInstance ( std::unique_ptr< clang::CompilerInvocation >  ,
const PrecompiledPreamble *  ,
std::unique_ptr< llvm::MemoryBuffer >  MainFile,
IntrusiveRefCntPtr< llvm::vfs::FileSystem >  ,
DiagnosticConsumer  
)

Creates a compiler instance, configured so that:

  • Contents of the parsed file are remapped to MainFile.
  • Preamble is overriden to use PCH passed to this function. It means the changes to the preamble headers or files included in the preamble are not visible to this compiler instance.
  • llvm::vfs::FileSystem is used for all underlying file accesses. The actual vfs used by the compiler may be an overlay over the passed vfs. Returns null on errors. When non-null value is returned, it is expected to be consumed by FrontendAction::BeginSourceFile to properly destroy MainFile.

◆ prepareTweak()

llvm::Expected< std::unique_ptr< Tweak > > clang::clangd::prepareTweak ( StringRef  ID,
const Tweak::Selection S,
const FeatureModuleSet Modules 
)

Definition at line 91 of file Tweak.cpp.

References error(), and ID.

Referenced by clang::clangd::ClangdServer::applyTweak().

◆ prepareTweaks()

std::vector< std::unique_ptr< Tweak > > clang::clangd::prepareTweaks ( const Tweak::Selection S,
llvm::function_ref< bool(const Tweak &)>  Filter,
const FeatureModuleSet Modules 
)

Calls prepare() on all tweaks that satisfy the filter, returning those that can run on the selection.

Definition at line 72 of file Tweak.cpp.

Referenced by clang::clangd::ClangdServer::codeAction().

◆ printArgv() [1/2]

std::string clang::clangd::printArgv ( llvm::ArrayRef< llvm::StringRef >  Args)

Definition at line 622 of file CompileCommands.cpp.

References Args, and OS.

Referenced by MATCHER_P2(), and printArgv().

◆ printArgv() [2/2]

std::string clang::clangd::printArgv ( llvm::ArrayRef< std::string >  Args)

Definition at line 642 of file CompileCommands.cpp.

References Args, and printArgv().

◆ printName()

std::string clang::clangd::printName ( const ASTContext &  Ctx,
const NamedDecl &  ND 
)

Prints unqualified name of the decl for the purpose of displaying it to the user.

Anonymous decls return names of the form "(anonymous {kind})", e.g. "(anonymous struct)" or "(anonymous namespace)".

Definition at line 223 of file AST.cpp.

References getQualifierLoc(), isAnonymous(), Name, Out, and printTemplateSpecializationArgs().

Referenced by declToHierarchyItem().

◆ printNamespaceScope()

std::string clang::clangd::printNamespaceScope ( const DeclContext &  DC)

Returns the first enclosing namespace scope starting from DC.

Definition at line 280 of file AST.cpp.

References printQualifiedName().

Referenced by collectAccessibleScopes(), clang::clangd::SymbolRelevanceSignals::computeASTSignals(), and extractUnresolvedNameCheaply().

◆ printObjCContainer()

std::string clang::clangd::printObjCContainer ( const ObjCContainerDecl &  C)

Print the Objective-C container name including categories, e.g. MyClass,.

Definition at line 312 of file AST.cpp.

References C, Class, getNameOrErrForObjCInterface(), Name, and OS.

Referenced by printObjCMethod().

◆ printObjCMethod()

std::string clang::clangd::printObjCMethod ( const ObjCMethodDecl &  Method)

Print the Objective-C method name, including the full container name, e.g.

-[MyClass(Category) method:]

Definition at line 293 of file AST.cpp.

References C, Method, Name, OS, and printObjCContainer().

◆ printQualifiedName()

std::string clang::clangd::printQualifiedName ( const NamedDecl &  ND)

Returns the qualified name of ND.

The scope doesn't contain unwritten scopes like inline namespaces.

Definition at line 182 of file AST.cpp.

References OS.

Referenced by getSymbolInfo(), operator<<(), and printNamespaceScope().

◆ printTemplateSpecializationArgs()

std::string clang::clangd::printTemplateSpecializationArgs ( const NamedDecl &  ND)

Prints template arguments of a decl as written in the source code, including enclosing '<' and '>', e.g for a partial specialization like: template <typename U> struct Foo<int, U> will return '<int, U>'.

Returns an empty string if decl is not a template specialization.

Definition at line 264 of file AST.cpp.

References Args, and OS.

Referenced by operator<<(), and printName().

◆ printType()

std::string clang::clangd::printType ( const QualType  QT,
const DeclContext &  CurContext,
llvm::StringRef  Placeholder = "" 
)

Returns a QualType as string.

The result doesn't contain unwritten scopes like anonymous/inline namespace.

Definition at line 394 of file AST.cpp.

References OS.

◆ printUsingNamespaceName()

std::string clang::clangd::printUsingNamespaceName ( const ASTContext &  Ctx,
const UsingDirectiveDecl &  D 
)

Returns the name of the namespace inside the 'using namespace' directive, as written in the code.

E.g., passing 'using namespace ::std' will result in '::std'.

Definition at line 211 of file AST.cpp.

References Name, and Out.

◆ provideClangdConfig()

TidyProvider clang::clangd::provideClangdConfig ( )

Definition at line 254 of file TidyProvider.cpp.

References mergeCheckList(), and provideClangdConfig().

Referenced by clangdMain(), and provideClangdConfig().

◆ provideClangTidyFiles()

TidyProvider clang::clangd::provideClangTidyFiles ( ThreadsafeFS TFS)

Provider that searches for .clang-tidy configuration files in the directory tree.

Definition at line 267 of file TidyProvider.cpp.

References Filename, and provideClangTidyFiles().

Referenced by clangdMain(), and provideClangTidyFiles().

◆ provideDefaultChecks()

TidyProvider clang::clangd::provideDefaultChecks ( )

Provider that will enable a nice set of default checks if none are specified.

Definition at line 170 of file TidyProvider.cpp.

References DefaultChecks, and provideDefaultChecks().

Referenced by clangdMain(), and provideDefaultChecks().

◆ provideEnvironment()

TidyProvider clang::clangd::provideEnvironment ( )

Provider that just sets the defaults.

Definition at line 152 of file TidyProvider.cpp.

References provideEnvironment().

Referenced by clangdMain(), and provideEnvironment().

◆ qualifiedByUnresolved()

std::optional< std::string > clang::clangd::qualifiedByUnresolved ( const SourceManager &  SM,
SourceLocation  Loc,
const LangOptions &  LangOpts 
)

Definition at line 350 of file clangd/IncludeFixer.cpp.

References Loc.

Referenced by extractUnresolvedNameCheaply().

◆ quality()

float clang::clangd::quality ( const Symbol S)

Computes query-independent quality score for a Symbol.

This currently falls in the range [1, ln(#indexed documents)]. FIXME: this should probably be split into symbol -> signals and signals -> score, so it can be reused for Sema completions.

Definition at line 31 of file Symbol.cpp.

◆ rangeInCommonFile()

static SourceRange clang::clangd::rangeInCommonFile ( SourceRange  R,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 345 of file SourceCode.cpp.

References includeHashLoc(), and toTokenRange().

Referenced by getExpansionTokenRangeInSameFile(), and toHalfOpenFileRange().

◆ rangeTillEOL()

clangd::Range clang::clangd::rangeTillEOL ( llvm::StringRef  Code,
unsigned  HashOffset 
)

Returns the range starting at offset and spanning the whole line.

Escaped newlines are not handled.

Definition at line 1264 of file SourceCode.cpp.

References C, HashOffset, lspLength(), offsetToPosition(), and rangeTillEOL().

Referenced by rangeTillEOL().

◆ readIndexFile()

llvm::Expected< IndexFileIn > clang::clangd::readIndexFile ( llvm::StringRef  Data,
SymbolOrigin  Origin 
)

Definition at line 693 of file Serialization.cpp.

References error(), and readYAML().

Referenced by loadIndex(), and clang::clangd::MemoryShardStorage::loadShard().

◆ readYAML()

llvm::Expected< IndexFileIn > clang::clangd::readYAML ( llvm::StringRef  Data,
SymbolOrigin  Origin 
)

◆ record()

void clang::clangd::record ( const MemoryTree MT,
std::string  RootName,
const trace::Metric Out 
)

Records total memory usage of each node under Out.

Labels are edges on the path joined with ".", starting with RootName.

Definition at line 53 of file MemoryTree.cpp.

References Out.

◆ refIsCall()

static bool clang::clangd::refIsCall ( index::SymbolKind  Kind)
static

Definition at line 1177 of file SymbolCollector.cpp.

References Kind.

◆ reformatEdit()

llvm::Error clang::clangd::reformatEdit ( Edit E,
const format::FormatStyle &  Style 
)

Formats the edits and code around it according to Style.

Changes Replacements to formatted ones if succeeds.

Definition at line 1080 of file SourceCode.cpp.

References cleanupAndFormat(), E, and reformatEdit().

Referenced by clang::clangd::ClangdServer::applyTweak(), reformatEdit(), and clang::clangd::ClangdServer::rename().

◆ refsAre()

::testing::Matcher< const RefSlab & > clang::clangd::refsAre ( std::vector<::testing::Matcher< Ref > >  Matchers)

Definition at line 38 of file BackgroundIndexTests.cpp.

◆ removeCompletionLabelDetails()

void clang::clangd::removeCompletionLabelDetails ( CompletionItem )

Remove the labelDetails field (for clients that don't support it).

Places the information into other fields of the completion item.

Definition at line 1123 of file Protocol.cpp.

References C.

◆ removeDots()

Path clang::clangd::removeDots ( PathRef  File)

Returns a version of File that doesn't contain dots and dot dots.

e.g /a/b/../c -> /a/c /a/b/./c -> /a/b/c FIXME: We should avoid encountering such paths in clangd internals by filtering everything we get over LSP, CDB, etc.

Definition at line 116 of file FS.cpp.

References File.

Referenced by clang::clangd::OverlayCDB::getCompileCommand(), and clang::clangd::OverlayCDB::setCompileCommand().

◆ rename()

llvm::Expected< RenameResult > clang::clangd::rename ( const RenameInputs RInputs)

◆ renameRangeAdjustmentCost()

size_t clang::clangd::renameRangeAdjustmentCost ( ArrayRef< Range Indexed,
ArrayRef< SymbolRange Lexed,
ArrayRef< size_t >  MappedIndex 
)

Evaluates how good the mapped result is.

0 indicates a perfect match.

Exposed for testing only.

REQUIRED: Indexed and Lexed are sorted, Indexed and MappedIndex have the same size.

Definition at line 1321 of file Rename.cpp.

References LastLine, and Line.

Referenced by getMappedRanges().

◆ replace()

static std::string clang::clangd::replace ( llvm::StringRef  Haystack,
llvm::StringRef  Needle,
llvm::StringRef  Repl 
)
static

Definition at line 31 of file TestIndex.cpp.

References replace().

Referenced by replace(), and sym().

◆ replacementsToEdits() [1/2]

std::vector< TextEdit > clang::clangd::replacementsToEdits ( llvm::StringRef  Code,
const tooling::Replacements &  Repls 
)

Definition at line 512 of file SourceCode.cpp.

References replacementToEdit().

Referenced by clang::clangd::Edit::asTextEdits().

◆ replacementsToEdits() [2/2]

std::vector< TextEdit > clang::clangd::replacementsToEdits ( StringRef  Code,
const tooling::Replacements &  Repls 
)

◆ replacementToEdit() [1/2]

TextEdit clang::clangd::replacementToEdit ( llvm::StringRef  Code,
const tooling::Replacement &  R 
)

◆ replacementToEdit() [2/2]

TextEdit clang::clangd::replacementToEdit ( StringRef  Code,
const tooling::Replacement &  R 
)

◆ requestShutdown()

void clang::clangd::requestShutdown ( )

Sets a flag to indicate that clangd was sent a shutdown signal, and the transport loop should exit at the next opportunity.

If shutdown was already requested, aborts the process. This function is threadsafe and signal-safe.

Definition at line 28 of file Shutdown.cpp.

References ShutdownRequested.

Referenced by clangdMain(), and main().

◆ resolveForwardingParameters()

llvm::SmallVector< const ParmVarDecl * > clang::clangd::resolveForwardingParameters ( const FunctionDecl *  D,
unsigned  MaxDepth = 10 
)

Recursively resolves the parameters of a FunctionDecl that forwards its parameters to another function via variadic template parameters.

This can for example be used to retrieve the constructor parameter ParmVarDecl for a make_unique or emplace_back call.

Definition at line 946 of file AST.cpp.

References Head, Info, Pack, Parameters, resolveForwardingParameters(), and Tail.

Referenced by resolveForwardingParameters().

◆ resolveTypeHierarchy()

void clang::clangd::resolveTypeHierarchy ( TypeHierarchyItem Item,
int  ResolveLevels,
TypeHierarchyDirection  Direction,
const SymbolIndex Index 
)

◆ retryAfterSignalUnlessShutdown()

template<typename Fun , typename Ret = decltype(std::declval<Fun>()())>
Ret clang::clangd::retryAfterSignalUnlessShutdown ( const std::enable_if_t< true, Ret > &  Fail,
const Fun &  F 
)

Retry an operation if it gets interrupted by a signal.

This is like llvm::sys::RetryAfterSignal, except that if shutdown was requested (which interrupts IO), we'll fail rather than retry.

Definition at line 70 of file Shutdown.h.

References shutdownRequested().

◆ runAddDocument() [1/2]

void clang::clangd::runAddDocument ( ClangdServer Server,
PathRef  File,
llvm::StringRef  Contents,
llvm::StringRef  Version,
WantDiagnostics  WantDiags,
bool  ForceRebuild 
)

Definition at line 17 of file SyncAPI.cpp.

References File, and WantDiags.

◆ runAddDocument() [2/2]

void clang::clangd::runAddDocument ( ClangdServer Server,
PathRef  File,
StringRef  Contents,
StringRef  Version = "null",
WantDiagnostics  WantDiags = WantDiagnostics::Auto,
bool  ForceRebuild = false 
)

◆ runAsync()

template<typename T >
std::future< T > clang::clangd::runAsync ( llvm::unique_function< T()>  Action)

Runs Action asynchronously with a new std::thread.

The context will be propagated.

Definition at line 127 of file Threading.h.

References Action, clang::clangd::Context::clone(), and clang::clangd::Context::current().

◆ runCodeComplete()

llvm::Expected< CodeCompleteResult > clang::clangd::runCodeComplete ( ClangdServer Server,
PathRef  File,
Position  Pos,
clangd::CodeCompleteOptions  Opts 
)

Definition at line 72 of file SyncAPI.cpp.

References File, and Pos.

◆ runCustomAction()

llvm::Error clang::clangd::runCustomAction ( ClangdServer Server,
PathRef  File,
llvm::function_ref< void(InputsAndAST)>  Action 
)

Definition at line 161 of file SyncAPI.cpp.

References Action, AST, and File.

◆ runFindDocumentHighlights()

llvm::Expected< std::vector< DocumentHighlight > > clang::clangd::runFindDocumentHighlights ( ClangdServer Server,
PathRef  File,
Position  Pos 
)

Definition at line 95 of file SyncAPI.cpp.

References File, and Pos.

◆ runFormatFile()

llvm::Expected< tooling::Replacements > clang::clangd::runFormatFile ( ClangdServer Server,
PathRef  File,
std::optional< Range Rng 
)

Definition at line 119 of file SyncAPI.cpp.

References File.

◆ runFuzzyFind() [1/3]

SymbolSlab clang::clangd::runFuzzyFind ( const SymbolIndex Index,
const FuzzyFindRequest Req 
)

Definition at line 132 of file SyncAPI.cpp.

References Builder.

◆ runFuzzyFind() [2/3]

SymbolSlab clang::clangd::runFuzzyFind ( const SymbolIndex Index,
llvm::StringRef  Query 
)

◆ runFuzzyFind() [3/3]

SymbolSlab clang::clangd::runFuzzyFind ( const SymbolIndex Index,
StringRef  Query 
)

◆ runLocateSymbolAt()

llvm::Expected< std::vector< LocatedSymbol > > clang::clangd::runLocateSymbolAt ( ClangdServer Server,
PathRef  File,
Position  Pos 
)

Definition at line 88 of file SyncAPI.cpp.

References File, and Pos.

◆ runPrepareRename()

llvm::Expected< RenameResult > clang::clangd::runPrepareRename ( ClangdServer Server,
PathRef  File,
Position  Pos,
std::optional< std::string >  NewName,
const RenameOptions RenameOpts 
)

Definition at line 110 of file SyncAPI.cpp.

References File, and Pos.

◆ runRename() [1/2]

llvm::Expected< RenameResult > clang::clangd::runRename ( ClangdServer Server,
PathRef  File,
Position  Pos,
llvm::StringRef  NewName,
const RenameOptions RenameOpts 
)

Definition at line 101 of file SyncAPI.cpp.

References File, and Pos.

◆ runRename() [2/2]

llvm::Expected< RenameResult > clang::clangd::runRename ( ClangdServer Server,
PathRef  File,
Position  Pos,
StringRef  NewName,
const clangd::RenameOptions RenameOpts 
)

◆ runSemanticRanges()

llvm::Expected< std::vector< SelectionRange > > clang::clangd::runSemanticRanges ( ClangdServer Server,
PathRef  File,
const std::vector< Position > &  Pos 
)

Definition at line 147 of file SyncAPI.cpp.

References File, and Pos.

◆ runSignatureHelp()

llvm::Expected< SignatureHelp > clang::clangd::runSignatureHelp ( ClangdServer Server,
PathRef  File,
Position  Pos,
MarkupKind  DocumentationFormat 
)

Definition at line 79 of file SyncAPI.cpp.

References File, and Pos.

◆ runSwitchHeaderSource()

llvm::Expected< std::optional< clangd::Path > > clang::clangd::runSwitchHeaderSource ( ClangdServer Server,
PathRef  File 
)

Definition at line 155 of file SyncAPI.cpp.

References File.

◆ scanningProjectModules()

std::unique_ptr< ProjectModules > clang::clangd::scanningProjectModules ( std::shared_ptr< const clang::tooling::CompilationDatabase >  CDB,
const ThreadsafeFS TFS 
)

Providing modules information for the project by scanning every file.

Definition at line 196 of file ScanningProjectModules.cpp.

Referenced by clang::clangd::DirectoryBasedGlobalCompilationDatabase::getProjectModules().

◆ scopeProximityScore()

static float clang::clangd::scopeProximityScore ( unsigned  ScopeDistance)
static

◆ scopeToPath()

static std::pair< std::string, int > clang::clangd::scopeToPath ( llvm::StringRef  Scope)
static

◆ semanticTokenModifiers()

static std::vector< llvm::StringRef > clang::clangd::semanticTokenModifiers ( )
static

Definition at line 485 of file ClangdLSPServer.cpp.

References LastModifier, and toSemanticTokenModifier().

◆ semanticTokenTypes()

static std::vector< llvm::StringRef > clang::clangd::semanticTokenTypes ( )
static

Definition at line 477 of file ClangdLSPServer.cpp.

References LastKind, and toSemanticTokenType().

◆ serializeTHIForExtension()

llvm::json::Value clang::clangd::serializeTHIForExtension ( TypeHierarchyItem  THI)

◆ shutdownRequested()

bool clang::clangd::shutdownRequested ( )

Checks whether requestShutdown() was called.

This function is threadsafe and signal-safe.

Definition at line 34 of file Shutdown.cpp.

References ShutdownRequested.

Referenced by main(), and retryAfterSignalUnlessShutdown().

◆ signatureHelp()

SignatureHelp clang::clangd::signatureHelp ( PathRef  FileName,
Position  Pos,
const PreambleData Preamble,
const ParseInputs ParseInput,
MarkupKind  DocumentationFormat 
)

Get signature help at a specified Pos in FileName.

Definition at line 2265 of file CodeComplete.cpp.

References elog(), Offset, ParseInput, Pos, positionToOffset(), and signatureHelp().

Referenced by clang::clangd::ClangdServer::signatureHelp(), and signatureHelp().

◆ sortText()

std::string clang::clangd::sortText ( float  Score,
llvm::StringRef  Tiebreak = "" 
)

Returns a string that sorts in the same order as (-Score, Tiebreak), for LSP.

(The highest score compares smallest so it sorts at the top).

Definition at line 549 of file Quality.cpp.

References encodeFloat(), Name, OS, and Score.

Referenced by clang::clangd::CodeCompletion::render().

◆ sourceLocationInMainFile()

llvm::Expected< SourceLocation > clang::clangd::sourceLocationInMainFile ( const SourceManager &  SM,
Position  P 
)

Return the file location, corresponding to P.

Note that one should take care to avoid comparing the result with expansion locations.

Definition at line 462 of file SourceCode.cpp.

References Offset, and positionToOffset().

Referenced by findDocumentHighlights(), findImplementations(), findReferences(), getHover(), getSymbolInfo(), clang::clangd::SymbolCollector::handleMacros(), locateSymbolAt(), prepareCallHierarchy(), and rename().

◆ sourceLocToPosition()

Position clang::clangd::sourceLocToPosition ( const SourceManager &  SM,
SourceLocation  Loc 
)

Turn a SourceLocation into a [line, column] pair.

FIXME: This should return an error if the location is invalid.

Definition at line 214 of file SourceCode.cpp.

References clang::clangd::Position::character, clang::clangd::Position::line, Loc, lspLength(), and Offset.

Referenced by declToHierarchyItem(), getSemanticRanges(), halfOpenToRange(), clang::clangd::CollectPragmaMarks::PragmaMark(), and clang::clangd::CollectMainFileMacros::SourceRangeSkipped().

◆ splitQualifiedName() [1/2]

std::pair< llvm::StringRef, llvm::StringRef > clang::clangd::splitQualifiedName ( llvm::StringRef  QName)

From "a::b::c", return {"a::b::", "c"}.

Scope is empty if there's no qualifier.

◆ splitQualifiedName() [2/2]

std::pair< StringRef, StringRef > clang::clangd::splitQualifiedName ( StringRef  QName)

Definition at line 497 of file SourceCode.cpp.

References Pos.

Referenced by extractUnresolvedNameCheaply(), getSymbolInfo(), and getWorkspaceSymbols().

◆ stripComments()

TokenStream clang::clangd::stripComments ( const TokenStream Input)

Drops comment tokens.

Definition at line 118 of file Token.cpp.

References Out.

◆ subTypes()

std::vector< TypeHierarchyItem > clang::clangd::subTypes ( const TypeHierarchyItem Item,
const SymbolIndex Index 
)

◆ superTypes()

std::optional< std::vector< TypeHierarchyItem > > clang::clangd::superTypes ( const TypeHierarchyItem Item,
const SymbolIndex Index 
)

◆ sym()

Symbol clang::clangd::sym ( llvm::StringRef  QName,
index::SymbolKind  Kind,
llvm::StringRef  USRFormat,
llvm::StringRef  Signature 
)

◆ symbol()

Symbol clang::clangd::symbol ( llvm::StringRef  QName)

◆ symbolToCallHierarchyItem()

static std::optional< CallHierarchyItem > clang::clangd::symbolToCallHierarchyItem ( const Symbol S,
PathRef  TUPath 
)
static

Definition at line 1765 of file XRefs.cpp.

References symbolToCallHierarchyItem().

Referenced by incomingCalls(), outgoingCalls(), and symbolToCallHierarchyItem().

◆ symbolToHierarchyItem()

template<typename HierarchyItem >
static std::optional< HierarchyItem > clang::clangd::symbolToHierarchyItem ( const Symbol S,
PathRef  TUPath 
)
static

◆ symbolToLocation()

llvm::Expected< Location > clang::clangd::symbolToLocation ( const Symbol Sym,
llvm::StringRef  TUPath 
)

Helper function for deriving an LSP Location for a Symbol.

Definition at line 76 of file FindSymbols.cpp.

References clang::clangd::Symbol::CanonicalDeclaration, clang::clangd::Symbol::Definition, and indexToLSPLocation().

Referenced by symbolToHierarchyItem().

◆ symbolToTypeHierarchyItem()

static std::optional< TypeHierarchyItem > clang::clangd::symbolToTypeHierarchyItem ( const Symbol S,
PathRef  TUPath 
)
static

Definition at line 1755 of file XRefs.cpp.

References symbolToTypeHierarchyItem().

Referenced by fillSubTypes(), superTypes(), and symbolToTypeHierarchyItem().

◆ targetDecl()

llvm::SmallVector< const NamedDecl *, 1 > clang::clangd::targetDecl ( const DynTypedNode &  ,
DeclRelationSet  Mask,
const HeuristicResolver Resolver 
)

targetDecl() finds the declaration referred to by an AST node.

For example a RecordTypeLoc refers to the RecordDecl for the type.

In some cases there are multiple results, e.g. a dependent unresolved OverloadExpr may have several candidates. All will be returned:

void foo(int); <– candidate void foo(double); <– candidate template <typename T> callFoo() { foo(T()); } ^ OverloadExpr

In other cases, there may be choices about what "referred to" means. e.g. does naming a typedef refer to the underlying type? The results are marked with a set of DeclRelations, and can be filtered.

struct S{}; <– candidate (underlying) using T = S{}; <– candidate (alias) T x; ^ TypedefTypeLoc

Formally, we walk a graph starting at the provided node, and return the decls that were found. Certain edges in the graph have labels, and for each decl we return the set of labels seen on a path to the decl. For the previous example:

           TypedefTypeLoc T
                  |
            TypedefType T
               /     \
      [underlying]  [alias]
             /         \
     RecordDecl S    TypeAliasDecl T

Note that this function only returns NamedDecls. Generally other decls don't have references in this sense, just the node itself. If callers want to support such decls, they should cast the node directly.

FIXME: some AST nodes cannot be DynTypedNodes, these cannot be specified.

Definition at line 582 of file FindTarget.cpp.

References allTargetDecls().

Referenced by findDocumentHighlights().

◆ TEST() [1/12]

clang::clangd::TEST ( BackgroundIndex  ,
Profile   
)

Definition at line 883 of file BackgroundIndexTests.cpp.

◆ TEST() [2/12]

clang::clangd::TEST ( BackgroundQueueTest  ,
Boost   
)

Definition at line 775 of file BackgroundIndexTests.cpp.

◆ TEST() [3/12]

clang::clangd::TEST ( BackgroundQueueTest  ,
Duplicates   
)

◆ TEST() [4/12]

clang::clangd::TEST ( BackgroundQueueTest  ,
Priority   
)

Definition at line 743 of file BackgroundIndexTests.cpp.

Referenced by TEST().

◆ TEST() [5/12]

clang::clangd::TEST ( BackgroundQueueTest  ,
Progress   
)

Definition at line 835 of file BackgroundIndexTests.cpp.

◆ TEST() [6/12]

clang::clangd::TEST ( ContextTests  ,
Builders   
)

◆ TEST() [7/12]

clang::clangd::TEST ( ContextTests  ,
MoveOps   
)

◆ TEST() [8/12]

clang::clangd::TEST ( ContextTests  ,
Simple   
)

◆ TEST() [9/12]

clang::clangd::TEST ( DecisionForestRuntime  ,
Evaluate   
)

Definition at line 8 of file DecisionForestTests.cpp.

References E.

◆ TEST() [10/12]

clang::clangd::TEST ( PeriodicThrottlerTest  ,
Minimal   
)

Definition at line 127 of file ThreadingTests.cpp.

References TEST().

◆ TEST() [11/12]

clang::clangd::TEST ( ProjectAware  ,
CreatedOnce   
)

◆ TEST() [12/12]

clang::clangd::TEST ( ProjectAware  ,
Test   
)

◆ TEST_F() [1/18]

clang::clangd::TEST_F ( BackgroundIndexRebuilderTest  ,
IndexingTUs   
)

Definition at line 707 of file BackgroundIndexTests.cpp.

◆ TEST_F() [2/18]

clang::clangd::TEST_F ( BackgroundIndexRebuilderTest  ,
LoadingShards   
)

Definition at line 716 of file BackgroundIndexTests.cpp.

◆ TEST_F() [3/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
CmdLineHash   
)

◆ TEST_F() [4/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
Config   
)

◆ TEST_F() [5/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
DirectIncludesTest   
)

Definition at line 324 of file BackgroundIndexTests.cpp.

References BaseOf.

◆ TEST_F() [6/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
IndexTwoFiles   
)

Definition at line 165 of file BackgroundIndexTests.cpp.

References runFuzzyFind(), and testPath().

◆ TEST_F() [7/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
MainFileRefs   
)

Definition at line 225 of file BackgroundIndexTests.cpp.

◆ TEST_F() [8/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
NoCrashOnErrorFile   
)

Definition at line 94 of file BackgroundIndexTests.cpp.

References testPath().

Referenced by TEST_F().

◆ TEST_F() [9/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
NoDotsInAbsPath   
)

Definition at line 511 of file BackgroundIndexTests.cpp.

References testPath().

◆ TEST_F() [10/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
Reindex   
)

Definition at line 631 of file BackgroundIndexTests.cpp.

References testPath().

◆ TEST_F() [11/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
ShardStorageEmptyFile   
)

Definition at line 445 of file BackgroundIndexTests.cpp.

◆ TEST_F() [12/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
ShardStorageLoad   
)

Definition at line 374 of file BackgroundIndexTests.cpp.

◆ TEST_F() [13/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
ShardStorageTest   
)

Definition at line 254 of file BackgroundIndexTests.cpp.

◆ TEST_F() [14/18]

clang::clangd::TEST_F ( BackgroundIndexTest  ,
UncompilableFiles   
)

Definition at line 542 of file BackgroundIndexTests.cpp.

References testPath().

◆ TEST_F() [15/18]

clang::clangd::TEST_F ( DirectoryBasedGlobalCompilationDatabaseCacheTest  ,
Cacheable   
)

Definition at line 519 of file GlobalCompilationDatabaseTests.cpp.

References hasFlag(), Root, testPath(), and testRoot().

◆ TEST_F() [16/18]

clang::clangd::TEST_F ( ThreadingTest  ,
Memoize   
)

Definition at line 67 of file ThreadingTests.cpp.

References clang::clangd::AsyncTaskRunner::runAsync().

◆ TEST_F() [17/18]

clang::clangd::TEST_F ( ThreadingTest  ,
MemoizeDeterministic   
)

◆ TEST_F() [18/18]

clang::clangd::TEST_F ( ThreadingTest  ,
TaskRunner   
)

◆ testPath()

std::string clang::clangd::testPath ( PathRef  File,
llvm::sys::path::Style  Style 
)

◆ testRoot()

const char * clang::clangd::testRoot ( )

◆ timeoutSeconds()

Deadline clang::clangd::timeoutSeconds ( std::optional< double >  Seconds)

Makes a deadline from a timeout in seconds. std::nullopt means wait forever.

Definition at line 113 of file Threading.cpp.

References clang::clangd::Deadline::infinity().

Referenced by clang::clangd::BackgroundQueue::blockUntilIdleForTest(), clang::clangd::ClangdServer::blockUntilIdleForTest(), and clang::clangd::LSPClient::CallResult::take().

◆ toDiag()

Diag clang::clangd::toDiag ( const llvm::SMDiagnostic &  D,
Diag::DiagSource  Source 
)

◆ toHalfOpenFileRange()

std::optional< SourceRange > clang::clangd::toHalfOpenFileRange ( const SourceManager &  Mgr,
const LangOptions &  LangOpts,
SourceRange  R 
)

Turns a token range into a half-open range and checks its correctness.

The resulting range will have only valid source location on both sides, both of which are file locations.

File locations always point to a particular offset in a file, i.e. they never refer to a location inside a macro expansion. Turning locations from macro expansions into file locations is ambiguous - one can use SourceManager::{getExpansion|getFile|getSpelling}Loc. This function calls SourceManager::getFileLoc on both ends of R to do the conversion.

User input (e.g. cursor position) is expressed as a file location, so this function can be viewed as a way to normalize the ranges used in the clang AST so that they are comparable with ranges coming from the user input.

Definition at line 430 of file SourceCode.cpp.

References getTokenFileRange(), getTokenLengthAtLoc(), isValidFileRange(), rangeInCommonFile(), and unionTokenRange().

Referenced by declToHierarchyItem(), and getSemanticRanges().

◆ toHeaderFile()

llvm::Expected< HeaderFile > clang::clangd::toHeaderFile ( llvm::StringRef  Header,
llvm::StringRef  HintPath 
)

Creates a HeaderFile from Header which can be either a URI or a literal include.

Definition at line 143 of file Headers.cpp.

References clang::clangd::URI::includeSpelling(), isLiteralInclude(), clang::clangd::URI::parse(), and clang::clangd::URI::resolve().

◆ toJSON() [1/64]

llvm::json::Value clang::clangd::toJSON ( const ApplyWorkspaceEditParams Params)

Definition at line 978 of file Protocol.cpp.

References clang::clangd::ApplyWorkspaceEditParams::edit.

◆ toJSON() [2/64]

llvm::json::Value clang::clangd::toJSON ( const ASTNode N)

◆ toJSON() [3/64]

llvm::json::Value clang::clangd::toJSON ( const CallHierarchyIncomingCall C)

Definition at line 1491 of file Protocol.cpp.

References C.

◆ toJSON() [4/64]

llvm::json::Value clang::clangd::toJSON ( const CallHierarchyItem I)

◆ toJSON() [5/64]

llvm::json::Value clang::clangd::toJSON ( const CallHierarchyOutgoingCall C)

Definition at line 1501 of file Protocol.cpp.

References C.

◆ toJSON() [6/64]

llvm::json::Value clang::clangd::toJSON ( const ChangeAnnotation CA)

◆ toJSON() [7/64]

llvm::json::Value clang::clangd::toJSON ( const CodeAction CA)

◆ toJSON() [8/64]

llvm::json::Value clang::clangd::toJSON ( const CodeDescription D)

Definition at line 705 of file Protocol.cpp.

◆ toJSON() [9/64]

llvm::json::Value clang::clangd::toJSON ( const Command &  C)

Definition at line 901 of file Protocol.cpp.

References C.

◆ toJSON() [10/64]

llvm::json::Value clang::clangd::toJSON ( const CompletionItem CI)

Definition at line 1133 of file Protocol.cpp.

References CI, and Missing.

◆ toJSON() [11/64]

llvm::json::Value clang::clangd::toJSON ( const CompletionItemLabelDetails CD)

◆ toJSON() [12/64]

llvm::json::Value clang::clangd::toJSON ( const CompletionList L)

Definition at line 1172 of file Protocol.cpp.

◆ toJSON() [13/64]

llvm::json::Value clang::clangd::toJSON ( const Diagnostic D)

Definition at line 709 of file Protocol.cpp.

◆ toJSON() [14/64]

llvm::json::Value clang::clangd::toJSON ( const DiagnosticRelatedInformation DRI)

◆ toJSON() [15/64]

llvm::json::Value clang::clangd::toJSON ( const DocumentHighlight DH)

◆ toJSON() [16/64]

llvm::json::Value clang::clangd::toJSON ( const DocumentLink DocumentLink)

◆ toJSON() [17/64]

llvm::json::Value clang::clangd::toJSON ( const DocumentSymbol S)

Definition at line 931 of file Protocol.cpp.

◆ toJSON() [18/64]

llvm::json::Value clang::clangd::toJSON ( const FileStatus FStatus)

◆ toJSON() [19/64]

llvm::json::Value clang::clangd::toJSON ( const FoldingRange Range)

Definition at line 1663 of file Protocol.cpp.

◆ toJSON() [20/64]

llvm::json::Value clang::clangd::toJSON ( const FuzzyFindRequest Request)

◆ toJSON() [21/64]

llvm::json::Value clang::clangd::toJSON ( const Hover H)

Definition at line 1058 of file Protocol.cpp.

References toJSON().

◆ toJSON() [22/64]

llvm::json::Value clang::clangd::toJSON ( const InactiveRegionsParams InactiveRegions)

◆ toJSON() [23/64]

llvm::json::Value clang::clangd::toJSON ( const InlayHint H)

Definition at line 1526 of file Protocol.cpp.

References K, and toJSON().

◆ toJSON() [24/64]

llvm::json::Value clang::clangd::toJSON ( const InlayHintKind Kind)

Definition at line 1511 of file Protocol.cpp.

References BlockEnd, DefaultArgument, Designator, Kind, Parameter, and Type.

◆ toJSON() [25/64]

llvm::json::Value clang::clangd::toJSON ( const InlayHintLabelPart L)

Definition at line 1568 of file Protocol.cpp.

◆ toJSON() [26/64]

llvm::json::Value clang::clangd::toJSON ( const Location P)

Definition at line 154 of file Protocol.cpp.

References clang::clangd::Location::range, and clang::clangd::Location::uri.

◆ toJSON() [27/64]

llvm::json::Value clang::clangd::toJSON ( const MarkupContent MC)

◆ toJSON() [28/64]

llvm::json::Value clang::clangd::toJSON ( const MemoryTree MT)

Keys starting with an underscore(_) represent leaves, e.g.

_total or _self for memory usage of whole subtree or only that specific node in bytes. All other keys represents children. An example: { "_self": 0, "_total": 8, "child1": { "_self": 4, "_total": 4, } "child2": { "_self": 2, "_total": 4, "child_deep": { "_self": 2, "_total": 2, } } }

Definition at line 1677 of file Protocol.cpp.

References clang::clangd::MemoryTree::children(), Out, clang::clangd::MemoryTree::self(), toJSON(), and Total.

◆ toJSON() [29/64]

llvm::json::Value clang::clangd::toJSON ( const MessageType R)

Definition at line 605 of file Protocol.cpp.

◆ toJSON() [30/64]

llvm::json::Value clang::clangd::toJSON ( const NoParams )
inline

Definition at line 317 of file Protocol.h.

◆ toJSON() [31/64]

llvm::json::Value clang::clangd::toJSON ( const OffsetEncoding OE)

Definition at line 1608 of file Protocol.cpp.

References toString().

◆ toJSON() [32/64]

llvm::json::Value clang::clangd::toJSON ( const ParameterInformation PI)

Definition at line 1179 of file Protocol.cpp.

◆ toJSON() [33/64]

llvm::json::Value clang::clangd::toJSON ( const Position P)

◆ toJSON() [34/64]

llvm::json::Value clang::clangd::toJSON ( const PrepareRenameResult PRR)

◆ toJSON() [35/64]

template<typename T >
llvm::json::Value clang::clangd::toJSON ( const ProgressParams< T > &  P)

◆ toJSON() [36/64]

llvm::json::Value clang::clangd::toJSON ( const PublishDiagnosticsParams PDP)

◆ toJSON() [37/64]

llvm::json::Value clang::clangd::toJSON ( const Range P)

Definition at line 143 of file Protocol.cpp.

References clang::clangd::Range::end, and clang::clangd::Range::start.

◆ toJSON() [38/64]

llvm::json::Value clang::clangd::toJSON ( const ReferenceLocation P)

◆ toJSON() [39/64]

llvm::json::Value clang::clangd::toJSON ( const RenameParams R)

◆ toJSON() [40/64]

llvm::json::Value clang::clangd::toJSON ( const SelectionRange Out)

Definition at line 1632 of file Protocol.cpp.

References Out, and toJSON().

◆ toJSON() [41/64]

llvm::json::Value clang::clangd::toJSON ( const SemanticTokens Tokens)

Definition at line 1282 of file Protocol.cpp.

References encodeTokens().

◆ toJSON() [42/64]

llvm::json::Value clang::clangd::toJSON ( const SemanticTokensEdit Edit)

Definition at line 1287 of file Protocol.cpp.

References encodeTokens(), and SemanticTokenEncodingSize.

◆ toJSON() [43/64]

llvm::json::Value clang::clangd::toJSON ( const SemanticTokensOrDelta TE)

◆ toJSON() [44/64]

llvm::json::Value clang::clangd::toJSON ( const ShowMessageParams R)

◆ toJSON() [45/64]

llvm::json::Value clang::clangd::toJSON ( const SignatureHelp SH)

◆ toJSON() [46/64]

llvm::json::Value clang::clangd::toJSON ( const SignatureInformation SI)

◆ toJSON() [47/64]

llvm::json::Value clang::clangd::toJSON ( const SymbolDetails P)

◆ toJSON() [48/64]

llvm::json::Value clang::clangd::toJSON ( const SymbolID S)

Definition at line 1741 of file Protocol.cpp.

◆ toJSON() [49/64]

llvm::json::Value clang::clangd::toJSON ( const SymbolInformation P)

◆ toJSON() [50/64]

llvm::json::Value clang::clangd::toJSON ( const TextDocumentEdit P)

◆ toJSON() [51/64]

llvm::json::Value clang::clangd::toJSON ( const TextDocumentIdentifier R)

Definition at line 98 of file Protocol.cpp.

References clang::clangd::TextDocumentIdentifier::uri.

◆ toJSON() [52/64]

llvm::json::Value clang::clangd::toJSON ( const TextEdit P)

◆ toJSON() [53/64]

llvm::json::Value clang::clangd::toJSON ( const TweakArgs A)

Definition at line 973 of file Protocol.cpp.

◆ toJSON() [54/64]

llvm::json::Value clang::clangd::toJSON ( const TypeHierarchyItem I)

◆ toJSON() [55/64]

llvm::json::Value clang::clangd::toJSON ( const TypeHierarchyItem::ResolveParams RP)

◆ toJSON() [56/64]

llvm::json::Value clang::clangd::toJSON ( const URIForFile U)

Serialize/deserialize URIForFile to/from a string URI.

Definition at line 92 of file Protocol.cpp.

References clang::clangd::URIForFile::uri().

◆ toJSON() [57/64]

llvm::json::Value clang::clangd::toJSON ( const VersionedTextDocumentIdentifier R)

◆ toJSON() [58/64]

llvm::json::Value clang::clangd::toJSON ( const WorkDoneProgressBegin P)

◆ toJSON() [59/64]

llvm::json::Value clang::clangd::toJSON ( const WorkDoneProgressCreateParams P)

Definition at line 567 of file Protocol.cpp.

References clang::clangd::WorkDoneProgressCreateParams::token.

◆ toJSON() [60/64]

llvm::json::Value clang::clangd::toJSON ( const WorkDoneProgressEnd P)

Definition at line 597 of file Protocol.cpp.

References clang::clangd::WorkDoneProgressEnd::message.

◆ toJSON() [61/64]

llvm::json::Value clang::clangd::toJSON ( const WorkDoneProgressReport P)

◆ toJSON() [62/64]

llvm::json::Value clang::clangd::toJSON ( const WorkspaceEdit WE)

◆ toJSON() [63/64]

llvm::json::Value clang::clangd::toJSON ( DiagnosticTag  Tag)

Definition at line 703 of file Protocol.cpp.

References Tag.

◆ toJSON() [64/64]

llvm::json::Value clang::clangd::toJSON ( SymbolTag  Tag)

Definition at line 1453 of file Protocol.cpp.

References Tag.

◆ toLSPDiags()

void clang::clangd::toLSPDiags ( const Diag D,
const URIForFile File,
const ClangdDiagnosticOptions Opts,
llvm::function_ref< void(clangd::Diagnostic, llvm::ArrayRef< Fix >)>  OutFn 
)

◆ toLSPRange()

static clangd::Range clang::clangd::toLSPRange ( llvm::StringRef  Code,
llvm::Annotations::Range  R 
)
static

◆ toSemanticTokenModifier()

llvm::StringRef clang::clangd::toSemanticTokenModifier ( HighlightingModifier  Modifier)

◆ toSemanticTokens()

std::vector< SemanticToken > clang::clangd::toSemanticTokens ( llvm::ArrayRef< HighlightingToken Tokens,
llvm::StringRef  Code 
)

◆ toSemanticTokenType()

llvm::StringRef clang::clangd::toSemanticTokenType ( HighlightingKind  Kind)

Definition at line 1427 of file SemanticHighlighting.cpp.

References Kind, and toSemanticTokenType().

Referenced by semanticTokenTypes(), and toSemanticTokenType().

◆ toSourceCode()

llvm::StringRef clang::clangd::toSourceCode ( const SourceManager &  SM,
SourceRange  R 
)

Returns the source code covered by the source range.

EXPECTS: isValidFileRange(R) == true.

Definition at line 452 of file SourceCode.cpp.

References isValidFileRange().

Referenced by getSpelledSpecifier(), and clang::clangd::SymbolCollector::handleMacros().

◆ toString()

static const char * clang::clangd::toString ( OffsetEncoding  OE)
static

◆ toTextEdit()

TextEdit clang::clangd::toTextEdit ( const FixItHint &  FixIt,
const SourceManager &  M,
const LangOptions &  L 
)

Definition at line 556 of file SourceCode.cpp.

References FixIt, halfOpenToRange(), and M.

Referenced by clang::clangd::StoreDiags::HandleDiagnostic().

◆ toTextKind()

static llvm::StringRef clang::clangd::toTextKind ( MarkupKind  Kind)
static

Definition at line 1017 of file Protocol.cpp.

References Kind, Markdown, and PlainText.

Referenced by operator<<(), and toJSON().

◆ toTokenRange()

static SourceRange clang::clangd::toTokenRange ( CharSourceRange  Range,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 318 of file SourceCode.cpp.

References getLocForTokenBegin().

Referenced by getExpansionTokenRangeInSameFile(), and rangeInCommonFile().

◆ toYAML() [1/5]

std::string clang::clangd::toYAML ( const Ref R)

Definition at line 556 of file YAMLSerialization.cpp.

References OS, and Reference.

◆ toYAML() [2/5]

std::string clang::clangd::toYAML ( const Relation R)

Definition at line 545 of file YAMLSerialization.cpp.

References OS.

◆ toYAML() [3/5]

std::string clang::clangd::toYAML ( const std::pair< SymbolID, ArrayRef< Ref > > &  )

◆ toYAML() [4/5]

std::string clang::clangd::toYAML ( const std::pair< SymbolID, llvm::ArrayRef< Ref > > &  Data)

Definition at line 534 of file YAMLSerialization.cpp.

References OS.

◆ toYAML() [5/5]

std::string clang::clangd::toYAML ( const Symbol S)

Definition at line 523 of file YAMLSerialization.cpp.

References OS.

◆ transformCursorPosition()

unsigned clang::clangd::transformCursorPosition ( unsigned  Offset,
const std::vector< tooling::Replacement > &  Replacements 
)

Determine the new cursor position after applying Replacements.

Analogue of tooling::Replacements::getShiftedCodePosition().

Definition at line 383 of file Format.cpp.

References Offset.

◆ translatePreamblePatchLocation()

SourceLocation clang::clangd::translatePreamblePatchLocation ( SourceLocation  Loc,
const SourceManager &  SM 
)

Translates locations inside preamble patch to their main-file equivalent using presumed locations.

Returns Loc if it isn't inside preamble patch.

Definition at line 1244 of file SourceCode.cpp.

References Loc, and translatePreamblePatchLocation().

Referenced by clang::clangd::StoreDiags::HandleDiagnostic(), clang::clangd::IncludeStructure::RecordHeaders::InclusionDirective(), locateMacroAt(), and translatePreamblePatchLocation().

◆ typeForNode()

static QualType clang::clangd::typeForNode ( const SelectionTree::Node N)
static

◆ typeParents()

std::vector< const CXXRecordDecl * > clang::clangd::typeParents ( const CXXRecordDecl *  CXXRD)

Given a record type declaration, find its base (parent) types.

Definition at line 2086 of file XRefs.cpp.

References Type, and typeParents().

Referenced by fillSuperTypes(), and typeParents().

◆ unionRanges()

void clang::clangd::unionRanges ( Range A,
Range  B 
)

Definition at line 480 of file SourceCode.cpp.

◆ unionTokenRange()

static SourceRange clang::clangd::unionTokenRange ( SourceRange  R1,
SourceRange  R2,
const SourceManager &  SM,
const LangOptions &  LangOpts 
)
static

Definition at line 327 of file SourceCode.cpp.

References getLocForTokenEnd().

Referenced by getTokenFileRange(), and toHalfOpenFileRange().

◆ unwrapFindType() [1/2]

static llvm::SmallVector< QualType > clang::clangd::unwrapFindType ( QualType  T,
const HeuristicResolver H 
)
static

Definition at line 2046 of file XRefs.cpp.

References unwrapFindType().

◆ unwrapFindType() [2/2]

static void clang::clangd::unwrapFindType ( QualType  T,
const HeuristicResolver H,
llvm::SmallVector< QualType > &  Out 
)
static

Definition at line 2007 of file XRefs.cpp.

References Out, and unwrapFindType().

Referenced by findType(), and unwrapFindType().

◆ updateVersion()

static void clang::clangd::updateVersion ( DraftStore::Draft D,
llvm::StringRef  SpecifiedVersion 
)
static

Definition at line 62 of file DraftStore.cpp.

References increment(), and log().

Referenced by clang::clangd::DraftStore::addDraft().

◆ var()

Symbol clang::clangd::var ( llvm::StringRef  Name)

Definition at line 78 of file TestIndex.cpp.

References Name, and sym().

◆ versionString()

std::string clang::clangd::versionString ( )

Definition at line 18 of file Feature.cpp.

Referenced by clangdMain().

◆ visibleNamespaces()

std::vector< std::string > clang::clangd::visibleNamespaces ( llvm::StringRef  Code,
const LangOptions &  LangOpts 
)

Heuristically determine namespaces visible at a point, without parsing Code.

This considers using-directives and enclosing namespace-declarations that are visible (and not obfuscated) in the file itself (not headers). Code should be truncated at the point of interest.

The returned vector is always non-empty.

  • The first element is the namespace that encloses the point: a declaration near the point would be within this namespace.
  • The elements are the namespaces in scope at the point: an unqualified lookup would search within these namespaces.

Using directives are resolved against all enclosing scopes, but no other namespace directives.

example: using namespace a; namespace foo { using namespace b;

visibleNamespaces are {"foo::", "", "a::", "b::", "foo::b::"}, not "a::b::".

Definition at line 823 of file SourceCode.cpp.

Referenced by locateSymbolTextually().

◆ visitStrings()

template<typename Callback >
void clang::clangd::visitStrings ( Symbol S,
const Callback CB 
)

Invokes Callback with each StringRef& contained in the Symbol.

Useful for deduplicating backing strings.

Definition at line 171 of file Symbol.h.

Referenced by own().

◆ vlog()

template<typename... Ts>
void clang::clangd::vlog ( const char *  Fmt,
Ts &&...  Vals 
)

◆ wait() [1/2]

void clang::clangd::wait ( std::unique_lock< std::mutex > &  Lock,
std::condition_variable &  CV,
Deadline  D 
)

◆ wait() [2/2]

template<typename Func >
bool clang::clangd::wait ( std::unique_lock< std::mutex > &  Lock,
std::condition_variable &  CV,
Deadline  D,
Func  F 
)

Waits on a condition variable until F() is true or D expires.

Definition at line 80 of file Threading.h.

References wait().

◆ wordMatching()

static std::optional< llvm::StringRef > clang::clangd::wordMatching ( llvm::StringRef  Name,
const llvm::StringSet<> *  ContextWords 
)
static

Definition at line 373 of file Quality.cpp.

References Name, and Word.

Referenced by clang::clangd::SymbolRelevanceSignals::calculateDerivedSignals(), and operator<<().

◆ writeCodeToFixMessage()

static void clang::clangd::writeCodeToFixMessage ( llvm::raw_ostream &  OS,
llvm::StringRef  Code 
)
static

Sanitizes a piece for presenting it in a synthesized fix message.

Ensures the result is not too large and does not contain newlines.

Definition at line 639 of file Diagnostics.cpp.

References OS.

Referenced by clang::clangd::StoreDiags::HandleDiagnostic().

◆ writeYAML()

void clang::clangd::writeYAML ( const IndexFileOut O,
llvm::raw_ostream &  OS 
)

◆ X()

static URISchemeRegistry::Add< TestScheme > clang::clangd::X ( TestScheme::Scheme  ,
"Test schema"   
)
static

◆ xpcToJson()

llvm::json::Value clang::clangd::xpcToJson ( const xpc_object_t &  XPCObject)

Definition at line 26 of file Conversion.cpp.

References elog(), and toString().

Referenced by dumpXPCObject().

Variable Documentation

◆ AllowCrashPragmasForTest

bool clang::clangd::AllowCrashPragmasForTest = false
static

Definition at line 43 of file Compiler.cpp.

Referenced by allowCrashPragmasForTest(), and disableUnsupportedOptions().

◆ AwfulScore

constexpr int clang::clangd::AwfulScore = -(1 << 13)
staticconstexpr

Definition at line 72 of file FuzzyMatch.cpp.

Referenced by clang::clangd::FuzzyMatcher::FuzzyMatcher(), and isAwful().

◆ CacheDiskMismatch

constexpr uint64_t clang::clangd::CacheDiskMismatch
staticconstexpr
Initial value:
=
std::numeric_limits<uint64_t>::max()

Definition at line 20 of file FileCache.cpp.

Referenced by clang::clangd::FileCache::read().

◆ CharRoles

constexpr uint8_t clang::clangd::CharRoles[]
staticconstexpr
Initial value:
= {
0x00, 0xaa, 0xaa, 0xff,
0x00, 0x55, 0xaa, 0xff,
0x00, 0x55, 0x59, 0xff,
0x00, 0xaa, 0xaa, 0xff,
}

Definition at line 141 of file FuzzyMatch.cpp.

Referenced by calculateRoles().

◆ CharTypes

constexpr uint8_t clang::clangd::CharTypes[]
staticconstexpr
Initial value:
= {
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff,
0x55, 0x55, 0xf5, 0xff,
0xab, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xea, 0xff,
0x57, 0x55, 0x55, 0x55,
0x55, 0x55, 0xd5, 0x3f,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
}

Definition at line 114 of file FuzzyMatch.cpp.

Referenced by calculateRoles().

◆ CompletionItemKindMax

constexpr auto clang::clangd::CompletionItemKindMax
constexpr
Initial value:
=
static_cast<size_t>(CompletionItemKind::TypeParameter)

Definition at line 370 of file Protocol.h.

◆ CompletionItemKindMin

constexpr auto clang::clangd::CompletionItemKindMin
constexpr
Initial value:
=
static_cast<size_t>(CompletionItemKind::Text)

Definition at line 368 of file Protocol.h.

Referenced by adjustKindToCapability().

◆ CurrentReporter

thread_local ThreadCrashReporter* clang::clangd::CurrentReporter = nullptr
static

◆ FileBeingProcessed

clang::clangd::Key<std::string> clang::clangd::FileBeingProcessed
static

◆ FileNotFound

constexpr uint64_t clang::clangd::FileNotFound = CacheDiskMismatch - 1
staticconstexpr

Definition at line 23 of file FileCache.cpp.

Referenced by clang::clangd::FileCache::read().

◆ kCurrentOffsetEncoding

Key< OffsetEncoding > clang::clangd::kCurrentOffsetEncoding

Definition at line 142 of file SourceCode.cpp.

Referenced by lspEncoding().

◆ MaxSuffixComponents

constexpr int clang::clangd::MaxSuffixComponents = 3
constexpr

The maximum number of path components in a key from StdSuffixHeaderMapping.

Used to minimize the number of lookups in suffix path mappings.

Definition at line 689 of file CanonicalIncludes.cpp.

Referenced by clang::clangd::CanonicalIncludes::mapHeader().

◆ PerfectBonus

constexpr int clang::clangd::PerfectBonus = 4
staticconstexpr

Definition at line 74 of file FuzzyMatch.cpp.

Referenced by clang::clangd::FuzzyMatcher::match().

◆ PreventStarvation

std::atomic<bool> clang::clangd::PreventStarvation = {false}
static

◆ SemanticTokenEncodingSize

constexpr unsigned clang::clangd::SemanticTokenEncodingSize = 5
constexpr

Definition at line 1260 of file Protocol.cpp.

Referenced by encodeTokens(), and toJSON().

◆ ShutdownRequested

std::atomic<bool> clang::clangd::ShutdownRequested = {false}
static

Definition at line 26 of file Shutdown.cpp.

Referenced by requestShutdown(), and shutdownRequested().

◆ StateKey

Key<CancelState> clang::clangd::StateKey
static

Definition at line 22 of file Cancellation.cpp.

Referenced by cancelableTask(), and isCancelled().

◆ SymbolKindMax

constexpr auto clang::clangd::SymbolKindMax = static_cast<size_t>(SymbolKind::TypeParameter)
constexpr

Definition at line 410 of file Protocol.h.

◆ SymbolKindMin

constexpr auto clang::clangd::SymbolKindMin = static_cast<size_t>(SymbolKind::File)
constexpr

Definition at line 409 of file Protocol.h.

Referenced by adjustKindToCapability().

◆ UnittestSchemeAnchorDest [1/2]

int LLVM_ATTRIBUTE_UNUSED clang::clangd::UnittestSchemeAnchorDest
static
Initial value:
=
volatile int UnittestSchemeAnchorSource
Definition: TestFS.cpp:137

Definition at line 36 of file QualityTests.cpp.

◆ UnittestSchemeAnchorDest [2/2]

int LLVM_ATTRIBUTE_UNUSED clang::clangd::UnittestSchemeAnchorDest
static
Initial value:

Definition at line 19 of file URITests.cpp.

◆ UnittestSchemeAnchorSource

volatile int clang::clangd::UnittestSchemeAnchorSource = 0

Definition at line 137 of file TestFS.cpp.