[clean up handling of forall, get ready for rank-n types. clean up renaming some.
John Meacham <john@repetae.net>**20051205011838] hunk ./FrontEnd/HsPretty.hs 27
+import qualified Text.PrettyPrint.HughesPJ as P
+
+import Doc.PPrint(pprint)
hunk ./FrontEnd/HsPretty.hs 33
+import Name.VConsts
hunk ./FrontEnd/HsPretty.hs 35
+import qualified Doc.DocLike as DL
hunk ./FrontEnd/HsPretty.hs 37
-import qualified Text.PrettyPrint.HughesPJ as P
-import Name.VConsts
hunk ./FrontEnd/HsPretty.hs 92
-retDocM a = DocM (\s -> a)	
+retDocM a = DocM (\s -> a)
hunk ./FrontEnd/HsPretty.hs 299
-		
+
hunk ./FrontEnd/HsPretty.hs 325
-	   mySep ([ppAssoc assoc, int prec]	
+	   mySep ([ppAssoc assoc, int prec]
hunk ./FrontEnd/HsPretty.hs 356
-	
+
hunk ./FrontEnd/HsPretty.hs 402
+ppHsTypePrec p HsTyForall { hsTypeVars = vs, hsTypeType = qt } = parensIf (p > 1) $ do
+    pp <- ppHsQualType qt
+    return $ DL.text "forall" DL.<+> DL.hsep (map pprint vs) DL.<+> DL.char '.' DL.<+> pp
hunk ./FrontEnd/HsPretty.hs 535
-ppHsAlt (HsAlt pos exp gAlts decls) = 	
+ppHsAlt (HsAlt pos exp gAlts decls) =
hunk ./FrontEnd/HsPretty.hs 657
-	where			
+	where
hunk ./FrontEnd/HsPretty.hs 696
+
+instance P.PPrint P.Doc  HsTyVarBind where
+   pprint d = P.text (show $ hsTyVarBindName d)
+
hunk ./FrontEnd/KindInfer.hs 360
+kiType varExist tap@(HsTyForall { hsTypeVars = vs, hsTypeType = qt }) = do
+    argKindVars <- mapM (newNameVar . hsTyVarBindName) vs
+    let newEnv = KindEnv $ Map.fromList $ argKindVars
+    extendEnv newEnv
+    kiQualType varExist qt
+
hunk ./FrontEnd/KindInfer.hs 367
-newNameVar n
-   = do
-        newVar <- newKindVar
-        return (n, newVar)
+newNameVar n = do
+    newVar <- newKindVar
+    return (n, newVar)
hunk ./FrontEnd/KindInfer.hs 417
-namesFromType (HsTyFun t1 t2)
-   = namesFromType t1 ++ namesFromType t2
-namesFromType (HsTyTuple ts)
-   = concatMap namesFromType ts
-namesFromType (HsTyApp t1 t2)
-   = namesFromType t1 ++ namesFromType t2
+namesFromType (HsTyFun t1 t2) = namesFromType t1 ++ namesFromType t2
+namesFromType (HsTyTuple ts) = concatMap namesFromType ts
+namesFromType (HsTyApp t1 t2) = namesFromType t1 ++ namesFromType t2
hunk ./FrontEnd/KindInfer.hs 422
+namesFromType HsTyForall { hsTypeVars = vs } = map hsTyVarBindName vs
hunk ./FrontEnd/KindInfer.hs 425
-namesFromContext cntxt
-   = map fst cntxt
+namesFromContext cntxt = map fst cntxt
hunk ./FrontEnd/Rename.hs 308
-    hsMatches' <- renameHsMatches hsMatches subTable
+    hsMatches' <- renameAny hsMatches subTable
hunk ./FrontEnd/Rename.hs 474
-        False <- return dovar
-        v <- renameHsQualType v subTable
-        return $ HsTyForall ts v
+        -- False <- return dovar
+        subTable' <- updateSubTableWithHsNames subTable (map hsTyVarBindName ts)
+        ts' <- renameAny ts subTable'
+        v' <- renameHsQualType v subTable'
+        return $ HsTyForall ts' v'
hunk ./FrontEnd/Rename.hs 481
---    pp t = do
---        t' <- t
---        syns <- gets synonyms
-        --addDiag $ show ("pp", t')
-        --return t'
---        return (removeSynonymsFromType syns t')
+
+
+class RenameAny a where
+    renameAny :: a -> SubTable -> ScopeSM a
+    renameAny x _ = return x
+
+instance RenameAny SrcLoc where
+
+instance RenameAny a => RenameAny [a] where
+    renameAny xs t = mapM (`renameAny` t) xs
+
+instance RenameAny HsTyVarBind where
+    renameAny tvb@HsTyVarBind { hsTyVarBindName = n } t = do
+        n' <- renameTypeHsName n t
+        return tvb { hsTyVarBindName = n' }
+
+
+instance RenameAny HsMatch where
+    renameAny = renameHsMatch
hunk ./FrontEnd/Rename.hs 501
-renameHsMatches :: [HsMatch] -> SubTable -> ScopeSM [HsMatch]
-renameHsMatches = mapRename renameHsMatch
hunk ./FrontEnd/Rename.hs 509
-    hsPats' <- renameHsPats hsPats subTable'
+    hsPats' <- renameAny hsPats subTable'
hunk ./FrontEnd/Rename.hs 514
+
hunk ./FrontEnd/Rename.hs 517
-renameHsPats :: [HsPat] -> SubTable -> ScopeSM ([HsPat])
-renameHsPats = mapRename renameHsPat
+instance RenameAny HsPat where
+    renameAny = renameHsPat
hunk ./FrontEnd/Rename.hs 535
-      hsPats' <- renameHsPats hsPats subTable
+      hsPats' <- renameAny hsPats subTable
hunk ./FrontEnd/Rename.hs 539
-      hsPats' <- renameHsPats hsPats subTable
+      hsPats' <- renameAny hsPats subTable
hunk ./FrontEnd/Rename.hs 542
-      hsPats' <- renameHsPats hsPats subTable
+      hsPats' <- renameAny hsPats subTable
hunk ./FrontEnd/Rename.hs 697
-    hsPats' <- renameHsPats hsPats subTable'
+    hsPats' <- renameAny hsPats subTable'
hunk ./FrontEnd/TypeSyns.hs 202
-        False <- return dovar
+        -- False <- return dovar