From d78d07608a68b8eaf6c74098afd273d7e6b7757d Mon Sep 17 00:00:00 2001 From: Cosmos Nicolaou Date: Mon, 12 Dec 2022 09:41:33 -0800 Subject: [PATCH] . --- pkg/codegen/merge_schemas.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/codegen/merge_schemas.go b/pkg/codegen/merge_schemas.go index 610f0d2dec..466e55c549 100644 --- a/pkg/codegen/merge_schemas.go +++ b/pkg/codegen/merge_schemas.go @@ -37,7 +37,7 @@ func mergeSchemas(allOf []*openapi3.SchemaRef, path []string) (Schema, error) { if err != nil { return Schema{}, err } - schema, err = mergeOpenapiSchemas(schema, oneOfSchema) + schema, err = mergeOpenapiSchemas(schema, oneOfSchema, true) if err != nil { return Schema{}, fmt.Errorf("error merging schemas for AllOf: %w", err) } @@ -74,7 +74,7 @@ func mergeAllOf(allOf []*openapi3.SchemaRef) (openapi3.Schema, error) { var schema openapi3.Schema for _, schemaRef := range allOf { var err error - schema, err = mergeOpenapiSchemas(schema, *schemaRef.Value) + schema, err = mergeOpenapiSchemas(schema, *schemaRef.Value, true) if err != nil { return openapi3.Schema{}, fmt.Errorf("error merging schemas for AllOf: %w", err) } @@ -84,7 +84,7 @@ func mergeAllOf(allOf []*openapi3.SchemaRef) (openapi3.Schema, error) { // mergeOpenapiSchemas merges two openAPI schemas and returns the schema // all of whose fields are composed. -func mergeOpenapiSchemas(s1, s2 openapi3.Schema) (openapi3.Schema, error) { +func mergeOpenapiSchemas(s1, s2 openapi3.Schema, allOf bool) (openapi3.Schema, error) { var result openapi3.Schema if s1.Extensions != nil || s2.Extensions != nil { result.Extensions = make(map[string]interface{}) @@ -219,8 +219,8 @@ func mergeOpenapiSchemas(s1, s2 openapi3.Schema) (openapi3.Schema, error) { result.AdditionalProperties = s2.AdditionalProperties } - // Unhandled for now - if s1.Discriminator != nil || s2.Discriminator != nil { + // Allow discriminators for allOf merges, but disallow for one/anyOfs. + if !allOf && (s1.Discriminator != nil || s2.Discriminator != nil) { return openapi3.Schema{}, errors.New("merging two schemas with discriminators is not supported") }