import TyCon ( tyConDataConsIfAvailable, isEnumerationTyCon, isNewTyCon )
import DataCon ( dataConTag, dataConTyCon, dataConId, fIRST_TAG )
import CoreUtils ( exprIsValue, cheapEqExpr, exprIsConApp_maybe )
-import Type ( tyConAppTyCon )
+import Type ( tyConAppTyCon, eqType )
import OccName ( occNameUserString)
import PrelNames ( unpackCStringFoldrName, unpackCStringFoldrIdKey, hasKey )
import Name ( Name )
do_lit_eq is_eq name lit expr
= Just (name, Case expr (mkWildId (literalType lit))
- [(LitAlt lit, [], val_if_eq),
- (DEFAULT, [], val_if_neq)])
+ [(DEFAULT, [], val_if_neq),
+ (LitAlt lit, [], val_if_eq)])
where
val_if_eq | is_eq = trueVal
| otherwise = falseVal
]
| unpk `hasKey` unpackCStringFoldrIdKey &&
c1 `cheapEqExpr` c2
- = ASSERT( ty1 == ty2 )
+ = ASSERT( ty1 `eqType` ty2 )
Just (SLIT("AppendLitString"),
Var unpk `App` Type ty1
`App` Lit (MachStr (s1 _APPEND_ s2))