diff options
author | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-09-20 17:56:32 +0000 |
---|---|---|
committer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-09-20 17:56:32 +0000 |
commit | 8912a05e1bcc30c7e8e5e017d9cf10176076f141 (patch) | |
tree | a1e7afc91ca5d8923760335c9cf213d2e8cdb9da /compiler/simplCore/SimplUtils.lhs | |
parent | 8c9cfd756219ed60ebcdf5cd370a3d083fd7e4b8 (diff) | |
download | haskell-8912a05e1bcc30c7e8e5e017d9cf10176076f141.tar.gz |
fix default case filling-in for GADTs
Mon Sep 18 17:04:19 EDT 2006 Manuel M T Chakravarty <chak@cse.unsw.edu.au>
* fix default case filling-in for GADTs
Sun Aug 6 20:09:06 EDT 2006 Manuel M T Chakravarty <chak@cse.unsw.edu.au>
* fix default case filling-in for GADTs
Fri Jul 28 13:19:40 EDT 2006 kevind@bu.edu
Diffstat (limited to 'compiler/simplCore/SimplUtils.lhs')
-rw-r--r-- | compiler/simplCore/SimplUtils.lhs | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/compiler/simplCore/SimplUtils.lhs b/compiler/simplCore/SimplUtils.lhs index 235cdfe5f4..ebe4083a0a 100644 --- a/compiler/simplCore/SimplUtils.lhs +++ b/compiler/simplCore/SimplUtils.lhs @@ -1139,28 +1139,6 @@ tryRhsTyLam env tyvars body -- Only does something if there's a let %* * %************************************************************************ -\begin{code} -mkDataConAlt :: DataCon -> [OutType] -> InExpr -> SimplM InAlt --- Make a data-constructor alternative to replace the DEFAULT case --- NB: there's something a bit bogus here, because we put OutTypes into an InAlt -mkDataConAlt con inst_tys rhs - = ASSERT(not (isNewTyCon (dataConTyCon con))) - do { tv_uniqs <- getUniquesSmpl - ; arg_uniqs <- getUniquesSmpl - ; let tv_bndrs = zipWith mk_tv_bndr (dataConExTyVars con) tv_uniqs - arg_tys = dataConInstArgTys con (inst_tys ++ mkTyVarTys tv_bndrs) - arg_bndrs = zipWith mk_arg arg_tys arg_uniqs - ; return (DataAlt con, tv_bndrs ++ arg_bndrs, rhs) } - where - mk_arg arg_ty uniq -- Equality predicates get a TyVar - -- while dictionaries and others get an Id - | isEqPredTy arg_ty = mk_tv arg_ty uniq - | otherwise = mk_id arg_ty uniq - - mk_tv_bndr tv uniq = mk_tv (tyVarKind tv) uniq - mk_tv kind uniq = mkTyVar (mkSysTvName uniq FSLIT("t")) kind - mk_id ty uniq = mkSysLocal FSLIT("a") uniq ty -\end{code} mkCase puts a case expression back together, trying various transformations first. |