Machinery for hygienic macros, inspired by the
This module defines types which are thread safe if cfg!(parallel_queries) is true.
rustfmt-friendly version of
Create a impl block with some bitflags.
A byte offset. Keep this small (currently 32-bits), as AST contains a lot of them.
Extra information for tracking spans of macro and syntax sugar expansion
A mark is a unique id associated with a macro expansion.
A collection of spans. Spans have two orthogonal attributes:
A single source in the
A compressed span.
Contains either fields of
Spans represent a region of code, used for error reporting. Positions in
spans are absolute positions from the beginning of the source_map, not
positions relative to
A SyntaxContext represents a chain of macro expansions (represented by marks).
Differentiates between real files and common virtual files.
Dummy span, both position and length are zero, syntax context is zero as well. This span is kept inline and encoded with format 0.
A marker trait for ast nodes.
An abstraction over the fs operations used by the Parser.