summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/TyCo
diff options
context:
space:
mode:
authorDaniel Rogozin <daniel.rogozin@serokell.io>2020-05-27 13:35:24 +0300
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-02-06 09:26:51 -0500
commit7f3524efcbd58ca6837ec0ffca6ddd121d64e4de (patch)
treeaa296d28ed6475799ef369b0608736afcb467495 /compiler/GHC/Core/TyCo
parent640a3ece333d1b0d0af8f353c3e1df9dd0cb9ef3 (diff)
downloadhaskell-7f3524efcbd58ca6837ec0ffca6ddd121d64e4de.tar.gz
The Char kind (#11342)
Co-authored-by: Rinat Stryungis <rinat.stryungis@serokell.io> Implement GHC Proposal #387 * Parse char literals 'x' at the type level * New built-in type families CmpChar, ConsSymbol, UnconsSymbol * New KnownChar class (cf. KnownSymbol and KnownNat) * New SomeChar type (cf. SomeSymbol and SomeNat) * CharTyLit support in template-haskell Updated submodules: binary, haddock. Metric Decrease: T5205 haddock.base Metric Increase: Naperian T13035
Diffstat (limited to 'compiler/GHC/Core/TyCo')
-rw-r--r--compiler/GHC/Core/TyCo/Rep.hs14
1 files changed, 10 insertions, 4 deletions
diff --git a/compiler/GHC/Core/TyCo/Rep.hs b/compiler/GHC/Core/TyCo/Rep.hs
index be7bdb3aef..69db14e7f0 100644
--- a/compiler/GHC/Core/TyCo/Rep.hs
+++ b/compiler/GHC/Core/TyCo/Rep.hs
@@ -192,13 +192,19 @@ instance Outputable Type where
data TyLit
= NumTyLit Integer
| StrTyLit FastString
+ | CharTyLit Char
deriving (Eq, Data.Data)
instance Ord TyLit where
- compare (NumTyLit _) (StrTyLit _) = LT
- compare (StrTyLit _) (NumTyLit _) = GT
- compare (NumTyLit x) (NumTyLit y) = compare x y
- compare (StrTyLit x) (StrTyLit y) = uniqCompareFS x y
+ compare (NumTyLit x) (NumTyLit y) = compare x y
+ compare (StrTyLit x) (StrTyLit y) = uniqCompareFS x y
+ compare (CharTyLit x) (CharTyLit y) = compare x y
+ compare a b = compare (tag a) (tag b)
+ where
+ tag :: TyLit -> Int
+ tag NumTyLit{} = 0
+ tag StrTyLit{} = 1
+ tag CharTyLit{} = 2
instance Outputable TyLit where
ppr = pprTyLit