[Haskell-cafe] corner case in Text.JSON 0.4.3
Don Stewart
dons at galois.com
Thu May 13 01:05:21 EDT 2010
martin:
> 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
Send me the patch :-)
More information about the Haskell-Cafe
mailing list