alloy 1.2.1 → 1.2.2
raw patch · 2 files changed
+18/−19 lines, 2 filesdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base
API changes (from Hackage documentation)
- Data.Generics.Alloy.GenInstances: genClass :: GenInstanceConfig -> GenClassOption
- Data.Generics.Alloy.GenInstances: genEffect :: GenInstanceConfig -> Bool
- Data.Generics.Alloy.GenInstances: genOverlapped :: GenInstanceConfig -> GenOverlappedOption
- Data.Generics.Alloy.GenInstances: genPure :: GenInstanceConfig -> Bool
- Data.Generics.Alloy.GenInstances: genRoute :: GenInstanceConfig -> Bool
- Data.Generics.Alloy.GenInstances: instance Eq ClassType
- Data.Generics.Alloy.GenInstances: instance Eq DataBox
- Data.Generics.Alloy.GenInstances: instance Eq FuncType
- Data.Generics.Alloy.GenInstances: instance Eq GenClassOption
- Data.Generics.Alloy.GenInstances: instance Eq GenInstanceConfig
- Data.Generics.Alloy.GenInstances: instance Eq GenOverlappedOption
- Data.Generics.Alloy.GenInstances: instance Eq Witness
- Data.Generics.Alloy.GenInstances: instance Read GenClassOption
- Data.Generics.Alloy.GenInstances: instance Read GenInstanceConfig
- Data.Generics.Alloy.GenInstances: instance Read GenOverlappedOption
- Data.Generics.Alloy.GenInstances: instance Show ClassType
- Data.Generics.Alloy.GenInstances: instance Show FuncType
- Data.Generics.Alloy.GenInstances: instance Show GenClassOption
- Data.Generics.Alloy.GenInstances: instance Show GenInstanceConfig
- Data.Generics.Alloy.GenInstances: instance Show GenOverlappedOption
- Data.Generics.Alloy.Route: instance Eq (Route inner outer)
- Data.Generics.Alloy.Route: instance Ord (Route inner outer)
- Data.Generics.Alloy.Route: instance Show (Route inner outer)
+ Data.Generics.Alloy.GenInstances: [genClass] :: GenInstanceConfig -> GenClassOption
+ Data.Generics.Alloy.GenInstances: [genEffect] :: GenInstanceConfig -> Bool
+ Data.Generics.Alloy.GenInstances: [genOverlapped] :: GenInstanceConfig -> GenOverlappedOption
+ Data.Generics.Alloy.GenInstances: [genPure] :: GenInstanceConfig -> Bool
+ Data.Generics.Alloy.GenInstances: [genRoute] :: GenInstanceConfig -> Bool
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.ClassType
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.DataBox
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.FuncType
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.GenClassOption
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.GenInstanceConfig
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.GenOverlappedOption
+ Data.Generics.Alloy.GenInstances: instance GHC.Classes.Eq Data.Generics.Alloy.GenInstances.Witness
+ Data.Generics.Alloy.GenInstances: instance GHC.Read.Read Data.Generics.Alloy.GenInstances.GenClassOption
+ Data.Generics.Alloy.GenInstances: instance GHC.Read.Read Data.Generics.Alloy.GenInstances.GenInstanceConfig
+ Data.Generics.Alloy.GenInstances: instance GHC.Read.Read Data.Generics.Alloy.GenInstances.GenOverlappedOption
+ Data.Generics.Alloy.GenInstances: instance GHC.Show.Show Data.Generics.Alloy.GenInstances.ClassType
+ Data.Generics.Alloy.GenInstances: instance GHC.Show.Show Data.Generics.Alloy.GenInstances.FuncType
+ Data.Generics.Alloy.GenInstances: instance GHC.Show.Show Data.Generics.Alloy.GenInstances.GenClassOption
+ Data.Generics.Alloy.GenInstances: instance GHC.Show.Show Data.Generics.Alloy.GenInstances.GenInstanceConfig
+ Data.Generics.Alloy.GenInstances: instance GHC.Show.Show Data.Generics.Alloy.GenInstances.GenOverlappedOption
+ Data.Generics.Alloy.Route: instance GHC.Classes.Eq (Data.Generics.Alloy.Route.Route inner outer)
+ Data.Generics.Alloy.Route: instance GHC.Classes.Ord (Data.Generics.Alloy.Route.Route inner outer)
+ Data.Generics.Alloy.Route: instance GHC.Show.Show (Data.Generics.Alloy.Route.Route inner outer)
- Data.Generics.Alloy.Effect: (:-*) :: (t -> m t) -> (opT m) -> :-* t opT m
+ Data.Generics.Alloy.Effect: (:-*) :: (t -> m t) -> (opT m) -> (:-*) t opT m
- Data.Generics.Alloy.GenInstances: genVectorInstance :: Data v => v -> GenInstance
+ Data.Generics.Alloy.GenInstances: genVectorInstance :: (Data v) => v -> GenInstance
- Data.Generics.Alloy.Pure: (:-) :: (t -> t) -> opT -> :- t opT
+ Data.Generics.Alloy.Pure: (:-) :: (t -> t) -> opT -> (:-) t opT
- Data.Generics.Alloy.Route: (:-@) :: ((t, Route t outer) -> m t) -> (opT m outer) -> :-@ t opT m outer
+ Data.Generics.Alloy.Route: (:-@) :: ((t, Route t outer) -> m t) -> (opT m outer) -> (:-@) t opT m outer
Files
- Data/Generics/Alloy/GenInstances.hs +16/−17
- alloy.cabal +2/−2
Data/Generics/Alloy/GenInstances.hs view
@@ -1,5 +1,5 @@ -- Alloy.--- Copyright (c) 2008-2009, 2012 University of Kent.+-- Copyright (c) 2008-2009, 2012, 2016 University of Kent. -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without@@ -67,23 +67,19 @@ genVectorInstance, GenOverlappedOption(..), GenClassOption(GenOneClass), GenInstanceConfig(..)) where -import Control.Monad.State-import Data.Char-import Data.Generics-import Data.List+import Control.Monad.State (StateT, execStateT, get, liftIO, liftM, modify, when)+import Data.Char (isAlphaNum, ord)+import Data.Generics (Data, Constr, Typeable, dataTypeConstrs, dataTypeOf, fromConstr, gmapQ, isAlgType)+import Data.List (find, intersperse, nub, sort, sortBy) import Data.Map (Map) import qualified Data.Map as Map-import Data.Ord+import Data.Ord (comparing) import Data.Set (Set) import Data.Vector (Vector) import qualified Data.Set as Set-import qualified Data.Typeable as Ty+import Data.Typeable as Ty (Proxy(..), TyCon, TypeRep, splitTyConApp, tyConModule, typeRep) import qualified Data.Vector as Vector -#if __GLASGOW_HASKELL__ < 702-type TypeRepKey = Int-#endif- -- | The option controlling whether the generated instances can be overlapped. -- If you choose 'GenWithOverlapped' many less instances (around half, in our -- experience) will be generated, but you must enable the@@ -163,8 +159,11 @@ -- The Eq instance is based on the inner type. instance Eq Witness where (==) wx wy = case (witness wx, witness wy) of- (DataBox x, DataBox y) -> typeOf x == typeOf y+ (DataBox x, DataBox y) -> typeRep (makeProxy x) == typeRep (makeProxy y) +makeProxy :: t -> Proxy t+makeProxy _ = Proxy+ funcPlain :: FuncType -> String funcPlain Func = "" funcPlain FuncM = "return"@@ -714,13 +713,13 @@ data DataBox = forall t. Data t => DataBox t instance Eq DataBox where- (==) (DataBox x) (DataBox y) = typeOf x == typeOf y+ (==) (DataBox x) (DataBox y) = typeRep (makeProxy x) == typeRep (makeProxy y) type TypeMap = Map TypeRep (String, Witness) type TypeMapM = StateT TypeMap IO typeKey :: Typeable t => t -> IO TypeRep-typeKey x = return $ typeOf x+typeKey x = return $ typeRep (makeProxy x) toQualName :: Typeable t => t -> String toQualName w = fst (toQualNameMod w)@@ -728,7 +727,7 @@ -- First item is name of type, with everything inside qualified -- Second item is the module prefix (if any) of the outermost type toQualNameMod :: Typeable t => t -> (String, String)-toQualNameMod w = toQualNameMod' (typeOf w)+toQualNameMod w = toQualNameMod' (typeRep (makeProxy w)) toQualNameMod' :: TypeRep -> (String, String) toQualNameMod' tr = case (show con, args) of@@ -764,7 +763,7 @@ doType :: Data t => t -> TypeMapM () doType x = do map <- get- key <- liftIO $ return $ typeOf rep+ key <- liftIO $ return rep when (not $ key `Map.member` map) $ do modify $ Map.insert key (reps, Plain (DataBox x)) case custom $ DataBox x of@@ -773,7 +772,7 @@ when (isAlgType dtype) $ mapM_ doConstr $ dataTypeConstrs dtype where- rep = typeOf x + rep = typeRep (makeProxy x) reps = show rep dtype = dataTypeOf x
alloy.cabal view
@@ -1,5 +1,5 @@ Name: alloy-Version: 1.2.1+Version: 1.2.2 License: BSD3 License-File: LICENSE Author: Neil Brown and Adam Sampson@@ -30,7 +30,7 @@ tutorial/Selective.lhs Library- Build-Depends: base >= 4.3 && < 5, containers, mtl, syb, vector+ Build-Depends: base >= 4.7 && < 5, containers, mtl, syb, vector Exposed-modules: Data.Generics.Alloy Data.Generics.Alloy.Effect