Distribution/Types/Mixin.hs

    {-# LANGUAGE DeriveDataTypeable #-}
    {-# LANGUAGE DeriveGeneric      #-}

    module Distribution.Types.Mixin (
        Mixin(..),
    ) where

    import Distribution.Compat.Prelude
    import Prelude ()

    import Text.PrettyPrint ((<+>))

    import Distribution.Parsec
    import Distribution.Pretty
    import Distribution.Types.IncludeRenaming
    import Distribution.Types.PackageName

    import qualified Distribution.Compat.CharParsing as P

    data Mixin = Mixin { mixinPackageName :: PackageName
                       , mixinIncludeRenaming :: IncludeRenaming }
        deriving (Show, Read, Eq, Ord, Typeable, Data, Generic)

    instance Binary Mixin
    instance Structured Mixin

    instance NFData Mixin where rnf = genericRnf

    instance Pretty Mixin where
        pretty (Mixin pkg_name incl) = pretty pkg_name <+> pretty incl

    instance Parsec Mixin where
        parsec = do
            mod_name <- parsec
            P.spaces
            incl <- parsec
            return (Mixin mod_name incl)