Skip to content

Commit 95b4e0e

Browse files
committed
Merge pull request #10 from hdgarrood/improve-generic-errors
Improve generic decoding errors
2 parents 05d2af7 + 7ff4c91 commit 95b4e0e

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/Data/Argonaut/Decode.purs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,14 @@ gDecodeJson' signature json = case signature of
5151
sp <- gDecodeJson' (val unit) pf
5252
pure { recLabel: lbl, recValue: const sp }
5353
SigProd typeConstr alts -> do
54-
let decodingErr msg = "When decoding " ++ typeConstr ++ " " ++ msg
54+
let decodingErr msg = "When decoding a " ++ typeConstr ++ ": " ++ msg
5555
jObj <- mFail (decodingErr "expected an object") (toObject json)
56-
tag <- mFail (decodingErr "'tag' string property is missing") (toString =<< M.lookup "tag" jObj)
56+
tagJson <- mFail (decodingErr "'tag' property is missing") (M.lookup "tag" jObj)
57+
tag <- mFail (decodingErr "'tag' property is not a string") (toString tagJson)
5758
case find ((tag ==) <<< _.sigConstructor) alts of
58-
Nothing -> Left ("'" <> tag <> "' isn't a valid constructor")
59+
Nothing -> Left (decodingErr ("'" <> tag <> "' isn't a valid constructor"))
5960
Just { sigValues: sigValues } -> do
60-
vals <- mFail "'values' array is missing" (toArray =<< M.lookup "values" jObj)
61+
vals <- mFail (decodingErr "'values' array is missing") (toArray =<< M.lookup "values" jObj)
6162
sps <- zipWithA (\k -> gDecodeJson' (k unit)) sigValues vals
6263
pure (SProd tag (const <$> sps))
6364
where

0 commit comments

Comments
 (0)