Skip to content

Commit 962c66c

Browse files
committed
Simplify nested struct trait rendering
1 parent 6815f2d commit 962c66c

File tree

1 file changed

+6
-13
lines changed

1 file changed

+6
-13
lines changed

packages/renderers-rust/src/getTypeManifestVisitor.ts

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
remainderCountNode,
1414
resolveNestedTypeNode,
1515
snakeCase,
16-
structTypeNode,
1716
} from '@codama/nodes';
1817
import { 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(/^pub struct (\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

Comments
 (0)