import Bag
import FastString
import Outputable
-import Data.Traversable( traverse )
+-- import Data.Traversable( traverse )
\end{code}
\begin{code}
| isIntTy ty && inIntRange i = Just (HsLit (HsInt i))
| isWordTy ty && inWordRange i = Just (mkLit wordDataCon (HsWordPrim i))
| isIntegerTy ty = Just (HsLit (HsInteger i ty))
- | otherwise = shortCutLit (HsFractional (fromInteger i)) ty
+ | otherwise = shortCutLit (HsFractional (FL { fl_text = show i, fl_value = fromInteger i })) ty
-- The 'otherwise' case is important
-- Consider (3 :: Float). Syntactically it looks like an IntLit,
-- so we'll call shortCutIntLit, but of course it's a float
-- literals, compiled without -O
shortCutLit (HsFractional f) ty
- | isFloatTy ty = Just (mkLit floatDataCon (HsFloatPrim f))
- | isDoubleTy ty = Just (mkLit doubleDataCon (HsDoublePrim f))
+ | isFloatTy ty = Just (mkLit floatDataCon (HsFloatPrim (fl_value f)))
+ | isDoubleTy ty = Just (mkLit doubleDataCon (HsDoublePrim (fl_value f)))
| otherwise = Nothing
shortCutLit (HsIsString s) ty
go (AxiomInstCo ax cos) = do { cos' <- mapM go cos; return (AxiomInstCo ax cos') }
go (AppCo co1 co2) = do { co1' <- go co1; co2' <- go co2
; return (mkAppCo co1' co2') }
- go (PredCo pco) = do { pco' <- go `traverse` pco; return (mkPredCo pco') }
go (UnsafeCo t1 t2) = do { t1' <- zonkTcTypeToType env t1
; t2' <- zonkTcTypeToType env t2
; return (mkUnsafeCo t1' t2') }