[Changed interface file format to include Syntax2 module (old .ti files now invalid); eliminated usse of Parser and Syntax from Main sydow@chalmers.se**20110120063912] { hunk ./src/Interfaces.hs 42 +import qualified Syntax2 hunk ./src/Interfaces.hs 76 - kdeclEnv :: Kindle.Decls -- Kindle form of declarations + kdeclEnv :: Kindle.Decls, -- Kindle form of declarations + smod :: Syntax2.Module hunk ./src/Interfaces.hs 91 -ifaceMod :: (Map Name [Name], Map Name ([Name], Syntax.Type)) -> Module -> Kindle.Decls -> IFace -ifaceMod (rs,ss) (Module m ns xs es ds ws bss) kds +ifaceMod :: (Map Name [Name], Map Name ([Name], Syntax.Type)) -> Module -> Kindle.Decls -> Syntax2.Module -> IFace +ifaceMod (rs,ss) (Module m ns xs es ds ws bss) kds sm hunk ./src/Interfaces.hs 95 - | otherwise = IFace rs ss (Module m ns xs1 es1 ds1 ws1 [bs1]) (Module m [] xs2 es2 ds2 ws2 [bs2]) kds + | otherwise = IFace rs ss (Module m ns xs1 es1 ds1 ws1 [bs1]) (Module m [] xs2 es2 ds2 ws2 [bs2]) kds sm hunk ./src/Interfaces.hs 124 - output is four tuples of data suitable for various compiler passes. + output is six tuples of data suitable for various compiler passes. hunk ./src/Interfaces.hs 133 +type StaticEnv = Map Name (ImportInfo Syntax2.Module) hunk ./src/Interfaces.hs 135 -initEnvs :: Map a (ImportInfo IFace) -> M s (Desugar1Env, RenameEnv, CheckEnv, KindleEnv,Module) +initEnvs :: Map Name (ImportInfo IFace) -> M s (Desugar1Env, RenameEnv, CheckEnv, KindleEnv,Module,StaticEnv) hunk ./src/Interfaces.hs 139 - return ((rs,rnL,ss),(rs,rnL,rnT,rnE,rnC),m1,kds,m2) + is = map (\(n,(b,i)) -> (n,(b,syntaxMod i))) bms + return ((rs,rnL,ss),(rs,rnL,rnT,rnE,rnC),m1,kds,m2,is) hunk ./src/Interfaces.hs 147 - mkEnv (unQual,IFace rs ss m1 m2 kds) + mkEnv (unQual,IFace rs ss m1 m2 kds _) hunk ./src/Interfaces.hs 214 - put (IFace a b c d e) = put a >> put b >> put c >> put d >> put e - get = get >>= \a -> get >>= \b -> get >>= \c -> get >>= \d -> get >>= \e -> return (IFace a b c d e) + put (IFace a b c d e f) = put a >> put b >> put c >> put d >> put e >> put f + get = get >>= \a -> get >>= \b -> get >>= \c -> get >>= \d -> get >>= \e -> get >>= \f -> return (IFace a b c d e f) hunk ./src/Interfaces.hs 220 - pr (IFace rs ss (Module _ ns xs _ ds1 ws [bs]) _ kds) = + pr (IFace rs ss (Module _ ns xs _ ds1 ws [bs]) _ kds _) = hunk ./src/Interfaces.hs 256 -toHTML n (IFace rs ss (Module _ ns xs es ds ws [bs]) _ _) = text "\n" $$ +toHTML n (IFace rs ss (Module _ ns xs es ds ws [bs]) _ _ _) = text "\n" $$ hunk ./src/Interfaces.hs 292 -impsOf (IFace _ _ (Module _ ns _ _ _ _ _) _ _) = ns -tEnv (IFace _ _ (Module _ _ _ _ ts _ _) _ _) = ts -valEnv (IFace _ _ (Module _ _ _ _ _ _ [bs]) _ _) = bs - +impsOf (IFace _ _ (Module _ ns _ _ _ _ _) _ _ _) = ns +tEnv (IFace _ _ (Module _ _ _ _ ts _ _) _ _ _) = ts +valEnv (IFace _ _ (Module _ _ _ _ _ _ [bs]) _ _ _) = bs +syntaxMod (IFace _ _ _ _ _ m) = m hunk ./src/Main.hs 50 -import qualified Parser -import qualified Syntax +--import qualified Parser +--import qualified Syntax hunk ./src/Main.hs 57 - hunk ./src/Main.hs 202 - let Syntax.Module n is _ _ = sm + let Syntax2.Module n is _ _ = sm hunk ./src/Main.hs 204 - let sm2 = Syntax2Syntax2.s2Module sm - sm1 = Syntax22Syntax.sModule sm2 --- let ((htxt,mtxt),ifc,jstxt) = runM (passes imps sm1) - let ((htxt,mtxt),ifc,jstxt) = runM (passes imps sm) + let sm1 = Syntax22Syntax.sModule sm + let ((htxt,mtxt),ifc,jstxt) = runM (passes imps sm sm1) +-- let ((htxt,mtxt),ifc,jstxt) = runM (passes imps sm) hunk ./src/Main.hs 215 - where passes imps par = do (e0,e1,e2,e3,e4) <- initEnvs imps + where passes imps s2 par + = do (e0,e1,e2,e3,e4,e5) <- initEnvs imps hunk ./src/Main.hs 233 - return (c, ifaceMod a0 tc2 ds, js) + return (c, ifaceMod a0 tc2 ds s2, js) hunk ./src/Main.hs 250 -compileAll :: CmdLineOpts -> Map Name (IFace,FilePath) -> [(Syntax.Module,FilePath)] -> IO (Map Name (IFace,FilePath)) +compileAll :: CmdLineOpts -> Map Name (IFace,FilePath) -> [(Syntax2.Module,FilePath)] -> IO (Map Name (IFace,FilePath)) hunk ./src/Main.hs 267 - longName (Syntax.Module m a b c,t) + longName (Syntax2.Module m a b c,t) hunk ./src/Main.hs 269 - = (Syntax.Module (name0 qm) a b c, t_file) + = (Syntax2.Module (name0 qm) a b c, t_file) hunk ./src/Main.hs 379 -doParse txt = Syntax22Syntax.sModule (runM (Parser2.parser txt)) -doParse' clo txt = Syntax22Syntax.sModule (runM (pass clo Parser2.parser Parser txt)) +doParse txt = runM (Parser2.parser txt) +doParse' clo txt = runM (pass clo Parser2.parser Parser txt) hunk ./src/Main.hs 386 - let ms@(Syntax.Module n is _ _) = doParse txt + let ms@(Syntax2.Module n is _ _) = doParse txt hunk ./src/Main.hs 388 - (imps,ss) <- chaseSyntaxFiles clo is [(n,(ms,currDir ++ "/" ++ t_file))] + (imps,ss) <- chaseSyntax2Files clo is [(n,(ms,currDir ++ "/" ++ t_file))] hunk ./src/Main.hs 404 - where nonDummy (_,(_,Syntax.Module n _ _ _)) + where nonDummy (_,(_,Syntax2.Module n _ _ _)) hunk ./src/Main.hs 436 - String -> [Syntax.Import] -> Map Name (a,String) -> IO (Map Name (ImportInfo a), Map Name (a,String)) + String -> [Syntax2.Import] -> Map Name (a,String) -> IO (Map Name (ImportInfo a), Map Name (a,String)) hunk ./src/Main.hs 447 - readImport ifs (Syntax.Import b c) + readImport ifs (Syntax2.Import c) + = do (ifc,isNew) <- readIfile ifs c + return ((c,(True,ifc)),isNew) + readImport ifs (Syntax2.Use c) hunk ./src/Main.hs 452 - return ((c,(b,ifc)),isNew) + return ((c,(False,ifc)),isNew) hunk ./src/Main.hs 470 -chaseIfaceFiles :: CmdLineOpts -> [Syntax.Import] -> Map Name (IFace, FilePath) -> IO (Map Name (ImportInfo IFace), Map Name (IFace, FilePath)) +chaseIfaceFiles :: CmdLineOpts -> [Syntax2.Import] -> Map Name (IFace, FilePath) -> IO (Map Name (ImportInfo IFace), Map Name (IFace, FilePath)) hunk ./src/Main.hs 474 -impName (Syntax.Import b c) = c -impNames (Syntax.Module _ is _ _) = map impName is +impName (Syntax2.Import c) = c +impName (Syntax2.Use c) = c +impNames (Syntax2.Module _ is _ _) = map impName is hunk ./src/Main.hs 478 -impNames2 b (Syntax.Module _ is _ _,_) - = map (\(Syntax.Import b' c) -> (c,b && b')) is +impNames2 b (Syntax2.Module _ is _ _,_) = map f is + where f (Syntax2.Import c) = (c,b) + f (Syntax2.Use c) = (c,False) hunk ./src/Main.hs 482 -chaseSyntaxFiles :: CmdLineOpts -> [Syntax.Import] -> Map Name (Syntax.Module, FilePath) -> - IO (Map Name (ImportInfo Syntax.Module), Map Name (Syntax.Module, FilePath)) -chaseSyntaxFiles clo = chaseImps readSyntax impNames2 ".t" +chaseSyntax2Files :: CmdLineOpts -> [Syntax2.Import] -> Map Name (Syntax2.Module, FilePath) -> + IO (Map Name (ImportInfo Syntax2.Module), Map Name (Syntax2.Module, FilePath)) +chaseSyntax2Files clo = chaseImps readSyntax impNames2 ".t" hunk ./src/Main.hs 492 - then return (Syntax.Module (name0 "") [] [] [],libf) + then return (Syntax2.Module (name0 "") [] [] [],libf) hunk ./src/Main.hs 498 -compile_order imps = case topSort (impNames . snd) imps of +compile_order imps = case topSort (impNames . snd) imps of }