11#[ cfg( RUSTC_WITH_SPECIALIZATION ) ]
22use solana_frozen_abi:: abi_example:: AbiExample ;
3+ #[ cfg( debug_assertions) ]
4+ #[ allow( deprecated) ]
5+ use solana_sdk:: AutoTraitBreakSendSync ;
36use {
47 crate :: system_instruction_processor,
58 solana_program_runtime:: {
@@ -104,7 +107,7 @@ pub enum BuiltinAction {
104107/// State transition enum used for adding and removing builtin programs through
105108/// feature activations.
106109#[ derive( Debug , Clone , AbiExample ) ]
107- pub enum BuiltinFeatureTransition {
110+ enum InnerBuiltinFeatureTransition {
108111 /// Add a builtin program if a feature is activated.
109112 Add {
110113 builtin : Builtin ,
@@ -119,6 +122,13 @@ pub enum BuiltinFeatureTransition {
119122 } ,
120123}
121124
125+ #[ allow( deprecated) ]
126+ #[ cfg( debug_assertions) ]
127+ impl AutoTraitBreakSendSync for InnerBuiltinFeatureTransition { }
128+
129+ #[ derive( AbiExample , Clone , Debug ) ]
130+ pub struct BuiltinFeatureTransition ( InnerBuiltinFeatureTransition ) ;
131+
122132// https://github.com/solana-labs/solana/pull/23233 added `BuiltinFeatureTransition`
123133// to `Bank` which triggers https://github.com/rust-lang/rust/issues/92987 while
124134// attempting to resolve `Sync` on `BankRc` in `AccountsBackgroundService::new` ala,
@@ -142,21 +152,21 @@ impl BuiltinFeatureTransition {
142152 & self ,
143153 should_apply_action_for_feature : & impl Fn ( & Pubkey ) -> bool ,
144154 ) -> Option < BuiltinAction > {
145- match self {
146- Self :: Add {
155+ match & self . 0 {
156+ InnerBuiltinFeatureTransition :: Add {
147157 builtin,
148- feature_id,
158+ ref feature_id,
149159 } => {
150160 if should_apply_action_for_feature ( feature_id) {
151161 Some ( BuiltinAction :: Add ( builtin. clone ( ) ) )
152162 } else {
153163 None
154164 }
155165 }
156- Self :: RemoveOrRetain {
166+ InnerBuiltinFeatureTransition :: RemoveOrRetain {
157167 previously_added_builtin,
158- addition_feature_id,
159- removal_feature_id,
168+ ref addition_feature_id,
169+ ref removal_feature_id,
160170 } => {
161171 if should_apply_action_for_feature ( removal_feature_id) {
162172 Some ( BuiltinAction :: Remove ( previously_added_builtin. id ) )
@@ -209,40 +219,40 @@ fn dummy_process_instruction(
209219/// Dynamic feature transitions for builtin programs
210220fn builtin_feature_transitions ( ) -> Vec < BuiltinFeatureTransition > {
211221 vec ! [
212- BuiltinFeatureTransition :: Add {
222+ BuiltinFeatureTransition ( InnerBuiltinFeatureTransition :: Add {
213223 builtin: Builtin :: new(
214224 "compute_budget_program" ,
215225 solana_sdk:: compute_budget:: id( ) ,
216226 solana_compute_budget_program:: process_instruction,
217227 ) ,
218228 feature_id: feature_set:: add_compute_budget_program:: id( ) ,
219- } ,
220- BuiltinFeatureTransition :: RemoveOrRetain {
229+ } ) ,
230+ BuiltinFeatureTransition ( InnerBuiltinFeatureTransition :: RemoveOrRetain {
221231 previously_added_builtin: Builtin :: new(
222232 "secp256k1_program" ,
223233 solana_sdk:: secp256k1_program:: id( ) ,
224234 dummy_process_instruction,
225235 ) ,
226236 addition_feature_id: feature_set:: secp256k1_program_enabled:: id( ) ,
227237 removal_feature_id: feature_set:: prevent_calling_precompiles_as_programs:: id( ) ,
228- } ,
229- BuiltinFeatureTransition :: RemoveOrRetain {
238+ } ) ,
239+ BuiltinFeatureTransition ( InnerBuiltinFeatureTransition :: RemoveOrRetain {
230240 previously_added_builtin: Builtin :: new(
231241 "ed25519_program" ,
232242 solana_sdk:: ed25519_program:: id( ) ,
233243 dummy_process_instruction,
234244 ) ,
235245 addition_feature_id: feature_set:: ed25519_program_enabled:: id( ) ,
236246 removal_feature_id: feature_set:: prevent_calling_precompiles_as_programs:: id( ) ,
237- } ,
238- BuiltinFeatureTransition :: Add {
247+ } ) ,
248+ BuiltinFeatureTransition ( InnerBuiltinFeatureTransition :: Add {
239249 builtin: Builtin :: new(
240250 "address_lookup_table_program" ,
241251 solana_address_lookup_table_program:: id( ) ,
242252 solana_address_lookup_table_program:: processor:: process_instruction,
243253 ) ,
244254 feature_id: feature_set:: versioned_tx_message_enabled:: id( ) ,
245- } ,
255+ } ) ,
246256 ]
247257}
248258
0 commit comments