Commit 3f25c1a
fix: resolve cross-type case-name collisions in registered component ids
document.AddComponent is TryAdd (first writer wins, never throws), and
component ids were bare case/definition names — so two different F#
types sharing a case name (e.g. both having a "Leaf" or "Error" case)
would silently collide in the same OpenAPI document, with the second
type's schema never actually registering under its own definition.
Qualify every definition id with its owning root type's name
(rootTypeId + "." + typeId) when bound to a live document; the
document-agnostic translate() entry point is unaffected (qualify is
identity when document = None), so all pre-existing structural tests
keep passing unchanged. The "." separator is required, not cosmetic:
without it, different (rootTypeId, typeId) pairs can concatenate to
the same string (e.g. "Order"+"LineItem" = "OrderLine"+"Item").
Also addresses the remaining deferred Minor findings from final
review: precondition guard on rootTypeId, doc-comment scope fixes,
restored net9 comment, and a WebApplication dispose leak in the e2e
test fixtures.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>1 parent e5cdd12 commit 3f25c1a
5 files changed
Lines changed: 114 additions & 27 deletions
File tree
- src/FSharp.Data.JsonSchema.OpenApi
- test/FSharp.Data.JsonSchema.OpenApi.Tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
| 6 | + | |
6 | 7 | | |
7 | 8 | | |
8 | 9 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
94 | 97 | | |
95 | 98 | | |
96 | 99 | | |
| |||
Lines changed: 29 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
123 | 138 | | |
124 | 139 | | |
125 | 140 | | |
| |||
178 | 193 | | |
179 | 194 | | |
180 | 195 | | |
181 | | - | |
| 196 | + | |
182 | 197 | | |
183 | 198 | | |
184 | 199 | | |
| |||
205 | 220 | | |
206 | 221 | | |
207 | 222 | | |
208 | | - | |
| 223 | + | |
| 224 | + | |
209 | 225 | | |
210 | | - | |
| 226 | + | |
211 | 227 | | |
212 | 228 | | |
213 | 229 | | |
| |||
250 | 266 | | |
251 | 267 | | |
252 | 268 | | |
253 | | - | |
254 | | - | |
255 | | - | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
256 | 274 | | |
257 | 275 | | |
258 | 276 | | |
259 | 277 | | |
260 | 278 | | |
261 | 279 | | |
262 | 280 | | |
263 | | - | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
264 | 284 | | |
| 285 | + | |
| 286 | + | |
265 | 287 | | |
266 | 288 | | |
Lines changed: 55 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
32 | 39 | | |
33 | 40 | | |
34 | 41 | | |
| |||
40 | 47 | | |
41 | 48 | | |
42 | 49 | | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
47 | 62 | | |
48 | 63 | | |
49 | 64 | | |
| |||
75 | 90 | | |
76 | 91 | | |
77 | 92 | | |
78 | | - | |
79 | | - | |
80 | | - | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
81 | 96 | | |
82 | 97 | | |
83 | 98 | | |
84 | | - | |
| 99 | + | |
85 | 100 | | |
86 | 101 | | |
87 | 102 | | |
88 | | - | |
| 103 | + | |
89 | 104 | | |
90 | 105 | | |
91 | 106 | | |
92 | 107 | | |
93 | 108 | | |
94 | 109 | | |
95 | | - | |
96 | | - | |
| 110 | + | |
| 111 | + | |
97 | 112 | | |
98 | 113 | | |
99 | 114 | | |
100 | 115 | | |
101 | | - | |
| 116 | + | |
102 | 117 | | |
103 | 118 | | |
104 | 119 | | |
105 | 120 | | |
106 | 121 | | |
107 | | - | |
| 122 | + | |
108 | 123 | | |
109 | 124 | | |
110 | 125 | | |
| |||
114 | 129 | | |
115 | 130 | | |
116 | 131 | | |
117 | | - | |
118 | | - | |
| 132 | + | |
| 133 | + | |
119 | 134 | | |
120 | | - | |
121 | | - | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
122 | 159 | | |
123 | 160 | | |
124 | 161 | | |
125 | | - | |
| 162 | + | |
126 | 163 | | |
127 | 164 | | |
Lines changed: 26 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
240 | 240 | | |
241 | 241 | | |
242 | 242 | | |
243 | | - | |
244 | | - | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
245 | 248 | | |
246 | 249 | | |
247 | 250 | | |
248 | 251 | | |
249 | 252 | | |
250 | 253 | | |
251 | 254 | | |
| 255 | + | |
252 | 256 | | |
253 | 257 | | |
254 | 258 | | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
255 | 279 | | |
256 | 280 | | |
257 | 281 | | |
| |||
0 commit comments