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
forall qpn. Eq qpn => Variable qpn -> Variable qpn -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Variable qpn -> Variable qpn -> Bool
$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
Eq, Int -> Variable qpn -> ShowS
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
showList :: [Variable qpn] -> ShowS
$cshowList :: forall qpn. Show qpn => [Variable qpn] -> ShowS
show :: Variable qpn -> String
$cshow :: forall qpn. Show qpn => Variable qpn -> String
showsPrec :: Int -> Variable qpn -> ShowS
$cshowsPrec :: forall qpn. Show qpn => Int -> Variable qpn -> ShowS
Show)