[evaluate associated types in more places
John Meacham <john@repetae.net>**20061026012540] hunk ./FrontEnd/Tc/Main.hs 54
-            y <- findType y
+            y <- evalType y
hunk ./FrontEnd/Tc/Main.hs 97
-    t <- findType t
+    t <- evalType t
hunk ./FrontEnd/Tc/Main.hs 127
-    t <- findType t
+    t <- evalType t
hunk ./FrontEnd/Tc/Main.hs 238
-                s2' <- findType s2'
+                s2' <- evalType s2'
hunk ./FrontEnd/Tc/Main.hs 328
-    scrutinee <- findType scrutinee
+    scrutinee <- evalType scrutinee
hunk ./FrontEnd/Tc/Main.hs 341
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Main.hs 347
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Main.hs 357
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Main.hs 627
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Main.hs 640
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Main.hs 651
-                s2' <- findType s2'
+                s2' <- evalType s2'
hunk ./FrontEnd/Tc/Main.hs 664
-    typ <- findType typ
+    typ <- evalType typ
hunk ./FrontEnd/Tc/Monad.hs 40
+    evalType,
hunk ./FrontEnd/Tc/Monad.hs 62
-import {-# SOURCE #-} FrontEnd.Tc.Class(ClassHierarchy,simplify)
hunk ./FrontEnd/Tc/Monad.hs 64
-import Support.FreeVars
-import Support.Tickle
hunk ./FrontEnd/Tc/Monad.hs 65
+import FrontEnd.Class
hunk ./FrontEnd/Tc/Monad.hs 69
-import FrontEnd.Class
hunk ./FrontEnd/Tc/Monad.hs 73
-import qualified FlagDump as FD
hunk ./FrontEnd/Tc/Monad.hs 74
+import Support.FreeVars
+import Support.Tickle
+import Type()
hunk ./FrontEnd/Tc/Monad.hs 78
+import Util.SetLike
hunk ./FrontEnd/Tc/Monad.hs 80
-import Type()
+import qualified FlagDump as FD
+import {-# SOURCE #-} FrontEnd.Tc.Class(ClassHierarchy,simplify)
hunk ./FrontEnd/Tc/Monad.hs 399
-    ft' t = findType t >>= ft
+    ft' t = evalType t >>= ft
+
+evalType t = findType t >>= evalTAssoc
hunk ./FrontEnd/Tc/Monad.hs 403
+evalTAssoc TAssoc { typeCon = Tycon { tyconName = n1 }, typeClassArgs = [carg], typeExtraArgs = eas }  | (TCon Tycon { tyconName = n2 }, as) <- fromTAp carg = do
+    InstanceEnv ie <- asks tcInstanceEnv
+    case Map.lookup (n1,n2) ie of
+        Just (aa,bb,tt) -> return (applyTyvarMap (fromList $ zip aa as ++ zip bb eas) tt)
+        _ -> fail "no instance for associated type"
+evalTAssoc t = return t
hunk ./FrontEnd/Tc/Unify.hs 37
-        s1 <- findType s1
-        s2 <- findType s2
+        s1 <- evalType s1
+        s2 <- evalType s2
hunk ./FrontEnd/Tc/Unify.hs 114
-        s1 <- findType s1
-        s2 <- findType s2
+        s1 <- evalType s1
+        s2 <- evalType s2
hunk ./FrontEnd/Tc/Unify.hs 232
-    t1' <- findType t1
-    t1' <- evalTAssoc t1'
-    t2' <- findType t2
-    t2' <- evalTAssoc t2'
+    t1' <- evalType t1
+    t2' <- evalType t2
hunk ./FrontEnd/Tc/Unify.hs 260
-evalTAssoc TAssoc { typeCon = Tycon { tyconName = n1 }, typeClassArgs = [carg], typeExtraArgs = eas }  | (TCon Tycon { tyconName = n2 }, as) <- fromTAp carg = do
-    InstanceEnv ie <- asks tcInstanceEnv
-    case Map.lookup (n1,n2) ie of
-        Just (aa,bb,tt) -> return (applyTyvarMap (fromList $ zip aa as ++ zip bb eas) tt)
-        _ -> fail "no instance for associated type"
-evalTAssoc t = return t