[add associated type info to kind table
John Meacham <john@repetae.net>**20061019231540] hunk ./FrontEnd/KindInfer.hs 46
-newtype KindEnv = KindEnv (Map.Map Name Kind)
-    deriving(Binary,Typeable,Show,HasSize,Monoid)
+data KindEnv = KindEnv (Map.Map Name Kind) (Map.Map Name (Int,Int))
+    deriving(Typeable,Show)
+        {-!derive: Monoid, GhcBinary !-}
+
+instance HasSize KindEnv where
+    size (KindEnv env _) = size env
hunk ./FrontEnd/KindInfer.hs 84
-   apply s (KindEnv m) = KindEnv $ Map.map (\el -> apply s el) m
-   vars (KindEnv env) = vars $ map snd $ Map.toList env
+   apply s (KindEnv m x) = KindEnv (Map.map (\el -> apply s el) m) x
+   vars (KindEnv env x) = vars $ map snd $ Map.toList env
hunk ./FrontEnd/KindInfer.hs 89
-    pprint (KindEnv m) = vcat [ pprint x <+> text "=>" <+> pprint y | (x,y) <- Map.toList m]
+    pprint (KindEnv m _) = vcat [ pprint x <+> text "=>" <+> pprint y | (x,y) <- Map.toList m]
hunk ./FrontEnd/KindInfer.hs 143
-restrictKindEnv f (KindEnv m) = KindEnv $ Map.filterWithKey (\k _ -> f k) m
+restrictKindEnv f (KindEnv m x) = KindEnv (Map.filterWithKey (\k _ -> f k) m) x
hunk ./FrontEnd/KindInfer.hs 208
-lookupKindEnv name
-   = do KindEnv env <- getEnv
-        return $ Map.lookup name env
+lookupKindEnv name = do
+    KindEnv env _ <- getEnv
+    return $ Map.lookup name env
hunk ./FrontEnd/KindInfer.hs 213
-extendEnv (KindEnv newEnv) = KI $ \e ->
-    modifyIORef (kiEnv e) (\ (KindEnv env) -> KindEnv $ env `Map.union` newEnv)
+extendEnv (KindEnv newEnv nx) = KI $ \e ->
+    modifyIORef (kiEnv e) (\ (KindEnv env x) -> KindEnv (env `Map.union` newEnv) (nx `mappend` x))
hunk ./FrontEnd/KindInfer.hs 228
-getConstructorKinds (KindEnv m) = m -- Map.fromList [ (toName TypeConstructor x,y) | (x,y)<- Map.toList m]
+getConstructorKinds (KindEnv m _) = m -- Map.fromList [ (toName TypeConstructor x,y) | (x,y)<- Map.toList m]
hunk ./FrontEnd/KindInfer.hs 259
-        let newEnv = KindEnv $ Map.fromList $ [(toName TypeConstructor tyconName, tyConKind)] ++ argKindVars
+        let newEnv = KindEnv (Map.fromList $ [(toName TypeConstructor tyconName, tyConKind)] ++ argKindVars) mempty
hunk ./FrontEnd/KindInfer.hs 266
-        let newEnv = KindEnv $ Map.fromList $ (toName ClassName className, varKind): [(toName TypeVal argName, varKind) | argName <- argNames]
+        let newEnv = KindEnv (Map.fromList $ (toName ClassName className, varKind): [(toName TypeVal argName, varKind) | argName <- argNames]) mempty
hunk ./FrontEnd/KindInfer.hs 280
-					  extendEnv $ KindEnv $ Map.singleton (toName TypeVal argName) varKind
+					  extendEnv $ KindEnv (Map.singleton (toName TypeVal argName) varKind) mempty
hunk ./FrontEnd/KindInfer.hs 316
-				extendEnv $ KindEnv $ Map.singleton (toName TypeVal name) varKind
+				extendEnv $ KindEnv (Map.singleton (toName TypeVal name) varKind) mempty
hunk ./FrontEnd/KindInfer.hs 353
-    let newEnv = KindEnv $ Map.fromList $ argKindVars
+    let newEnv = KindEnv (Map.fromList argKindVars) mempty
hunk ./FrontEnd/KindInfer.hs 358
-    let newEnv = KindEnv $ Map.fromList $ argKindVars
+    let newEnv = KindEnv (Map.fromList argKindVars) mempty
hunk ./FrontEnd/KindInfer.hs 516
-kindOf name (KindEnv env) = case Map.lookup name env of
+kindOf name (KindEnv env _) = case Map.lookup name env of
hunk ./FrontEnd/KindInfer.hs 522
-kindOfClass name (KindEnv env) = case Map.lookup name env of
+kindOfClass name (KindEnv env _) = case Map.lookup name env of