projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Two more small bugs in abstractFloats
[ghc-hetmet.git]
/
compiler
/
simplCore
/
OccurAnal.lhs
diff --git
a/compiler/simplCore/OccurAnal.lhs
b/compiler/simplCore/OccurAnal.lhs
index
8b3d45e
..
fc9104f
100644
(file)
--- a/
compiler/simplCore/OccurAnal.lhs
+++ b/
compiler/simplCore/OccurAnal.lhs
@@
-328,8
+328,13
@@
reOrderCycle bndrs (bind : binds)
-- But we won't because constructor args are marked "Many".
-- Cheap and cheerful; the simplifer moves casts out of the way
-- But we won't because constructor args are marked "Many".
-- Cheap and cheerful; the simplifer moves casts out of the way
+ -- The lambda case is important to spot x = /\a. C (f a)
+ -- which comes up when C is a dictionary constructor and
+ -- f is a default method.
+ -- Example: the instance for Show (ST s a) in GHC.ST
is_con_app (Var v) = isDataConWorkId v
is_con_app (App f _) = is_con_app f
is_con_app (Var v) = isDataConWorkId v
is_con_app (App f _) = is_con_app f
+ is_con_app (Lam b e) | isTyVar b = is_con_app e
is_con_app (Note _ e) = is_con_app e
is_con_app other = False
is_con_app (Note _ e) = is_con_app e
is_con_app other = False