module GHC.Types.ThLevelIndex where
import GHC.Prelude
import GHC.Utils.Outputable
import GHC.Types.Basic ( ImportLevel(..) )
newtype ThLevelIndex = ThLevelIndex Int deriving (ThLevelIndex -> ThLevelIndex -> Bool
(ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool) -> Eq ThLevelIndex
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ThLevelIndex -> ThLevelIndex -> Bool
== :: ThLevelIndex -> ThLevelIndex -> Bool
$c/= :: ThLevelIndex -> ThLevelIndex -> Bool
/= :: ThLevelIndex -> ThLevelIndex -> Bool
Eq, Eq ThLevelIndex
Eq ThLevelIndex =>
(ThLevelIndex -> ThLevelIndex -> Ordering)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> Bool)
-> (ThLevelIndex -> ThLevelIndex -> ThLevelIndex)
-> (ThLevelIndex -> ThLevelIndex -> ThLevelIndex)
-> Ord ThLevelIndex
ThLevelIndex -> ThLevelIndex -> Bool
ThLevelIndex -> ThLevelIndex -> Ordering
ThLevelIndex -> ThLevelIndex -> ThLevelIndex
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ThLevelIndex -> ThLevelIndex -> Ordering
compare :: ThLevelIndex -> ThLevelIndex -> Ordering
$c< :: ThLevelIndex -> ThLevelIndex -> Bool
< :: ThLevelIndex -> ThLevelIndex -> Bool
$c<= :: ThLevelIndex -> ThLevelIndex -> Bool
<= :: ThLevelIndex -> ThLevelIndex -> Bool
$c> :: ThLevelIndex -> ThLevelIndex -> Bool
> :: ThLevelIndex -> ThLevelIndex -> Bool
$c>= :: ThLevelIndex -> ThLevelIndex -> Bool
>= :: ThLevelIndex -> ThLevelIndex -> Bool
$cmax :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
max :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
$cmin :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
min :: ThLevelIndex -> ThLevelIndex -> ThLevelIndex
Ord)
instance Outputable ThLevelIndex where
ppr :: ThLevelIndex -> SDoc
ppr (ThLevelIndex Int
i) = Int -> SDoc
forall doc. IsLine doc => Int -> doc
int Int
i
incThLevelIndex :: ThLevelIndex -> ThLevelIndex
incThLevelIndex :: ThLevelIndex -> ThLevelIndex
incThLevelIndex (ThLevelIndex Int
i) = Int -> ThLevelIndex
ThLevelIndex (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
decThLevelIndex :: ThLevelIndex -> ThLevelIndex
decThLevelIndex :: ThLevelIndex -> ThLevelIndex
decThLevelIndex (ThLevelIndex Int
i) = Int -> ThLevelIndex
ThLevelIndex (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
1)
topLevelIndex :: ThLevelIndex
topLevelIndex :: ThLevelIndex
topLevelIndex = Int -> ThLevelIndex
ThLevelIndex Int
0
spliceLevelIndex :: ThLevelIndex
spliceLevelIndex :: ThLevelIndex
spliceLevelIndex = ThLevelIndex -> ThLevelIndex
decThLevelIndex ThLevelIndex
topLevelIndex
quoteLevelIndex :: ThLevelIndex
quoteLevelIndex :: ThLevelIndex
quoteLevelIndex = ThLevelIndex -> ThLevelIndex
incThLevelIndex ThLevelIndex
topLevelIndex
thLevelIndexFromImportLevel :: ImportLevel -> ThLevelIndex
thLevelIndexFromImportLevel :: ImportLevel -> ThLevelIndex
thLevelIndexFromImportLevel ImportLevel
NormalLevel = ThLevelIndex
topLevelIndex
thLevelIndexFromImportLevel ImportLevel
SpliceLevel = ThLevelIndex
spliceLevelIndex
thLevelIndexFromImportLevel ImportLevel
QuoteLevel = ThLevelIndex
quoteLevelIndex