    module Distribution.Solver.Types.Variable where

    import Prelude (Eq, Show)

    import Distribution.Solver.Types.OptionalStanza

    import Distribution.PackageDescription (FlagName)

    -- | Variables used by the dependency solver. This type is similar to the
    -- internal 'Var' type.
    data Variable qpn =
        PackageVar qpn
      | FlagVar qpn FlagName
      | StanzaVar qpn OptionalStanza
      deriving (Variable qpn -> Variable qpn -> Bool
    (Variable qpn -> Variable qpn -> Bool)
    -> (Variable qpn -> Variable qpn -> Bool) -> Eq (Variable qpn)
    forall qpn. Eq qpn => Variable qpn -> Variable qpn -> Bool
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: forall qpn. Eq qpn => Variable qpn -> Variable qpn -> Bool
    == :: Variable qpn -> Variable qpn -> Bool
    $c/= :: forall qpn. Eq qpn => Variable qpn -> Variable qpn -> Bool
    /= :: Variable qpn -> Variable qpn -> Bool
    Eq, Int -> Variable qpn -> ShowS
    [Variable qpn] -> ShowS
    Variable qpn -> String
    (Int -> Variable qpn -> ShowS)
    -> (Variable qpn -> String)
    -> ([Variable qpn] -> ShowS)
    -> Show (Variable qpn)
    forall qpn. Show qpn => Int -> Variable qpn -> ShowS
    forall qpn. Show qpn => [Variable qpn] -> ShowS
    forall qpn. Show qpn => Variable qpn -> String
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: forall qpn. Show qpn => Int -> Variable qpn -> ShowS
    showsPrec :: Int -> Variable qpn -> ShowS
    $cshow :: forall qpn. Show qpn => Variable qpn -> String
    show :: Variable qpn -> String
    $cshowList :: forall qpn. Show qpn => [Variable qpn] -> ShowS
    showList :: [Variable qpn] -> ShowS
    Show)