Skip to content

Commit 5b9f7db

Browse files
Remove support for interning in query_group
1 parent 34355d2 commit 5b9f7db

3 files changed

Lines changed: 4 additions & 186 deletions

File tree

crates/query-group-macro/src/lib.rs

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,15 @@ use std::vec;
66
use proc_macro::TokenStream;
77
use proc_macro2::Span;
88
use queries::{
9-
GeneratedInputStruct, InputQuery, InputSetter, InputSetterWithDurability, Intern, Lookup,
10-
Queries, SetterKind, TrackedQuery, Transparent,
9+
GeneratedInputStruct, InputQuery, InputSetter, InputSetterWithDurability, Queries, SetterKind,
10+
TrackedQuery, Transparent,
1111
};
1212
use quote::{ToTokens, format_ident, quote};
1313
use syn::parse::{Parse, ParseStream};
1414
use syn::punctuated::Punctuated;
1515
use syn::spanned::Spanned;
1616
use syn::visit_mut::VisitMut;
17-
use syn::{
18-
Attribute, FnArg, ItemTrait, Path, Token, TraitItem, TraitItemFn, parse_quote,
19-
parse_quote_spanned,
20-
};
17+
use syn::{Attribute, FnArg, ItemTrait, Path, Token, TraitItem, parse_quote, parse_quote_spanned};
2118

2219
mod queries;
2320

@@ -106,7 +103,6 @@ enum QueryKind {
106103
Tracked,
107104
TrackedWithSalsaStruct,
108105
Transparent,
109-
Interned,
110106
}
111107

