module Unison.PatternMatchCoverage.PmLit where

import Unison.Prelude
import Unison.Util.Pretty (Pretty, string)

data PmLit
  = Int Int64
  | Nat Word64
  | Boolean Bool
  | Float Double
  | Text Text
  | Char Char
  deriving stock (Int -> PmLit -> ShowS
[PmLit] -> ShowS
PmLit -> String
(Int -> PmLit -> ShowS)
-> (PmLit -> String) -> ([PmLit] -> ShowS) -> Show PmLit
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PmLit -> ShowS
showsPrec :: Int -> PmLit -> ShowS
$cshow :: PmLit -> String
show :: PmLit -> String
$cshowList :: [PmLit] -> ShowS
showList :: [PmLit] -> ShowS
Show, PmLit -> PmLit -> Bool
(PmLit -> PmLit -> Bool) -> (PmLit -> PmLit -> Bool) -> Eq PmLit
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PmLit -> PmLit -> Bool
== :: PmLit -> PmLit -> Bool
$c/= :: PmLit -> PmLit -> Bool
/= :: PmLit -> PmLit -> Bool
Eq, Eq PmLit
Eq PmLit =>
(PmLit -> PmLit -> Ordering)
-> (PmLit -> PmLit -> Bool)
-> (PmLit -> PmLit -> Bool)
-> (PmLit -> PmLit -> Bool)
-> (PmLit -> PmLit -> Bool)
-> (PmLit -> PmLit -> PmLit)
-> (PmLit -> PmLit -> PmLit)
-> Ord PmLit
PmLit -> PmLit -> Bool
PmLit -> PmLit -> Ordering
PmLit -> PmLit -> PmLit
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 :: PmLit -> PmLit -> Ordering
compare :: PmLit -> PmLit -> Ordering
$c< :: PmLit -> PmLit -> Bool
< :: PmLit -> PmLit -> Bool
$c<= :: PmLit -> PmLit -> Bool
<= :: PmLit -> PmLit -> Bool
$c> :: PmLit -> PmLit -> Bool
> :: PmLit -> PmLit -> Bool
$c>= :: PmLit -> PmLit -> Bool
>= :: PmLit -> PmLit -> Bool
$cmax :: PmLit -> PmLit -> PmLit
max :: PmLit -> PmLit -> PmLit
$cmin :: PmLit -> PmLit -> PmLit
min :: PmLit -> PmLit -> PmLit
Ord)

prettyPmLit :: (IsString s) => PmLit -> Pretty s
prettyPmLit :: forall s. IsString s => PmLit -> Pretty s
prettyPmLit =
  String -> Pretty s
forall s. IsString s => String -> Pretty s
string (String -> Pretty s) -> (PmLit -> String) -> PmLit -> Pretty s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \case
    Int Int64
x -> Int64 -> String
forall a. Show a => a -> String
show Int64
x
    Nat Word64
x -> Word64 -> String
forall a. Show a => a -> String
show Word64
x
    Boolean Bool
x -> Bool -> String
forall a. Show a => a -> String
show Bool
x
    Float Double
x -> Double -> String
forall a. Show a => a -> String
show Double
x
    Text Text
x -> Text -> String
forall a. Show a => a -> String
show Text
x
    Char Char
x -> Char -> String
forall a. Show a => a -> String
show Char
x