import PprCore () -- Instances
import OccurAnal
import CoreSubst hiding( substTy )
+import CoreFVs ( exprFreeVars )
import CoreUtils
import Id
import DataCon
import Type
import Coercion
import PrelNames
+import VarEnv ( mkInScopeSet )
import Bag
import Util
import FastTypes
let dump_doc = vcat [ppr dc, ppr dc_univ_tyvars, ppr dc_ex_tyvars,
ppr arg_tys, ppr dc_args, ppr _dc_univ_args,
ppr ex_args, ppr val_args]
- ASSERT2( coreEqType from_ty (mkTyConApp dc_tc _dc_univ_args), dump_doc )
+ in
+ ASSERT2( coreEqType _from_ty (mkTyConApp dc_tc _dc_univ_args), dump_doc )
ASSERT2( all isTypeArg (ex_args ++ co_args), dump_doc )
ASSERT2( equalLength val_args arg_tys, dump_doc )
#endif
analyse _ _ = Nothing
-----------
+ in_scope = mkInScopeSet (exprFreeVars expr)
+
+ -----------
beta (Lam v body) pairs (arg : args)
| isTypeArg arg
= beta body ((v,arg):pairs) args
= Nothing
beta fun pairs args
- = case analyse (substExpr (mkOpenSubst pairs) fun) args of
+ = case analyse (substExpr subst fun) args of
Nothing -> -- pprTrace "Bale out! exprIsConApp_maybe" doc $
Nothing
Just ans -> -- pprTrace "Woo-hoo! exprIsConApp_maybe" doc $
Just ans
where
+ subst = mkOpenSubst in_scope pairs
-- doc = vcat [ppr fun, ppr expr, ppr pairs, ppr args]