[use results of type analysis when generating methods
John Meacham <john@repetae.net>**20060224113638] hunk ./E/FromHs.hs 35
+import E.TypeAnalysis
hunk ./E/FromHs.hs 38
+import Fixer.VMap
hunk ./E/FromHs.hs 51
+import qualified Info.Info as Info
hunk ./E/FromHs.hs 232
-        _methodTVr@(~(Just (TVr {tvrType = ty},_))) = findName methodName
+        _methodTVr@(~(Just (TVr {tvrType = ty},ELam TVr { tvrInfo = nfo } _))) = findName methodName
+        Just (vmap::Typ) = Info.lookup nfo
hunk ./E/FromHs.hs 235
-        --els = EError ("Bad: " ++ show methodName) t
-        v = eLam tvr emptyCase { eCaseScrutinee = EVar tvr, eCaseAlts = as, eCaseBind = tvr { tvrIdent = 0 }, eCaseType = finalType }
+        v = eLam tvr (foldr ELam emptyCase { eCaseScrutinee = EVar tvr, eCaseAlts = as, eCaseBind = tvr { tvrIdent = 0 }, eCaseType = foldr EPi ft rargs } args)
hunk ./E/FromHs.hs 237
+        (ft,args') = fromPi finalType
+        (args,rargs) = span (sortStarLike . getType)  args'
hunk ./E/FromHs.hs 240
-                | Just (tvr,_) <- findName name = return $ calt (foldl EAp (EVar tvr) vs)
-                | Just (deftvr,defe) <- theDefault = return $ calt $ eLet tvr (tipe t) (EAp (EVar deftvr) (EVar tvr))
+                | not $ x `vmapMember` vmap = fail "unused instance"
+                | Just (tvr,_) <- findName name  = return $ calt (foldl EAp (EVar tvr) (vs ++ map EVar args))
+                | Just (deftvr,defe) <- theDefault = return $ calt $ eLet tvr (tipe t) (foldl EAp (EVar deftvr) (EVar tvr:map EVar args))
hunk ./E/TypeAnalysis.hs 50
-            return $ Info.insert x nfo
+            return $ Info.insert x (Info.delete (undefined :: Typ) nfo)
hunk ./E/TypeAnalysis.hs 83
-        --mapM_ d ds >> mapM_ (calcE env) (snds ds) where
hunk ./E/TypeAnalysis.hs 209
-specializeDef _dataTable (t,e) | getProperty prop_EXPORTED t || getProperty prop_INSTANCE t || getProperty prop_PLACEHOLDER t = return (t,e)
+specializeDef _dataTable (t,e) | getProperty prop_PLACEHOLDER t = return (t,e)
hunk ./Main.hs 379
+    prog <- if (fopts FO.TypeAnalysis) then do typeAnalyze prog else return prog
+    putStrLn "Type analyzed methods"
+    mapM_ (\ (t,e) -> let (_,ts) = fromLam e in putStrLn $  (prettyE (EVar t)) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ] ) (filter (getProperty prop_METHOD . fst) (programDs prog))
+    wdump FD.Lambdacube $ printProgram prog
hunk ./Main.hs 406
-    prog <- if (fopts  FO.TypeAnalysis) then do
-            prog <- typeAnalyze prog
-            putStrLn "Type analyzed methods"
-            mapM_ (\ (t,e) -> let (_,ts) = fromLam e in putStrLn $  (prettyE (EVar t)) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ] ) (filter (getProperty prop_METHOD . fst) (programDs prog))
-            --mapM_ (\ (t,e) -> let (_,ts) = fromLam e in putStrLn $  (prettyE (EVar t)) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ] ) ds'
-            prog <- programMapBodies pruneE prog
-            return $ programPruneUnreachable prog
-        else return prog
+--    prog <- if (fopts  FO.TypeAnalysis) then do
+--            prog <- typeAnalyze prog
+--            putStrLn "Type analyzed methods"
+--            mapM_ (\ (t,e) -> let (_,ts) = fromLam e in putStrLn $  (prettyE (EVar t)) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ] ) (filter (getProperty prop_METHOD . fst) (programDs prog))
+--            --mapM_ (\ (t,e) -> let (_,ts) = fromLam e in putStrLn $  (prettyE (EVar t)) ++ " \\" ++ concat [ "(" ++ show  (tvrInfo t) ++ ")" | t <- ts, sortStarLike (getType t) ] ) ds'
+--            prog <- programMapBodies pruneE prog
+--            return $ programPruneUnreachable prog
+--        else return prog