on master help sign in
Normalize export lists and pragmas
commit2d67325466ce9b107e303f408871481a52dfcb6c authorAdam Bergmark <adam@bergmark.nl> dateSat 30 Jul 2016, 15:07 (10 years ago) parentab65a2b
46 files changed+201−188
Data/Aeson/Encode.hs+2−1 Data/Aeson/Encoding/Builder.hs+3−1 Data/Aeson/Encoding/Internal.hs+3−3 Data/Aeson/Internal/Functions.hs+2−1 Data/Aeson/Parser/Internal.hs+3−1 Data/Aeson/Parser/Time.hs+2−1 Data/Aeson/Text.hs+4−2 Data/Aeson/Types/FromJSON.hs+17−16 Data/Aeson/Types/Generic.hs+9−9 Data/Aeson/Types/Internal.hs+5−2 Data/Aeson/Types/ToJSON.hs+18−17 benchmarks/AesonCompareAutoInstances.hs+9−14 benchmarks/AesonEncode.hs+4−2 benchmarks/AesonFoldable.hs+4−5 benchmarks/AesonMap.hs+10−7 benchmarks/AesonParse.hs+3−2 benchmarks/AesonTuples.hs+1−3 benchmarks/Compare.hs+2−2 benchmarks/Compare/BufferBuilder.hs+3−2 benchmarks/Compare/JsonBench.hs+5−2 benchmarks/CompareWithJSON.hs+1−1 benchmarks/Dates.hs−1 benchmarks/JsonParse.hs+3−2 benchmarks/Micro.hs−1 benchmarks/ReadFile.hs+2−1 benchmarks/Typed/Common.hs+9−6 benchmarks/Typed/Generic.hs+1−3 benchmarks/Typed/Manual.hs+1−3 benchmarks/Typed/TH.hs+1−4 benchmarks/aeson-benchmarks.cabal+1−1 examples/Generic.hs+2−5 examples/Simplest.hs+3−2 examples/TemplateHaskell.hs+2−4 examples/Twitter.hs+3−3 examples/Twitter/Generic.hs+2−2 examples/Twitter/Manual.hs+4−2 examples/Twitter/TH.hs+2−1 tests/DataFamilies/Encoders.hs+1−1 tests/DataFamilies/Instances.hs+1−1 tests/DataFamilies/Properties.hs−1 tests/DataFamilies/Types.hs+1−1 tests/Instances.hs+12−13 tests/Properties.hs+13−13 tests/Types.hs+3−3 tests/UnitTests.hs+23−19 tests/UnitTests/NullaryConstructors.hs+1−1
Data/Aeson/Encode.hs+2−1
@@ -9,7 +9,8 @@
99--
1010-- This module is left to supply limited backwards-compatibility.
1111module Data.Aeson.Encode {-# DEPRECATED "Use Data.Aeson or Data.Aeson.Text instead" #-}
12− ( encode
12+ (
13+ encode
1314 , encodeToTextBuilder
1415 ) where
1516
Data/Aeson/Encoding/Builder.hs+3−1
@@ -1,4 +1,6 @@
1−{-# LANGUAGE BangPatterns, CPP, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE CPP #-}
3+{-# LANGUAGE OverloadedStrings #-}
24
35-- |
46-- Module: Data.Aeson.Encoding.Builder
Data/Aeson/Encoding/Internal.hs+3−3
@@ -1,7 +1,7 @@
11{-# LANGUAGE DeriveDataTypeable #-}
2−{-# LANGUAGE EmptyDataDecls #-}
3−{-# LANGUAGE OverloadedStrings #-}
4−{-# LANGUAGE RankNTypes #-}
2+{-# LANGUAGE EmptyDataDecls #-}
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE RankNTypes #-}
55module Data.Aeson.Encoding.Internal
66 (
77 -- * Encoding
Data/Aeson/Internal/Functions.hs+2−1
@@ -8,7 +8,8 @@
88-- Portability: portable
99
1010module Data.Aeson.Internal.Functions
11− ( mapHashKeyVal
11+ (
12+ mapHashKeyVal
1213 , mapKeyVal
1314 , mapKey
1415 ) where
Data/Aeson/Parser/Internal.hs+3−1
@@ -1,4 +1,6 @@
1−{-# LANGUAGE BangPatterns, CPP, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE CPP #-}
3+{-# LANGUAGE OverloadedStrings #-}
24#if MIN_VERSION_ghc_prim(0,3,1)
35{-# LANGUAGE MagicHash #-}
46#endif
Data/Aeson/Parser/Time.hs+2−1
@@ -1,4 +1,5 @@
1−{-# LANGUAGE BangPatterns, ScopedTypeVariables #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE ScopedTypeVariables #-}
23
34-- |
45-- Module: Data.Aeson.Parser.Time
Data/Aeson/Text.hs+4−2
@@ -1,4 +1,5 @@
1−{-# LANGUAGE BangPatterns, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE OverloadedStrings #-}
23-- |
34-- Module: Data.Aeson.Text
45-- Copyright: (c) 2012-2016 Bryan O'Sullivan
@@ -14,7 +15,8 @@
1415-- You can use the conversions to 'Builder's when embedding JSON messages as
1516-- parts of a protocol.
1617module Data.Aeson.Text
17− ( encodeToLazyText
18+ (
19+ encodeToLazyText
1820 , encodeToTextBuilder
1921 ) where
2022
Data/Aeson/Types/FromJSON.hs+17−16
@@ -1,21 +1,21 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE DefaultSignatures #-}
4−{-# LANGUAGE FlexibleContexts #-}
5−{-# LANGUAGE FlexibleInstances #-}
6−{-# LANGUAGE GADTs #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DataKinds #-}
3+{-# LANGUAGE DefaultSignatures #-}
4+{-# LANGUAGE FlexibleContexts #-}
5+{-# LANGUAGE FlexibleInstances #-}
6+{-# LANGUAGE GADTs #-}
77{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE NamedFieldPuns #-}
9−{-# LANGUAGE OverloadedStrings #-}
10−{-# LANGUAGE RecordWildCards #-}
11−{-# LANGUAGE ScopedTypeVariables #-}
12−{-# LANGUAGE TypeOperators #-}
13−{-# LANGUAGE TypeSynonymInstances #-}
14−{-# LANGUAGE UndecidableInstances #-}
15−{-# LANGUAGE ViewPatterns #-}
8+{-# LANGUAGE NamedFieldPuns #-}
9+{-# LANGUAGE OverloadedStrings #-}
10+{-# LANGUAGE RecordWildCards #-}
11+{-# LANGUAGE ScopedTypeVariables #-}
12+{-# LANGUAGE TypeOperators #-}
13+{-# LANGUAGE TypeSynonymInstances #-}
14+{-# LANGUAGE UndecidableInstances #-}
15+{-# LANGUAGE ViewPatterns #-}
1616
1717#if __GLASGOW_HASKELL__ >= 706
18−{-# LANGUAGE PolyKinds #-}
18+{-# LANGUAGE PolyKinds #-}
1919#endif
2020
2121#include "overlapping-compat.h"
@@ -23,7 +23,8 @@
2323-- TODO: Drop this when we remove support for Data.Attoparsec.Number
2424{-# OPTIONS_GHC -fno-warn-deprecations #-}
2525
26−module Data.Aeson.Types.FromJSON (
26+module Data.Aeson.Types.FromJSON
27+ (
2728 -- * Core JSON classes
2829 FromJSON(..)
2930 -- * Liftings to unary and binary type constructors
Data/Aeson/Types/Generic.hs+9−9
@@ -1,13 +1,13 @@
1−{-# LANGUAGE CPP #-}
2−{-# LANGUAGE DataKinds #-}
3−{-# LANGUAGE EmptyDataDecls #-}
4−{-# LANGUAGE FlexibleInstances #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DataKinds #-}
3+{-# LANGUAGE EmptyDataDecls #-}
4+{-# LANGUAGE FlexibleInstances #-}
55{-# LANGUAGE FunctionalDependencies #-}
6−{-# LANGUAGE KindSignatures #-}
7−{-# LANGUAGE MultiParamTypeClasses #-}
8−{-# LANGUAGE ScopedTypeVariables #-}
9−{-# LANGUAGE TypeOperators #-}
10−{-# LANGUAGE UndecidableInstances #-}
6+{-# LANGUAGE KindSignatures #-}
7+{-# LANGUAGE MultiParamTypeClasses #-}
8+{-# LANGUAGE ScopedTypeVariables #-}
9+{-# LANGUAGE TypeOperators #-}
10+{-# LANGUAGE UndecidableInstances #-}
1111
1212#include "overlapping-compat.h"
1313
Data/Aeson/Types/Internal.hs+5−2
@@ -1,5 +1,8 @@
1−{-# LANGUAGE CPP, DeriveDataTypeable, GeneralizedNewtypeDeriving, Rank2Types,
2− RecordWildCards #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DeriveDataTypeable #-}
3+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
4+{-# LANGUAGE Rank2Types #-}
5+{-# LANGUAGE RecordWildCards #-}
36#if __GLASGOW_HASKELL__ >= 800
47-- a) THQ works on cross-compilers and unregisterised GHCs
58-- b) may make compilation faster as no dynamic loading is ever needed (not sure about this)
Data/Aeson/Types/ToJSON.hs+18−17
@@ -1,22 +1,22 @@
1−{-# LANGUAGE BangPatterns #-}
2−{-# LANGUAGE CPP #-}
3−{-# LANGUAGE DataKinds #-}
4−{-# LANGUAGE DefaultSignatures #-}
5−{-# LANGUAGE FlexibleContexts #-}
6−{-# LANGUAGE FlexibleInstances #-}
7−{-# LANGUAGE GADTs #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE CPP #-}
3+{-# LANGUAGE DataKinds #-}
4+{-# LANGUAGE DefaultSignatures #-}
5+{-# LANGUAGE FlexibleContexts #-}
6+{-# LANGUAGE FlexibleInstances #-}
7+{-# LANGUAGE GADTs #-}
88{-# LANGUAGE MultiParamTypeClasses #-}
9−{-# LANGUAGE NamedFieldPuns #-}
10−{-# LANGUAGE OverloadedStrings #-}
11−{-# LANGUAGE PatternGuards #-}
12−{-# LANGUAGE RecordWildCards #-}
13−{-# LANGUAGE ScopedTypeVariables #-}
14−{-# LANGUAGE TypeOperators #-}
15−{-# LANGUAGE TypeSynonymInstances #-}
16−{-# LANGUAGE UndecidableInstances #-}
9+{-# LANGUAGE NamedFieldPuns #-}
10+{-# LANGUAGE OverloadedStrings #-}
11+{-# LANGUAGE PatternGuards #-}
12+{-# LANGUAGE RecordWildCards #-}
13+{-# LANGUAGE ScopedTypeVariables #-}
14+{-# LANGUAGE TypeOperators #-}
15+{-# LANGUAGE TypeSynonymInstances #-}
16+{-# LANGUAGE UndecidableInstances #-}
1717
1818#if __GLASGOW_HASKELL__ >= 706
19−{-# LANGUAGE PolyKinds #-}
19+{-# LANGUAGE PolyKinds #-}
2020#endif
2121
2222#include "overlapping-compat.h"
@@ -24,7 +24,8 @@
2424-- TODO: Drop this when we remove support for Data.Attoparsec.Number
2525{-# OPTIONS_GHC -fno-warn-deprecations #-}
2626
27−module Data.Aeson.Types.ToJSON (
27+module Data.Aeson.Types.ToJSON
28+ (
2829 -- * Core JSON classes
2930 ToJSON(..)
3031 -- * Liftings to unary and binary type constructors
benchmarks/AesonCompareAutoInstances.hs+9−14
@@ -1,24 +1,19 @@
1−{-# LANGUAGE DeriveDataTypeable, DeriveGeneric, TemplateHaskell #-}
1+{-# LANGUAGE DeriveDataTypeable #-}
2+{-# LANGUAGE DeriveGeneric #-}
3+{-# LANGUAGE TemplateHaskell #-}
24
35module Main where
46
5−--------------------------------------------------------------------------------
6−
7−import Criterion.Main hiding (defaultOptions)
8−
97import Control.DeepSeq (NFData, rnf, deepseq)
10−
11−import Data.Typeable (Typeable)
8+import Criterion.Main hiding (defaultOptions)
9+import Data.Aeson.Encode
10+import Data.Aeson.TH
11+import Data.Aeson.Types
1212import Data.Data (Data)
13+import Data.Typeable (Typeable)
1314import GHC.Generics (Generic)
14−
15−import Data.Aeson.Types
16−import Data.Aeson.TH
17−import qualified Data.Aeson.Generic as G (fromJSON, toJSON)
18−
19−import Data.Aeson.Encode
20−
2115import Options
16+import qualified Data.Aeson.Generic as G (fromJSON, toJSON)
2217
2318--------------------------------------------------------------------------------
2419
benchmarks/AesonEncode.hs+4−2
@@ -1,5 +1,7 @@
1−{-# LANGUAGE BangPatterns, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE OverloadedStrings #-}
23
4+import Control.DeepSeq
35import Control.Exception
46import Control.Monad
57import Data.Aeson
@@ -9,7 +11,6 @@ import Data.Time.Clock
911import System.Environment (getArgs)
1012import System.IO
1113import qualified Data.ByteString as B
12−import Control.DeepSeq
1314
1415main :: IO ()
1516main = do
@@ -17,6 +18,7 @@ main = do
1718 let (cnt,args) = case args0 of
1819 (i:c:a) | all isDigit i && all isDigit c -> (c,a)
1920 (c:a) -> (c,a)
21+ [] -> error "Unexpected empty list"
2022 let count = read cnt :: Int
2123 forM_ args $ \arg -> bracket (openFile arg ReadMode) hClose $ \h -> do
2224 putStrLn $ arg ++ ":"
benchmarks/AesonFoldable.hs+4−5
@@ -1,11 +1,10 @@
1−{-# LANGUAGE OverloadedStrings, PackageImports #-}
1+{-# LANGUAGE OverloadedStrings #-}
2+{-# LANGUAGE PackageImports #-}
23import Criterion.Main
34
4−import qualified "aeson" Data.Aeson as A
5−import qualified "aeson-benchmarks" Data.Aeson as B
6−
75import Data.Foldable (toList)
8−
6+import qualified "aeson" Data.Aeson as A
7+import qualified "aeson-benchmarks" Data.Aeson as B
98import qualified Data.Sequence as S
109import qualified Data.Vector as V
1110import qualified Data.Vector.Unboxed as U
benchmarks/AesonMap.hs+10−7
@@ -1,19 +1,22 @@
1−{-# LANGUAGE OverloadedStrings, RankNTypes, PackageImports, FlexibleContexts #-}
1+{-# LANGUAGE FlexibleContexts #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+{-# LANGUAGE PackageImports #-}
4+{-# LANGUAGE RankNTypes #-}
5+
6+{-# OPTIONS -fno-warn-orphans #-}
27
38import Control.DeepSeq
49import Criterion.Main
510import Data.Hashable
611import Data.Proxy (Proxy (..))
712import Data.Tagged (Tagged (..))
8−import qualified Data.ByteString.Lazy as LBS
9−import qualified Data.Text as T
10−import qualified Data.Map as M
11−import qualified Data.HashMap.Strict as HM
12−
1313import qualified "aeson" Data.Aeson as A
14−
1514import qualified "aeson-benchmarks" Data.Aeson as B
1615import qualified "aeson-benchmarks" Data.Aeson.Types as B (fromJSONKeyCoerce)
16+import qualified Data.ByteString.Lazy as LBS
17+import qualified Data.HashMap.Strict as HM
18+import qualified Data.Map as M
19+import qualified Data.Text as T
1720
1821value :: Int -> HM.HashMap T.Text T.Text
1922value n = HM.fromList $ map f [1..n]
benchmarks/AesonParse.hs+3−2
@@ -1,9 +1,10 @@
1−{-# LANGUAGE BangPatterns, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE OverloadedStrings #-}
23{-# LANGUAGE PackageImports #-}
34
5+import "aeson-benchmarks" Data.Aeson
46import Control.Exception
57import Control.Monad
6−import "aeson-benchmarks" Data.Aeson
78import Data.Attoparsec.ByteString (IResult(..), parseWith)
89import Data.Time.Clock
910import System.Environment (getArgs)
benchmarks/AesonTuples.hs+1−3
@@ -1,9 +1,7 @@
11module Main where
22
3−--------------------------------------------------------------------------------
4−
5−import Criterion.Main
63import Control.DeepSeq (deepseq)
4+import Criterion.Main
75import Data.Aeson
86
97--------------------------------------------------------------------------------
benchmarks/Compare.hs+2−2
@@ -1,5 +1,5 @@
1−{-# LANGUAGE ScopedTypeVariables #-}
21{-# LANGUAGE PackageImports #-}
2+{-# LANGUAGE ScopedTypeVariables #-}
33
44module Main (main) where
55
@@ -11,8 +11,8 @@ import Data.Json.Builder
1111import Twitter
1212import Twitter.Manual ()
1313import Typed.Common
14−import qualified Compare.JsonBench as JsonBench
1514import qualified "aeson-benchmarks" Data.Aeson as Aeson
15+import qualified Compare.JsonBench as JsonBench
1616
1717main :: IO ()
1818main =
benchmarks/Compare/BufferBuilder.hs+3−2
@@ -1,11 +1,12 @@
1−{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
1+{-# LANGUAGE OverloadedStrings #-}
2+{-# LANGUAGE RecordWildCards #-}
23{-# OPTIONS_GHC -fno-warn-orphans #-}
34
45module Compare.BufferBuilder () where
56
67import Data.BufferBuilder.Json
7−import Data.Monoid ((<>))
88import Data.Int (Int64)
9+import Data.Monoid ((<>))
910import Prelude hiding (id)
1011import Twitter
1112import qualified Data.BufferBuilder.Utf8 as UB
benchmarks/Compare/JsonBench.hs+5−2
@@ -2,9 +2,12 @@
22--
33-- https://github.com/chadaustin/buffer-builder/blob/master/test.json
44
5−{-# LANGUAGE BangPatterns, OverloadedStrings, RecordWildCards #-}
5+{-# LANGUAGE BangPatterns #-}
66{-# LANGUAGE GeneralizedNewtypeDeriving #-}
7−{-# LANGUAGE MagicHash, ScopedTypeVariables #-}
7+{-# LANGUAGE MagicHash #-}
8+{-# LANGUAGE OverloadedStrings #-}
9+{-# LANGUAGE RecordWildCards #-}
10+{-# LANGUAGE ScopedTypeVariables #-}
811
912module Compare.JsonBench (benchmarks) where
1013
benchmarks/CompareWithJSON.hs+1−1
@@ -7,10 +7,10 @@ import Criterion.Main
77import qualified Data.Aeson as A
88import qualified Data.Aeson.Text as A
99import qualified Data.ByteString.Lazy as BL
10−import qualified Text.JSON as J
1110import qualified Data.Text.Lazy as TL
1211import qualified Data.Text.Lazy.Builder as TLB
1312import qualified Data.Text.Lazy.Encoding as TLE
13+import qualified Text.JSON as J
1414
1515instance (NFData v) => NFData (J.JSObject v) where
1616 rnf o = rnf (J.fromJSObject o)
benchmarks/Dates.hs−1
@@ -1,4 +1,3 @@
1−import Control.Applicative ((<$>))
21import Criterion.Main
32import Data.Aeson (decode, encode)
43import Data.Time.Clock (UTCTime)
benchmarks/JsonParse.hs+3−2
@@ -1,11 +1,12 @@
1−{-# LANGUAGE BangPatterns, ScopedTypeVariables #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE ScopedTypeVariables #-}
23{-# OPTIONS_GHC -fno-warn-orphans #-}
34
45import Control.DeepSeq
56import Control.Monad
6−import Text.JSON
77import Data.Time.Clock
88import System.Environment (getArgs)
9+import Text.JSON
910
1011instance NFData JSValue where
1112 rnf JSNull = ()
benchmarks/Micro.hs−1
@@ -5,7 +5,6 @@ import qualified Data.Aeson.Encoding.Builder as AB
55import qualified Data.ByteString.Builder as B
66import qualified Data.Text as T
77
8−
98main :: IO ()
109main = do
1110 let txt = "append (append b (primBounded w1 x1)) (primBounded w2 x2)"
benchmarks/ReadFile.hs+2−1
@@ -1,4 +1,5 @@
1−{-# LANGUAGE BangPatterns, OverloadedStrings #-}
1+{-# LANGUAGE BangPatterns #-}
2+{-# LANGUAGE OverloadedStrings #-}
23
34import Control.DeepSeq
45import Control.Exception
benchmarks/Typed/Common.hs+9−6
@@ -1,6 +1,14 @@
1−{-# LANGUAGE CPP, PackageImports #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE PackageImports #-}
3+
4+{-# OPTIONS -fno-warn-unused-imports #-}
5+
26module Typed.Common (load) where
37
8+import Data.ByteString.Lazy as L
9+import System.Exit
10+import System.IO
11+
412#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
513import Data.Aeson hiding (Result)
614#else
@@ -8,11 +16,6 @@ import "aeson" Data.Aeson hiding (Result)
816import qualified "aeson-benchmarks" Data.Aeson as B
917#endif
1018
11−import Data.ByteString.Lazy as L
12−import Control.Applicative
13−import System.IO
14−import System.Exit
15−
1619load :: FromJSON a => FilePath -> IO a
1720load fileName = do
1821 mv <- eitherDecode' <$> L.readFile fileName
benchmarks/Typed/Generic.hs+1−3
@@ -2,13 +2,11 @@
22module Typed.Generic (benchmarks) where
33
44import "aeson" Data.Aeson hiding (Result)
5−import qualified "aeson-benchmarks" Data.Aeson as B
6−
7−import Control.Applicative
85import Criterion
96import Data.ByteString.Lazy as L
107import Twitter.TH
118import Typed.Common
9+import qualified "aeson-benchmarks" Data.Aeson as B
1210
1311encodeDirectA :: Result -> L.ByteString
1412encodeDirectA = encode
benchmarks/Typed/Manual.hs+1−3
@@ -2,13 +2,11 @@
22module Typed.Manual (benchmarks) where
33
44import "aeson" Data.Aeson hiding (Result)
5−import qualified "aeson-benchmarks" Data.Aeson as B
6−
7−import Control.Applicative
85import Criterion
96import Data.ByteString.Lazy as L
107import Twitter.Manual
118import Typed.Common
9+import qualified "aeson-benchmarks" Data.Aeson as B
1210
1311encodeDirectA :: Result -> L.ByteString
1412encodeDirectA = encode
benchmarks/Typed/TH.hs+1−4
@@ -2,14 +2,11 @@
22module Typed.TH (benchmarks) where
33
44import "aeson" Data.Aeson hiding (Result)
5−import qualified "aeson-benchmarks" Data.Aeson as B
6−
7−import Control.Applicative
85import Criterion
9−import Data.ByteString.Builder as B
106import Data.ByteString.Lazy as L
117import Twitter.TH
128import Typed.Common
9+import qualified "aeson-benchmarks" Data.Aeson as B
1310
1411encodeDirectA :: Result -> L.ByteString
1512encodeDirectA = encode
benchmarks/aeson-benchmarks.cabal+1−1
@@ -184,7 +184,7 @@ executable aeson-benchmark-map
184184 main-is: AesonMap.hs
185185 ghc-options: -Wall -O2 -rtsopts
186186 build-depends:
187− aeson == 0.11.*,
187+ aeson,
188188 aeson-benchmarks,
189189 base,
190190 criterion >= 1.0,
examples/Generic.hs+2−5
@@ -6,17 +6,14 @@
66-- automatically derive the Generic class for us.
77
88{-# LANGUAGE DeriveGeneric #-}
9−
109{-# LANGUAGE OverloadedStrings #-}
1110
1211import Data.Aeson (FromJSON, ToJSON, decode, encode)
1312import qualified Data.ByteString.Lazy.Char8 as BL
13+import GHC.Generics (Generic)
1414
1515-- To decode or encode a value using the generic machinery, we must
1616-- make the type an instance of the Generic class.
17−
18−import GHC.Generics (Generic)
19−
2017data Coord = Coord { x :: Double, y :: Double }
2118 deriving (Show, Generic)
2219
@@ -31,5 +28,5 @@ main :: IO ()
3128main = do
3229 let req = decode "{\"x\":3.0,\"y\":-1.0}" :: Maybe Coord
3330 print req
34− let reply = Coord 123.4 20
31+ let reply = Coord { x = 123.4, y = 20 }
3532 BL.putStrLn (encode reply)
examples/Simplest.hs+3−2
@@ -1,6 +1,7 @@
1−{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
1+{-# LANGUAGE OverloadedStrings #-}
2+{-# LANGUAGE RecordWildCards #-}
23
3−import Control.Applicative ((<$>), (<*>), empty)
4+import Control.Applicative (empty)
45import Data.Aeson
56import Data.Monoid
67import qualified Data.ByteString.Lazy.Char8 as BL
examples/TemplateHaskell.hs+2−4
@@ -1,10 +1,8 @@
11-- We can use Template Haskell (TH) to generate instances of the
22-- FromJSON and ToJSON classes automatically. This is the fastest way
33-- to add JSON support for a type.
4−
5−{-# LANGUAGE TemplateHaskell #-}
6−
74{-# LANGUAGE OverloadedStrings #-}
5+{-# LANGUAGE TemplateHaskell #-}
86
97import Data.Aeson (decode, encode)
108import Data.Aeson.TH (deriveJSON, defaultOptions)
@@ -21,5 +19,5 @@ main :: IO ()
2119main = do
2220 let req = decode "{\"x\":3.0,\"y\":-1.0}" :: Maybe Coord
2321 print req
24− let reply = Coord 123.4 20
22+ let reply = Coord { x = 123.4, y = 20 }
2523 BL.putStrLn (encode reply)
examples/Twitter.hs+3−3
@@ -8,7 +8,8 @@
88-- renamed "type" to "type_" in the *.json files, to avoid overlap
99-- with a Haskell reserved keyword.
1010
11−{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}
11+{-# LANGUAGE DeriveDataTypeable #-}
12+{-# LANGUAGE DeriveGeneric #-}
1213
1314module Twitter (
1415 Metadata(..)
@@ -17,13 +18,12 @@ module Twitter (
1718 , Result(..)
1819 ) where
1920
21+import Control.DeepSeq
2022import Data.Data (Typeable, Data)
2123import Data.Int (Int64)
2224import Data.Text (Text)
23−-- import Data.Time (ZonedTime)
2425import GHC.Generics (Generic)
2526import Prelude hiding (id)
26−import Control.DeepSeq
2727
2828data Metadata = Metadata {
2929 result_type :: Text
examples/Twitter/Generic.hs+2−2
@@ -1,6 +1,6 @@
11-- Use GHC generics to automatically generate good instances.
2−
3−{-# LANGUAGE CPP, PackageImports #-}
2+{-# LANGUAGE CPP #-}
3+{-# LANGUAGE PackageImports #-}
44{-# OPTIONS_GHC -fno-warn-orphans #-}
55
66module Twitter.Generic
examples/Twitter/Manual.hs+4−2
@@ -1,7 +1,9 @@
11-- Manually write instances.
22
3−{-# LANGUAGE CPP, PackageImports #-}
4−{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
3+{-# LANGUAGE CPP #-}
4+{-# LANGUAGE PackageImports #-}
5+{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE RecordWildCards #-}
57{-# OPTIONS_GHC -fno-warn-orphans #-}
68
79module Twitter.Manual
examples/Twitter/TH.hs+2−1
@@ -1,6 +1,7 @@
11-- Use Template Haskell to generate good instances.
22
3−{-# LANGUAGE CPP, PackageImports #-}
3+{-# LANGUAGE CPP #-}
4+{-# LANGUAGE PackageImports #-}
45{-# LANGUAGE TemplateHaskell #-}
56{-# OPTIONS_GHC -fno-warn-orphans #-}
67
tests/DataFamilies/Encoders.hs+1−1
@@ -6,8 +6,8 @@ module DataFamilies.Encoders where
66
77import Data.Aeson.TH
88import Data.Aeson.Types
9−import Options
109import DataFamilies.Types
10+import Options
1111
1212--------------------------------------------------------------------------------
1313-- Nullary encoders/decoders
tests/DataFamilies/Instances.hs+1−1
@@ -10,8 +10,8 @@ import Control.Applicative
1010import Data.Aeson.TH
1111import Data.Aeson.Types (FromJSON(..))
1212import DataFamilies.Types
13−import Test.QuickCheck (Arbitrary(..), elements, oneof)
1413import Prelude
14+import Test.QuickCheck (Arbitrary(..), elements, oneof)
1515
1616instance (Arbitrary a) => Arbitrary (Approx a) where
1717 arbitrary = Approx <$> arbitrary
tests/DataFamilies/Properties.hs−1
@@ -4,7 +4,6 @@ module DataFamilies.Properties (tests) where
44
55import DataFamilies.Encoders
66import DataFamilies.Instances ()
7−
87import Properties hiding (tests)
98
109import Test.Framework (Test, testGroup)
tests/DataFamilies/Types.hs+1−1
@@ -1,10 +1,10 @@
11-- DataKinds is needed for deriveAll0 calls on GHC 8
22{-# LANGUAGE DataKinds #-}
3+{-# LANGUAGE DeriveGeneric #-}
34{-# LANGUAGE FlexibleInstances #-}
45{-# LANGUAGE GADTs #-}
56{-# LANGUAGE GeneralizedNewtypeDeriving #-}
67{-# LANGUAGE StandaloneDeriving #-}
7−{-# LANGUAGE DeriveGeneric #-}
88{-# LANGUAGE TemplateHaskell #-}
99{-# LANGUAGE TypeFamilies #-}
1010
tests/Instances.hs+12−13
@@ -1,6 +1,6 @@
11{-# LANGUAGE CPP #-}
2−{-# LANGUAGE FlexibleInstances #-}
32{-# LANGUAGE FlexibleContexts #-}
3+{-# LANGUAGE FlexibleInstances #-}
44{-# LANGUAGE OverloadedStrings #-}
55{-# LANGUAGE RecordWildCards #-}
66{-# LANGUAGE StandaloneDeriving #-}
@@ -11,22 +11,21 @@ module Instances where
1111import Prelude ()
1212import Prelude.Compat
1313
14−import Types
15−import Data.Function (on)
14+import Control.Applicative (Const(..), empty)
1615import Control.Monad
17−import Test.QuickCheck (Arbitrary(..), getNonNegative, elements,
18− listOf1, oneof, resize)
19−import Data.Time.Clock (UTCTime(..))
20−import Data.Time (ZonedTime(..), TimeZone(..))
21−import Data.List.NonEmpty (NonEmpty(..))
22−import Data.Version
2316import Data.Aeson.Types
24−import Control.Applicative (Const(..), empty)
25−import Data.Tagged (Tagged(..))
26−import Data.Proxy (Proxy(..))
27−import Data.Functor.Identity (Identity (..))
17+import Data.Function (on)
2818import Data.Functor.Compose (Compose (..))
19+import Data.Functor.Identity (Identity (..))
20+import Data.List.NonEmpty (NonEmpty(..))
21+import Data.Proxy (Proxy(..))
22+import Data.Tagged (Tagged(..))
23+import Data.Time (ZonedTime(..), TimeZone(..))
24+import Data.Time.Clock (UTCTime(..))
25+import Data.Version
2926import Functions
27+import Test.QuickCheck (Arbitrary(..), getNonNegative, elements, listOf1, oneof, resize)
28+import Types
3029import qualified Data.DList as DList
3130import qualified Data.HashMap.Strict as HM
3231
tests/Properties.hs+13−13
@@ -1,7 +1,8 @@
1−{-# LANGUAGE CPP, OverloadedStrings, ScopedTypeVariables, RankNTypes #-}
2−
3−-- For Arbitrary Compose
4−{-# LANGUAGE FlexibleContexts #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE FlexibleContexts #-} -- For arbitrary Compose
3+{-# LANGUAGE OverloadedStrings #-}
4+{-# LANGUAGE RankNTypes #-}
5+{-# LANGUAGE ScopedTypeVariables #-}
56
67module Properties where
78
@@ -10,23 +11,22 @@ import Prelude.Compat
1011
1112import Control.Applicative (Const)
1213import Data.Aeson (eitherDecode, encode)
14+import Data.Aeson.Encoding (encodingToLazyByteString)
1315import Data.Aeson.Internal (IResult(..), formatError, ifromJSON, iparse)
1416import Data.Aeson.Parser (value)
15−import Data.Aeson.Encoding (encodingToLazyByteString)
1617import Data.Aeson.Types
17−import Data.Int (Int8)
18−import Data.Sequence (Seq)
1918import Data.DList (DList)
20−import Data.Hashable (Hashable)
21−import Data.HashMap.Strict (HashMap)
2219import Data.Functor.Compose (Compose (..))
23−import Data.Map (Map)
24−import Data.Ratio (Ratio)
20+import Data.HashMap.Strict (HashMap)
21+import Data.Hashable (Hashable)
22+import Data.Int (Int8)
2523import Data.List.NonEmpty (NonEmpty)
26−import Data.Time (Day, LocalTime, NominalDiffTime, TimeOfDay, UTCTime,
27− ZonedTime)
24+import Data.Map (Map)
2825import Data.Proxy (Proxy)
26+import Data.Ratio (Ratio)
27+import Data.Sequence (Seq)
2928import Data.Tagged (Tagged)
29+import Data.Time (Day, LocalTime, NominalDiffTime, TimeOfDay, UTCTime, ZonedTime)
3030import Data.Version (Version)
3131import Encoders
3232import Instances ()
tests/Types.hs+3−3
@@ -8,13 +8,13 @@
88
99module Types where
1010
11−import qualified Data.Map as Map
1211import Data.Data
12+import Data.Functor.Compose (Compose (..))
13+import Data.Functor.Identity (Identity (..))
1314import Data.Text
1415import GHC.Generics
1516import Test.QuickCheck (Property, counterexample)
16−import Data.Functor.Compose (Compose (..))
17−import Data.Functor.Identity (Identity (..))
17+import qualified Data.Map as Map
1818
1919type I = Identity
2020type Compose3 f g h = Compose (Compose f g) h
tests/UnitTests.hs+23−19
@@ -1,4 +1,10 @@
1−{-# LANGUAGE CPP, GADTs, DeriveGeneric, OverloadedStrings, ScopedTypeVariables, TemplateHaskell, GeneralizedNewtypeDeriving #-}
1+{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DeriveGeneric #-}
3+{-# LANGUAGE GADTs #-}
4+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
5+{-# LANGUAGE OverloadedStrings #-}
6+{-# LANGUAGE ScopedTypeVariables #-}
7+{-# LANGUAGE TemplateHaskell #-}
28#if __GLASGOW_HASKELL__ >= 708
39{-# LANGUAGE DataKinds #-}
410#endif
@@ -10,45 +16,39 @@ module UnitTests (ioTests, tests) where
1016import Prelude ()
1117import Prelude.Compat
1218
13−import Types (I, Compose3, Compose3', Approx(..))
14−import Instances ()
15−
1619import Control.Applicative (Const(..))
1720import Control.Monad (forM)
18−import Data.Aeson (FromJSONKeyFunction(..), FromJSONKey(..), decode, eitherDecode, encode, genericParseJSON, genericToJSON, genericToEncoding, object, FromJSON(..), withObject, ToJSON1(..), (.=), (.:), (.:?), (.:!))
19−import Data.Aeson.Text (encodeToTextBuilder)
21+import Data.Aeson ((.=), (.:), (.:?), (.:!), FromJSON(..), FromJSONKeyFunction(..), FromJSONKey(..), ToJSON1(..), decode, eitherDecode, encode, genericParseJSON, genericToEncoding, genericToJSON, object, withObject)
2022import Data.Aeson.Internal (JSONPathElement(..), formatError)
2123import Data.Aeson.TH (deriveJSON, deriveToJSON, deriveToJSON1)
22−import Data.Aeson.Types (ToJSON(..), Value, camelTo, camelTo2, defaultOptions, omitNothingFields, Options(..), SumEncoding(..))
24+import Data.Aeson.Text (encodeToTextBuilder)
25+import Data.Aeson.Types (Options(..), SumEncoding(..), ToJSON(..), Value, camelTo, camelTo2, defaultOptions, omitNothingFields)
2326import Data.Char (toUpper)
24−import Data.Hashable (hash)
25−import Data.List.NonEmpty (NonEmpty(..))
26−import Data.Functor.Compose (Compose (..))
27+import Data.Fixed (Pico)
28+import Data.Functor.Compose (Compose(..))
29+import Data.Functor.Identity (Identity(..))
2730import Data.Functor.Product (Product(..))
2831import Data.Functor.Sum (Sum(..))
29−import Data.Functor.Identity (Identity (..))
32+import Data.Hashable (hash)
33+import Data.List.NonEmpty (NonEmpty(..))
3034import Data.Maybe (fromMaybe)
3135import Data.Proxy (Proxy(..))
32−import Data.Fixed (Pico)
36+import Data.Scientific (Scientific)
3337import Data.Sequence (Seq)
3438import Data.Tagged (Tagged(..))
3539import Data.Text (Text)
3640import Data.Time (UTCTime)
3741import Data.Time.Format (parseTime)
3842import Data.Time.Locale.Compat (defaultTimeLocale)
43+import Data.Word (Word8)
3944import GHC.Generics (Generic)
45+import Instances ()
4046import Test.Framework (Test, testGroup)
4147import Test.Framework.Providers.HUnit (testCase)
4248import Test.HUnit (Assertion, assertFailure, assertEqual)
49+import Types (Approx(..), Compose3, Compose3', I)
4350import UnitTests.NullaryConstructors (nullaryConstructors)
44−import Data.Word (Word8)
45−import Data.Scientific (Scientific)
4651import qualified Data.ByteString.Lazy.Char8 as L
47−import qualified Data.Text.Lazy.Builder as TLB
48−import qualified Data.Text.Lazy.Encoding as TLE
49−import qualified Data.Text.Lazy as LT
50−import qualified Data.Text.Lazy.Encoding as LT
51−
5252import qualified Data.DList as DList
5353import qualified Data.HashMap.Strict as HM
5454import qualified Data.HashSet as HashSet
@@ -57,6 +57,10 @@ import qualified Data.IntSet as IntSet
5757import qualified Data.Map as M
5858import qualified Data.Sequence as Seq
5959import qualified Data.Set as Set
60+import qualified Data.Text.Lazy as LT
61+import qualified Data.Text.Lazy.Builder as TLB
62+import qualified Data.Text.Lazy.Encoding as LT
63+import qualified Data.Text.Lazy.Encoding as TLE
6064import qualified Data.Tree as Tree
6165import qualified Data.Vector as Vector
6266
tests/UnitTests/NullaryConstructors.hs+1−1
@@ -10,7 +10,7 @@ import Data.Aeson.Types (Parser)
1010import Data.ByteString.Builder (toLazyByteString)
1111import Data.Maybe (fromJust)
1212import Encoders
13−import Test.HUnit (Assertion, (@=?))
13+import Test.HUnit ((@=?), Assertion)
1414import Types
1515import qualified Data.ByteString.Lazy.Char8 as L
1616