packages feed

barbies-th 0.1 → 0.1.1

raw patch · 4 files changed

+18/−6 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Revision history for barbies-th -## 0.1.0.0 -- YYYY-mm-dd+## 0.1.1 -- 2020/04/19++* Improved the deriving mechanism; deriving clauses within `declareBareB` are translated into `deriving via Barbie ...`++## 0.1 -- 2020/02  * First version. Released on an unsuspecting world.
barbies-th.cabal view
@@ -1,6 +1,6 @@ cabal-version:       2.4 name:                barbies-th-version:             0.1+version:             0.1.1 synopsis:            Create strippable HKD via TH description:         Please see Data.Barbie.TH bug-reports:         https://github.com/fumieval/barbies-th
src/Data/Barbie/TH.hs view
@@ -2,6 +2,8 @@ {-# LANGUAGE PolyKinds #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE DerivingVia #-}+{-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-}@@ -47,7 +49,7 @@   decs' <- traverse go decs   return $ concat decs'   where-    go (DataD _ dataName tvbs _ [con@(RecC conName fields)] drv) = do+    go (DataD _ dataName tvbs _ [con@(RecC conName fields)] classes) = do       varS <- newName "sw"       varW <- newName "h"       let xs = varNames "x" fields@@ -100,12 +102,16 @@             (\r (x, y) -> [|$(r) (Pair $(varE x) $(varE y))|])             (conE conName) (zip xs ys))         |]+      drvs <- traverse (\cls ->+        [d|deriving via Barbie $(datC) $(varT varW)+            instance ($(cls) (Barbie $(datC) $(varT varW))) => $(cls) ($(datC) $(varT varW))|])+        [ pure t | DerivClause _ preds <- classes, t <- preds ]       return $ DataD [] dataName         (tvbs ++ [PlainTV varS, PlainTV varW])         Nothing         [transformed]-        (DerivClause Nothing [ConT ''Generic] : drv)-        : decs+        [DerivClause Nothing [ConT ''Generic]]+        : decs ++ concat drvs     go d = pure [d]  varNames :: String -> [VarBangType] -> [Name]
tests/Main.hs view
@@ -4,6 +4,8 @@ {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE DerivingVia #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS -ddump-splices #-} module Main where import Data.Barbie.TH@@ -14,5 +16,5 @@   data Foo = Foo     { foo :: Int     , bar :: String-    }  |]+    } deriving (Show, Eq) |] main = pure ()