Minor fix to free-vars in RnTypes
authorSimon Peyton Jones <simonpj@microsoft.com>
Wed, 24 Jun 2015 22:29:11 +0000 (23:29 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 26 Jun 2015 07:33:05 +0000 (08:33 +0100)
A type wild-card should't appear in the "uses"
free-variable set.

compiler/rename/RnTypes.hs

index 743f460..3766ed1 100644 (file)
@@ -285,7 +285,9 @@ rnHsTyKi isType _doc (HsWildCardTy (AnonWildCard PlaceHolder))
     do { loc <- getSrcSpanM
        ; uniq <- newUnique
        ; let name = mkInternalName uniq (mkTyVarOcc "_") loc
-       ; return (HsWildCardTy (AnonWildCard name), unitFV name) }
+       ; return (HsWildCardTy (AnonWildCard name), emptyFVs) }
+         -- emptyFVs: this occurrence does not refer to a
+         --           binding, so don't treat it as a free variable
 
 rnHsTyKi isType doc (HsWildCardTy (NamedWildCard rdr_name))
   = ASSERT( isType )
@@ -297,7 +299,9 @@ rnHsTyKi isType doc (HsWildCardTy (NamedWildCard rdr_name))
          failWith $ text "Unexpected wild card:" <+> quotes (ppr rdr_name) $$
                     docOfHsDocContext doc
        ; name <- rnTyVar isType rdr_name
-       ; return (HsWildCardTy (NamedWildCard name), unitFV name) }
+       ; return (HsWildCardTy (NamedWildCard name), emptyFVs) }
+         -- emptyFVs: this occurrence does not refer to a
+         --           binding, so don't treat it as a free variable
 
 --------------
 rnHsTyKiForAll :: Bool -> HsDocContext -> HsType RdrName