MCPcopy Index your code
hub / github.com/github/copilot-sdk / findGoRequiredFieldDiscriminator

Function findGoRequiredFieldDiscriminator

scripts/codegen/go.ts:682–719  ·  view source on GitHub ↗
(
    variants: JSONSchema7[],
    ctx: GoCodegenCtx,
    unionTypeName: string
)

Source from the content-addressed store, hash-verified

680}
681
682function findGoRequiredFieldDiscriminator(
683 variants: JSONSchema7[],
684 ctx: GoCodegenCtx,
685 unionTypeName: string
686): GoRequiredFieldDiscriminatorInfo | null {
687 if (variants.length === 0) return null;
688
689 const objectVariants = variants.map((variantSource) => ({
690 source: variantSource,
691 schema: goObjectUnionMemberSchema(variantSource, ctx),
692 }));
693 if (objectVariants.some((variant) => variant.schema === undefined)) return null;
694
695 const requiredSets = objectVariants.map((variant) => new Set(variant.schema!.required || []));
696 const propertySets = objectVariants.map((variant) => new Set(Object.keys(variant.schema!.properties || {})));
697 const unionVariants: GoDiscriminatedUnionVariant[] = [];
698 const seenTypeNames = new Set<string>();
699 for (const [index, variant] of objectVariants.entries()) {
700 const required = requiredSets[index];
701 if (required.size === 0) return null;
702
703 const uniqueRequired = [...required]
704 .filter((propName) => !propertySets.some((peerProperties, peerIndex) => peerIndex !== index && peerProperties.has(propName)))
705 .sort(compareGoFieldNames);
706 if (uniqueRequired.length === 0) return null;
707
708 const typeName = goDiscriminatedUnionVariantTypeName(unionTypeName, uniqueRequired[0], variant.source, variant.schema!, ctx);
709 if (seenTypeNames.has(typeName)) return null;
710 seenTypeNames.add(typeName);
711 unionVariants.push({
712 schema: variant.schema!,
713 typeName,
714 discriminatorValues: uniqueRequired,
715 });
716 }
717
718 return { variants: unionVariants };
719}
720
721/**
722 * Get or create a Go enum type, deduplicating by type name (not by value set).

Calls 4

addMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…