@@ -1,11 +1,12 @@
1−{-# LANGUAGE CPP, DeriveGeneric, OverloadedStrings, ScopedTypeVariables #-}
1+{-# LANGUAGE CPP, DeriveGeneric, OverloadedStrings, ScopedTypeVariables, TemplateHaskell #-}
3module UnitTests (ioTests, tests) where
3module UnitTests (ioTests, tests) where
5import Control.Monad (forM)
5import Control.Monad (forM)
6import Data.Aeson (decode, eitherDecode, encode, genericToJSON, genericToEncoding)
6import Data.Aeson (decode, eitherDecode, encode, genericToJSON, genericToEncoding)
7+import Data.Aeson.TH ( deriveJSON )
7import Data.Aeson.Encode (encodeToTextBuilder)
8import Data.Aeson.Encode (encodeToTextBuilder)
8−import Data.Aeson.Types (ToJSON(..), Value, camelTo, camelTo2, defaultOptions)
9+import Data.Aeson.Types (ToJSON(..), Value, camelTo, camelTo2, defaultOptions, omitNothingFields)
9import Data.Char (toUpper)
10import Data.Char (toUpper)
10import Data.Time (UTCTime)
11import Data.Time (UTCTime)
11import Data.Time.Format (parseTime)
12import Data.Time.Format (parseTime)
@@ -184,3 +185,7 @@ encoderComparisonTests = do
184 , "twitter100.json"
185 , "twitter100.json"
185 , "twitter50.json"
186 , "twitter50.json"
189+-- A regression test for: https://github.com/bos/aeson/issues/293
190+data MyRecord = MyRecord {field1 :: Maybe Int, field2 :: Maybe Bool}
191+deriveJSON defaultOptions{omitNothingFields=True} ''MyRecord