Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/query-group-macro/src/queries.rs')
-rw-r--r--crates/query-group-macro/src/queries.rs130
1 files changed, 1 insertions, 129 deletions
diff --git a/crates/query-group-macro/src/queries.rs b/crates/query-group-macro/src/queries.rs
index 4221068828..7eea85f7af 100644
--- a/crates/query-group-macro/src/queries.rs
+++ b/crates/query-group-macro/src/queries.rs
@@ -1,7 +1,7 @@
//! The IR of the `#[query_group]` macro.
use quote::{ToTokens, format_ident, quote, quote_spanned};
-use syn::{FnArg, Ident, PatType, Path, Receiver, ReturnType, parse_quote, spanned::Spanned};
+use syn::{Ident, PatType, Path, spanned::Spanned};
use crate::Cycle;
@@ -104,132 +104,6 @@ impl ToTokens for TrackedQuery {
}
}
-pub(crate) struct InputQuery {
- pub(crate) signature: syn::Signature,
- pub(crate) create_data_ident: Ident,
-}
-
-impl ToTokens for InputQuery {
- fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
- let sig = &self.signature;
- let fn_ident = &sig.ident;
- let create_data_ident = &self.create_data_ident;
-
- let method = quote! {
- #sig {
- let data = #create_data_ident(self);
- data.#fn_ident(self).unwrap()
- }
- };
- method.to_tokens(tokens);
- }
-}
-
-pub(crate) struct InputSetter {
- pub(crate) signature: syn::Signature,
- pub(crate) return_type: syn::Type,
- pub(crate) create_data_ident: Ident,
-}
-
-impl ToTokens for InputSetter {
- fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
- let sig = &mut self.signature.clone();
-
- let ty = &self.return_type;
- let fn_ident = &sig.ident;
- let create_data_ident = &self.create_data_ident;
-
- let setter_ident = format_ident!("set_{}", fn_ident);
- sig.ident = setter_ident.clone();
-
- let value_argument: PatType = parse_quote!(__value: #ty);
- sig.inputs.push(FnArg::Typed(value_argument.clone()));
-
- // make `&self` `&mut self` instead.
- let mut_receiver: Receiver = parse_quote!(&mut self);
- if let Some(og) = sig.inputs.first_mut() {
- *og = FnArg::Receiver(mut_receiver)
- }
-
- // remove the return value.
- sig.output = ReturnType::Default;
-
- let value = &value_argument.pat;
- let method = quote! {
- #sig {
- use salsa::Setter;
- let data = #create_data_ident(self);
- data.#setter_ident(self).to(Some(#value));
- }
- };
- method.to_tokens(tokens);
- }
-}
-
-pub(crate) struct InputSetterWithDurability {
- pub(crate) signature: syn::Signature,
- pub(crate) return_type: syn::Type,
- pub(crate) create_data_ident: Ident,
-}
-
-impl ToTokens for InputSetterWithDurability {
- fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
- let sig = &mut self.signature.clone();
-
- let ty = &self.return_type;
- let fn_ident = &sig.ident;
- let setter_ident = format_ident!("set_{}", fn_ident);
-
- let create_data_ident = &self.create_data_ident;
-
- sig.ident = format_ident!("set_{}_with_durability", fn_ident);
-
- let value_argument: PatType = parse_quote!(__value: #ty);
- sig.inputs.push(FnArg::Typed(value_argument.clone()));
-
- let durability_argument: PatType = parse_quote!(durability: salsa::Durability);
- sig.inputs.push(FnArg::Typed(durability_argument.clone()));
-
- // make `&self` `&mut self` instead.
- let mut_receiver: Receiver = parse_quote!(&mut self);
- if let Some(og) = sig.inputs.first_mut() {
- *og = FnArg::Receiver(mut_receiver)
- }
-
- // remove the return value.
- sig.output = ReturnType::Default;
-
- let value = &value_argument.pat;
- let durability = &durability_argument.pat;
- let method = quote! {
- #sig {
- use salsa::Setter;
- let data = #create_data_ident(self);
- data.#setter_ident(self)
- .with_durability(#durability)
- .to(Some(#value));
- }
- };
- method.to_tokens(tokens);
- }
-}
-
-pub(crate) enum SetterKind {
- Plain(InputSetter),
- WithDurability(InputSetterWithDurability),
-}
-
-impl ToTokens for SetterKind {
- fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
- match self {
- SetterKind::Plain(input_setter) => input_setter.to_tokens(tokens),
- SetterKind::WithDurability(input_setter_with_durability) => {
- input_setter_with_durability.to_tokens(tokens)
- }
- }
- }
-}
-
pub(crate) struct Transparent {
pub(crate) signature: syn::Signature,
pub(crate) pat_and_tys: Vec<PatType>,
@@ -270,7 +144,6 @@ impl ToTokens for Transparent {
#[allow(clippy::large_enum_variant)]
pub(crate) enum Queries {
TrackedQuery(TrackedQuery),
- InputQuery(InputQuery),
Transparent(Transparent),
}
@@ -278,7 +151,6 @@ impl ToTokens for Queries {
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
match self {
Queries::TrackedQuery(tracked_query) => tracked_query.to_tokens(tokens),
- Queries::InputQuery(input_query) => input_query.to_tokens(tokens),
Queries::Transparent(transparent) => transparent.to_tokens(tokens),
}
}