Fix Trac #3813: unused variables in GHCi bindings
[ghc-hetmet.git] / compiler / deSugar / DsExpr.lhs
index d8bd7cd..ef69b47 100644 (file)
@@ -323,6 +323,9 @@ dsExpr (HsDo ListComp stmts body result_ty)
 dsExpr (HsDo DoExpr stmts body result_ty)
   = dsDo stmts body result_ty
 
+dsExpr (HsDo GhciStmt stmts body result_ty)
+  = dsDo stmts body result_ty
+
 dsExpr (HsDo (MDoExpr tbl) stmts body result_ty)
   = dsMDo tbl stmts body result_ty
 
@@ -643,6 +646,9 @@ Example: the foldr/single rule in GHC.Base
    foldr k z [x] = ...
 We do not want to generate a build invocation on the LHS of this RULE!
 
+We fix this by disabling rules in rule LHSs, and testing that
+flag here; see Note [Desugaring RULE left hand sides] in Desugar
+
 To test this I've added a (static) flag -fsimple-list-literals, which
 makes all list literals be generated via the simple route.  
 
@@ -657,6 +663,7 @@ dsExplicitList elt_ty xs
        ; if opt_SimpleListLiterals                     -- -fsimple-list-literals
          || not (dopt Opt_EnableRewriteRules dflags)   -- Rewrite rules off
                -- Don't generate a build if there are no rules to eliminate it!
+               -- See Note [Desugaring RULE left hand sides] in Desugar
          || null dynamic_prefix   -- Avoid build (\c n. foldr c n xs)!
          then return $ mkListExpr elt_ty xs'
          else mkBuildExpr elt_ty (mkSplitExplicitList dynamic_prefix static_suffix) }