Unnamed repository; edit this file 'description' to name the repository.
remove cycle handling from `#[query_macro]`
| -rw-r--r-- | crates/query-group-macro/src/lib.rs | 55 | ||||
| -rw-r--r-- | crates/query-group-macro/src/queries.rs | 14 |
2 files changed, 3 insertions, 66 deletions
diff --git a/crates/query-group-macro/src/lib.rs b/crates/query-group-macro/src/lib.rs index 810737a1df..9f7459066d 100644 --- a/crates/query-group-macro/src/lib.rs +++ b/crates/query-group-macro/src/lib.rs @@ -6,11 +6,10 @@ use proc_macro::TokenStream; use proc_macro2::Span; use queries::{Queries, TrackedQuery, Transparent}; use quote::{ToTokens, format_ident, quote}; -use syn::parse::{Parse, ParseStream}; -use syn::punctuated::Punctuated; +use syn::parse::ParseStream; use syn::spanned::Spanned; use syn::visit_mut::VisitMut; -use syn::{Attribute, FnArg, ItemTrait, Path, Token, TraitItem, parse_quote, parse_quote_spanned}; +use syn::{Attribute, FnArg, ItemTrait, Path, TraitItem, parse_quote, parse_quote_spanned}; mod queries; @@ -87,50 +86,6 @@ enum QueryKind { Transparent, } -#[derive(Default, Debug, Clone)] -struct Cycle { - cycle_result: Option<(syn::Ident, Path)>, -} - -impl Parse for Cycle { - fn parse(input: ParseStream<'_>) -> syn::Result<Self> { - let options = Punctuated::<Option, Token![,]>::parse_terminated(input)?; - let mut cycle_result = None; - for option in options { - let name = option.name.to_string(); - match &*name { - "cycle_result" => { - if cycle_result.is_some() { - return Err(syn::Error::new_spanned(&option.name, "duplicate option")); - } - cycle_result = Some((option.name, option.value)); - } - _ => { - return Err(syn::Error::new_spanned( - &option.name, - "unknown cycle option. Accepted values: `cycle_result`", - )); - } - } - } - return Ok(Self { cycle_result }); - - struct Option { - name: syn::Ident, - value: Path, - } - - impl Parse for Option { - fn parse(input: ParseStream<'_>) -> syn::Result<Self> { - let name = input.parse()?; - input.parse::<Token![=]>()?; - let value = input.parse()?; - Ok(Self { name, value }) - } - } - } -} - pub(crate) fn query_group_impl( _args: proc_macro::TokenStream, input: proc_macro::TokenStream, @@ -158,7 +113,6 @@ pub(crate) fn query_group_impl( let mut query_kind = QueryKind::TrackedWithSalsaStruct; let mut invoke = None; - let mut cycle = None; let params: Vec<FnArg> = signature.inputs.clone().into_iter().collect(); let pat_and_tys = params @@ -172,10 +126,6 @@ pub(crate) fn query_group_impl( for SalsaAttr { name, tts, span } in salsa_attrs { match name.as_str() { - "cycle" => { - let c = syn::parse::<Parenthesized<Cycle>>(tts)?; - cycle = Some(c.0); - } "invoke" => { let path = syn::parse::<Parenthesized<Path>>(tts)?; invoke = Some(path.0.clone()); @@ -208,7 +158,6 @@ pub(crate) fn query_group_impl( signature: signature.clone(), pat_and_tys: pat_and_tys.clone(), invoke, - cycle, default: method.default.take(), }; diff --git a/crates/query-group-macro/src/queries.rs b/crates/query-group-macro/src/queries.rs index 96e8ca5758..935d65bb24 100644 --- a/crates/query-group-macro/src/queries.rs +++ b/crates/query-group-macro/src/queries.rs @@ -3,15 +3,12 @@ use quote::{ToTokens, format_ident, quote, quote_spanned}; use syn::{Ident, PatType, Path, spanned::Spanned}; -use crate::Cycle; - pub(crate) struct TrackedQuery { pub(crate) trait_name: Ident, pub(crate) signature: syn::Signature, pub(crate) pat_and_tys: Vec<PatType>, pub(crate) invoke: Option<Path>, pub(crate) default: Option<syn::Block>, - pub(crate) cycle: Option<Cycle>, } impl ToTokens for TrackedQuery { @@ -29,15 +26,6 @@ impl ToTokens for TrackedQuery { let fn_ident = &sig.ident; let shim: Ident = format_ident!("{}_shim", fn_ident); - let options = self - .cycle - .as_ref() - .map(|Cycle { cycle_result }| { - cycle_result.as_ref().map(|(ident, path)| quote!(#ident=#path)) - }) - .into_iter(); - let annotation = quote!(#[salsa_macros::tracked( #(#options),* )]); - let pat_and_tys = &self.pat_and_tys; let params = self .pat_and_tys @@ -55,7 +43,7 @@ impl ToTokens for TrackedQuery { let method = quote! { #sig { - #annotation + #[salsa_macros::tracked] fn #shim<'db>( db: &'db dyn #trait_name, #(#pat_and_tys),* |