112108
#[derive(Default, Debug, Clone)]
@@ -190,7 +186,6 @@ pub(crate) fn query_group_impl(
190186
let mut trait_methods = vec![];
191187
let mut setter_trait_methods = vec![];
192188
let mut lookup_signatures = vec![];
193-
let mut lookup_methods = vec![];
194189

195190
for item in &mut item_trait.items {
196191
if let syn::TraitItem::Fn(method) = item {
@@ -202,7 +197,6 @@ pub(crate) fn query_group_impl(
202197
let mut query_kind = QueryKind::TrackedWithSalsaStruct;
203198
let mut invoke = None;
204199
let mut cycle = None;
205-
let mut interned_struct_path = None;
206200
let mut lru = None;
207201

208202
let params: Vec<FnArg> = signature.inputs.clone().into_iter().collect();
@@ -230,22 +224,6 @@ pub(crate) fn query_group_impl(
230224
}
231225
query_kind = QueryKind::Input;
232226
}
233-
"interned" => {
234-
let syn::ReturnType::Type(_, ty) = &signature.output else {
235-
return Err(syn::Error::new(
236-
span,
237-
"interned queries must have return type",
238-
));
239-
};
240-
let syn::Type::Path(path) = &**ty else {
241-
return Err(syn::Error::new(
242-
span,
243-
"interned queries must have return type",
244-
));
245-
};
246-
interned_struct_path = Some(path.path.clone());
247-
query_kind = QueryKind::Interned;
248-
}
249227
"invoke_interned" => {
250228
let path = syn::parse::<Parenthesized<Path>>(tts)?;
251229
invoke = Some(path.0.clone());
@@ -317,28 +295,6 @@ pub(crate) fn query_group_impl(
317295
};
318296
setter_trait_methods.push(SetterKind::WithDurability(setter));
319297
}
320-
(QueryKind::Interned, None) => {
321-
let interned_struct_path = interned_struct_path.unwrap();
322-
let method = Intern {
323-
signature: signature.clone(),
324-
pat_and_tys: pat_and_tys.clone(),
325-
interned_struct_path: interned_struct_path.clone(),
326-
};
327-
328-
trait_methods.push(Queries::Intern(method));
329-
330-
let mut method = Lookup {
331-
signature: signature.clone(),
332-
pat_and_tys: pat_and_tys.clone(),
333-
return_ty: *return_ty,
334-
interned_struct_path,
335-
};
336-
method.prepare_signature();
337-
338-
lookup_signatures
339-
.push(TraitItem::Fn(make_trait_method(method.signature.clone())));
340-
lookup_methods.push(method);
341-
}
342298
// tracked function. it might have an invoke, or might not.
343299
(QueryKind::Tracked, invoke) => {
344300
let method = TrackedQuery {
@@ -380,13 +336,6 @@ pub(crate) fn query_group_impl(
380336
};
381337
trait_methods.push(Queries::Transparent(method));
382338
}
383-
// error/invalid constructions
384-
(QueryKind::Interned, Some(path)) => {
385-
return Err(syn::Error::new(
386-
path.span(),
387-
"Interned queries cannot be used with an `#[invoke]`".to_string(),
388-
));
389-
}
390339
(QueryKind::Input, Some(path)) => {
391340
return Err(syn::Error::new(
392341
path.span(),
@@ -451,8 +400,6 @@ pub(crate) fn query_group_impl(
451400
#(#trait_methods)*
452401

453402
#(#setter_methods)*
454-
455-
#(#lookup_methods)*
456403
}
457404
};
458405
RemoveAttrsFromTraitMethods.visit_item_trait_mut(&mut item_trait);
@@ -485,15 +432,6 @@ where
485432
}
486433
}
487434

488-
fn make_trait_method(sig: syn::Signature) -> TraitItemFn {
489-
TraitItemFn {
490-
attrs: vec![],
491-
sig: sig.clone(),
492-
semi_token: Some(syn::Token![;](sig.span())),
493-
default: None,
494-
}
495-
}
496-
497435
struct RemoveAttrsFromTraitMethods;
498436

499437
impl VisitMut for RemoveAttrsFromTraitMethods {

crates/query-group-macro/src/queries.rs

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! The IR of the `#[query_group]` macro.
22
33
use quote::{ToTokens, format_ident, quote, quote_spanned};
4-
use syn::{FnArg, Ident, PatType, Path, Receiver, ReturnType, Type, parse_quote, spanned::Spanned};
4+
use syn::{FnArg, Ident, PatType, Path, Receiver, ReturnType, parse_quote, spanned::Spanned};
55

66
use crate::Cycle;
77

@@ -266,80 +266,11 @@ impl ToTokens for Transparent {
266266
method.to_tokens(tokens);
267267
}
268268
}
269-
pub(crate) struct Intern {
270-
pub(crate) signature: syn::Signature,
271-
pub(crate) pat_and_tys: Vec<PatType>,
272-
pub(crate) interned_struct_path: Path,
273-
}
274-
275-
impl ToTokens for Intern {
276-
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
277-
let sig = &self.signature;
278-
279-
let ty = self.pat_and_tys.to_vec();
280-
281-
let interned_pat = ty.first().expect("at least one pat; this is a bug");
282-
let interned_pat = &interned_pat.pat;
283-
284-
let wrapper_struct = self.interned_struct_path.to_token_stream();
285-
286-
let method = quote! {
287-
#sig {
288-
#wrapper_struct::new(self, #interned_pat)
289-
}
290-
};
291-
292-
method.to_tokens(tokens);
293-
}
294-
}
295-
296-
pub(crate) struct Lookup {
297-
pub(crate) signature: syn::Signature,
298-
pub(crate) pat_and_tys: Vec<PatType>,
299-
pub(crate) return_ty: Type,
300-
pub(crate) interned_struct_path: Path,
301-
}
302-
303-
impl Lookup {
304-
pub(crate) fn prepare_signature(&mut self) {
305-
let sig = &self.signature;
306-
307-
let ident = format_ident!("lookup_{}", sig.ident);
308-
309-
let ty = self.pat_and_tys.to_vec();
310-
311-
let interned_key = &self.return_ty;
312-
313-
let interned_pat = ty.first().expect("at least one pat; this is a bug");
314-
let interned_return_ty = &interned_pat.ty;
315-
316-
self.signature = parse_quote!(
317-
fn #ident(&self, id: #interned_key) -> #interned_return_ty
318-
);
319-
}
320-
}
321-
322-
impl ToTokens for Lookup {
323-
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
324-
let sig = &self.signature;
325-
326-
let wrapper_struct = self.interned_struct_path.to_token_stream();
327-
let method = quote! {
328-
#sig {
329-
let zalsa = self.zalsa();
330-
#wrapper_struct::ingredient(zalsa).data(zalsa, id.as_id()).0.clone()
331-
}
332-
};
333-
334-
method.to_tokens(tokens);
335-
}
336-
}
337269

338270
#[allow(clippy::large_enum_variant)]
339271
pub(crate) enum Queries {
340272
TrackedQuery(TrackedQuery),
341273
InputQuery(InputQuery),
342-
Intern(Intern),
343274
Transparent(Transparent),
344275
}
345276

@@ -349,7 +280,6 @@ impl ToTokens for Queries {
349280
Queries::TrackedQuery(tracked_query) => tracked_query.to_tokens(tokens),
350281
Queries::InputQuery(input_query) => input_query.to_tokens(tokens),
351282
Queries::Transparent(transparent) => transparent.to_tokens(tokens),
352-
Queries::Intern(intern) => intern.to_tokens(tokens),
353283
}
354284
}
355285
}

crates/query-group-macro/tests/interned.rs

Lines changed: 0 additions & 50 deletions
This file was deleted.

0 commit comments

Comments
 (0)