diff --git a/crates/cgp-component/src/lib.rs b/crates/cgp-component/src/lib.rs index 3e9c86a9..0785c757 100644 --- a/crates/cgp-component/src/lib.rs +++ b/crates/cgp-component/src/lib.rs @@ -8,5 +8,5 @@ mod traits; mod types; -pub use traits::{CanUseComponent, DelegateComponent, HasCgpProvider, IsProviderFor}; +pub use traits::{CanUseComponent, DelegateComponent, IsProviderFor}; pub use types::{UseContext, UseDelegate, UseFields, WithContext, WithProvider}; diff --git a/crates/cgp-component/src/traits/can_use_component.rs b/crates/cgp-component/src/traits/can_use_component.rs index 552f4314..15fdee9f 100644 --- a/crates/cgp-component/src/traits/can_use_component.rs +++ b/crates/cgp-component/src/traits/can_use_component.rs @@ -1,4 +1,4 @@ -use crate::{HasCgpProvider, IsProviderFor}; +use crate::{DelegateComponent, IsProviderFor}; /** This is a convenient type alias that is used in the same way as [`IsProviderFor`], @@ -6,8 +6,8 @@ use crate::{HasCgpProvider, IsProviderFor}; that implements the provider trait. The `CanUseComponent` trait is automatically implemented for any CGP `Context` type - that implements the `HasCgpProvider` trait, and when `Contex::CgpProvider` implements - `IsProviderFor`. + that implements the `DelegateComponent` trait, and when `Contex::Delegate` + implements `IsProviderFor`. This trait is used by `check_components!` to check whether a `Context` implements a given `Component` through its provider. When there are unsatisfied constraints, @@ -17,7 +17,7 @@ pub trait CanUseComponent {} impl CanUseComponent for Context where - Context: HasCgpProvider, - Context::CgpProvider: IsProviderFor, + Context: DelegateComponent, + Context::Delegate: IsProviderFor, { } diff --git a/crates/cgp-component/src/traits/has_provider.rs b/crates/cgp-component/src/traits/has_provider.rs deleted file mode 100644 index d75d4414..00000000 --- a/crates/cgp-component/src/traits/has_provider.rs +++ /dev/null @@ -1,37 +0,0 @@ -/** - This trait is used by the blanket implementations of CGP consumer traits to - forward the implementation to the `CgpProvider` type, which impements the - corresponding provider trait. - - The `HasCgpProvider` trait is automatically implemented by `#[cgp_context]` - when defining a context type, together with the generated provider struct. - - Typically, the `CgpProvider` would contain provider implementation mapping - through `delegate_component!` macro to implement the corresponding provider - traits. However, it is also possible to implement context-specific provider - traits on the `CgpProvider` type directly. - - ## Example - - Given the following context definition: - - ```rust,ignore - #[cgp_context(MyContextComponents)] - pub struct MyContext { - ... - } - ``` - - The following would be generated: - - ```rust,ignore - pub struct MyContextComponents; - - impl HasCgpProvider for MyContext { - type CgpProvider = MyContextComponents; - } - ``` -*/ -pub trait HasCgpProvider { - type CgpProvider; -} diff --git a/crates/cgp-component/src/traits/mod.rs b/crates/cgp-component/src/traits/mod.rs index 16104b7e..1e5f1a04 100644 --- a/crates/cgp-component/src/traits/mod.rs +++ b/crates/cgp-component/src/traits/mod.rs @@ -1,9 +1,7 @@ mod can_use_component; mod delegate_component; -mod has_provider; mod is_provider; pub use can_use_component::*; pub use delegate_component::DelegateComponent; -pub use has_provider::HasCgpProvider; pub use is_provider::*; diff --git a/crates/cgp-core/src/prelude.rs b/crates/cgp-core/src/prelude.rs index e29326c2..c44714b9 100644 --- a/crates/cgp-core/src/prelude.rs +++ b/crates/cgp-core/src/prelude.rs @@ -2,8 +2,8 @@ pub use core::marker::PhantomData; pub use cgp_async_macro::async_trait; pub use cgp_component::{ - CanUseComponent, DelegateComponent, HasCgpProvider, IsProviderFor, UseContext, UseDelegate, - UseFields, WithContext, WithProvider, + CanUseComponent, DelegateComponent, IsProviderFor, UseContext, UseDelegate, UseFields, + WithContext, WithProvider, }; pub use cgp_error::{CanRaiseError, CanWrapError, HasErrorType}; pub use cgp_field::impls::{IsMut, IsNothing, IsPresent, IsRef, IsVoid, UseField}; diff --git a/crates/cgp-error/src/traits/can_raise_error.rs b/crates/cgp-error/src/traits/can_raise_error.rs index 600e18fe..be617d30 100644 --- a/crates/cgp-error/src/traits/can_raise_error.rs +++ b/crates/cgp-error/src/traits/can_raise_error.rs @@ -1,4 +1,4 @@ -use cgp_component::{DelegateComponent, HasCgpProvider, IsProviderFor, UseContext, UseDelegate}; +use cgp_component::{DelegateComponent, IsProviderFor, UseContext, UseDelegate}; use cgp_macro::cgp_component; use crate::traits::has_error_type::HasErrorType; diff --git a/crates/cgp-error/src/traits/can_wrap_error.rs b/crates/cgp-error/src/traits/can_wrap_error.rs index 6853754f..7dfdf0de 100644 --- a/crates/cgp-error/src/traits/can_wrap_error.rs +++ b/crates/cgp-error/src/traits/can_wrap_error.rs @@ -1,4 +1,4 @@ -use cgp_component::{DelegateComponent, HasCgpProvider, IsProviderFor, UseContext, UseDelegate}; +use cgp_component::{DelegateComponent, IsProviderFor, UseContext, UseDelegate}; use cgp_macro::cgp_component; use crate::traits::HasErrorType; diff --git a/crates/cgp-error/src/traits/has_error_type.rs b/crates/cgp-error/src/traits/has_error_type.rs index 43f188a5..3a3da0ae 100644 --- a/crates/cgp-error/src/traits/has_error_type.rs +++ b/crates/cgp-error/src/traits/has_error_type.rs @@ -1,6 +1,6 @@ use core::fmt::Debug; -use cgp_component::{DelegateComponent, HasCgpProvider, IsProviderFor, UseContext, WithProvider}; +use cgp_component::{DelegateComponent, IsProviderFor, UseContext, WithProvider}; use cgp_macro::cgp_type; use cgp_type::{ProvideType, UseType}; diff --git a/crates/cgp-macro-lib/src/derive_component/consumer_impl.rs b/crates/cgp-macro-lib/src/derive_component/consumer_impl.rs index d8f700f9..cd6508d5 100644 --- a/crates/cgp-macro-lib/src/derive_component/consumer_impl.rs +++ b/crates/cgp-macro-lib/src/derive_component/consumer_impl.rs @@ -3,8 +3,9 @@ use alloc::vec::Vec; use proc_macro2::Span; use quote::{ToTokens, quote}; +use syn::punctuated::Punctuated; use syn::spanned::Spanned; -use syn::token::{Brace, Eq, For, Impl}; +use syn::token::{Brace, Comma, Eq, For, Impl}; use syn::{ Error, GenericParam, Generics, Ident, ImplItem, ImplItemConst, ItemImpl, ItemTrait, Path, TraitItem, TypeParamBound, Visibility, parse2, @@ -17,6 +18,8 @@ pub fn derive_consumer_impl( consumer_trait: &ItemTrait, provider_name: &Ident, context_type: &Ident, + component_name: &Ident, + component_params: &Punctuated, ) -> syn::Result { let consumer_name = &consumer_trait.ident; @@ -61,7 +64,7 @@ pub fn derive_consumer_impl( { let has_component_constraint: TypeParamBound = parse2(quote! { - HasCgpProvider + DelegateComponent< #component_name < #component_params > > })?; let provider_constraint: TypeParamBound = parse2(quote! { @@ -75,14 +78,14 @@ pub fn derive_consumer_impl( })?); where_clause.predicates.push(parse2(quote! { - #context_type :: CgpProvider : #provider_constraint + #context_type :: Delegate : #provider_constraint })?); } _ => { generics.where_clause = Some(parse2(quote! { where #context_type : #has_component_constraint, - #context_type :: CgpProvider : #provider_constraint + #context_type :: Delegate : #provider_constraint })?); } } @@ -98,7 +101,7 @@ pub fn derive_consumer_impl( TraitItem::Fn(trait_fn) => { let impl_fn = derive_delegated_fn_impl( &trait_fn.sig, - &parse2(quote!(#context_type :: CgpProvider))?, + &parse2(quote!(#context_type :: Delegate))?, )?; impl_items.push(ImplItem::Fn(impl_fn)); @@ -121,7 +124,7 @@ pub fn derive_consumer_impl( let impl_type = derive_delegate_type_impl( trait_type, parse2(quote!( - < #context_type :: CgpProvider as #provider_name < #provider_type_generics > > :: #type_name #type_generics + < #context_type :: Delegate as #provider_name < #provider_type_generics > > :: #type_name #type_generics ))?, ); @@ -132,7 +135,7 @@ pub fn derive_consumer_impl( let (_, type_generics, _) = trait_item_const.generics.split_for_impl(); let impl_expr = parse2(quote! { - < #context_type :: CgpProvider as #provider_name < #provider_type_generics > > :: #const_ident #type_generics + < #context_type :: Delegate as #provider_name < #provider_type_generics > > :: #const_ident #type_generics })?; let impl_item_const = ImplItemConst { diff --git a/crates/cgp-macro-lib/src/derive_component/derive.rs b/crates/cgp-macro-lib/src/derive_component/derive.rs index 7092468e..0189994b 100644 --- a/crates/cgp-macro-lib/src/derive_component/derive.rs +++ b/crates/cgp-macro-lib/src/derive_component/derive.rs @@ -31,7 +31,13 @@ pub fn derive_component_with_ast( context_type, )?; - let consumer_impl = derive_consumer_impl(&consumer_trait, provider_name, context_type)?; + let consumer_impl = derive_consumer_impl( + &consumer_trait, + provider_name, + context_type, + component_name, + component_params, + )?; let provider_impl = derive_provider_impl( context_type, diff --git a/crates/cgp-macro-lib/src/derive_context/derive.rs b/crates/cgp-macro-lib/src/derive_context/derive.rs index 59485b81..efd615ca 100644 --- a/crates/cgp-macro-lib/src/derive_context/derive.rs +++ b/crates/cgp-macro-lib/src/derive_context/derive.rs @@ -10,13 +10,17 @@ pub fn derive_has_components( ) -> syn::Result { let context_name = &context_struct.ident; - let (impl_generics, ty_generics, where_clause) = context_struct.generics.split_for_impl(); + let mut generics = context_struct.generics.clone(); + generics.params.insert(0, parse2(quote! { __Name__ })?); + + let (impl_generics, _, _) = generics.split_for_impl(); + let (_, ty_generics, where_clause) = context_struct.generics.split_for_impl(); parse2(quote! { - impl #impl_generics HasCgpProvider for #context_name #ty_generics + impl #impl_generics DelegateComponent<__Name__> for #context_name #ty_generics #where_clause { - type CgpProvider = #provider_name #provider_generics; + type Delegate = #provider_name #provider_generics; } }) } diff --git a/crates/cgp-macro/src/lib.rs b/crates/cgp-macro/src/lib.rs index ac08186e..cf0a1aee 100644 --- a/crates/cgp-macro/src/lib.rs +++ b/crates/cgp-macro/src/lib.rs @@ -721,7 +721,7 @@ pub fn cgp_type(attrs: TokenStream, body: TokenStream) -> TokenStream { the context provider would be named in the format `{struct_name}Components`. The macro generates a struct definition for the context provider, and implements - `HasCgpProvider` for the context struct to point to the context provider. + `DelegateComponent` for the context struct to point to the context provider. ## Example @@ -748,8 +748,8 @@ pub fn cgp_type(attrs: TokenStream, body: TokenStream) -> TokenStream { ```rust,ignore struct MyAppComponents; - impl HasCgpProvider for MyApp { - type CgpProvider = MyAppComponents; + impl DelegateComponent for MyApp { + type Delegate = MyAppComponents; } ``` diff --git a/crates/cgp-tests/src/tests/mod.rs b/crates/cgp-tests/src/tests/mod.rs index 7031c152..86fdc838 100644 --- a/crates/cgp-tests/src/tests/mod.rs +++ b/crates/cgp-tests/src/tests/mod.rs @@ -1,15 +1,11 @@ pub mod r#async; pub mod blanket_trait; -pub mod cgp_component; -pub mod cgp_impl; pub mod check_components; pub mod compose; pub mod delegate_and_check_components; -pub mod delegate_components; pub mod getter; pub mod has_field; pub mod has_fields; pub mod monad; -pub mod preset; pub mod symbol; pub mod use_delegate; diff --git a/crates/cgp-tests/tests/component.rs b/crates/cgp-tests/tests/component.rs new file mode 100644 index 00000000..17dfc53d --- /dev/null +++ b/crates/cgp-tests/tests/component.rs @@ -0,0 +1 @@ +pub mod component_tests; diff --git a/crates/cgp-tests/src/tests/cgp_component/constant.rs b/crates/cgp-tests/tests/component_tests/cgp_component/constant.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_component/constant.rs rename to crates/cgp-tests/tests/component_tests/cgp_component/constant.rs diff --git a/crates/cgp-tests/src/tests/cgp_component/lifetime.rs b/crates/cgp-tests/tests/component_tests/cgp_component/lifetime.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_component/lifetime.rs rename to crates/cgp-tests/tests/component_tests/cgp_component/lifetime.rs diff --git a/crates/cgp-tests/src/tests/cgp_component/mod.rs b/crates/cgp-tests/tests/component_tests/cgp_component/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_component/mod.rs rename to crates/cgp-tests/tests/component_tests/cgp_component/mod.rs diff --git a/crates/cgp-tests/src/tests/cgp_component/sized.rs b/crates/cgp-tests/tests/component_tests/cgp_component/sized.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_component/sized.rs rename to crates/cgp-tests/tests/component_tests/cgp_component/sized.rs diff --git a/crates/cgp-tests/src/tests/cgp_impl/basic.rs b/crates/cgp-tests/tests/component_tests/cgp_impl/basic.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_impl/basic.rs rename to crates/cgp-tests/tests/component_tests/cgp_impl/basic.rs diff --git a/crates/cgp-tests/src/tests/cgp_impl/mod.rs b/crates/cgp-tests/tests/component_tests/cgp_impl/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/cgp_impl/mod.rs rename to crates/cgp-tests/tests/component_tests/cgp_impl/mod.rs diff --git a/crates/cgp-tests/tests/component_tests/consumer_delegate/basic.rs b/crates/cgp-tests/tests/component_tests/consumer_delegate/basic.rs new file mode 100644 index 00000000..16b3f56c --- /dev/null +++ b/crates/cgp-tests/tests/component_tests/consumer_delegate/basic.rs @@ -0,0 +1,40 @@ +use cgp::prelude::*; + +#[cgp_getter] +pub trait HasName { + fn name(&self) -> &str; +} + +#[cgp_getter] +pub trait HasCount { + fn count(&self) -> u32; +} + +#[derive(HasField)] +pub struct App { + pub name: String, + pub count: u32, +} + +delegate_components! { + App { + NameGetterComponent: UseField, + } +} + +impl HasCount for App { + fn count(&self) -> u32 { + self.count + } +} + +#[test] +fn test_basic_consumer_delegate() { + let app = App { + name: "John".to_owned(), + count: 42, + }; + + assert_eq!(app.name(), "John"); + assert_eq!(app.count(), 42); +} diff --git a/crates/cgp-tests/tests/component_tests/consumer_delegate/generics.rs b/crates/cgp-tests/tests/component_tests/consumer_delegate/generics.rs new file mode 100644 index 00000000..d5fbe9a7 --- /dev/null +++ b/crates/cgp-tests/tests/component_tests/consumer_delegate/generics.rs @@ -0,0 +1,38 @@ +use cgp::prelude::*; + +#[cgp_getter { + provider: ValueGetter, + name: ValueGetterComponent, +}] +pub trait HasValue { + fn value(&self, _tag: PhantomData) -> &Value; +} + +#[derive(HasField)] +pub struct App { + pub name: String, + pub count: u32, +} + +delegate_components! { + App { + ValueGetterComponent: UseField, + } +} + +impl HasValue for App { + fn value(&self, _tag: PhantomData) -> &u32 { + &self.count + } +} + +#[test] +fn test_generic_consumer_delegate() { + let app = App { + name: "John".to_owned(), + count: 42, + }; + + assert_eq!(app.value(PhantomData::), "John"); + assert_eq!(app.value(PhantomData::), &42); +} diff --git a/crates/cgp-tests/tests/component_tests/consumer_delegate/mod.rs b/crates/cgp-tests/tests/component_tests/consumer_delegate/mod.rs new file mode 100644 index 00000000..bfe3d89b --- /dev/null +++ b/crates/cgp-tests/tests/component_tests/consumer_delegate/mod.rs @@ -0,0 +1,2 @@ +pub mod basic; +pub mod generics; diff --git a/crates/cgp-tests/src/tests/delegate_components/direct.rs b/crates/cgp-tests/tests/component_tests/delegate_components/direct.rs similarity index 100% rename from crates/cgp-tests/src/tests/delegate_components/direct.rs rename to crates/cgp-tests/tests/component_tests/delegate_components/direct.rs diff --git a/crates/cgp-tests/src/tests/delegate_components/general.rs b/crates/cgp-tests/tests/component_tests/delegate_components/general.rs similarity index 100% rename from crates/cgp-tests/src/tests/delegate_components/general.rs rename to crates/cgp-tests/tests/component_tests/delegate_components/general.rs diff --git a/crates/cgp-tests/src/tests/delegate_components/mod.rs b/crates/cgp-tests/tests/component_tests/delegate_components/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/delegate_components/mod.rs rename to crates/cgp-tests/tests/component_tests/delegate_components/mod.rs diff --git a/crates/cgp-tests/src/tests/delegate_components/new_struct.rs b/crates/cgp-tests/tests/component_tests/delegate_components/new_struct.rs similarity index 100% rename from crates/cgp-tests/src/tests/delegate_components/new_struct.rs rename to crates/cgp-tests/tests/component_tests/delegate_components/new_struct.rs diff --git a/crates/cgp-tests/tests/component_tests/mod.rs b/crates/cgp-tests/tests/component_tests/mod.rs new file mode 100644 index 00000000..cc6245c5 --- /dev/null +++ b/crates/cgp-tests/tests/component_tests/mod.rs @@ -0,0 +1,4 @@ +pub mod cgp_component; +pub mod cgp_impl; +pub mod consumer_delegate; +pub mod delegate_components; diff --git a/crates/cgp-tests/tests/preset.rs b/crates/cgp-tests/tests/preset.rs new file mode 100644 index 00000000..4dc60a54 --- /dev/null +++ b/crates/cgp-tests/tests/preset.rs @@ -0,0 +1,3 @@ +#![allow(clippy::module_inception)] + +pub mod preset_tests; diff --git a/crates/cgp-tests/src/tests/preset/basic/components.rs b/crates/cgp-tests/tests/preset_tests/basic/components.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/basic/components.rs rename to crates/cgp-tests/tests/preset_tests/basic/components.rs diff --git a/crates/cgp-tests/tests/preset_tests/basic/consumer_delegate.rs b/crates/cgp-tests/tests/preset_tests/basic/consumer_delegate.rs new file mode 100644 index 00000000..817bbd5e --- /dev/null +++ b/crates/cgp-tests/tests/preset_tests/basic/consumer_delegate.rs @@ -0,0 +1,36 @@ +use cgp::prelude::*; + +use crate::preset_tests::basic::components::{ + BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, HasBar, +}; +use crate::preset_tests::basic::preset::{CheckDelegatesForMyPreset, MyPreset}; + +#[derive(HasField)] +pub struct MyContext { + pub foo: (), + pub bar: (), +} + +impl<__Name__> DelegateComponent<__Name__> for MyContext +where + Self: MyPreset::IsPreset<__Name__>, + MyPreset::Components: DelegateComponent<__Name__>, +{ + type Delegate = >::Delegate; +} + +impl HasBar for MyContext { + fn bar(&self) -> &Self::Bar { + &self.bar + } +} + +check_components! { + CanUseMyContext for MyContext { + FooTypeProviderComponent, + BarTypeProviderComponent, + FooGetterComponent, + } +} + +impl CheckDelegatesForMyPreset for MyContext {} diff --git a/crates/cgp-tests/src/tests/preset/basic/contexts.rs b/crates/cgp-tests/tests/preset_tests/basic/contexts.rs similarity index 82% rename from crates/cgp-tests/src/tests/preset/basic/contexts.rs rename to crates/cgp-tests/tests/preset_tests/basic/contexts.rs index 2c09da9b..2bbe473e 100644 --- a/crates/cgp-tests/src/tests/preset/basic/contexts.rs +++ b/crates/cgp-tests/tests/preset_tests/basic/contexts.rs @@ -1,9 +1,9 @@ use cgp::prelude::*; -use crate::tests::preset::basic::components::{ +use crate::preset_tests::basic::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; -use crate::tests::preset::basic::preset::{CheckDelegatesForMyPreset, MyPreset}; +use crate::preset_tests::basic::preset::{CheckDelegatesForMyPreset, MyPreset}; #[cgp_context(MyContextComponents: MyPreset)] #[derive(HasField)] diff --git a/crates/cgp-tests/src/tests/preset/generics/mod.rs b/crates/cgp-tests/tests/preset_tests/basic/mod.rs similarity index 66% rename from crates/cgp-tests/src/tests/preset/generics/mod.rs rename to crates/cgp-tests/tests/preset_tests/basic/mod.rs index 6960be78..9f6ff9b2 100644 --- a/crates/cgp-tests/src/tests/preset/generics/mod.rs +++ b/crates/cgp-tests/tests/preset_tests/basic/mod.rs @@ -1,3 +1,4 @@ pub mod components; +pub mod consumer_delegate; pub mod contexts; pub mod preset; diff --git a/crates/cgp-tests/src/tests/preset/basic/preset.rs b/crates/cgp-tests/tests/preset_tests/basic/preset.rs similarity index 93% rename from crates/cgp-tests/src/tests/preset/basic/preset.rs rename to crates/cgp-tests/tests/preset_tests/basic/preset.rs index ccdc35bd..15c09117 100644 --- a/crates/cgp-tests/src/tests/preset/basic/preset.rs +++ b/crates/cgp-tests/tests/preset_tests/basic/preset.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{ + use crate::preset_tests::basic::components::{ BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; diff --git a/crates/cgp-tests/src/tests/preset/generics/components.rs b/crates/cgp-tests/tests/preset_tests/generics/components.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/generics/components.rs rename to crates/cgp-tests/tests/preset_tests/generics/components.rs diff --git a/crates/cgp-tests/src/tests/preset/generics/contexts.rs b/crates/cgp-tests/tests/preset_tests/generics/contexts.rs similarity index 83% rename from crates/cgp-tests/src/tests/preset/generics/contexts.rs rename to crates/cgp-tests/tests/preset_tests/generics/contexts.rs index 0833277b..4f1641ef 100644 --- a/crates/cgp-tests/src/tests/preset/generics/contexts.rs +++ b/crates/cgp-tests/tests/preset_tests/generics/contexts.rs @@ -1,9 +1,9 @@ use cgp::prelude::*; -use crate::tests::preset::generics::components::{ +use crate::preset_tests::generics::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; -use crate::tests::preset::generics::preset::MyGenericPreset; +use crate::preset_tests::generics::preset::MyGenericPreset; #[cgp_context(MyContextComponents: MyGenericPreset)] #[derive(HasField)] diff --git a/crates/cgp-tests/src/tests/preset/basic/mod.rs b/crates/cgp-tests/tests/preset_tests/generics/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/basic/mod.rs rename to crates/cgp-tests/tests/preset_tests/generics/mod.rs diff --git a/crates/cgp-tests/src/tests/preset/generics/preset.rs b/crates/cgp-tests/tests/preset_tests/generics/preset.rs similarity index 91% rename from crates/cgp-tests/src/tests/preset/generics/preset.rs rename to crates/cgp-tests/tests/preset_tests/generics/preset.rs index d8a8be17..c0b9cbff 100644 --- a/crates/cgp-tests/src/tests/preset/generics/preset.rs +++ b/crates/cgp-tests/tests/preset_tests/generics/preset.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::generics::components::{ + use crate::preset_tests::generics::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; diff --git a/crates/cgp-tests/src/tests/preset/generics_inheritance/components.rs b/crates/cgp-tests/tests/preset_tests/generics_inheritance/components.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/generics_inheritance/components.rs rename to crates/cgp-tests/tests/preset_tests/generics_inheritance/components.rs diff --git a/crates/cgp-tests/src/tests/preset/generics_inheritance/contexts.rs b/crates/cgp-tests/tests/preset_tests/generics_inheritance/contexts.rs similarity index 80% rename from crates/cgp-tests/src/tests/preset/generics_inheritance/contexts.rs rename to crates/cgp-tests/tests/preset_tests/generics_inheritance/contexts.rs index e6896fad..0b330169 100644 --- a/crates/cgp-tests/src/tests/preset/generics_inheritance/contexts.rs +++ b/crates/cgp-tests/tests/preset_tests/generics_inheritance/contexts.rs @@ -1,9 +1,9 @@ use cgp::prelude::*; -use crate::tests::preset::generics_inheritance::components::{ +use crate::preset_tests::generics_inheritance::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; -use crate::tests::preset::generics_inheritance::preset_b::MyGenericPresetB; +use crate::preset_tests::generics_inheritance::preset_b::MyGenericPresetB; #[cgp_context(MyContextComponents: MyGenericPresetB<()>)] #[derive(HasField)] diff --git a/crates/cgp-tests/src/tests/preset/generics_inheritance/mod.rs b/crates/cgp-tests/tests/preset_tests/generics_inheritance/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/generics_inheritance/mod.rs rename to crates/cgp-tests/tests/preset_tests/generics_inheritance/mod.rs diff --git a/crates/cgp-tests/src/tests/preset/generics_inheritance/preset_a.rs b/crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_a.rs similarity index 89% rename from crates/cgp-tests/src/tests/preset/generics_inheritance/preset_a.rs rename to crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_a.rs index ff903993..2c9d8b53 100644 --- a/crates/cgp-tests/src/tests/preset/generics_inheritance/preset_a.rs +++ b/crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_a.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::generics_inheritance::components::{ + use crate::preset_tests::generics_inheritance::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; diff --git a/crates/cgp-tests/src/tests/preset/generics_inheritance/preset_b.rs b/crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_b.rs similarity index 77% rename from crates/cgp-tests/src/tests/preset/generics_inheritance/preset_b.rs rename to crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_b.rs index 067a034a..392707f6 100644 --- a/crates/cgp-tests/src/tests/preset/generics_inheritance/preset_b.rs +++ b/crates/cgp-tests/tests/preset_tests/generics_inheritance/preset_b.rs @@ -4,7 +4,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::generics_inheritance::preset_a::MyGenericPresetA; + use crate::preset_tests::generics_inheritance::preset_a::MyGenericPresetA; cgp_preset! { MyGenericPresetB: MyGenericPresetA { diff --git a/crates/cgp-tests/src/tests/preset/inheritance/contexts.rs b/crates/cgp-tests/tests/preset_tests/inheritance/contexts.rs similarity index 78% rename from crates/cgp-tests/src/tests/preset/inheritance/contexts.rs rename to crates/cgp-tests/tests/preset_tests/inheritance/contexts.rs index 094c2a96..7e0418d0 100644 --- a/crates/cgp-tests/src/tests/preset/inheritance/contexts.rs +++ b/crates/cgp-tests/tests/preset_tests/inheritance/contexts.rs @@ -1,9 +1,9 @@ use cgp::prelude::*; -use crate::tests::preset::basic::components::{ +use crate::preset_tests::basic::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; -use crate::tests::preset::inheritance::preset_b::{CheckDelegatesForMyPresetB, MyPresetB}; +use crate::preset_tests::inheritance::preset_b::{CheckDelegatesForMyPresetB, MyPresetB}; #[cgp_context(MyContextComponents: MyPresetB)] #[derive(HasField)] diff --git a/crates/cgp-tests/src/tests/preset/inheritance/mod.rs b/crates/cgp-tests/tests/preset_tests/inheritance/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/inheritance/mod.rs rename to crates/cgp-tests/tests/preset_tests/inheritance/mod.rs diff --git a/crates/cgp-tests/src/tests/preset/inheritance/preset_a.rs b/crates/cgp-tests/tests/preset_tests/inheritance/preset_a.rs similarity index 92% rename from crates/cgp-tests/src/tests/preset/inheritance/preset_a.rs rename to crates/cgp-tests/tests/preset_tests/inheritance/preset_a.rs index bd3ff96e..86795e21 100644 --- a/crates/cgp-tests/src/tests/preset/inheritance/preset_a.rs +++ b/crates/cgp-tests/tests/preset_tests/inheritance/preset_a.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{ + use crate::preset_tests::basic::components::{ BarTypeProviderComponent, FooTypeProviderComponent, }; diff --git a/crates/cgp-tests/src/tests/preset/inheritance/preset_b.rs b/crates/cgp-tests/tests/preset_tests/inheritance/preset_b.rs similarity index 82% rename from crates/cgp-tests/src/tests/preset/inheritance/preset_b.rs rename to crates/cgp-tests/tests/preset_tests/inheritance/preset_b.rs index 79154e2c..6f68f808 100644 --- a/crates/cgp-tests/src/tests/preset/inheritance/preset_b.rs +++ b/crates/cgp-tests/tests/preset_tests/inheritance/preset_b.rs @@ -2,8 +2,8 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{BarGetterComponent, FooGetterComponent}; - use crate::tests::preset::inheritance::preset_a::MyPresetA; + use crate::preset_tests::basic::components::{BarGetterComponent, FooGetterComponent}; + use crate::preset_tests::inheritance::preset_a::MyPresetA; cgp_preset! { MyPresetB: MyPresetA { diff --git a/crates/cgp-tests/src/tests/preset/mod.rs b/crates/cgp-tests/tests/preset_tests/mod.rs similarity index 77% rename from crates/cgp-tests/src/tests/preset/mod.rs rename to crates/cgp-tests/tests/preset_tests/mod.rs index 8db83867..7af1795b 100644 --- a/crates/cgp-tests/src/tests/preset/mod.rs +++ b/crates/cgp-tests/tests/preset_tests/mod.rs @@ -1,5 +1,3 @@ -#![allow(clippy::module_inception)] - pub mod basic; pub mod generics; pub mod generics_inheritance; diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/contexts.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/contexts.rs similarity index 84% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/contexts.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/contexts.rs index a4837200..625de94d 100644 --- a/crates/cgp-tests/src/tests/preset/nested_inheritance/contexts.rs +++ b/crates/cgp-tests/tests/preset_tests/nested_inheritance/contexts.rs @@ -1,9 +1,9 @@ use cgp::prelude::*; -use crate::tests::preset::basic::components::{ +use crate::preset_tests::basic::components::{ BarGetterComponent, BarTypeProviderComponent, FooGetterComponent, FooTypeProviderComponent, }; -use crate::tests::preset::nested_inheritance::preset_d::{ +use crate::preset_tests::nested_inheritance::preset_d::{ CheckDelegatesForNestedPresetD, NestedPresetD, }; diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/mod.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/mod.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/mod.rs diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_a.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_a.rs similarity index 84% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/preset_a.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_a.rs index 20cd740a..1c094d1f 100644 --- a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_a.rs +++ b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_a.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{FooGetterComponent, FooTypeProviderComponent}; + use crate::preset_tests::basic::components::{FooGetterComponent, FooTypeProviderComponent}; cgp_preset! { NestedPresetA { diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_b.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_b.rs similarity index 76% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/preset_b.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_b.rs index b97fec7c..8b1cc80d 100644 --- a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_b.rs +++ b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_b.rs @@ -2,8 +2,8 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{BarTypeProviderComponent, FooGetterComponent}; - use crate::tests::preset::nested_inheritance::preset_a::NestedPresetA; + use crate::preset_tests::basic::components::{BarTypeProviderComponent, FooGetterComponent}; + use crate::preset_tests::nested_inheritance::preset_a::NestedPresetA; cgp_preset! { NestedPresetB: NestedPresetA { diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_c.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_c.rs similarity index 84% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/preset_c.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_c.rs index 021f72b8..1e686347 100644 --- a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_c.rs +++ b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_c.rs @@ -2,7 +2,7 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::basic::components::{BarGetterComponent, BarTypeProviderComponent}; + use crate::preset_tests::basic::components::{BarGetterComponent, BarTypeProviderComponent}; cgp_preset! { NestedPresetC { diff --git a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_d.rs b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_d.rs similarity index 83% rename from crates/cgp-tests/src/tests/preset/nested_inheritance/preset_d.rs rename to crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_d.rs index f92e3907..817244a2 100644 --- a/crates/cgp-tests/src/tests/preset/nested_inheritance/preset_d.rs +++ b/crates/cgp-tests/tests/preset_tests/nested_inheritance/preset_d.rs @@ -2,8 +2,8 @@ mod preset { use cgp::prelude::*; - use crate::tests::preset::nested_inheritance::preset_b::NestedPresetB; - use crate::tests::preset::nested_inheritance::preset_c::NestedPresetC; + use crate::preset_tests::nested_inheritance::preset_b::NestedPresetB; + use crate::preset_tests::nested_inheritance::preset_c::NestedPresetC; cgp_preset! { NestedPresetD: NestedPresetB + NestedPresetC { diff --git a/crates/cgp-tests/src/tests/preset/wrapped/context.rs b/crates/cgp-tests/tests/preset_tests/wrapped/context.rs similarity index 87% rename from crates/cgp-tests/src/tests/preset/wrapped/context.rs rename to crates/cgp-tests/tests/preset_tests/wrapped/context.rs index cf65e5d3..f5aab4d2 100644 --- a/crates/cgp-tests/src/tests/preset/wrapped/context.rs +++ b/crates/cgp-tests/tests/preset_tests/wrapped/context.rs @@ -3,7 +3,7 @@ use core::convert::Infallible; use cgp::core::error::{ErrorRaiserComponent, ErrorTypeProviderComponent}; use cgp::prelude::*; -use crate::tests::preset::wrapped::preset::{BoxError, ErrorHandlerPreset}; +use crate::preset_tests::wrapped::preset::{BoxError, ErrorHandlerPreset}; #[cgp_context] pub struct MyContext; diff --git a/crates/cgp-tests/src/tests/preset/wrapped/mod.rs b/crates/cgp-tests/tests/preset_tests/wrapped/mod.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/wrapped/mod.rs rename to crates/cgp-tests/tests/preset_tests/wrapped/mod.rs diff --git a/crates/cgp-tests/src/tests/preset/wrapped/preset.rs b/crates/cgp-tests/tests/preset_tests/wrapped/preset.rs similarity index 100% rename from crates/cgp-tests/src/tests/preset/wrapped/preset.rs rename to crates/cgp-tests/tests/preset_tests/wrapped/preset.rs diff --git a/crates/cgp-type/Cargo.toml b/crates/cgp-type/Cargo.toml index 18d46834..048283df 100644 --- a/crates/cgp-type/Cargo.toml +++ b/crates/cgp-type/Cargo.toml @@ -13,4 +13,4 @@ description = """ [dependencies] cgp-component = { workspace = true } -cgp-macro = { workspace = true } +cgp-macro = { workspace = true } diff --git a/crates/cgp-type/src/traits/has_type.rs b/crates/cgp-type/src/traits/has_type.rs index 15aec00b..80d58a18 100644 --- a/crates/cgp-type/src/traits/has_type.rs +++ b/crates/cgp-type/src/traits/has_type.rs @@ -1,4 +1,4 @@ -use cgp_component::{DelegateComponent, HasCgpProvider, IsProviderFor, UseContext, UseDelegate}; +use cgp_component::{DelegateComponent, IsProviderFor, UseContext, UseDelegate}; use cgp_macro::cgp_component; #[cgp_component {