[clean up typechecking code, return typechecked rules in TiData
John Meacham <john@repetae.net>**20060226062231] hunk ./FrontEnd/TI/Module.hs 25
-import FrontEnd.TiData
+import FrontEnd.Tc.Monad()
hunk ./FrontEnd/TI/Module.hs 50
+-- Extra data produced by the front end, used to fill in the Ho file.
+data TiData = TiData {
+    tiDataLiftedInstances :: Map.Map Name HsDecl,
+    tiDataModules :: [(Module,HsModule)],
+    tiModuleOptions :: [(Module,Opt)],
+    tiAllAssumptions :: Map.Map Name Scheme
+}
+
hunk ./FrontEnd/TI/Module.hs 286
+            tiCheckedRules = [],
hunk ./FrontEnd/Tc/Module.hs 1
-module FrontEnd.Tc.Module (tiModules') where
+module FrontEnd.Tc.Module (tiModules',TiData(..)) where
hunk ./FrontEnd/Tc/Module.hs 44
+import TIModule(TiData(..))
hunk ./FrontEnd/Tc/Module.hs 50
+-- Extra data produced by the front end, used to fill in the Ho file.
+data TiData = TiData {
+    tiDataLiftedInstances :: Map.Map Name HsDecl,
+    tiDataModules :: [(Module,HsModule)],
+    tiModuleOptions :: [(Module,Opt)],
+    tiCheckedRules :: [Rule],
+    tiAllAssumptions :: Map.Map Name Scheme
+}
+
hunk ./FrontEnd/Tc/Module.hs 197
-             --mapM_ (putStrLn . show) (envToList kindInfo);
hunk ./FrontEnd/Tc/Module.hs 230
-    localVarEnv <- withOptionsT (modInfoOptions tms) $ runTc tcInfo $ do
-        ds <- tiProgram program ds
-        getCollectedEnv
-        --liftIO $ mapM_ putStrLn [ show n ++  " :: " ++ prettyPrintType s |  (n,s) <- Map.toList ce]
-        --return (Map.map typeToScheme ce)
+    (localVarEnv,checkedRules) <- withOptionsT (modInfoOptions tms) $ runTc tcInfo $ do
+        (ds,cr) <- listenCheckedRules (tiProgram program ds)
+        env <- getCollectedEnv
+        return (env,cr)
hunk ./FrontEnd/Tc/Module.hs 241
-    --let externalEnv = Map.fromList [ v | v@(x@(Qual m i) ,s) <- Map.toList localVarEnv, isGlobal x, m `elem` map modInfoName ms ]  `Map.union` noDefaultSigs
hunk ./FrontEnd/Tc/Module.hs 243
-    --let externalKindEnv = Map.fromList [ v | v@(x@(Qual m i) ,s) <- Map.toList kindInfo, isGlobal x, m `elem` map modInfoName ms ]
hunk ./FrontEnd/Tc/Module.hs 247
-    let allAssumps = localDConsEnv `Map.union` localVarEnv -- Map.fromList $ [ (toName Name.DataConstructor x,y) | (x,y) <- Map.toList localDConsEnv ] ++ [ (toName Name.Val x,y) | (x,y) <- Map.toList localVarEnv ]
-        --expAssumps = M.fromList $ [ (toName Name.DataConstructor x,y) | (x,y) <- Env.toList localDConsEnv ] ++ [ (toName Name.Val x,y) | (x,y) <- Env.toList $ trimEnv localVarEnv ]
-        --expAssumps = Map.fromList $ [ (toName Name.DataConstructor x,y) | (x,y) <- Map.toList localDConsEnv ] ++ [ (toName Name.Val x,y) | (x,y) <- Map.toList $ externalEnv ]
-        expAssumps = localDConsEnv `Map.union` externalEnv -- Map.fromList $ [ (toName Name.DataConstructor x,y) | (x,y) <- Map.toList localDConsEnv ] ++ [ (toName Name.Val x,y) | (x,y) <- Map.toList $ externalEnv ]
+    let allAssumps = localDConsEnv `Map.union` localVarEnv
+        expAssumps = localDConsEnv `Map.union` externalEnv
hunk ./FrontEnd/Tc/Module.hs 254
-        --hoKinds = trimMapEnv kindInfo,
hunk ./FrontEnd/Tc/Module.hs 255
-        --hoClassHierarchy = cHierarchyWithInstances,
hunk ./FrontEnd/Tc/Module.hs 264
+            tiCheckedRules = checkedRules,
hunk ./FrontEnd/Tc/Monad.hs 2
+    Tc(),
+    TcInfo(..),
+    TypeEnv(),
hunk ./FrontEnd/Tc/Monad.hs 6
+    addRule,
hunk ./FrontEnd/Tc/Monad.hs 8
-    getCollectedEnv,
hunk ./FrontEnd/Tc/Monad.hs 10
+    deconstructorInstantiate,
+    freeMetaVarsEnv,
hunk ./FrontEnd/Tc/Monad.hs 13
-    toSigma,
hunk ./FrontEnd/Tc/Monad.hs 15
+    getCollectedEnv,
hunk ./FrontEnd/Tc/Monad.hs 17
-    getSigEnv,
-    deconstructorInstantiate,
hunk ./FrontEnd/Tc/Monad.hs 18
+    getSigEnv,
+    inst,
+    listenCheckedRules,
+    listenPreds,
hunk ./FrontEnd/Tc/Monad.hs 23
-    withMetaVars,
-    quantify,
hunk ./FrontEnd/Tc/Monad.hs 25
-    addRule,
-    unBox,
hunk ./FrontEnd/Tc/Monad.hs 27
+    quantify,
hunk ./FrontEnd/Tc/Monad.hs 30
-    Tc(),
-    TcInfo(..),
hunk ./FrontEnd/Tc/Monad.hs 31
-    TypeEnv(),
-    inst,
+    toSigma,
+    unBox,
hunk ./FrontEnd/Tc/Monad.hs 34
-    freeMetaVarsEnv,
-    listenPreds,
hunk ./FrontEnd/Tc/Monad.hs 35
-    withContext
+    withContext,
+    withMetaVars
hunk ./FrontEnd/Tc/Monad.hs 262
+listenCheckedRules :: Tc a -> Tc (a,[Rule])
+listenCheckedRules action = censor (\x -> x { checkedRules = mempty }) $ listens checkedRules action