arityType dflags (Note _ e) = arityType dflags e
-- Not needed any more: etaExpand is cleverer
--- | ok_note n = arityType dflags e
--- | otherwise = ATop
+-- removed: | ok_note n = arityType dflags e
+-- removed: | otherwise = ATop
arityType dflags (Cast e _) = arityType dflags e
| manifestArity expr >= n = expr -- The no-op case
| otherwise
= eta_expand n us expr ty
- where
-- manifestArity sees how many leading value lambdas there are
manifestArity :: CoreExpr -> Arity
hashExpr e = fromIntegral (hash_expr (1,emptyVarEnv) e .&. 0x7fffffff)
-- UniqFM doesn't like negative Ints
-type HashEnv = (Int, VarEnv Int) -- Hash code for bound variables
+type HashEnv = (Int, VarEnv Int) -- ^ Hash code for bound variables
hash_expr :: HashEnv -> CoreExpr -> Word32
-- Word32, because we're expecting overflows here, and overflowing