[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