Skip to content

Commit 6b4b57f

Browse files
committed
align generics expansion between rust and typescript
1 parent df88bfc commit 6b4b57f

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

compiler-rs/clients_schema/src/transform/expand_generics.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,10 @@ pub fn expand(model: IndexedModel, config: ExpandConfig) -> anyhow::Result<Index
211211

212212
expand_behaviors(&mut resp.behaviors, &mappings, model, ctx)?;
213213
expand_body(&mut resp.body, &mappings, model, ctx)?;
214-
215-
// TODO: exceptions
214+
215+
for exception in &mut resp.exceptions {
216+
expand_body(&mut exception.body, &mappings, model, ctx)?;
217+
}
216218

217219
Ok(resp.into())
218220
}

compiler/src/transform/expand-generics.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {
2727
Request,
2828
Response,
2929
Body,
30-
InstanceOf, Inherits, Property
30+
InstanceOf, Inherits, Property, ResponseException
3131
} from '../model/metamodel'
3232
import { readFile, writeFile } from 'fs/promises'
3333
import stringify from 'safe-stable-stringify'
@@ -293,6 +293,17 @@ export function expandGenerics (inputModel: Model, config?: ExpansionConfig): Mo
293293
return addIfNotSeen(resp.name, () => {
294294
const result = { ...resp }
295295
result.body = expandBody(resp.body, genericParamMapping(resp.generics, params))
296+
if (resp.exceptions != null) {
297+
result.exceptions = [];
298+
for (const exception of resp.exceptions) {
299+
const except: ResponseException = {
300+
description: exception.description,
301+
statusCodes: exception.statusCodes,
302+
body: expandBody(exception.body, genericParamMapping(resp.generics, params))
303+
}
304+
result.exceptions.push(except)
305+
}
306+
}
296307
result.generics = undefined
297308
return result
298309
})

0 commit comments

Comments
 (0)