From ca293c3b291f9a6264a429d0053447c55d0a14f8 Mon Sep 17 00:00:00 2001 From: Soares Chen Date: Sat, 22 Feb 2025 21:05:33 +0000 Subject: [PATCH] Permanently enable provider supertrait --- crates/cgp-component-macro-lib/Cargo.toml | 1 - .../src/derive_component/provider_impl.rs | 9 +-- .../src/derive_component/provider_trait.rs | 13 ++-- .../src/derive_provider/flag.rs | 5 -- .../src/derive_provider/mod.rs | 2 - .../src/tests/derive_component.rs | 62 ------------------- crates/cgp-component-macro/Cargo.toml | 1 - crates/cgp-core/Cargo.toml | 1 - crates/cgp/Cargo.toml | 1 - rust-toolchain.toml | 2 +- 10 files changed, 8 insertions(+), 89 deletions(-) delete mode 100644 crates/cgp-component-macro-lib/src/derive_provider/flag.rs diff --git a/crates/cgp-component-macro-lib/Cargo.toml b/crates/cgp-component-macro-lib/Cargo.toml index b114e528..33a932a6 100644 --- a/crates/cgp-component-macro-lib/Cargo.toml +++ b/crates/cgp-component-macro-lib/Cargo.toml @@ -13,7 +13,6 @@ description = """ [features] default = [] -provider-supertrait = [] [dependencies] syn = { version = "2.0.95", features = [ "full", "extra-traits" ] } diff --git a/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs b/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs index 45d9874e..6a3a1326 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/provider_impl.rs @@ -12,7 +12,6 @@ use syn::{ use crate::derive_component::delegate_fn::derive_delegated_fn_impl; use crate::derive_component::delegate_type::derive_delegate_type_impl; use crate::derive_component::generic_args::extract_generic_args; -use crate::derive_provider::ENABLE_IS_PROVIDER_SUPERTRAIT; pub fn derive_provider_impl( context_type: &Ident, @@ -41,11 +40,9 @@ pub fn derive_provider_impl( DelegateComponent< #component_name < #component_params > > }; - if ENABLE_IS_PROVIDER_SUPERTRAIT { - delegate_constraint.push(parse_quote!( - IsProviderFor< #component_name < #component_params >, #context_type, ( #is_provider_params ) > - )) - } + delegate_constraint.push(parse_quote!( + IsProviderFor< #component_name < #component_params >, #context_type, ( #is_provider_params ) > + )); let provider_constraint: Punctuated = parse_quote! { #provider_name < #provider_generic_args > diff --git a/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs b/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs index d401b64c..722af504 100644 --- a/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs +++ b/crates/cgp-component-macro-lib/src/derive_component/provider_trait.rs @@ -9,7 +9,6 @@ use crate::derive_component::replace_self_receiver::replace_self_receiver; use crate::derive_component::replace_self_type::{ iter_parse_and_replace_self_type, parse_and_replace_self_type, }; -use crate::derive_provider::ENABLE_IS_PROVIDER_SUPERTRAIT; pub fn derive_provider_trait( component_name: &Ident, @@ -50,15 +49,11 @@ pub fn derive_provider_trait( &local_assoc_types, )?; - if ENABLE_IS_PROVIDER_SUPERTRAIT { - let is_provider_params = extract_generic_args(&consumer_trait.generics.params); + let is_provider_params = extract_generic_args(&consumer_trait.generics.params); - provider_trait.supertraits = parse_quote!( - IsProviderFor< #component_name < #component_params >, #context_type, ( #is_provider_params ) > - ); - } else { - provider_trait.supertraits.clear(); - } + provider_trait.supertraits = parse_quote!( + IsProviderFor< #component_name < #component_params >, #context_type, ( #is_provider_params ) > + ); if !context_constraints.is_empty() { match &mut provider_trait.generics.where_clause { diff --git a/crates/cgp-component-macro-lib/src/derive_provider/flag.rs b/crates/cgp-component-macro-lib/src/derive_provider/flag.rs deleted file mode 100644 index 23cebe7b..00000000 --- a/crates/cgp-component-macro-lib/src/derive_provider/flag.rs +++ /dev/null @@ -1,5 +0,0 @@ -#[cfg(feature = "provider-supertrait")] -pub const ENABLE_IS_PROVIDER_SUPERTRAIT: bool = true; - -#[cfg(not(feature = "provider-supertrait"))] -pub const ENABLE_IS_PROVIDER_SUPERTRAIT: bool = false; diff --git a/crates/cgp-component-macro-lib/src/derive_provider/mod.rs b/crates/cgp-component-macro-lib/src/derive_provider/mod.rs index e9bbbea4..2822934e 100644 --- a/crates/cgp-component-macro-lib/src/derive_provider/mod.rs +++ b/crates/cgp-component-macro-lib/src/derive_provider/mod.rs @@ -1,7 +1,5 @@ mod derive; -mod flag; mod replace_constraint; pub use derive::*; -pub use flag::*; pub use replace_constraint::*; diff --git a/crates/cgp-component-macro-lib/src/tests/derive_component.rs b/crates/cgp-component-macro-lib/src/tests/derive_component.rs index f9585e42..53af4320 100644 --- a/crates/cgp-component-macro-lib/src/tests/derive_component.rs +++ b/crates/cgp-component-macro-lib/src/tests/derive_component.rs @@ -21,7 +21,6 @@ fn test_basic_derive_component() { .unwrap(); } -#[cfg(feature = "provider-supertrait")] #[test] fn test_derive_component_with_const_generic() { let derived = derive_component( @@ -81,64 +80,3 @@ fn test_derive_component_with_const_generic() { assert_equal_token_stream(&derived, &expected); } - -#[cfg(not(feature = "provider-supertrait"))] -#[test] -fn test_derive_component_with_const_generic() { - let derived = derive_component( - quote! { - name: FooComponent, - provider: FooProvider, - }, - quote! { - pub trait HasFoo { - type Foo; - - fn foo(&self) -> Self::Foo; - } - }, - ) - .unwrap(); - - let expected = quote! { - pub struct FooComponent; - - pub trait HasFoo { - type Foo; - - fn foo(&self) -> Self::Foo; - } - - pub trait FooProvider { - type Foo; - - fn foo(context: &Context) -> Self::Foo; - } - - impl HasFoo for Context - where - Context: HasProvider, - Context::Provider: FooProvider, - { - type Foo = >::Foo; - - fn foo(&self) -> Self::Foo { - Context::Provider::foo(self) - } - } - - impl FooProvider for Component - where - Component: DelegateComponent, - Component::Delegate: FooProvider, - { - type Foo = >::Foo; - - fn foo(context: &Context) -> Self::Foo { - Component::Delegate::foo(context) - } - } - }; - - assert_equal_token_stream(&derived, &expected); -} diff --git a/crates/cgp-component-macro/Cargo.toml b/crates/cgp-component-macro/Cargo.toml index dff08676..bef84f3f 100644 --- a/crates/cgp-component-macro/Cargo.toml +++ b/crates/cgp-component-macro/Cargo.toml @@ -16,7 +16,6 @@ proc-macro = true [features] default = [] -provider-supertrait = [ "cgp-component-macro-lib/provider-supertrait" ] [dependencies] syn = { version = "2.0.95", features = [ "full", "extra-traits" ] } diff --git a/crates/cgp-core/Cargo.toml b/crates/cgp-core/Cargo.toml index 6e73d462..90632e35 100644 --- a/crates/cgp-core/Cargo.toml +++ b/crates/cgp-core/Cargo.toml @@ -14,7 +14,6 @@ description = """ [features] default = [ "full" ] full = [ "cgp-async/full" ] -provider-supertrait = [ "cgp-component-macro/provider-supertrait" ] [dependencies] cgp-async = { version = "0.3.0", default-features = false } diff --git a/crates/cgp/Cargo.toml b/crates/cgp/Cargo.toml index 44d5a66b..cf80491f 100644 --- a/crates/cgp/Cargo.toml +++ b/crates/cgp/Cargo.toml @@ -14,7 +14,6 @@ description = """ [features] default = [ "full" ] full = [ "cgp-core/full", "cgp-extra/full" ] -provider-supertrait = [ "cgp-core/provider-supertrait" ] [dependencies] cgp-async = { version = "0.3.0", default-features = false } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 6f4d5bc3..5bedd373 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.81" +channel = "1.85" profile = "default"