Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22702 from ada4a/unquerygroup-invoke_interned
internal: remove `#[salsa::invoke_interned]` support from `#[query_group]`
Chayim Refael Friedman 12 days ago
parent 8e3f3c7 · parent 42199a5 · commit 7e888e9
-rw-r--r--crates/query-group-macro/src/lib.rs26
-rw-r--r--crates/query-group-macro/src/queries.rs47
-rw-r--r--crates/query-group-macro/tests/arity.rs8
-rw-r--r--crates/query-group-macro/tests/hello_world.rs64
-rw-r--r--crates/query-group-macro/tests/multiple_dbs.rs4
-rw-r--r--crates/query-group-macro/tests/result.rs15
-rw-r--r--crates/query-group-macro/tests/supertrait.rs2
-rw-r--r--crates/query-group-macro/tests/tuples.rs10
8 files changed, 25 insertions, 151 deletions
diff --git a/crates/query-group-macro/src/lib.rs b/crates/query-group-macro/src/lib.rs
index 7318d7f152..37b8da8b42 100644
--- a/crates/query-group-macro/src/lib.rs
+++ b/crates/query-group-macro/src/lib.rs
@@ -4,7 +4,7 @@ use std::vec;
use proc_macro::TokenStream;
use proc_macro2::Span;
-use queries::{GeneratedInputStruct, Queries, TrackedQuery, Transparent};
+use queries::{Queries, TrackedQuery, Transparent};
use quote::{ToTokens, format_ident, quote};
use syn::parse::{Parse, ParseStream};
use syn::punctuated::Punctuated;
@@ -83,7 +83,6 @@ fn filter_attrs(attrs: Vec<Attribute>) -> (Vec<Attribute>, Vec<SalsaAttr>) {
#[derive(Debug, Clone, PartialEq, Eq)]
enum QueryKind {
- Tracked,
TrackedWithSalsaStruct,
Transparent,
}
@@ -193,11 +192,6 @@ pub(crate) fn query_group_impl(
let c = syn::parse::<Parenthesized<Cycle>>(tts)?;
cycle = Some(c.0);
}
- "invoke_interned" => {
- let path = syn::parse::<Parenthesized<Path>>(tts)?;
- invoke = Some(path.0.clone());
- query_kind = QueryKind::Tracked;
- }
"invoke" => {
let path = syn::parse::<Parenthesized<Path>>(tts)?;
invoke = Some(path.0.clone());
@@ -224,27 +218,9 @@ pub(crate) fn query_group_impl(
}
match (query_kind, invoke) {
- // tracked function. it might have an invoke, or might not.
- (QueryKind::Tracked, invoke) => {
- let method = TrackedQuery {
- trait_name: trait_name_ident.clone(),
- generated_struct: Some(GeneratedInputStruct {
- input_struct_name: input_struct_name.clone(),
- create_data_ident: create_data_ident.clone(),
- }),
- signature: signature.clone(),
- pat_and_tys: pat_and_tys.clone(),
- invoke,
- cycle,
- default: method.default.take(),
- };
-
- trait_methods.push(Queries::TrackedQuery(method));
- }
(QueryKind::TrackedWithSalsaStruct, invoke) => {
let method = TrackedQuery {
trait_name: trait_name_ident.clone(),
- generated_struct: None,
signature: signature.clone(),
pat_and_tys: pat_and_tys.clone(),
invoke,
diff --git a/crates/query-group-macro/src/queries.rs b/crates/query-group-macro/src/queries.rs
index b7de7f6b2a..62dced54d0 100644
--- a/crates/query-group-macro/src/queries.rs
+++ b/crates/query-group-macro/src/queries.rs
@@ -12,12 +12,6 @@ pub(crate) struct TrackedQuery {
pub(crate) invoke: Option<Path>,
pub(crate) default: Option<syn::Block>,
pub(crate) cycle: Option<Cycle>,
- pub(crate) generated_struct: Option<GeneratedInputStruct>,
-}
-
-pub(crate) struct GeneratedInputStruct {
- pub(crate) input_struct_name: Ident,
- pub(crate) create_data_ident: Ident,
}
impl ToTokens for TrackedQuery {
@@ -64,37 +58,16 @@ impl ToTokens for TrackedQuery {
}
};
- let method = match &self.generated_struct {
- Some(generated_struct) => {
- let input_struct_name = &generated_struct.input_struct_name;
- let create_data_ident = &generated_struct.create_data_ident;
-
- quote! {
- #sig {
- #annotation
- fn #shim<'db>(
- db: &'db dyn #trait_name,
- _input: #input_struct_name,
- #(#pat_and_tys),*
- ) #ret
- #invoke_block
- #shim(self, #create_data_ident(self), #(#params),*)
- }
- }
- }
- None => {
- quote! {
- #sig {
- #annotation
- fn #shim<'db>(
- db: &'db dyn #trait_name,
- #(#pat_and_tys),*
- ) #ret
- #invoke_block
-
- #shim(self, #(#params),*)
- }
- }
+ let method = quote! {
+ #sig {
+ #annotation
+ fn #shim<'db>(
+ db: &'db dyn #trait_name,
+ #(#pat_and_tys),*
+ ) #ret
+ #invoke_block
+
+ #shim(self, #(#params),*)
}
};
diff --git a/crates/query-group-macro/tests/arity.rs b/crates/query-group-macro/tests/arity.rs
index f1b29612a1..f7cd4893fe 100644
--- a/crates/query-group-macro/tests/arity.rs
+++ b/crates/query-group-macro/tests/arity.rs
@@ -2,16 +2,16 @@ use query_group_macro::query_group;
#[query_group]
pub trait ArityDb: salsa::Database {
- #[salsa::invoke_interned(one)]
+ #[salsa::transparent]
fn one(&self, a: ()) -> String;
- #[salsa::invoke_interned(two)]
+ #[salsa::transparent]
fn two(&self, a: (), b: ()) -> String;
- #[salsa::invoke_interned(three)]
+ #[salsa::transparent]
fn three(&self, a: (), b: (), c: ()) -> String;
- #[salsa::invoke_interned(none)]
+ #[salsa::transparent]
fn none(&self) -> String;
}
diff --git a/crates/query-group-macro/tests/hello_world.rs b/crates/query-group-macro/tests/hello_world.rs
index 7184b9bd1c..9e99b6d7fd 100644
--- a/crates/query-group-macro/tests/hello_world.rs
+++ b/crates/query-group-macro/tests/hello_world.rs
@@ -12,76 +12,33 @@ struct InputString {
#[query_group]
pub trait HelloWorldDatabase: salsa::Database {
// unadorned query
- #[salsa::invoke_interned(length_query)]
- fn length_query(&self, key: ()) -> usize;
-
- // unadorned query
fn length_query_with_no_params(&self) -> usize;
- // renamed/invoke query
- #[salsa::invoke_interned(invoke_length_query_actual)]
- fn invoke_length_query(&self, key: ()) -> usize;
-
// not a query. should not invoked
#[salsa::transparent]
fn transparent_length(&self, key: ()) -> usize;
-
- #[salsa::transparent]
- #[salsa::invoke_interned(transparent_and_invoke_length_actual)]
- fn transparent_and_invoke_length(&self, key: ()) -> usize;
-}
-
-fn length_query(db: &dyn HelloWorldDatabase, _key: ()) -> usize {
- InputString::get(db).inner(db).len()
}
fn length_query_with_no_params(db: &dyn HelloWorldDatabase) -> usize {
InputString::get(db).inner(db).len()
}
-fn invoke_length_query_actual(db: &dyn HelloWorldDatabase, _key: ()) -> usize {
- InputString::get(db).inner(db).len()
-}
-
fn transparent_length(db: &dyn HelloWorldDatabase, _key: ()) -> usize {
InputString::get(db).inner(db).len()
}
-fn transparent_and_invoke_length_actual(db: &dyn HelloWorldDatabase, _key: ()) -> usize {
- InputString::get(db).inner(db).len()
-}
-
#[test]
fn unadorned_query() {
let db = LoggerDb::default();
InputString::new(&db, String::from("Hello, world!"));
- let len = db.length_query(());
+ let len = db.length_query_with_no_params();
assert_eq!(len, 13);
db.assert_logs(expect![[r#"
[
"salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: create_data_HelloWorldDatabase(Id(400)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: length_query_shim(Id(c00)) })",
- ]"#]]);
-}
-
-#[test]
-fn invoke_query() {
- let db = LoggerDb::default();
-
- InputString::new(&db, String::from("Hello, world!"));
- let len = db.invoke_length_query(());
-
- assert_eq!(len, 13);
- db.assert_logs(expect![[r#"
- [
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: create_data_HelloWorldDatabase(Id(400)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: invoke_length_query_shim(Id(c00)) })",
+ "salsa_event(WillExecute { database_key: length_query_with_no_params_shim(Id(400)) })",
]"#]]);
}
@@ -95,20 +52,3 @@ fn transparent() {
assert_eq!(len, 13);
db.assert_logs(expect!["[]"]);
}
-
-#[test]
-fn transparent_invoke() {
- let db = LoggerDb::default();
-
- InputString::new(&db, String::from("Hello, world!"));
- let len = db.transparent_and_invoke_length(());
-
- assert_eq!(len, 13);
- db.assert_logs(expect![[r#"
- [
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: create_data_HelloWorldDatabase(Id(400)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: transparent_and_invoke_length_shim(Id(c00)) })",
- ]"#]]);
-}
diff --git a/crates/query-group-macro/tests/multiple_dbs.rs b/crates/query-group-macro/tests/multiple_dbs.rs
index e0faa6a961..678a7ce5d7 100644
--- a/crates/query-group-macro/tests/multiple_dbs.rs
+++ b/crates/query-group-macro/tests/multiple_dbs.rs
@@ -8,13 +8,13 @@ struct InputString {
#[query_group]
pub trait DatabaseOne: salsa::Database {
// unadorned query
- #[salsa::invoke_interned(length)]
+ #[salsa::transparent]
fn length(&self, key: ()) -> usize;
}
#[query_group]
pub trait DatabaseTwo: DatabaseOne {
- #[salsa::invoke_interned(second_length)]
+ #[salsa::transparent]
fn second_length(&self, key: ()) -> usize;
}
diff --git a/crates/query-group-macro/tests/result.rs b/crates/query-group-macro/tests/result.rs
index ad7d8ae0a1..7e5e8d3a5b 100644
--- a/crates/query-group-macro/tests/result.rs
+++ b/crates/query-group-macro/tests/result.rs
@@ -14,10 +14,10 @@ struct InputString {
#[query_group]
pub trait ResultDatabase: salsa::Database {
- #[salsa::invoke_interned(length)]
+ #[salsa::transparent]
fn length(&self, key: ()) -> Result<usize, Error>;
- #[salsa::invoke_interned(length2)]
+ #[salsa::transparent]
fn length2(&self, key: ()) -> Result<usize, Error>;
}
@@ -37,14 +37,5 @@ fn test_queries_with_results() {
assert_eq!(db.length(()), Ok(input.len()));
assert_eq!(db.length2(()), Ok(input.len()));
- db.assert_logs(expect![[r#"
- [
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: create_data_ResultDatabase(Id(400)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: length_shim(Id(c00)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: length2_shim(Id(1000)) })",
- ]"#]]);
+ db.assert_logs(expect!["[]"]);
}
diff --git a/crates/query-group-macro/tests/supertrait.rs b/crates/query-group-macro/tests/supertrait.rs
index ad8ada3ef1..63a5dbd16c 100644
--- a/crates/query-group-macro/tests/supertrait.rs
+++ b/crates/query-group-macro/tests/supertrait.rs
@@ -8,7 +8,7 @@ pub trait SourceDb: salsa::Database {
#[query_group]
pub trait RootDb: SourceDb {
- #[salsa::invoke_interned(parse)]
+ #[salsa::transparent]
fn parse(&self, id: usize) -> String;
}
diff --git a/crates/query-group-macro/tests/tuples.rs b/crates/query-group-macro/tests/tuples.rs
index b38ac2ed2b..ab9d1746f7 100644
--- a/crates/query-group-macro/tests/tuples.rs
+++ b/crates/query-group-macro/tests/tuples.rs
@@ -11,7 +11,7 @@ struct InputString {
#[query_group]
pub trait HelloWorldDatabase: salsa::Database {
- #[salsa::invoke_interned(length_query)]
+ #[salsa::transparent]
fn length_query(&self, key: ()) -> (usize, usize);
}
@@ -28,11 +28,5 @@ fn query() {
let len = db.length_query(());
assert_eq!(len, (13, 13));
- db.assert_logs(expect![[r#"
- [
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: create_data_HelloWorldDatabase(Id(400)) })",
- "salsa_event(WillCheckCancellation)",
- "salsa_event(WillExecute { database_key: length_query_shim(Id(c00)) })",
- ]"#]]);
+ db.assert_logs(expect!["[]"]);
}