Title: Generating strict servers using 2.1.0 breaks casting of imported components when moving from 2.0.0. · Issue #2010 · oapi-codegen/oapi-codegen · GitHub
Open Graph Title: Generating strict servers using 2.1.0 breaks casting of imported components when moving from 2.0.0. · Issue #2010 · oapi-codegen/oapi-codegen
X Title: Generating strict servers using 2.1.0 breaks casting of imported components when moving from 2.0.0. · Issue #2010 · oapi-codegen/oapi-codegen
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.GetOtherExample400JSONRes...
Open Graph 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 ...
X 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...
Opengraph URL: https://github.com/oapi-codegen/oapi-codegen/issues/2010
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Generating strict servers using 2.1.0 breaks casting of imported components when moving from 2.0.0.","articleBody":"Example code that breaks when generating using 2.1.0+:\n```\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/oapiexample/api\"\n\t\"github.com/oapiexample/otherapi\"\n)\n\nfunc main() {\n\tvar a api.GetExampleResponseObject\n\n\tvar b otherapi.GetOtherExample400JSONResponse\n\tswitch a.(type) {\n\tcase api.GetExample400JSONResponse:\n\t\tb = otherapi.GetOtherExample400JSONResponse(a.(api.GetExample400JSONResponse)) // \u003c- this line no longer compiles\n\t}\n\n\tfmt.Println(b.Message)\n}\n\n```\n\nSetup:\n\nopen_api.yaml\n```\nopenapi: 3.0.1\ninfo:\n description: An example schema\n title: ExampleAPI\n version: 1.0.0\npaths:\n /example:\n get:\n operationId: getExample\n responses:\n 200:\n description: OK\n 400:\n $ref: \"#/components/responses/400\"\ncomponents:\n responses:\n 400:\n content:\n application/json:\n schema:\n properties:\n message:\n type: string\n required:\n - message\n type: object\n description: Bad Request\n```\n\nopen_api.cfg.yaml\n```\npackage: api\ngenerate:\n chi-server: true\n models: true\n strict-server: true\noutput: ./api/api.go\noutput-options:\n skip-prune: true\n```\n\n\nopen_api_other.yaml\n```\nopenapi: 3.0.1\ninfo:\n description: Another example schema\n title: OtherAPI\n version: 1.0.0\npaths:\n /example:\n get:\n operationId: getOtherExample\n responses:\n 200:\n description: OK\n 400:\n $ref: \"./open_api.yaml#/components/responses/400\"\n\n```\n\nopen_api_other.cfg.yaml\n```\npackage: otherapi\ngenerate:\n chi-server: true\n models: true\n strict-server: true\nimport-mapping:\n ./open_api.yaml: github.com/oapiexample/api/api\noutput: ./otherapi/api.go\n```\n\ngenerate.go\n```\npackage oapiexample\n\n//go:generate go run github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@v2.0.0 --config open_api.cfg.yaml ./open_api.yaml\n//go:generate go run github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen@v2.0.0 --config open_api_other.cfg.yaml ./open_api_other.yaml\n```\n\nWhen I look at the generated code, this line changes from\n```\ntype GetOtherExample400JSONResponse struct{ externalRef0.N400JSONResponse }\n```\nto \n```\ntype GetOtherExample400JSONResponse struct{ externalRef0.N400 }\n```\n\nThe GetExample400JSONResponse type that references the same response component continues to embed the N400JSONResponse type.\n\n```\ntype GetExample400JSONResponse struct{ N400JSONResponse }\n```\n\n\nI believe [pull request #1387](https://github.com/oapi-codegen/oapi-codegen/pull/1387) introduced this change.","author":{"url":"https://github.com/MathewSharff","@type":"Person","name":"MathewSharff"},"datePublished":"2025-06-24T23:15:33.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/2010/oapi-codegen/issues/2010"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:18b697d6-98ec-5506-0322-01511fce32f2 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D9DE:285CB7:142A7B3:1D6CD85:6A4E431E |
| html-safe-nonce | f06afbf20e94951ee82957e022a1b95442514e55f3c67026fe46bf3e49971e29 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEOURFOjI4NUNCNzoxNDJBN0IzOjFENkNEODU6NkE0RTQzMUUiLCJ2aXNpdG9yX2lkIjoiMTI5OTYxODQxMjE5Mjc0NDIyMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | d074a3d8b1ad72ad78f40fd23e313dd3903a2936ee3672807f20d7832f145811 |
| hovercard-subject-tag | issue:3173567115 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/oapi-codegen/oapi-codegen/2010/issue_layout |
| twitter:image | https://opengraph.githubassets.com/2f47534dfc146dd683fe6a75060d923cd1c727ee9bf4bd0d97b8bca88f39ecc7/oapi-codegen/oapi-codegen/issues/2010 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/2f47534dfc146dd683fe6a75060d923cd1c727ee9bf4bd0d97b8bca88f39ecc7/oapi-codegen/oapi-codegen/issues/2010 |
| og:image:alt | 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 ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | MathewSharff |
| hostname | github.com |
| expected-hostname | github.com |
| None | 030096ee0db095447bfe77409d33bfac127ca7128299c58deef27c52eaa1b1f0 |
| turbo-cache-control | no-preview |
| go-import | github.com/oapi-codegen/oapi-codegen git https://github.com/oapi-codegen/oapi-codegen.git |
| octolytics-dimension-user_id | 142752710 |
| octolytics-dimension-user_login | oapi-codegen |
| octolytics-dimension-repository_id | 173009358 |
| octolytics-dimension-repository_nwo | oapi-codegen/oapi-codegen |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 173009358 |
| octolytics-dimension-repository_network_root_nwo | oapi-codegen/oapi-codegen |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 9fabff9b8b127e686a3ec86f91422e818056ca2c |
| ui-target | canary-2 |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width