Module syntax::ext::baseUnstable [-] [+] [src]

Reexports

pub use self::SyntaxExtension::*;

Structs

BlockInfo
DummyResult

Fill-in macro expansion result, to allow compilation to continue after hitting errors.

ExtCtxt

One of these is made during expansion and incrementally updated as we go; when a macro expansion occurs, the resulting nodes have the backtrace() -> expn_info of their expansion context stored into their span.

MacExpr

A convenience type for macros that return a single expression.

MacItems

A type for macros that return multiple items.

MacPat

A convenience type for macros that return a single pattern.

SyntaxEnv

In order to have some notion of scoping for macros, we want to implement the notion of a transformation environment.

Enums

Annotatable
SyntaxExtension

An enum representing the different kinds of syntax extensions.

Traits

IdentMacroExpander
ItemDecorator
ItemModifier
MacResult

The result of a macro expansion. The return values of the various methods are spliced into the AST at the callsite of the macro (or just into the compiler's internal macro table, for make_def).

MultiItemModifier
TTMacroExpander

Represents a thing that maps token trees to Macro Results

Functions

check_zero_tts

Non-fatally assert that tts is empty. Note that this function returns even when tts is non-empty, macros that need to stop compilation should call cx.parse_sess.span_diagnostic.abort_if_errors() (this should be done as rarely as possible).

expr_to_string

Extract a string literal from the macro expanded version of expr, emitting err_msg if expr is not a string literal. This does not stop compilation on error, merely emits a non-fatal error and returns None.

get_exprs_from_tts

Extract comma-separated expressions from tts. If there is a parsing error, emit a non-fatal error and return None.

get_single_str_from_tts

Extract the string literal from the first token of tts. If this is not a string literal, emit an error and return None.

Type Definitions

IdentMacroExpanderFn
MacroExpanderFn
NamedSyntaxExtension