[set prop_HASRULE on everything that is free in the head of a rule
John Meacham <john@repetae.net>**20061122061926] hunk ./E/Inline.hs 64
-    | member prop_NOINLINE props || member prop_PLACEHOLDER props = True
-    | Just (_x :: ARules) <- Info.lookup (tvrInfo x) = True
+    | member prop_HASRULE props || member prop_NOINLINE props || member prop_PLACEHOLDER props = True
hunk ./E/Rules.hs 16
+    ruleHeadFreeVars,
hunk ./FrontEnd/Tc/Module.hs 258
-    let pragmaProps = Map.fromListWith mappend [ (toName Name.Val x,fromList $ readProp w) |  HsPragmaProps _ w xs <- ds, x <- xs ]
+    let pragmaProps = fromList $ Map.toList $ Map.fromListWith mappend [ (toId $ toName Name.Val x,fromList $ readProp w) |  HsPragmaProps _ w xs <- ds, x <- xs ]
hunk ./Ho/Type.hs 68
-    hoProps :: Map.Map Name Properties,
+    hoProps :: IdMap Properties,
hunk ./Main.hs 190
-    props :: Map.Map Name Properties -> Id -> Info.Info -> Info.Info
-    props ps i = case tvrName (tvr { tvrIdent = i }) of
-        Just n -> case mlookup n ps of
-            Just ps ->  modifyProperties (mappend ps)
-            Nothing ->  id
-        Nothing -> id
+    props :: IdMap Properties -> Id -> Info.Info -> Info.Info
+    props ps i = case mlookup i ps of
+        Just ps ->  modifyProperties (mappend ps)
+        Nothing ->  id
hunk ./Main.hs 217
-reprocessHo :: Rules -> Map.Map Name Properties -> Ho -> Ho
+reprocessHo :: Rules -> IdMap Properties -> Ho -> Ho
hunk ./Main.hs 293
-    prog <- return $ runIdentity $ annotateProgram mempty (idann allRules (hoProps ho')) letann lamann prog
+    let allProps = munionWith mappend (hoProps ho')  (idSetToIdMap (const (singleton prop_HASRULE)) (ruleHeadFreeVars allRules))
+    prog <- return $ runIdentity $ annotateProgram mempty (idann allRules allProps) letann lamann prog
hunk ./Main.hs 305
-    ho <- return $ reprocessHo rules (hoProps ho') ho
+    ho <- return $ reprocessHo rules allProps ho