[clean up code, make it handle top level forall statements
John Meacham <john@repetae.net>**20051205051447] hunk ./FrontEnd/KindInfer.hs 539
-aHsQualTypeToQualType kt (HsQualType cntxt t)
-   = map (hsAsstToPred kt) cntxt :=> aHsTypeToType kt t
-aHsQualTypeToQualType kt (HsUnQualType t)
-   = [] :=> aHsTypeToType kt t
+aHsQualTypeToQualType kt (HsQualType cntxt t) = map (hsAsstToPred kt) cntxt :=> aHsTypeToType kt t
+aHsQualTypeToQualType kt (HsUnQualType t) = [] :=> aHsTypeToType kt t
hunk ./FrontEnd/KindInfer.hs 546
+-- TODO take vs in forall type into account
+-- hopefully everything has been renamed to something unique
+
hunk ./FrontEnd/KindInfer.hs 550
-aHsQualTypeToScheme kt qualType
-   = quantify vars qt
-   where
+aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = cntxt, hsQualTypeType = HsTyForall vs qt } = aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = cntxt ++ hsQualTypeHsContext qt, hsQualTypeType = hsQualTypeType qt }
+aHsQualTypeToScheme kt HsUnQualType { hsQualTypeType = t } = aHsQualTypeToScheme kt HsQualType { hsQualTypeContext = [], hsQualTypeType = t } 
+aHsQualTypeToScheme kt qualType = quantify vars qt where
hunk ./FrontEnd/Rename.hs 1302
-getHsNamesFromHsQualType (HsQualType _hsContext hsType)
-  = getHsNamesFromHsType hsType
-getHsNamesFromHsQualType (HsUnQualType hsType)
-  = getHsNamesFromHsType hsType
+getHsNamesFromHsQualType (HsQualType _hsContext hsType) = getHsNamesFromHsType hsType
+getHsNamesFromHsQualType (HsUnQualType hsType) = getHsNamesFromHsType hsType
hunk ./FrontEnd/Rename.hs 1306
-getHsNamesFromHsType (HsTyFun hsType1 hsType2)
-  = (getHsNamesFromHsType hsType1) ++ (getHsNamesFromHsType hsType2)
-getHsNamesFromHsType (HsTyTuple hsTypes)
-  = concat $ map getHsNamesFromHsType hsTypes
-getHsNamesFromHsType (HsTyApp hsType1 hsType2)
-  = (getHsNamesFromHsType hsType1) ++ (getHsNamesFromHsType hsType2)
-getHsNamesFromHsType (HsTyVar hsName)
-  = [hsName]
-getHsNamesFromHsType (HsTyCon _hsName)
-  = [] -- don't rename the Constructors
+getHsNamesFromHsType (HsTyFun hsType1 hsType2) = (getHsNamesFromHsType hsType1) ++ (getHsNamesFromHsType hsType2)
+getHsNamesFromHsType (HsTyTuple hsTypes) = concat $ map getHsNamesFromHsType hsTypes
+getHsNamesFromHsType (HsTyApp hsType1 hsType2) = (getHsNamesFromHsType hsType1) ++ (getHsNamesFromHsType hsType2)
+getHsNamesFromHsType (HsTyVar hsName) = [hsName]
+getHsNamesFromHsType (HsTyCon _hsName) = [] -- don't rename the Constructors
+getHsNamesFromHsType (HsTyForall _bs t) = getHsNamesFromHsQualType t -- TODO, scoping?
hunk ./Interactive.hs 20
+import HsPretty()
hunk ./Interactive.hs 91
-        | Just d <- showSynonym (show . (pprint :: Type -> PP.Doc) . aHsTypeToType (hoKinds ho)) v (hoTypeSynonyms ho) = nameTag (nameType v):' ':d
+        | Just d <- showSynonym (show . (pprint :: HsType -> PP.Doc) ) v (hoTypeSynonyms ho) = nameTag (nameType v):' ':d
hunk ./test/Forall.hs 1
+module Main where
+
hunk ./test/Forall.hs 28
+
+
+-- forall hoisting
hunk ./test/Forall.hs 34
+-- this should be rejected.
+--id3 :: forall a . b -> a -> a
+--id3 _ x = x
+