-
-
Notifications
You must be signed in to change notification settings - Fork 957
Open
Labels
bugSomething isn't workingSomething isn't working
Milestone
Description
Example code that breaks when generating using 2.1.0+:
package main
import (
"fmt"
"github.com/oapiexample/api"
"github.com/oapiexample/otherapi"
)
func main() {
var a api.GetExampleResponseObject
var b otherapi.GetOtherExample400JSONResponse
switch a.(type) {
case api.GetExample400JSONResponse:
b = otherapi.GetOtherExample400JSONResponse(a.(api.GetExample400JSONResponse)) // <- this line no longer compiles
}
fmt.Println(b.Message)
}
Setup:
open_api.yaml
openapi: 3.0.1
info:
description: An example schema
title: ExampleAPI
version: 1.0.0
paths:
/example:
get:
operationId: getExample
responses:
200:
description: OK
400:
$ref: "#/components/responses/400"
components:
responses:
400:
content:
application/json:
schema:
properties:
message:
type: string
required:
- message
type: object
description: Bad Request
open_api.cfg.yaml
package: api
generate:
chi-server: true
models: true
strict-server: true
output: ./api/api.go
output-options:
skip-prune: true
open_api_other.yaml
openapi: 3.0.1
info:
description: Another example schema
title: OtherAPI
version: 1.0.0
paths:
/example:
get:
operationId: getOtherExample
responses:
200:
description: OK
400:
$ref: "./open_api.yaml#/components/responses/400"
open_api_other.cfg.yaml
package: otherapi
generate:
chi-server: true
models: true
strict-server: true
import-mapping:
./open_api.yaml: github.com/oapiexample/api/api
output: ./otherapi/api.go
generate.go
package oapiexample
//go:generate go run github.com/deepmap/oapi-codegen/v2/cmd/[email protected] --config open_api.cfg.yaml ./open_api.yaml
//go:generate go run github.com/deepmap/oapi-codegen/v2/cmd/[email protected] --config open_api_other.cfg.yaml ./open_api_other.yaml
When I look at the generated code, this line changes from
type GetOtherExample400JSONResponse struct{ externalRef0.N400JSONResponse }
to
type GetOtherExample400JSONResponse struct{ externalRef0.N400 }
The GetExample400JSONResponse type that references the same response component continues to embed the N400JSONResponse type.
type GetExample400JSONResponse struct{ N400JSONResponse }
I believe pull request #1387 introduced this change.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working