Skip to content

Commit

Permalink
internal: flatten match expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
davidbarsky committed Mar 7, 2025
1 parent 872dc7b commit ff75ff5
Showing 1 changed file with 7 additions and 30 deletions.
37 changes: 7 additions & 30 deletions crates/query-group-macro/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,8 +292,8 @@ pub(crate) fn query_group_impl(
.push(TraitItem::Fn(make_trait_method(method.signature.clone())));
lookup_methods.push(method);
}
// tracked function without *any* invoke.
(QueryKind::Tracked, None) => {
// 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 {
Expand All @@ -302,30 +302,13 @@ pub(crate) fn query_group_impl(
}),
signature: signature.clone(),
pat_and_tys: pat_and_tys.clone(),
invoke: None,
invoke,
cycle,
lru,
};

trait_methods.push(Queries::TrackedQuery(method));
}
// tracked function with an invoke
(QueryKind::Tracked, Some(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: Some(invoke),
cycle,
lru,
};

trait_methods.push(Queries::TrackedQuery(method))
}
(QueryKind::TrackedWithSalsaStruct, Some(invoke)) => {
let method = TrackedQuery {
trait_name: trait_name_ident.clone(),
Expand All @@ -339,20 +322,14 @@ pub(crate) fn query_group_impl(

trait_methods.push(Queries::TrackedQuery(method))
}
// while it is possible to make this reachable, it's not really worthwhile for a migration aid.
// doing this would require attaching an attribute to the salsa struct parameter in the query.
(QueryKind::TrackedWithSalsaStruct, None) => unreachable!(),
(QueryKind::Transparent, None) => {
(QueryKind::Transparent, invoke) => {
let method = Transparent {
signature: method.sig.clone(),
pat_and_tys: pat_and_tys.clone(),
invoke: None,
};
trait_methods.push(Queries::Transparent(method));
}
(QueryKind::Transparent, Some(invoke)) => {
let method = Transparent {
signature: method.sig.clone(),
pat_and_tys: pat_and_tys.clone(),
invoke: Some(invoke),
invoke: invoke
};
trait_methods.push(Queries::Transparent(method));
}
Expand Down

0 comments on commit ff75ff5

Please sign in to comment.