Fix CodingStyle#Warnings URLs
[ghc-hetmet.git] / compiler / coreSyn / CoreSyn.lhs
index 8c799b5..05de860 100644 (file)
@@ -6,6 +6,13 @@
 CoreSyn: A data type for the Haskell compiler midsection
 
 \begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+--     http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
 module CoreSyn (
        Expr(..), Alt, Bind(..), AltCon(..), Arg, Note(..),
        CoreExpr, CoreAlt, CoreBind, CoreArg, CoreBndr,
@@ -54,7 +61,6 @@ import Var
 import Type
 import Coercion
 import Name
-import OccName
 import Literal
 import DataCon
 import BasicTypes
@@ -217,18 +223,25 @@ data CoreRule
        ru_rhs   :: CoreExpr,
 
        -- Locality
-       ru_local :: Bool,       -- The fn at the head of the rule is
+       ru_local :: Bool        -- The fn at the head of the rule is
                                -- defined in the same module as the rule
-
-       -- Orphan-hood; see Note [Orphans] in InstEnv
-       ru_orph  :: Maybe OccName }
+                               -- and is not an implicit Id (like a record sel
+                               -- class op, or data con)
+               -- NB: ru_local is *not* used to decide orphan-hood
+               --      c.g. MkIface.coreRuleToIfaceRule
+    }
 
   | BuiltinRule {              -- Built-in rules are used for constant folding
        ru_name :: RuleName,    -- and suchlike.  It has no free variables.
        ru_fn :: Name,          -- Name of the Id at 
                                -- the head of this rule
-       ru_nargs :: Int,        -- Number of args that ru_try expects
+       ru_nargs :: Int,        -- Number of args that ru_try expects,
+                               -- including type args
        ru_try  :: [CoreExpr] -> Maybe CoreExpr }
+               -- This function does the rewrite.  It given too many
+               -- arguments, it simply discards them; the returned CoreExpr
+               -- is just the rewrite of ru_fn applied to the first ru_nargs args
+               -- See Note [Extra args in rule matching] in Rules.lhs
 
 isBuiltinRule (BuiltinRule {}) = True
 isBuiltinRule _                       = False