summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorsimonpj@microsoft.com <unknown>2008-12-05 10:19:32 +0000
committersimonpj@microsoft.com <unknown>2008-12-05 10:19:32 +0000
commita2fe6073155b0d056a257d8f860baf9816c2381e (patch)
tree765c996cf2a1e7322b1181f709e89c78ee09a1ef /compiler
parent2d815d1f4a724875a6c724b5fd320967ee6219ba (diff)
downloadhaskell-a2fe6073155b0d056a257d8f860baf9816c2381e.tar.gz
Make CoreToStg a little more robust to eta expansion
Diffstat (limited to 'compiler')
-rw-r--r--compiler/stgSyn/CoreToStg.lhs7
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/stgSyn/CoreToStg.lhs b/compiler/stgSyn/CoreToStg.lhs
index f7347ae83c..1c8d4b1dfb 100644
--- a/compiler/stgSyn/CoreToStg.lhs
+++ b/compiler/stgSyn/CoreToStg.lhs
@@ -1082,9 +1082,16 @@ myCollectArgs expr
go (Note (SCC _) _) _ = pprPanic "CoreToStg.myCollectArgs" (ppr expr)
go (Cast e _) as = go e as
go (Note _ e) as = go e as
+ go (Lam b e) as
+ | isTyVar b = go e as -- Note [Collect args]
go _ _ = pprPanic "CoreToStg.myCollectArgs" (ppr expr)
\end{code}
+Note [Collect args]
+~~~~~~~~~~~~~~~~~~~
+This big-lambda case occurred following a rather obscure eta expansion.
+It all seems a bit yukky to me.
+
\begin{code}
stgArity :: Id -> HowBound -> Arity
stgArity _ (LetBound _ arity) = arity