import Id ( idUnfolding )
import CoreTidy ( tidyExpr )
import VarEnv ( emptyTidyEnv )
-import TysPrim ( intPrimTy )
import Literal
import Name
import CostCentre
make_lit l =
case l of
MachChar i | i <= 0xff -> C.Lchar (chr i) t
- MachChar i | otherwise -> C.Lint (toEnum i) (make_ty intPrimTy)
- -- For 'big' characters, use an integer
+ MachChar i | otherwise -> C.Lint (toEnum i) t
+ -- For big characters, use an integer literal with a character type sig
MachStr s -> C.Lstring (unpackFS s) t
MachNullAddr -> C.Lint 0 t
MachInt i -> C.Lint i t
convIntLit i (HsTyVar n)
| n == intPrimRdrName = MachInt i
| n == wordPrimRdrName = MachWord i
+ | n == charPrimRdrName = MachChar (fromInteger i)
convIntLit i aty
= pprPanic "Unknown integer literal type" (ppr aty $$ ppr intPrimRdrName)
wordPrimRdrName, intPrimRdrName, floatPrimRdrName, doublePrimRdrName :: RdrName
wordPrimRdrName = nameRdrName wordPrimTyConName
intPrimRdrName = nameRdrName intPrimTyConName
+charPrimRdrName = nameRdrName charPrimTyConName
floatPrimRdrName = nameRdrName floatPrimTyConName
doublePrimRdrName = nameRdrName doublePrimTyConName