Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/query-group-macro/src/lib.rs55
-rw-r--r--crates/query-group-macro/src/queries.rs14
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),*