Skip to content

Commit 43f92d0

Browse files
committed
Add labels to json object and list parsing
1 parent d95d985 commit 43f92d0

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

Data/Aeson/Parser/Internal.hs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ objectValues str val = do
123123
-- Why use acc pattern here, you may ask? because 'H.fromList' use 'unsafeInsert'
124124
-- and it's much faster because it's doing in place update to the 'HashMap'!
125125
loop acc = do
126-
k <- str <* skipSpace <* char ':'
127-
v <- val <* skipSpace
128-
ch <- A.satisfy $ \w -> w == COMMA || w == CLOSE_CURLY
126+
k <- (str A.<?> "expected object key") <* skipSpace <* (char ':' A.<?> "expecting ':'")
127+
v <- (val A.<?> "expected object value") <* skipSpace
128+
ch <- (A.satisfy $ \w -> w == COMMA || w == CLOSE_CURLY) A.<?> "expecting ',' or '}'"
129129
let acc' = (k, v) : acc
130130
if ch == COMMA
131131
then skipSpace >> loop acc'
@@ -149,8 +149,8 @@ arrayValues val = do
149149
else loop [] 1
150150
where
151151
loop acc !len = do
152-
v <- val <* skipSpace
153-
ch <- A.satisfy $ \w -> w == COMMA || w == CLOSE_SQUARE
152+
v <- (val A.<?> "expected json list value") <* skipSpace
153+
ch <- (A.satisfy $ \w -> w == COMMA || w == CLOSE_SQUARE) A.<?> "expecting ',' or ']'"
154154
if ch == COMMA
155155
then skipSpace >> loop (v:acc) (len+1)
156156
else return (Vector.reverse (Vector.fromListN len (v:acc)))

0 commit comments

Comments
 (0)