diff --git a/.chronus/changes/fix-NRE-generate-model-2026-0-19-9-51-29.md b/.chronus/changes/fix-NRE-generate-model-2026-0-19-9-51-29.md new file mode 100644 index 00000000000..6def08dc384 --- /dev/null +++ b/.chronus/changes/fix-NRE-generate-model-2026-0-19-9-51-29.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/openapi3" +--- + +importer - null reference exception if member schema cannot be resolved \ No newline at end of file diff --git a/packages/openapi3/src/cli/actions/convert/generators/generate-model.ts b/packages/openapi3/src/cli/actions/convert/generators/generate-model.ts index c30f4c11f40..f73040d194b 100644 --- a/packages/openapi3/src/cli/actions/convert/generators/generate-model.ts +++ b/packages/openapi3/src/cli/actions/convert/generators/generate-model.ts @@ -245,10 +245,12 @@ function generateUnion(union: TypeSpecUnion, context: Context): string { return ""; } - const memberSchema = "$ref" in member ? context.getSchemaByRef(member.$ref)! : member; + const memberSchema = "$ref" in member ? context.getSchemaByRef(member.$ref) : member; const propertySchema = - memberSchema.properties && memberSchema.properties[union.schema.discriminator.propertyName]; + memberSchema && + memberSchema.properties && + memberSchema.properties[union.schema.discriminator.propertyName]; const value = (union.schema.discriminator?.mapping && "$ref" in member ? Object.entries(union.schema.discriminator.mapping).find((x) => x[1] === member.$ref)?.[0]