1 //! Macros useful when writing procedural syntax extensions.
3 //! The macros themselves are ordinary `macro_rules!` macros.
5 /// Call `span_err` on an `ExtCtxt` and return `DummyResult::any`.
7 macro_rules
! ext_bail
{
8 ($cx
:expr
, $sp
:expr
, $msg
:expr
) => {{
9 $cx
.span_err($sp
, $msg
);
10 return ::syntax
::ext
::base
::DummyResult
::any($sp
);
14 /// `ext_bail!` if the condition `$e` is true.
16 macro_rules
! ext_bail_if
{
17 ($e
:expr
, $cx
:expr
, $sp
:expr
, $msg
:expr
) => {{
18 if $e { ext_bail!($cx, $sp, $msg) }
22 /// Unwrap the `Option` `$e`, or `ext_bail!`.
24 macro_rules
! ext_expect
{
25 ($cx
:expr
, $sp
:expr
, $e
:expr
, $msg
:expr
) => {{
28 None
=> ext_bail
!($cx
, $sp
, $msg
),