Commit 31b46c5
fix: generate correct type for $ref text responses in strict server (oapi-codegen#2190)
When a response is defined as a $ref to a component response with
text/plain content type (and no headers), the strict-server template
generated a struct-embedding type whose Visit method tried to call
[]byte(response) on a struct, which failed to compile.
The root cause was the revert of PR oapi-codegen#1132 (commit 891a067), which had
originally fixed this by making all text responses string types. That
PR was reverted because it broke text responses with headers (oapi-codegen#1676),
which require the struct form with a Body field.
The fix extends the existing multipart special case in Branch 1A of the
strict-interface template to also cover text responses without headers.
This generates a named type alias (e.g. `type GetTest401TextResponse
UnauthorizedTextResponse`) instead of a struct embedding, so
[]byte(response) compiles and works correctly.
Text responses with headers continue to go through Branch 1C (struct
with Body + Headers fields), so oapi-codegen#1676 is unaffected — confirmed by
verifying no diff in internal/test/issues/issue-1676/ping.gen.go.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1 parent ac5f448 commit 31b46c5
File tree
3 files changed
+3
-3
lines changed- internal/test/issues/issue-2190
- pkg/codegen/templates/strict
3 files changed
+3
-3
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
17 | | - | |
| 17 | + | |
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
0 commit comments