Expand description
hir_expand deals with macro expansion.
Specifically, it implements a concept of MacroFile – a file whose syntax
tree originates not from the text of some FileId, but from some macro
expansion.
Re-exports§
pub use crate::files::AstId;pub use crate::files::ErasedAstId;pub use crate::files::FileRange;pub use crate::files::InFile;pub use crate::files::InMacroFile;pub use crate::files::InRealFile;pub use intern;
Modules§
- attrs
- Defines the basics of attributes lowering.
- builtin
- Builtin macros and attributes
- change
- Defines a unit of change that can applied to the database to get the next state. Changes are transactional.
- db
- Defines database & queries for macro expansion.
- declarative
- Compiled declarative macro expanders (
macro_rules!andmacro) - eager
- Eager expansion related utils
- files
- Things to wrap other things in file ids.
- hygiene
- Machinery for hygienic macros.
- inert_
attr_ macro - Builtin attributes resolved by nameres.
- mod_
path - A lowering for
use-paths (more generally, paths without angle-bracketed segments). - name
- See
Name. - proc_
macro - Proc Macro Expander stuff
- span_
map - Span maps for real files and macro expansions.
- tt
Macros§
- __
known_ path - __path
- __
tool_ path - impl_
intern_ lookup - quote
- FIXME: It probably should implement in proc-macro
Structs§
- Attr
Macro Attr Ids - Declarative
Macro - This struct contains AST for a single
macro_rulesdefinition. What might be very confusing is that AST has almost exactly the same shape astt::TokenTree, but there’s a crucial difference: in macro rules,$identand$()*have special meaning (seeVarandRepeatdata structures) - Eager
Call Info - Editioned
File Id - Expand
Error - Expansion
Info - ExpansionInfo mainly describes how to map text range between src and expanded macro
- Macro
Call Id - Macro
Call Loc - Macro
Call Styles - A set of
MacroCallStylevalues, allowing macros to indicate that they support more than one style. - Macro
DefId - Rendered
Expand Error - Value
Result
Enums§
- Expand
Error Kind - Expand
To - In Rust, macros expand token trees to token trees. When we want to turn a
token tree into an AST node, we need to figure out what kind of AST node we
want: something like
foocan be a type, an expression, or a pattern. - HirFile
Id - Macro
Call Kind - Macro
Call Style - Macro
DefKind - Macro
Kind
Traits§
Functions§
- check_
cfg_ attr_ value - map_
node_ range_ up - Maps up the text range out of the expansion hierarchy back into the original file its from.
- map_
node_ range_ up_ rooted - Maps up the text range out of the expansion hierarchy back into the original file its from only
considering the root spans contained.
Unlike
map_node_range_up, this will not returnNoneif any anchors or syntax contexts differ. - prettify_
macro_ expansion - Inserts whitespace and replaces
$cratein macro expansions. - span_
for_ offset - Looks up the span at the given offset.