diff options
author | simonpj@microsoft.com <unknown> | 2007-02-21 16:30:47 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2007-02-21 16:30:47 +0000 |
commit | eb2bf7ad9f967861da2e19ff71a80428c7c2df28 (patch) | |
tree | 91c74d096d3b81b46256146402087d12340692fa /compiler/specialise/Rules.lhs | |
parent | ede4d6f3d1c7ec99c2bbf2148fcb56588a649979 (diff) | |
download | haskell-eb2bf7ad9f967861da2e19ff71a80428c7c2df28.tar.gz |
Deal more correctly with orphan instances
Conal Eliott (Trac #1145) exposed a nasty flaw in the way in which
orphan instances are computed, when there are functional dependencies
in the class. It took me some time to figure out what was going on,
and led to more refactoring.
Briefly:
* Elaborate comments about orphan-hood and versioning added to IfaceSyn
* The is_orph field vanishes from InstEnv.Instance
* Similarly ru_orph vanishes from CoreSyn.CoreRule
* Orphan-hood is computed in MkIface.instanceToIfaceInst, and
MkIface.coreRuleToIfaceRule
Elsewhere just tidying up.
Diffstat (limited to 'compiler/specialise/Rules.lhs')
-rw-r--r-- | compiler/specialise/Rules.lhs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/specialise/Rules.lhs b/compiler/specialise/Rules.lhs index 10eb3f8e86..4b7e926e42 100644 --- a/compiler/specialise/Rules.lhs +++ b/compiler/specialise/Rules.lhs @@ -91,7 +91,7 @@ mkLocalRule name act fn bndrs args rhs = Rule { ru_name = name, ru_fn = fn, ru_act = act, ru_bndrs = bndrs, ru_args = args, ru_rhs = rhs, ru_rough = roughTopNames args, - ru_orph = Just (nameOccName fn), ru_local = True } + ru_local = True } -------------- roughTopNames :: [CoreExpr] -> [Maybe Name] |