on master help sign in
Add some explanatory comments in Serialize TH code
commit356eab0590287f1f0b0ef444a335027f11eda09d authorHarendra Kumar <harendra@composewell.com> dateThu 17 Aug 2023, 16:56 (3 years ago) parent31a679a
1 file changed+9
core/src/Streamly/Internal/Data/Serialize/TH.hs+9
core/src/Streamly/Internal/Data/Serialize/TH.hs+9
@@ -171,6 +171,7 @@ mkSizeOfExpr headTy constructors =
171171mkDeserializeExprOne :: DataCon -> Q Exp
172172mkDeserializeExprOne (DataCon cname _ _ fields) =
173173 case fields of
174+ -- Only tag is serialized for unit fields, no actual value
174175 [] -> [|pure ($(varE (mkName "i0")), $(conE cname))|]
175176 _ ->
176177 doE
@@ -203,12 +204,15 @@ mkDeserializeExpr headTy cons =
203204 [|error
204205 ("Attempting to peek type with no constructors (" ++
205206 $(lift (pprint headTy)) ++ ")")|]
207+ -- Unit constructor
206208 [(DataCon cname _ _ [])] ->
207209 [|pure ($(varE _initialOffset) + 1, $(conE cname))|]
210+ -- Product type
208211 [con] ->
209212 letE
210213 [valD (varP (mkName "i0")) (normalB (varE _initialOffset)) []]
211214 (mkDeserializeExprOne con)
215+ -- Sum type
212216 _ ->
213217 doE
214218 [ bindS
@@ -228,6 +232,7 @@ mkDeserializeExpr headTy cons =
228232 match
229233 wildP
230234 (normalB
235+ -- XXX Print the tag
231236 [|error
232237 ("Found invalid tag while peeking (" ++
233238 $(lift (pprint headTy)) ++ ")")|])
@@ -247,6 +252,7 @@ mkSerializeExprTag tagType tagVal =
247252mkSerializeExprFields :: [Field] -> Q Exp
248253mkSerializeExprFields fields =
249254 case fields of
255+ -- Unit constructor, do nothing just tag is enough
250256 [] -> [|pure ($(varE (mkName "i0")))|]
251257 _ ->
252258 doE
@@ -266,7 +272,9 @@ mkSerializeExpr headTy cons =
266272 [|error
267273 ("Attempting to poke type with no constructors (" ++
268274 $(lift (pprint headTy)) ++ ")")|]
275+ -- Unit type
269276 [(DataCon _ _ _ [])] -> [|pure ($(varE _initialOffset) + 1)|]
277+ -- Product type
270278 [(DataCon cname _ _ fields)] ->
271279 letE
272280 [valD (varP (mkName "i0")) (normalB (varE _initialOffset)) []]
@@ -277,6 +285,7 @@ mkSerializeExpr headTy cons =
277285 (length fields)
278286 (mkSerializeExprFields fields)
279287 ])
288+ -- Sum type
280289 _ ->
281290 caseE
282291 (varE _val)