Expand description
File and span related types.
Structs§
- Maps items’
SyntaxNode
s toErasedFileAstId
s and back. - See crates\hir-expand\src\ast_id_map.rs This is a type erased FileAstId.
AstId
points to an AST node in a specific file.- Handle to a file in [
Vfs
] - Input to the analyzer is a set of files, where each file is identified by
FileId
and contains source code. However, another source of source code in Rust are macros: each macro can be thought of as producing a “temporary file”. To assign an id to such a file, we use the id of the macro call that produced the file. So, aHirFileId
is either aFileId
(source code written by user), or aMacroCallId
(source code produced by macro). MacroCallId
identifies a particular macro invocation, likeprintln!("Hello, {}", world)
.- Spans represent a region of code, used by the IDE to be able link macro inputs and outputs together. Positions in spans are relative to some
SpanAnchor
to make them more incremental friendly. - Maps absolute text ranges for the corresponding file to the relevant span data.
- A syntax context describes a hierarchy tracking order of macro definitions.
- Interned
SyntaxContextData
. - A range in text, represented as a pair of
TextSize
. - A measure of text length. Also, equivalently, an index into text.
Enums§
- A property of a macro expansion that determines how identifiers produced by that expansion are resolved.
Constants§
- FileId used as the span for syntax node fixups. Any Span containing this file id is to be considered fake.
- The root ast id always points to the encompassing file, using this in spans is discouraged as any range relative to it will be effectively absolute, ruining the entire point of anchored relative text ranges.