@@ -112,10 +112,11 @@ module Database.PostgreSQL.Simple.FromField
113#include "MachDeps.h"
113#include "MachDeps.h"
115−import Control.Applicative ( (<|>), (<$>), pure, (*>) )
115+import Control.Applicative ( (<|>), (<$>), pure, (*>), (<*) )
116import Control.Concurrent.MVar (MVar, newMVar)
116import Control.Concurrent.MVar (MVar, newMVar)
117import Control.Exception (Exception)
117import Control.Exception (Exception)
118import qualified Data.Aeson as JSON
118import qualified Data.Aeson as JSON
119+import qualified Data.Aeson.Parser as JSON (value')
119import Data.Attoparsec.ByteString.Char8 hiding (Result)
120import Data.Attoparsec.ByteString.Char8 hiding (Result)
120import Data.ByteString (ByteString)
121import Data.ByteString (ByteString)
121import qualified Data.ByteString.Char8 as B
122import qualified Data.ByteString.Char8 as B
@@ -545,13 +546,7 @@ instance FromField JSON.Value where
545 else case mbs of
546 else case mbs of
546 Nothing -> returnError UnexpectedNull f ""
547 Nothing -> returnError UnexpectedNull f ""
547 Just bs ->
548 Just bs ->
548−#if MIN_VERSION_aeson(0,6,3)
549+ case parseOnly (JSON.value' <* endOfInput) bs of
549− case JSON.eitherDecodeStrict' bs of
550−#elif MIN_VERSION_bytestring(0,10,0)
551− case JSON.eitherDecode' $ LB.fromStrict bs of
553− case JSON.eitherDecode' $ LB.fromChunks [bs] of
555 Left err -> returnError ConversionFailed f err
550 Left err -> returnError ConversionFailed f err
556 Right val -> pure val
551 Right val -> pure val