1#[macro_export]
6macro_rules! import {
7 ($path:literal) => {
8 ::mir::Import::package($path)
9 };
10 ($path:literal, $($imports:ident),*) => {
11 ::mir::Import::new($path, vec![$(stringify!($imports)),*])
12 };
13 (pub $path:literal, $($imports:ident),*) => {
14 ::mir::Import::new($path, vec![$(stringify!($imports)),*]).public()
15 };
16 ($path:path, $($imports:ident),*) => {
17 ::mir::Import::new(stringify!($path), vec![$(stringify!($imports)),*])
18 };
19 (pub $path:path, $($imports:ident),*) => {
20 ::mir::Import::new(stringify!($path), vec![$(stringify!($imports)),*]).public()
21 };
22 ($c:expr, $($imports:expr),*) => {
23 ::mir::Import::new($c, vec![$($imports),*])
24 };
25 ($c:expr) => {
26 ::mir::Import::package($c)
27 };
28}
29#[macro_export]
32macro_rules! targ {
33 ($name:ident : $ty:path) => {
34 ::mir::FnArg {
35 name: stringify!($name).to_string(),
36 ty: {
37 let ty = ::syn::parse_str::<::syn::Ident>(stringify!($ty)).unwrap();
38 ::quote::ToTokens::to_token_stream(&ty)
39 },
40 default: None,
41 treatment: None,
42 }
43 };
44}
45#[macro_export]
48macro_rules! arg {
49 ($name:ident : $ty:expr) => {
50 ::mir::FnArg {
51 name: ::mir::ArgIdent::from(stringify!($name)),
52 ty: $ty.to_string(),
53 default: None,
54 treatment: None,
55 }
56 };
57 ($name:ident : $ty:expr , $default:expr) => {
58 ::mir::FnArg {
59 name: ::mir::ArgIdent::from(stringify!($name).to_string()),
60 ty: $ty.to_string(),
61 default: $default.to_string(),
62 treatment: None,
63 }
64 };
65}
66
67#[macro_export]
69macro_rules! lit {
70 ($($arg:tt)*) => {
71 ::mir::Literal(format!($($arg)*));
72 };
73}