[Haskell-cafe] corner case in Text.JSON 0.4.3
Martin Hilbig
martin at mhilbig.de
Wed May 12 15:53:41 EDT 2010
hi,
since i got no answer from the maintainer, maybe someone else can take
care of it, or at least point out, what i did wrong.
so, i recently stumbled upon some error while using Text.JSON 0.4.3 [1]:
Text/JSON/String.hs:(127,4)-(137,49): Non-exhaustive patterns in case
indeed ghc warned:
[5 of 7] Compiling Text.JSON.String ( Text/JSON/String.hs,
dist/build/Text/JSON/String.o )
Text/JSON/String.hs:127:4:
Warning: Pattern match(es) are non-exhaustive
In a case alternative: Patterns not matched: []
from looking at the code i couldn't see how this would ever happen, but
you can reproduce it be running the files from [2]:
$ ./test < problem
Ok (JSArray [JSString (JSONString {fromJSString = "this"}),JSString
(JSONString {fromJSString = "is"}),JSString (JSONString {fromJSString =
"some"}),JSString (JSONString {fromJSString = "json"}),JSObject
(JSONObject {fromJSObject = [("that",JSString (JSONString {fromJSString
= "works"}))]})])
test: Text/JSON/String.hs:(127,4)-(137,49): Non-exhaustive patterns in case
the patch i put there fixes it (at least for me) to return an Error
instead of dying:
$ ./test < problem
Ok (JSArray [JSString (JSONString {fromJSString = "this"}),JSString
(JSONString {fromJSString = "is"}),JSString (JSONString {fromJSString =
"some"}),JSString (JSONString {fromJSString = "json"}),JSObject
(JSONObject {fromJSObject = [("that",JSString (JSONString {fromJSString
= "works"}))]})])
Error "Unexpected end of String: does"
Error "Malformed JSON: invalid token in this context not\"]"
test: <stdin>: hGetLine: end of file
have fun
martin hilbig
[1]: http://hackage.haskell.org/package/json
[2]: http://friendpaste.com/3IvnChRMoczf0mIKpOtrYE
More information about the Haskell-Cafe
mailing list