From dcf2360eaba37344e576169c2f8f313907af2884 Mon Sep 17 00:00:00 2001 From: KodrAus Date: Mon, 12 Feb 2024 07:41:29 +1000 Subject: [PATCH] remove push_ctxt and root_ctxt macros --- macros/src/ctxt.rs | 75 ---------------------------------------- macros/src/lib.rs | 27 --------------- tests/smoke-test/main.rs | 2 +- 3 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 macros/src/ctxt.rs diff --git a/macros/src/ctxt.rs b/macros/src/ctxt.rs deleted file mode 100644 index 2cab7c5..0000000 --- a/macros/src/ctxt.rs +++ /dev/null @@ -1,75 +0,0 @@ -use proc_macro2::TokenStream; -use syn::{spanned::Spanned, Block, Expr, ExprAsync, ExprBlock, Item, ItemFn, Signature, Stmt}; - -use crate::props::Props; - -pub struct ExpandTokens { - pub item: TokenStream, - pub input: TokenStream, - pub root: bool, -} - -pub fn expand_tokens(opts: ExpandTokens) -> Result { - let props = syn::parse2::(opts.input)?; - - let target = if opts.root { - quote!(emit::__private::__private_root_ctxt) - } else { - quote!(emit::__private::__private_push_ctxt) - }; - - let mut item = syn::parse2::(opts.item)?; - match &mut item { - // A synchronous function - Stmt::Item(Item::Fn(ItemFn { - block, - sig: Signature { - asyncness: None, .. - }, - .. - })) => { - **block = syn::parse2::(inject_sync(&target, &props, quote!(#block)))?; - } - // A synchronous block - Stmt::Expr(Expr::Block(ExprBlock { block, .. }), _) => { - *block = syn::parse2::(inject_sync(&target, &props, quote!(#block)))?; - } - // An asynchronous function - Stmt::Item(Item::Fn(ItemFn { - block, - sig: Signature { - asyncness: Some(_), .. - }, - .. - })) => { - **block = syn::parse2::(inject_async(&target, &props, quote!(#block)))?; - } - // An asynchronous block - Stmt::Expr(Expr::Async(ExprAsync { block, .. }), _) => { - *block = syn::parse2::(inject_async(&target, &props, quote!(#block)))?; - } - _ => return Err(syn::Error::new(item.span(), "unrecognized item type")), - } - - Ok(quote!(#item)) -} - -fn inject_sync(target: &TokenStream, props: &Props, body: TokenStream) -> TokenStream { - let props_tokens = props.props_tokens(); - - quote!({ - let mut __ctxt = #target(#props_tokens); - let __ctxt_guard = __ctxt.enter(); - - #body - }) -} - -fn inject_async(target: &TokenStream, props: &Props, body: TokenStream) -> TokenStream { - let props_tokens = props.props_tokens(); - - quote!({ - let __ctxt = #target(#props_tokens); - __ctxt.with_future(async #body).await - }) -} diff --git a/macros/src/lib.rs b/macros/src/lib.rs index f12ae28..875ed09 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -17,7 +17,6 @@ use proc_macro2::TokenStream; mod args; mod build; mod capture; -mod ctxt; mod emit; mod event; mod filter; @@ -248,32 +247,6 @@ pub fn props(item: proc_macro::TokenStream) -> proc_macro::TokenStream { .unwrap_or_compile_error() } -#[proc_macro_attribute] -pub fn push_ctxt( - args: proc_macro::TokenStream, - item: proc_macro::TokenStream, -) -> proc_macro::TokenStream { - ctxt::expand_tokens(ctxt::ExpandTokens { - root: false, - input: TokenStream::from(args), - item: TokenStream::from(item), - }) - .unwrap_or_compile_error() -} - -#[proc_macro_attribute] -pub fn root_ctxt( - args: proc_macro::TokenStream, - item: proc_macro::TokenStream, -) -> proc_macro::TokenStream { - ctxt::expand_tokens(ctxt::ExpandTokens { - root: true, - input: TokenStream::from(args), - item: TokenStream::from(item), - }) - .unwrap_or_compile_error() -} - #[proc_macro_attribute] pub fn fmt( args: proc_macro::TokenStream, diff --git a/tests/smoke-test/main.rs b/tests/smoke-test/main.rs index b56963e..5e80398 100644 --- a/tests/smoke-test/main.rs +++ b/tests/smoke-test/main.rs @@ -121,7 +121,7 @@ async fn in_ctxt(a: i32) -> Result<(), io::Error> { r } -#[emit::push_ctxt(b, bx: 90)] +#[emit::span("in_ctxt2", b, bx: 90)] async fn in_ctxt2(b: i32) { emit::warn!( "something went wrong at {#[emit::as_debug] id: 42} with {x} and {y: true}!",