summaryrefslogtreecommitdiffstats
path: root/vendor/mac/src/syntax_ext.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/mac/src/syntax_ext.rs')
-rw-r--r--vendor/mac/src/syntax_ext.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/vendor/mac/src/syntax_ext.rs b/vendor/mac/src/syntax_ext.rs
new file mode 100644
index 000000000..ab7e82bb2
--- /dev/null
+++ b/vendor/mac/src/syntax_ext.rs
@@ -0,0 +1,31 @@
+//! Macros useful when writing procedural syntax extensions.
+//!
+//! The macros themselves are ordinary `macro_rules!` macros.
+
+/// Call `span_err` on an `ExtCtxt` and return `DummyResult::any`.
+#[macro_export]
+macro_rules! ext_bail {
+ ($cx:expr, $sp:expr, $msg:expr) => {{
+ $cx.span_err($sp, $msg);
+ return ::syntax::ext::base::DummyResult::any($sp);
+ }}
+}
+
+/// `ext_bail!` if the condition `$e` is true.
+#[macro_export]
+macro_rules! ext_bail_if {
+ ($e:expr, $cx:expr, $sp:expr, $msg:expr) => {{
+ if $e { ext_bail!($cx, $sp, $msg) }
+ }}
+}
+
+/// Unwrap the `Option` `$e`, or `ext_bail!`.
+#[macro_export]
+macro_rules! ext_expect {
+ ($cx:expr, $sp:expr, $e:expr, $msg:expr) => {{
+ match $e {
+ Some(x) => x,
+ None => ext_bail!($cx, $sp, $msg),
+ }
+ }}
+}