[project @ 2005-07-27 11:55:43 by simonpj]
authorsimonpj <unknown>
Wed, 27 Jul 2005 11:55:43 +0000 (11:55 +0000)
committersimonpj <unknown>
Wed, 27 Jul 2005 11:55:43 +0000 (11:55 +0000)
Bogon in RULE desguaring

ghc/compiler/deSugar/DsBinds.lhs

index 87fda8e..5be1774 100644 (file)
@@ -266,11 +266,13 @@ decomposeRuleLhs all_bndrs lhs
 
        -- Substitute dicts in the LHS args, so that there 
        -- aren't any lets getting in the way
+       -- Note that we substitute the function too; we might have this as
+       -- a LHS:       let f71 = M.f Int in f71
     go env (Let (NonRec dict rhs) body) 
        = go (extendVarEnv env dict (simpleSubst env rhs)) body
     go env body 
-       = case collectArgs body of
-           (Var fn, args) -> Just (all_bndrs', fn, map (simpleSubst env) args)
+       = case collectArgs (simpleSubst env body) of
+           (Var fn, args) -> Just (all_bndrs', fn, args)
            other          -> Nothing
 
 simpleSubst :: IdEnv CoreExpr -> CoreExpr -> CoreExpr