packages feed

cornea 0.2.1.0 → 0.2.2.0

raw patch · 2 files changed

+20/−5 lines, 2 files

Files

cornea.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.12 name: cornea-version: 0.2.1.0+version: 0.2.2.0 license: OtherLicense license-file: LICENSE copyright: 2019 Torsten Schmits
lib/Data/DeepPrisms.hs view
@@ -12,7 +12,13 @@   DatatypeInfo(datatypeCons, datatypeName),   reifyDatatype,   )-import Language.Haskell.TH.Syntax (ModName(..), Name(Name), NameFlavour(NameQ, NameS, NameG), OccName(..))+import Language.Haskell.TH.Syntax (+  ModName(..),+  Name(Name),+  NameFlavour(NameQ, NameS, NameG),+  NameSpace(VarName),+  OccName(..),+  )  class DeepPrisms e e' where   prism :: Prism' e e'@@ -91,13 +97,22 @@     (Just a, Just b) | a == b -> True     _ -> False +-- |Convert a constructor's NameFlavour to one for a prism+-- The NameSpace field is DataName for the constructor and must be VarName+-- Curiously, this only surfaces as a bug when having a certain nesting level across modules+prismFlavour :: NameFlavour -> NameFlavour+prismFlavour (NameG _ pkg mod') =+  NameG VarName pkg mod'+prismFlavour n =+  n+ prismName :: Name -> Name -> ExpQ-prismName (Name _ topFlavour) (Name (OccName n) prismFlavour) =+prismName (Name _ topFlavour) (Name (OccName n) localFlavour) =   varE (Name (OccName ('_' : n)) flavour)   where     flavour-      | sameModule topFlavour prismFlavour = NameS-      | otherwise = prismFlavour+      | sameModule topFlavour localFlavour = NameS+      | otherwise = prismFlavour localFlavour  deepInstances :: Name -> [Name] -> Name -> Name -> DecsQ deepInstances top intermediate name tpe = do