aeson 2.2.4.0 → 2.2.4.1
raw patch · 2 files changed
+17/−14 lines, 2 filesdep −ghc-primdep ~containersdep ~deepseqdep ~primitivePVP ok
version bump matches the API change (PVP)
Dependencies removed: ghc-prim
Dependency ranges changed: containers, deepseq, primitive, template-haskell, time
API changes (from Hackage documentation)
Files
- aeson.cabal +9/−11
- src/Data/Aeson/TH.hs +8/−3
aeson.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: aeson-version: 2.2.4.0+version: 2.2.4.1 license: BSD-3-Clause license-file: LICENSE category: Text, Web, JSON@@ -21,7 +21,8 @@ || ==9.6.6 || ==9.8.4 || ==9.10.1- || ==9.12.1+ || ==9.12.4+ || ==9.14.1 synopsis: Fast JSON parsing and encoding homepage: https://github.com/haskell/aeson@@ -95,19 +96,20 @@ build-depends: , base >=4.12.0.0 && <5 , bytestring >=0.10.8.2 && <0.13- , containers >=0.6.0.1 && <0.8+ , containers >=0.6.0.1 && <0.9 , deepseq >=1.4.4.0 && <1.6 , exceptions >=0.10.4 && <0.11- , ghc-prim >=0.5.0.0 && <0.14- , template-haskell >=2.14.0.0 && <2.24+ , template-haskell >=2.14.0.0 && <2.25 , text >=1.2.3.0 && <1.3 || >=2.0 && <2.2- , time >=1.8.0.2 && <1.15+ , time >=1.8.0.2 && <1.16 -- Compat build-depends:- , generically >=0.1 && <0.2 , time-compat >=1.9.6 && <1.10 + if !impl(ghc >=9.4)+ build-depends: generically >=0.1 && <0.2+ if !impl(ghc >=9.0) build-depends: integer-gmp @@ -203,20 +205,17 @@ , bytestring , containers , data-fix- , deepseq , Diff >=0.4 && <0.6 || ^>=1.0.2 , directory , dlist , filepath , generic-deriving >=1.10 && <1.15 , generically- , ghc-prim >=0.2 , hashable , indexed-traversable , integer-logarithms >=1 && <1.1 , network-uri , OneTuple- , primitive , QuickCheck , quickcheck-instances >=0.3.29 && <0.5 , scientific@@ -226,7 +225,6 @@ , tasty-golden , tasty-hunit , tasty-quickcheck- , template-haskell , text , text-short , these
src/Data/Aeson/TH.hs view
@@ -945,7 +945,7 @@ (appE [|show|] (varE unknownFields))) [] ]- x:xs = [ lookupField argTy+ (x,xs) = nonEmpty [ lookupField argTy `appE` dispatchParseJSON jc conName tvMap argTy `appE` litE (stringL $ show tName) `appE` litE (stringL $ constructorTagModifier opts $ nameBase conName)@@ -955,6 +955,11 @@ | (field, argTy) <- zip fields argTys ] +-- A hack, as I'm too lazy to changge code to not assume fields are non empty.+nonEmpty :: [a] -> (a, [a])+nonEmpty (x:xs) = (x,xs)+nonEmpty [] = error "unexpected empty list"+ getValField :: Name -> String -> [MatchQ] -> Q Exp getValField obj valFieldName matches = do val <- newName "val"@@ -1056,12 +1061,12 @@ -> [Type] -- ^ The argument types of the constructor. -> Name -- ^ Name of the type to which the constructor belongs. -> Name -- ^ 'Con'structor name.- -> Integer -- ^ 'Con'structor arity.+ -> Integer -- ^ 'Con'structor arity. >= 1 -> [Q Match] parseProduct jc tvMap argTys tName conName numArgs = [ do arr <- newName "arr" -- List of: "parseJSON (arr `V.unsafeIndex` <IX>)"- let x:xs = [ dispatchParseJSON jc conName tvMap argTy+ let (x,xs) = nonEmpty [ dispatchParseJSON jc conName tvMap argTy `appE` infixApp (varE arr) [|V.unsafeIndex|]