@@ -30,12 +30,21 @@ export type TraitOptions = {
3030} ;
3131
3232export const DEFAULT_TRAIT_OPTIONS : Required < TraitOptions > = {
33- baseDefaults : [ 'borsh::BorshSerialize' , 'borsh::BorshDeserialize' , 'Clone' , 'Debug' , 'Eq' , 'PartialEq' ] ,
33+ baseDefaults : [
34+ 'borsh::BorshSerialize' ,
35+ 'borsh::BorshDeserialize' ,
36+ 'serde::Serialize' ,
37+ 'serde::Deserialize' ,
38+ 'Clone' ,
39+ 'Debug' ,
40+ 'Eq' ,
41+ 'PartialEq' ,
42+ ] ,
3443 dataEnumDefaults : [ ] ,
3544 featureFlags : { serde : [ 'serde::Serialize' , 'serde::Deserialize' ] } ,
3645 overrides : { } ,
3746 scalarEnumDefaults : [ 'Copy' , 'PartialOrd' , 'Hash' , 'num_derive::FromPrimitive' ] ,
38- structDefaults : [ 'serde::Serialize' , 'serde::Deserialize' ] ,
47+ structDefaults : [ ] ,
3948 useFullyQualifiedName : false ,
4049} ;
4150
@@ -66,24 +75,20 @@ export function getTraitsFromNode(
6675 const allTraits = nodeOverrides === undefined ? getDefaultTraits ( nodeType , options ) : nodeOverrides ;
6776
6877 // Wrap the traits in feature flags if necessary.
69- let [ unfeaturedTraits , featuredTraits ] = partitionTraitsInFeatures ( allTraits , options . featureFlags ) ;
78+ const partitionedTraits = partitionTraitsInFeatures ( allTraits , options . featureFlags ) ;
7079
7180 // Import the traits if necessary.
7281 const imports = new ImportMap ( ) ;
7382 if ( ! options . useFullyQualifiedName ) {
74- unfeaturedTraits = extractFullyQualifiedNames ( unfeaturedTraits , imports ) ;
75- featuredTraits = Object . fromEntries (
76- Object . entries ( featuredTraits ) . map ( ( [ feature , traits ] ) => {
77- return [ feature , extractFullyQualifiedNames ( traits , imports ) ] ;
78- } ) ,
79- ) ;
83+ partitionedTraits [ 0 ] = extractFullyQualifiedNames ( partitionedTraits [ 0 ] , imports ) ;
8084 }
85+ const [ unfeaturedTraits , featuredTraits ] = partitionedTraits ;
8186
8287 // Render the trait lines.
8388 const traitLines : string [ ] = [
8489 ...( unfeaturedTraits . length > 0 ? [ `#[derive(${ unfeaturedTraits . join ( ', ' ) } )]\n` ] : [ ] ) ,
8590 ...Object . entries ( featuredTraits ) . map ( ( [ feature , traits ] ) => {
86- return `#[cfg (feature = "${ feature } ", derive(${ traits . join ( ', ' ) } ))]\n` ;
91+ return `#[cfg_attr (feature = "${ feature } ", derive(${ traits . join ( ', ' ) } ))]\n` ;
8792 } ) ,
8893 ] ;
8994
0 commit comments