mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 09:17:43 +03:00
daml2ts: Lift type annotation for variant decoders to jtv.oneOf (#3994)
Currently, the generated decoder for, say, `Either` looks like ```ts () => jtv.oneOf( jtv.object<Either<a, b>>(...), jtv.object<Either<a, b>>(...), ) ``` After this PR, the generated code will look like ```ts () => jtv.oneOf<Either<a, b>>( jtv.object(...), jtv.object(...), ) ``` That saves us a few type annotations but nothing major. CHANGELOG_BEGIN CHANGELOG_END
This commit is contained in:
parent
7260de61c4
commit
1d07d82962
@ -125,7 +125,7 @@ genDefDataType curModName tpls def = case unTypeConName (dataTypeCon def) of
|
||||
let
|
||||
(typs, sers) = unzip $ map genBranch bs
|
||||
typeDesc = [""] ++ typs
|
||||
serDesc = ["() => jtv.oneOf("] ++ sers ++ [")"]
|
||||
serDesc = ["() => jtv.oneOf<" <> conName <> typeParams <> ">("] ++ sers ++ [")"]
|
||||
in
|
||||
((makeType typeDesc, makeSer serDesc), Set.unions $ map (Set.setOf typeModuleRef . snd) bs)
|
||||
DataEnum enumCons ->
|
||||
@ -231,7 +231,7 @@ genDefDataType curModName tpls def = case unTypeConName (dataTypeCon def) of
|
||||
genBranch (VariantConName cons, t) =
|
||||
let (typ, ser) = genType curModName t in
|
||||
( " | { tag: '" <> cons <> "'; value: " <> typ <> " }"
|
||||
, " jtv.object<" <> conName <> typeParams <> ">({tag: jtv.constant('" <> cons <> "'), value: jtv.lazy(() => " <> ser <> ".decoder())}),"
|
||||
, " jtv.object({tag: jtv.constant('" <> cons <> "'), value: jtv.lazy(() => " <> ser <> ".decoder())}),"
|
||||
)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user