diff --git a/Sources/CodableToTypeScript/Generator/DecodeFunctionBuilder.swift b/Sources/CodableToTypeScript/Generator/DecodeFunctionBuilder.swift index f7dc5c2..a660adb 100644 --- a/Sources/CodableToTypeScript/Generator/DecodeFunctionBuilder.swift +++ b/Sources/CodableToTypeScript/Generator/DecodeFunctionBuilder.swift @@ -105,6 +105,9 @@ struct DecodeFunctionBuilder { if let (_, _) = try type.asDictionary() { return try makeClosure() } + if try !type.genericArguments().isEmpty { + return try makeClosure() + } return .identifier(self.name(type: type)) } diff --git a/Sources/TSCodeModule/Expr/TSClosureExpr.swift b/Sources/TSCodeModule/Expr/TSClosureExpr.swift index 725f14c..dacb3b4 100644 --- a/Sources/TSCodeModule/Expr/TSClosureExpr.swift +++ b/Sources/TSCodeModule/Expr/TSClosureExpr.swift @@ -19,10 +19,7 @@ public struct TSClosureExpr: PrettyPrintable { printer.write(": ") returnType.print(printer: printer) } - printer.writeLine(" => ") + printer.write(" => ") body.print(printer: printer) - if !printer.isStartOfLine { - printer.writeLine("") - } } } diff --git a/Tests/CodableToTypeScriptTests/Generate/GenerateGenericTests.swift b/Tests/CodableToTypeScriptTests/Generate/GenerateGenericTests.swift index 6aec651..eec41a1 100644 --- a/Tests/CodableToTypeScriptTests/Generate/GenerateGenericTests.swift +++ b/Tests/CodableToTypeScriptTests/Generate/GenerateGenericTests.swift @@ -403,4 +403,18 @@ export function E_decode(json: E_JSON, T_decode: (json: T_JSO ) } + func testNestedGenericParameter() throws { + try assertGenerate( + source: """ +struct X { + var a: T + var b: String +} + +struct Y { + var x: [X] +} +""") + } + }