[only remove unused values which have been determined to be so by the current typeanalysis pass
John Meacham <john@repetae.net>**20070517053407] hunk ./E/TypeAnalysis.hs 12
+import Data.Maybe
hunk ./E/TypeAnalysis.hs 287
-specializeDef _ SpecEnv { senvUnusedVars = unusedVals }  (tvr,e) | tvr `Set.member` unusedVals = return (tvr,EError "Unused" (tvrType tvr))
+specializeDef _ env  (tvr,e) | isUnused env tvr = return (tvr,EError ("Unused Def: " ++ tvrShowName tvr) (tvrType tvr))
hunk ./E/TypeAnalysis.hs 344
-specAlt SpecEnv { senvDataTable = dataTable, senvUnusedVars = unusedVals } (Alt lc@LitCons { litArgs = ts } e) = ans where
+specAlt env@SpecEnv { senvDataTable = dataTable } (Alt lc@LitCons { litArgs = ts } e) = ans where
hunk ./E/TypeAnalysis.hs 347
-            False <- return $ t `member` unusedVals
+            False <- return $ isUnused env t
hunk ./E/TypeAnalysis.hs 357
+isUnused SpecEnv { senvUnusedVars = unusedVars } v = v `Set.member` unusedVars && isJust (Info.lookup $ tvrInfo v :: Maybe Typ)
+
hunk ./E/TypeAnalysis.hs 360
-specBody _ env@SpecEnv { senvUnusedVars = unusedVars, senvDataTable = dataTable } e | (EVar h,as) <- fromAp e, h `Set.member` unusedVars = do
+specBody _ env e | (EVar h,as) <- fromAp e, isUnused env h  = do