Commits

Bryan O'Sullivan committed 92cb87a

Try an even more robust way of handling containers.

  • Participants
  • Parent commits b3d6f77

Comments (0)

Files changed (2)

Data/Aeson/Types/Internal.hs

              deriving (Eq, Show, Typeable, Data)
 
 instance NFData Value where
-    rnf (Object o) = rnf o
+    rnf (Object o) = obj_rnf o
     rnf (Array a)  = V.foldl' (\x y -> rnf y `seq` x) () a
     rnf (String s) = rnf s
     rnf (Number n) = case n of I i -> rnf i; D d -> rnf d
     rnf (Bool b)   = rnf b
     rnf Null       = ()
 
+obj_rnf :: (NFData k, NFData v) => Map k v -> ()
+#if MIN_VERSION_containers(0,4,2)
+obj_rnf = rnf
+#else
+obj_rnf M.Tip = ()
+obj_rnf (M.Bin _ kx x l r) = rnf kx `seq` rnf x `seq` rnf l `seq` rnf r
+#endif
+
 instance IsString Value where
     fromString = String . pack
     {-# INLINE fromString #-}
     blaze-builder >= 0.2.1.4,
     blaze-textual >= 0.2.0.2,
     bytestring,
+    containers,
+    deepseq,
     hashable >= 1.1.2.0,
     mtl,
     old-locale,
     syb,
+    template-haskell >= 2.4,
     text >= 0.11.0.2,
-    template-haskell >= 2.4,
     time,
     unordered-containers >= 0.1.3.0,
     vector >= 0.7.1
 
-  if impl(ghc < 7.2)
-    build-depends:
-      containers < 0.4.2,
-      deepseq < 1.2
-  else
-    build-depends:
-      containers >= 0.4.2,
-      deepseq >= 1.2
-
   if flag(developer)
     ghc-options: -Werror
     ghc-prof-options: -auto-all