Skip to content

Commit 9c801c1

Browse files
authored
Generate maps without declaring a custom type (#281)
* Generate maps without declaring a custom type * Fix tests and lint issue * Fix lint error
1 parent c62ea8f commit 9c801c1

File tree

12 files changed

+152
-113
lines changed

12 files changed

+152
-113
lines changed

pkg/generator/schema_generator.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,12 @@ func (g *schemaGenerator) generateReferencedType(t *schemas.Type) (codegen.Type,
162162
return nil, err
163163
}
164164

165+
// We need this in order to handle cases when
166+
// generateDeclaredType outputs a MapType and not a NamedType.
167+
if isMapType(dt) {
168+
return dt, nil
169+
}
170+
165171
nt, ok := dt.(*codegen.NamedType)
166172
if !ok {
167173
return nil, fmt.Errorf("%w: got %T", errExpectedNamedType, t)
@@ -282,7 +288,7 @@ func (g *schemaGenerator) generateDeclaredType(t *schemas.Type, scope nameScope)
282288
return nil, err
283289
}
284290

285-
if isNamedType(theType) {
291+
if isNamedType(theType) || isMapType(theType) {
286292
// Don't declare named types under a new name.
287293
delete(g.output.declsBySchema, t)
288294
delete(g.output.declsByName, decl.Name)

pkg/generator/utils.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,9 @@ func isNamedType(t codegen.Type) bool {
4545

4646
return false
4747
}
48+
49+
func isMapType(t codegen.Type) bool {
50+
_, isMapType := t.(*codegen.MapType)
51+
52+
return isMapType
53+
}

tests/data/core/allOf/allOf.4.go

Lines changed: 48 additions & 54 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)