module SyntaxTrees.Haskell.ClassDef where import SyntaxTrees.Haskell.Common (Class) import SyntaxTrees.Haskell.DataDef (DerivingStrategy) import SyntaxTrees.Haskell.FnDef (FnDefOrSig) import SyntaxTrees.Haskell.Type (AnyKindedType, ClassConstraint, TypeParam) data ClassDef = ClassDef { ClassDef -> [ClassConstraint] constraints :: [ClassConstraint] , ClassDef -> Class name :: Class , ClassDef -> [TypeParam] typeParams :: [TypeParam] , ClassDef -> [FnDefOrSig] defs :: [FnDefOrSig] } deriving (Int -> ClassDef -> ShowS [ClassDef] -> ShowS ClassDef -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ClassDef] -> ShowS $cshowList :: [ClassDef] -> ShowS show :: ClassDef -> String $cshow :: ClassDef -> String showsPrec :: Int -> ClassDef -> ShowS $cshowsPrec :: Int -> ClassDef -> ShowS Show) data InstanceDef = InstanceDef { InstanceDef -> [ClassConstraint] constraints :: [ClassConstraint] , InstanceDef -> Class class' :: Class , InstanceDef -> [AnyKindedType] types :: [AnyKindedType] , InstanceDef -> [FnDefOrSig] defs :: [FnDefOrSig] } deriving (Int -> InstanceDef -> ShowS [InstanceDef] -> ShowS InstanceDef -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [InstanceDef] -> ShowS $cshowList :: [InstanceDef] -> ShowS show :: InstanceDef -> String $cshow :: InstanceDef -> String showsPrec :: Int -> InstanceDef -> ShowS $cshowsPrec :: Int -> InstanceDef -> ShowS Show) data DerivingDef = DerivingDef { DerivingDef -> DerivingStrategy strategy :: DerivingStrategy , DerivingDef -> [ClassConstraint] constraints :: [ClassConstraint] , DerivingDef -> Class class' :: Class , DerivingDef -> [AnyKindedType] types :: [AnyKindedType] , DerivingDef -> Maybe Class derivingVia :: Maybe Class } deriving (Int -> DerivingDef -> ShowS [DerivingDef] -> ShowS DerivingDef -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [DerivingDef] -> ShowS $cshowList :: [DerivingDef] -> ShowS show :: DerivingDef -> String $cshow :: DerivingDef -> String showsPrec :: Int -> DerivingDef -> ShowS $cshowsPrec :: Int -> DerivingDef -> ShowS Show)