import Type ( Type, splitAlgTyConApp, mkTyVarTys,
isUnboxedType, splitTyConApp_maybe
)
-import TysPrim ( intPrimTy,
- charPrimTy,
- floatPrimTy,
- doublePrimTy,
- addrPrimTy,
- wordPrimTy
- )
import TysWiredIn ( nilDataCon, consDataCon,
- mkTupleTy, tupleCon,
- mkUnboxedTupleTy, unboxedTupleCon,
mkListTy,
- charTy, charDataCon,
- intTy, intDataCon,
- floatTy, floatDataCon,
- doubleTy, doubleDataCon,
- addrTy, addrDataCon,
- wordTy, wordDataCon,
- stringTy
+ mkTupleTy, tupleCon,
+ mkUnboxedTupleTy, unboxedTupleCon
)
import Unique ( unboundKey )
import TyCon ( tyConDataCons )
import {-# SOURCE #-} Match ( matchSimply )
-import HsSyn ( OutPat(..) )
+import HsSyn
import TcHsSyn ( TypecheckedPat )
import DsHsSyn ( outPatType, collectTypedPatBinders )
import CoreSyn
import Id ( idType, Id, mkWildId )
import Const ( Literal(..), Con(..) )
import TyCon ( isNewTyCon, tyConDataCons )
-import DataCon ( DataCon, StrictnessMark, maybeMarkedUnboxed, dataConStrictMarks,
- dataConId, splitProductType_maybe
+import DataCon ( DataCon, StrictnessMark, maybeMarkedUnboxed,
+ dataConStrictMarks, dataConId, splitProductType_maybe
)
import Type ( mkFunTy, isUnLiftedType, splitAlgTyConApp, unUsgTy,
Type
)
-import TysWiredIn ( unitDataCon, tupleCon, stringTy, unitTy, unitDataCon,
- nilDataCon, consDataCon
+import TysPrim ( intPrimTy,
+ charPrimTy,
+ floatPrimTy,
+ doublePrimTy,
+ addrPrimTy,
+ wordPrimTy
+ )
+import TysWiredIn ( nilDataCon, consDataCon,
+ tupleCon,
+ stringTy,
+ unitDataCon, unitTy,
+ charTy, charDataCon,
+ intTy, intDataCon,
+ floatTy, floatDataCon,
+ doubleTy, doubleDataCon,
+ addrTy, addrDataCon,
+ wordTy, wordDataCon
)
import UniqSet ( mkUniqSet, minusUniqSet, isEmptyUniqSet, UniqSet )
import Outputable
one_str_lit (HsString s) = _LENGTH_ s == (1::Int)
one_str_lit other_lit = False
- mk_first_char_lit (HsString s) = ConPat charDataCon charTy [] [] [LitPat (HsCharPrim (_HEAD_ s))]
+ mk_first_char_lit (HsString s) = ConPat charDataCon charTy [] [] [LitPat (HsCharPrim (_HEAD_ s)) charPrimTy]
\end{code}
mk_core_lit ty (HsFloatPrim f) = MachFloat f
mk_core_lit ty (HsDoublePrim d) = MachDouble d
mk_core_lit ty (HsLitLit s) = ASSERT(isUnLiftedType ty)
- MachLitLit s (panic
- "MatchLit.matchLiterals:mk_core_lit:HsLitLit; typePrimRep???")
+ MachLitLit s ty
mk_core_lit ty other = panic "matchLiterals:mk_core_lit:unhandled"
\end{code}
)
import Name ( Name, getOccName, getSrcLoc )
import FieldLabel ( fieldLabelName )
-import TcEnv ( tcLookupValue,
+import TcEnv ( tcLookupValue, tcLookupClassByKey,
tcLookupValueByKey, newLocalId, badCon
)
import TcType ( TcType, TcTyVar, tcInstTyVars, newTyVarTy )
import Bag ( Bag )
import CmdLineOpts ( opt_IrrefutableTuples )
-import DataCon ( DataCon, dataConSig, dataConFieldLabels, dataConSourceArity )
+import DataCon ( DataCon, dataConSig, dataConFieldLabels,
+ dataConSourceArity
+ )
import Id ( Id, idType, isDataConId_maybe )
import Type ( Type, isTauTy, mkTyConApp, boxedTypeKind )
import Subst ( substTy, substTheta )
)
import TysWiredIn ( charTy, stringTy, intTy )
import SrcLoc ( SrcLoc )
-import Unique ( eqClassOpKey, geClassOpKey, minusClassOpKey )
+import Unique ( eqClassOpKey, geClassOpKey, minusClassOpKey,
+ cCallableClassKey
+ )
import Bag
import Util ( zipEqual )
import Outputable