[call ruleUpdate on various rules, export specializations.
John Meacham <john@repetae.net>**20080304111029] hunk ./E/Rules.hs 13
+    ruleUpdate,
hunk ./E/Rules.hs 145
-fromRules rs = Rules $ fmap snds $ fromList $ sortGroupUnderF fst [ (tvrIdent $ ruleHead r,r) | r <- rs ]
+fromRules rs = Rules $ fmap snds $ fromList $ sortGroupUnderF fst [ (tvrIdent $ ruleHead r,ruleUpdate r) | r <- rs ]
hunk ./E/Rules.hs 223
+ruleUpdate rule = rule {
+        ruleNArgs = length  (ruleArgs rule),
+        ruleBinds = bs,
+        ruleBody = g (ruleBody rule),
+        ruleArgs = map g (ruleArgs rule)
+    } where
+        bs = map (setProperty prop_RULEBINDER) (ruleBinds rule)
+        g e = substMap (fromList [ (tvrIdent t, EVar t) | t <- bs ]) e
hunk ./Main.hs 12
-import qualified List(group,union)
+import List(group,union)
hunk ./Main.hs 23
-import E.Annotate(annotate,annotateDs,annotateCombs,annotateProgram)
+import E.Annotate(annotateDs,annotateCombs,annotateProgram)
hunk ./Main.hs 36
---import E.ToHs
hunk ./Main.hs 65
-import Util.HasSize
hunk ./Main.hs 174
-    let fakeEntry = emptyComb { combRules = concat $ melems orphans }
-        combs =  fakeEntry:[combRules_s (mfindWithDefault [] (tvrIdent t) rm) (bindComb (t,e))  | (t,e) <- hoEs (hoBuild aho) ]
+    let fakeEntry = emptyComb { combRules = map ruleUpdate . concat $ melems orphans }
+        combs =  fakeEntry:[combRules_s (map ruleUpdate $ mfindWithDefault [] (tvrIdent t) rm) (bindComb (t,e))  | (t,e) <- hoEs (hoBuild aho) ]
hunk ./Main.hs 179
-        nrules = combRules $ mfindWithDefault emptyComb emptyId choCombinators'
+        nrules = map ruleUpdate . combRules $ mfindWithDefault emptyComb emptyId choCombinators'
hunk ./Main.hs 270
-            Just rs -> combRules_u (List.union rs) c
+            Just rs -> combRules_u (map ruleUpdate . List.union rs) c
hunk ./Main.hs 281
-    let entryPoints = fromList . execWriter $ programMapDs_ (\ (t,_) -> when (getProperty prop_EXPORTED t || getProperty prop_INSTANCE t)  (tell [tvrIdent t])) prog
-    prog <- return $ prog { progEntry = entryPoints }
+    let entryPoints = fromList . execWriter $ programMapDs_ (\ (t,_) -> when (getProperty prop_EXPORTED t || getProperty prop_INSTANCE t || getProperty prop_SPECIALIZATION t)  (tell [tvrIdent t])) prog
+    prog <- return $ prog { progEntry = entryPoints `mappend` progSeasoning prog }
hunk ./Main.hs 434
-        newMap = fromList [ (tvrIdent n,Just (EVar n)) | (n,_) <- hoEs newHoBuild ]
+        newMap = fmap (\c -> Just (EVar $ combHead c)) $ progCombMap prog
hunk ./Main.hs 463
-collectIds e = execWriter $ annotate mempty (\id nfo -> tell (singleton id) >> return nfo) (\_ -> return) (\_ -> return) e