packages feed

aeson 2.2.3.0 → 2.2.4.0

raw patch · 11 files changed

+67/−21 lines, 11 filesdep ~QuickCheckdep ~quickcheck-instancesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: QuickCheck, quickcheck-instances

API changes (from Hackage documentation)

+ Data.Aeson: ($dmfromJSONKey) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Data.Aeson: ($dmfromJSONKeyList) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Data.Aeson: ($dmliftParseJSON) :: (FromJSON1 f, Generic1 f, GFromJSON One (Rep1 f)) => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson: ($dmliftToEncoding) :: (ToJSON1 f, Generic1 f, GToJSON' Encoding One (Rep1 f)) => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson: ($dmliftToJSON) :: (ToJSON1 f, Generic1 f, GToJSON' Value One (Rep1 f)) => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson: ($dmparseJSON) :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Data.Aeson: ($dmtoJSON) :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Data.Aeson: ($dmtoJSONKey) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Data.Aeson: ($dmtoJSONKeyList) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
+ Data.Aeson.Types: ($dmfromJSONKey) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Data.Aeson.Types: ($dmfromJSONKeyList) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Data.Aeson.Types: ($dmliftParseJSON) :: (FromJSON1 f, Generic1 f, GFromJSON One (Rep1 f)) => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson.Types: ($dmliftToEncoding) :: (ToJSON1 f, Generic1 f, GToJSON' Encoding One (Rep1 f)) => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson.Types: ($dmliftToJSON) :: (ToJSON1 f, Generic1 f, GToJSON' Value One (Rep1 f)) => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson.Types: ($dmparseJSON) :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Data.Aeson.Types: ($dmtoJSON) :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Data.Aeson.Types: ($dmtoJSONKey) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Data.Aeson.Types: ($dmtoJSONKeyList) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
- Data.Aeson: [FromJSONKeyCoerce] :: Coercible Text a => FromJSONKeyFunction a
+ Data.Aeson: [FromJSONKeyCoerce] :: forall a. Coercible Text a => FromJSONKeyFunction a
- Data.Aeson: [FromJSONKeyTextParser] :: !Text -> Parser a -> FromJSONKeyFunction a
+ Data.Aeson: [FromJSONKeyTextParser] :: forall a. !Text -> Parser a -> FromJSONKeyFunction a
- Data.Aeson: [FromJSONKeyText] :: !Text -> a -> FromJSONKeyFunction a
+ Data.Aeson: [FromJSONKeyText] :: forall a. !Text -> a -> FromJSONKeyFunction a
- Data.Aeson: [FromJSONKeyValue] :: !Value -> Parser a -> FromJSONKeyFunction a
+ Data.Aeson: [FromJSONKeyValue] :: forall a. !Value -> Parser a -> FromJSONKeyFunction a
- Data.Aeson: class FromJSON1 f
+ Data.Aeson: class FromJSON1 (f :: Type -> Type)
- Data.Aeson: class FromJSON2 f
+ Data.Aeson: class FromJSON2 (f :: Type -> Type -> Type)
- Data.Aeson: class GFromJSON arity f
+ Data.Aeson: class GFromJSON arity (f :: Type -> Type)
- Data.Aeson: class (ConstructorNames f, SumFromString f) => GFromJSONKey f
+ Data.Aeson: class (ConstructorNames f, SumFromString f) => GFromJSONKey (f :: Type -> Type)
- Data.Aeson: class GToJSON' enc arity f
+ Data.Aeson: class GToJSON' enc arity (f :: Type -> Type)
- Data.Aeson: class GetConName f => GToJSONKey f
+ Data.Aeson: class GetConName f => GToJSONKey (f :: k -> Type)
- Data.Aeson: class ToJSON1 f
+ Data.Aeson: class ToJSON1 (f :: Type -> Type)
- Data.Aeson: class ToJSON2 f
+ Data.Aeson: class ToJSON2 (f :: Type -> Type -> Type)
- Data.Aeson: fromJSONKey :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Data.Aeson: fromJSONKey :: FromJSONKey a => FromJSONKeyFunction a
- Data.Aeson: fromJSONKeyList :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Data.Aeson: fromJSONKeyList :: FromJSONKey a => FromJSONKeyFunction [a]
- Data.Aeson: genericFromJSONKey :: forall a. (Generic a, GFromJSONKey (Rep a)) => JSONKeyOptions -> FromJSONKeyFunction a
+ Data.Aeson: genericFromJSONKey :: (Generic a, GFromJSONKey (Rep a)) => JSONKeyOptions -> FromJSONKeyFunction a
- Data.Aeson: liftParseJSON :: (FromJSON1 f, Generic1 f, GFromJSON One (Rep1 f)) => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson: liftParseJSON :: FromJSON1 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
- Data.Aeson: liftToEncoding :: (ToJSON1 f, Generic1 f, GToJSON' Encoding One (Rep1 f)) => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson: liftToEncoding :: ToJSON1 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
- Data.Aeson: liftToJSON :: (ToJSON1 f, Generic1 f, GToJSON' Value One (Rep1 f)) => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson: liftToJSON :: ToJSON1 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
- Data.Aeson: parseJSON :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Data.Aeson: parseJSON :: FromJSON a => Value -> Parser a
- Data.Aeson: throwDecode :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson: throwDecode :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson: throwDecode' :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson: throwDecode' :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson: throwDecodeStrict :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson: throwDecodeStrict :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson: throwDecodeStrict' :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson: throwDecodeStrict' :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson: throwDecodeStrictText :: forall a m. (FromJSON a, MonadThrow m) => Text -> m a
+ Data.Aeson: throwDecodeStrictText :: (FromJSON a, MonadThrow m) => Text -> m a
- Data.Aeson: toJSON :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Data.Aeson: toJSON :: ToJSON a => a -> Value
- Data.Aeson: toJSONKey :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Data.Aeson: toJSONKey :: ToJSONKey a => ToJSONKeyFunction a
- Data.Aeson: toJSONKeyList :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
+ Data.Aeson: toJSONKeyList :: ToJSONKey a => ToJSONKeyFunction [a]
- Data.Aeson.Decoding: throwDecode :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Decoding: throwDecode :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson.Decoding: throwDecodeStrict :: forall a m. (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Decoding: throwDecodeStrict :: (FromJSON a, MonadThrow m) => ByteString -> m a
- Data.Aeson.Decoding: throwDecodeStrictText :: forall a m. (FromJSON a, MonadThrow m) => Text -> m a
+ Data.Aeson.Decoding: throwDecodeStrictText :: (FromJSON a, MonadThrow m) => Text -> m a
- Data.Aeson.Encoding: dict :: (k -> Encoding' Key) -> (v -> Encoding) -> (forall a. (k -> v -> a -> a) -> a -> m -> a) -> m -> Encoding
+ Data.Aeson.Encoding: dict :: (k -> Encoding' Key) -> (v -> Encoding) -> (forall a. () => (k -> v -> a -> a) -> a -> m -> a) -> m -> Encoding
- Data.Aeson.Encoding.Internal: dict :: (k -> Encoding' Key) -> (v -> Encoding) -> (forall a. (k -> v -> a -> a) -> a -> m -> a) -> m -> Encoding
+ Data.Aeson.Encoding.Internal: dict :: (k -> Encoding' Key) -> (v -> Encoding) -> (forall a. () => (k -> v -> a -> a) -> a -> m -> a) -> m -> Encoding
- Data.Aeson.Types: [FromJSONKeyCoerce] :: Coercible Text a => FromJSONKeyFunction a
+ Data.Aeson.Types: [FromJSONKeyCoerce] :: forall a. Coercible Text a => FromJSONKeyFunction a
- Data.Aeson.Types: [FromJSONKeyTextParser] :: !Text -> Parser a -> FromJSONKeyFunction a
+ Data.Aeson.Types: [FromJSONKeyTextParser] :: forall a. !Text -> Parser a -> FromJSONKeyFunction a
- Data.Aeson.Types: [FromJSONKeyText] :: !Text -> a -> FromJSONKeyFunction a
+ Data.Aeson.Types: [FromJSONKeyText] :: forall a. !Text -> a -> FromJSONKeyFunction a
- Data.Aeson.Types: [FromJSONKeyValue] :: !Value -> Parser a -> FromJSONKeyFunction a
+ Data.Aeson.Types: [FromJSONKeyValue] :: forall a. !Value -> Parser a -> FromJSONKeyFunction a
- Data.Aeson.Types: class FromJSON1 f
+ Data.Aeson.Types: class FromJSON1 (f :: Type -> Type)
- Data.Aeson.Types: class FromJSON2 f
+ Data.Aeson.Types: class FromJSON2 (f :: Type -> Type -> Type)
- Data.Aeson.Types: class GFromJSON arity f
+ Data.Aeson.Types: class GFromJSON arity (f :: Type -> Type)
- Data.Aeson.Types: class (ConstructorNames f, SumFromString f) => GFromJSONKey f
+ Data.Aeson.Types: class (ConstructorNames f, SumFromString f) => GFromJSONKey (f :: Type -> Type)
- Data.Aeson.Types: class GToJSON' enc arity f
+ Data.Aeson.Types: class GToJSON' enc arity (f :: Type -> Type)
- Data.Aeson.Types: class GetConName f => GToJSONKey f
+ Data.Aeson.Types: class GetConName f => GToJSONKey (f :: k -> Type)
- Data.Aeson.Types: class ToJSON1 f
+ Data.Aeson.Types: class ToJSON1 (f :: Type -> Type)
- Data.Aeson.Types: class ToJSON2 f
+ Data.Aeson.Types: class ToJSON2 (f :: Type -> Type -> Type)
- Data.Aeson.Types: fromJSONKey :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Data.Aeson.Types: fromJSONKey :: FromJSONKey a => FromJSONKeyFunction a
- Data.Aeson.Types: fromJSONKeyList :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Data.Aeson.Types: fromJSONKeyList :: FromJSONKey a => FromJSONKeyFunction [a]
- Data.Aeson.Types: genericFromJSONKey :: forall a. (Generic a, GFromJSONKey (Rep a)) => JSONKeyOptions -> FromJSONKeyFunction a
+ Data.Aeson.Types: genericFromJSONKey :: (Generic a, GFromJSONKey (Rep a)) => JSONKeyOptions -> FromJSONKeyFunction a
- Data.Aeson.Types: liftParseJSON :: (FromJSON1 f, Generic1 f, GFromJSON One (Rep1 f)) => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson.Types: liftParseJSON :: FromJSON1 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
- Data.Aeson.Types: liftToEncoding :: (ToJSON1 f, Generic1 f, GToJSON' Encoding One (Rep1 f)) => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson.Types: liftToEncoding :: ToJSON1 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
- Data.Aeson.Types: liftToJSON :: (ToJSON1 f, Generic1 f, GToJSON' Value One (Rep1 f)) => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson.Types: liftToJSON :: ToJSON1 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
- Data.Aeson.Types: parseJSON :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Data.Aeson.Types: parseJSON :: FromJSON a => Value -> Parser a
- Data.Aeson.Types: toJSON :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Data.Aeson.Types: toJSON :: ToJSON a => a -> Value
- Data.Aeson.Types: toJSONKey :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Data.Aeson.Types: toJSONKey :: ToJSONKey a => ToJSONKeyFunction a
- Data.Aeson.Types: toJSONKeyList :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
+ Data.Aeson.Types: toJSONKeyList :: ToJSONKey a => ToJSONKeyFunction [a]

Files

README.markdown view
@@ -14,7 +14,7 @@  Master [git repository](http://github.com/haskell/aeson): -* `git clone git://github.com/haskell/aeson.git`+* `git clone https://github.com/haskell/aeson.git`  See what's changed in recent (and upcoming) releases: 
aeson.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               aeson-version:            2.2.3.0+version:            2.2.4.0 license:            BSD-3-Clause license-file:       LICENSE category:           Text, Web, JSON@@ -18,9 +18,10 @@    || ==9.0.2    || ==9.2.8    || ==9.4.8-   || ==9.6.5-   || ==9.8.2+   || ==9.6.6+   || ==9.8.4    || ==9.10.1+   || ==9.12.1  synopsis:           Fast JSON parsing and encoding homepage:           https://github.com/haskell/aeson@@ -97,10 +98,10 @@     , containers        >=0.6.0.1  && <0.8     , deepseq           >=1.4.4.0  && <1.6     , exceptions        >=0.10.4   && <0.11-    , ghc-prim          >=0.5.0.0  && <0.12-    , template-haskell  >=2.14.0.0 && <2.23+    , ghc-prim          >=0.5.0.0  && <0.14+    , template-haskell  >=2.14.0.0 && <2.24     , text              >=1.2.3.0  && <1.3  || >=2.0 && <2.2-    , time              >=1.8.0.2  && <1.13+    , time              >=1.8.0.2  && <1.15    -- Compat   build-depends:@@ -115,14 +116,14 @@     , character-ps          ^>=0.1     , data-fix              ^>=0.3.2     , dlist                 ^>=1.0-    , hashable              ^>=1.4.6.0+    , hashable              ^>=1.4.6.0  || ^>=1.5.0.0     , indexed-traversable   ^>=0.1.2     , integer-conversion    ^>=0.1     , integer-logarithms    ^>=1.0.3.1     , network-uri           ^>=2.6.4.1     , OneTuple              ^>=0.4.1.1     , primitive             ^>=0.8.0.0  || ^>=0.9.0.0-    , QuickCheck            ^>=2.14.3 || ^>=2.15+    , QuickCheck            ^>=2.14.3   || ^>=2.15    || ^>=2.16.0.0 || ^>=2.17.1.0 || ^>=2.18.0.0     , scientific            ^>=0.3.7.0     , semialign             ^>=1.3     , strict                ^>=0.5@@ -134,7 +135,7 @@     , unordered-containers  ^>=0.2.10.0     , uuid-types            ^>=1.0.5     , vector                ^>=0.13.0.0-    , witherable            ^>=0.4.2 || ^>=0.5+    , witherable            ^>=0.4.2    || ^>=0.5    ghc-options:      -Wall @@ -174,6 +175,7 @@     Regression.Issue571     Regression.Issue687     Regression.Issue967+    Regression.Issue1138     RFC8785     SerializationFormatSpec     Types@@ -202,7 +204,7 @@     , containers     , data-fix     , deepseq-    , Diff                  >=0.4    && <0.6+    , Diff                  >=0.4    && <0.6  || ^>=1.0.2     , directory     , dlist     , filepath@@ -215,8 +217,8 @@     , network-uri     , OneTuple     , primitive-    , QuickCheck            >=2.14.2 && <2.16-    , quickcheck-instances  >=0.3.29 && <0.4+    , QuickCheck+    , quickcheck-instances  >=0.3.29 && <0.5     , scientific     , strict     , tagged@@ -242,4 +244,4 @@  source-repository head   type:     git-  location: git://github.com/haskell/aeson.git+  location: https://github.com/haskell/aeson.git
changelog.md view
@@ -1,5 +1,9 @@ For the latest version of this document, please see [https://github.com/haskell/aeson/blob/master/changelog.md](https://github.com/haskell/aeson/blob/master/changelog.md). +### 2.2.4.0++* Check for control characters in text literals everywhere+ ### 2.2.3.0  * Support `hashable-1.4.6.0`.
src/Data/Aeson.hs view
@@ -253,7 +253,7 @@  -- | Like 'decodeFileStrict'' but returns an error message when decoding fails. ----- Since @2.2.0.0@ an alias for 'eitherDecodeFileStrict''.+-- Since @2.2.0.0@ an alias for 'eitherDecodeFileStrict'. eitherDecodeFileStrict' :: (FromJSON a) => FilePath -> IO (Either String a) eitherDecodeFileStrict' = eitherDecodeFileStrict {-# INLINE eitherDecodeFileStrict' #-}
src/Data/Aeson/Decoding/ByteString.hs view
@@ -153,7 +153,9 @@             Right t -> ok t (BS.drop (n + 1) bs0)             Left e  -> err (show e)         Just (92, bs') -> goSlash (n + 1) bs'-        Just (_,  bs') -> goEsc (n + 1) bs'+        Just (w8, bs')+            | w8 < 0x20  -> errCC+            | otherwise  -> goEsc (n + 1) bs'      goSlash :: Int -> ByteString -> r     goSlash !n !bs = case BS.uncons bs of
src/Data/Aeson/Decoding/ByteString/Lazy.hs view
@@ -159,7 +159,9 @@             Right t -> ok t (lbsDrop (n + 1) bs0)             Left e  -> err (show e)         Just (92, bs') -> goSlash (n + 1) bs'-        Just (_,  bs') -> goEsc (n + 1) bs'+        Just (w8, bs')+            | w8 < 0x20  -> errCC+            | otherwise  -> goEsc (n + 1) bs'      goSlash :: Int -> ByteString -> r     goSlash !n !bs = case LBS.uncons bs of
src/Data/Aeson/Decoding/Text.hs view
@@ -36,7 +36,7 @@ #endif  --- | Lex (and parse) strict 'ByteString' into 'Tokens' stream.+-- | Lex (and parse) strict 'Text' into 'Tokens' stream. -- -- @since 2.2.1.0 --@@ -163,7 +163,9 @@             Right t -> ok t (unsafeDropPoints (n + 1) bs0)             Left e  -> err (show e)         Just (92, bs') -> goSlash (n + 1) bs'-        Just (_,  bs') -> goEsc (n + 1) bs'+        Just (w8, bs')+            | w8 < 0x20  -> errCC+            | otherwise  -> goEsc (n + 1) bs'      goSlash :: Int -> Text -> r     goSlash !n !bs = case unconsPoint bs of
src/Data/Aeson/Types/ToJSON.hs view
@@ -371,7 +371,7 @@     explicitToField f name value = KM.singleton name (f value)     {-# INLINE explicitToField #-} --- | An optional key-value pair for envoding to a JSON object+-- | An optional key-value pair for encoding to a JSON object -- -- @since 2.2.0.0 --
tests/Instances.hs view
@@ -28,6 +28,11 @@ import Data.Orphans () import Test.QuickCheck.Instances () +#if !MIN_VERSION_base(4,16,0)+import Data.Semigroup (Option (..))+import Data.Tuple.Solo (Solo (..))+#endif+ -- "System" types.  instance Arbitrary DotNetTime where@@ -157,9 +162,13 @@  #if !MIN_VERSION_base(4,16,0) instance Arbitrary OptionField where-    arbitrary = OptionField <$> arbitrary+    arbitrary = OptionField . Option <$> arbitrary #endif +#if !MIN_VERSION_base(4,16,0) && MIN_VERSION_QuickCheck(2,17,0)+instance Arbitrary a => Arbitrary (Solo a) where+    arbitrary = MkSolo <$> arbitrary+#endif  instance ApproxEq Char where     (=~) = (==)
+ tests/Regression/Issue1138.hs view
@@ -0,0 +1,23 @@+{-# LANGUAGE OverloadedStrings #-}+module Regression.Issue1138 (issue1138) where++import Test.Tasty (TestTree, testGroup)+import Test.Tasty.HUnit (testCase, assertFailure)++import Data.Aeson++assertDecodeFailure :: Either String Value -> IO ()+assertDecodeFailure (Right v) = assertFailure $ "Unexpected success: " ++ show v+assertDecodeFailure (Left _)  = return ()++issue1138 :: TestTree+issue1138 = testGroup "Issue #1138" $ map (testCase "-")+  [ assertDecodeFailure $ eitherDecode "\"\t\""+  , assertDecodeFailure $ eitherDecode "\"\\\\\t\""++  , assertDecodeFailure $ eitherDecodeStrict "\"\t\""+  , assertDecodeFailure $ eitherDecodeStrict "\"\\\\\t\""++  , assertDecodeFailure $ eitherDecodeStrictText "\"\t\""+  , assertDecodeFailure $ eitherDecodeStrictText "\"\\\\\t\""+  ]
tests/UnitTests.hs view
@@ -64,6 +64,7 @@ import Regression.Issue571 import Regression.Issue687 import Regression.Issue967+import Regression.Issue1138 import UnitTests.OmitNothingFieldsNote import UnitTests.FromJSONKey import UnitTests.Hashable@@ -568,6 +569,7 @@   , issue571   , issue687   , issue967+  , issue1138   , keyMapInsertWithTests   , omitNothingFieldsNoteTests   , noThunksTests