@@ -13,7 +13,6 @@ import {
1313 remainderCountNode ,
1414 resolveNestedTypeNode ,
1515 snakeCase ,
16- structTypeNode ,
1716} from '@codama/nodes' ;
1817import { extendVisitor , mergeVisitor , pipe , visit } from '@codama/visitors-core' ;
1918
@@ -145,21 +144,11 @@ export function getTypeManifestVisitor(options: {
145144 manifest . imports . mergeWith ( traits . imports ) ;
146145 parentName = null ;
147146
148- const nestedStructs = manifest . nestedStructs . map ( struct => {
149- const nestedTraits = getTraitsFromNode (
150- definedTypeNode ( {
151- name : struct . match ( / ^ p u b s t r u c t ( \w + ) / ) ?. [ 1 ] ?? '' ,
152- type : structTypeNode ( [ ] ) ,
153- } ) ,
154- ) ;
155- manifest . imports . mergeWith ( nestedTraits . imports ) ;
156- return `${ nestedTraits . render } ${ struct } ` ;
157- } ) ;
158147 const renderedType = isNode ( definedType . type , [ 'enumTypeNode' , 'structTypeNode' ] )
159148 ? manifest . type
160149 : `pub type ${ pascalCase ( definedType . name ) } = ${ manifest . type } ;` ;
161150
162- return { ...manifest , nestedStructs , type : `${ traits . render } ${ renderedType } ` } ;
151+ return { ...manifest , type : `${ traits . render } ${ renderedType } ` } ;
163152 } ,
164153
165154 visitDefinedTypeLink ( node ) {
@@ -434,11 +423,15 @@ export function getTypeManifestVisitor(options: {
434423 const mergedManifest = mergeManifests ( fields ) ;
435424
436425 if ( nestedStruct ) {
426+ const nestedTraits = getTraitsFromNode (
427+ definedTypeNode ( { name : originalParentName , type : structType } ) ,
428+ ) ;
429+ mergedManifest . imports . mergeWith ( nestedTraits . imports ) ;
437430 return {
438431 ...mergedManifest ,
439432 nestedStructs : [
440433 ...mergedManifest . nestedStructs ,
441- `pub struct ${ pascalCase ( originalParentName ) } {\n${ fieldTypes } \n}` ,
434+ `${ nestedTraits . render } pub struct ${ pascalCase ( originalParentName ) } {\n${ fieldTypes } \n}` ,
442435 ] ,
443436 type : pascalCase ( originalParentName ) ,
444437 } ;
0 commit comments