mirror of
https://github.com/salsa-rs/salsa.git
synced 2024-10-23 20:59:51 +00:00
Use visibility of field
in SalsaField
in #[salsa::tracked]
struct getters and setters
This commit is contained in:
parent
784828ec42
commit
3df74dc0ac
1 changed files with 8 additions and 6 deletions
|
@ -91,11 +91,12 @@ impl TrackedStruct {
|
||||||
let id_field_names: Vec<_> = self.id_fields().map(SalsaField::name).collect();
|
let id_field_names: Vec<_> = self.id_fields().map(SalsaField::name).collect();
|
||||||
let id_field_get_names: Vec<_> = self.id_fields().map(SalsaField::get_name).collect();
|
let id_field_get_names: Vec<_> = self.id_fields().map(SalsaField::get_name).collect();
|
||||||
let id_field_tys: Vec<_> = self.id_fields().map(SalsaField::ty).collect();
|
let id_field_tys: Vec<_> = self.id_fields().map(SalsaField::ty).collect();
|
||||||
|
let id_field_vises: Vec<_> = self.id_fields().map(SalsaField::vis).collect();
|
||||||
let id_field_clones: Vec<_> = self.id_fields().map(SalsaField::is_clone_field).collect();
|
let id_field_clones: Vec<_> = self.id_fields().map(SalsaField::is_clone_field).collect();
|
||||||
let id_field_getters: Vec<syn::ImplItemMethod> = id_field_indices.iter().zip(&id_field_get_names).zip(&id_field_tys).zip(&id_field_clones).map(|(((field_index, field_get_name), field_ty), is_clone_field)|
|
let id_field_getters: Vec<syn::ImplItemMethod> = id_field_indices.iter().zip(&id_field_get_names).zip(&id_field_tys).zip(&id_field_vises).zip(&id_field_clones).map(|((((field_index, field_get_name), field_ty), field_vis), is_clone_field)|
|
||||||
if !*is_clone_field {
|
if !*is_clone_field {
|
||||||
parse_quote! {
|
parse_quote! {
|
||||||
pub fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> &'db #field_ty
|
#field_vis fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> &'db #field_ty
|
||||||
{
|
{
|
||||||
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
||||||
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
||||||
|
@ -104,7 +105,7 @@ impl TrackedStruct {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parse_quote! {
|
parse_quote! {
|
||||||
pub fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> #field_ty
|
#field_vis fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> #field_ty
|
||||||
{
|
{
|
||||||
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
||||||
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
||||||
|
@ -117,16 +118,17 @@ impl TrackedStruct {
|
||||||
|
|
||||||
let value_field_indices = self.value_field_indices();
|
let value_field_indices = self.value_field_indices();
|
||||||
let value_field_names: Vec<_> = self.value_fields().map(SalsaField::name).collect();
|
let value_field_names: Vec<_> = self.value_fields().map(SalsaField::name).collect();
|
||||||
|
let value_field_vises: Vec<_> = self.value_fields().map(SalsaField::vis).collect();
|
||||||
let value_field_tys: Vec<_> = self.value_fields().map(SalsaField::ty).collect();
|
let value_field_tys: Vec<_> = self.value_fields().map(SalsaField::ty).collect();
|
||||||
let value_field_get_names: Vec<_> = self.value_fields().map(SalsaField::get_name).collect();
|
let value_field_get_names: Vec<_> = self.value_fields().map(SalsaField::get_name).collect();
|
||||||
let value_field_clones: Vec<_> = self
|
let value_field_clones: Vec<_> = self
|
||||||
.value_fields()
|
.value_fields()
|
||||||
.map(SalsaField::is_clone_field)
|
.map(SalsaField::is_clone_field)
|
||||||
.collect();
|
.collect();
|
||||||
let value_field_getters: Vec<syn::ImplItemMethod> = value_field_indices.iter().zip(&value_field_get_names).zip(&value_field_tys).zip(&value_field_clones).map(|(((field_index, field_get_name), field_ty), is_clone_field)|
|
let value_field_getters: Vec<syn::ImplItemMethod> = value_field_indices.iter().zip(&value_field_get_names).zip(&value_field_tys).zip(&value_field_vises).zip(&value_field_clones).map(|((((field_index, field_get_name), field_ty), field_vis), is_clone_field)|
|
||||||
if !*is_clone_field {
|
if !*is_clone_field {
|
||||||
parse_quote! {
|
parse_quote! {
|
||||||
pub fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> &'db #field_ty
|
#field_vis fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> &'db #field_ty
|
||||||
{
|
{
|
||||||
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
||||||
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
||||||
|
@ -135,7 +137,7 @@ impl TrackedStruct {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
parse_quote! {
|
parse_quote! {
|
||||||
pub fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> #field_ty
|
#field_vis fn #field_get_name<'db>(self, __db: &'db #db_dyn_ty) -> #field_ty
|
||||||
{
|
{
|
||||||
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
let (__jar, __runtime) = <_ as salsa::storage::HasJar<#jar_ty>>::jar(__db);
|
||||||
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
let __ingredients = <#jar_ty as salsa::storage::HasIngredientsFor< #ident >>::ingredient(__jar);
|
||||||
|
|
Loading…
Reference in a new issue