+
+shortCutLit :: HsOverLit -> TcType -> Maybe TcExpr
+shortCutLit (HsIntegral i fi) ty
+ | isIntTy ty && inIntRange i && fi == fromIntegerName -- Short cut for Int
+ = Just (HsLit (HsInt i))
+ | isIntegerTy ty && fi == fromIntegerName -- Short cut for Integer
+ = Just (HsLit (HsInteger i))
+
+shortCutLit (HsFractional f fr) ty
+ | isFloatTy ty && fr == fromRationalName
+ = Just (mkHsConApp floatDataCon [] [HsLit (HsFloatPrim f)])
+ | isDoubleTy ty && fr == fromRationalName
+ = Just (mkHsConApp doubleDataCon [] [HsLit (HsDoublePrim f)])
+
+shortCutLit lit ty
+ = Nothing