Define PrelNames.allNameStrings and use it in TcHsType
authorSimon Peyton Jones <simonpj@microsoft.com>
Tue, 15 Jul 2014 06:39:51 +0000 (07:39 +0100)
committerSimon Peyton Jones <simonpj@microsoft.com>
Tue, 15 Jul 2014 06:39:51 +0000 (07:39 +0100)
Refactoring only.

compiler/prelude/PrelNames.lhs
compiler/typecheck/TcHsType.lhs

index 395ffbb..01c5764 100644 (file)
@@ -130,6 +130,19 @@ import FastString
 
 %************************************************************************
 %*                                                                      *
+     allNameStrings
+%*                                                                      *
+%************************************************************************
+
+\begin{code}
+allNameStrings :: [String]
+-- Infinite list of a,b,c...z, aa, ab, ac, ... etc
+allNameStrings = [ c:cs | cs <- "" : allNameStrings, c <- ['a'..'z'] ] 
+\end{code}
+
+
+%************************************************************************
+%*                                                                      *
 \subsection{Local Names}
 %*                                                                      *
 %************************************************************************
index 723206b..cdeb191 100644 (file)
@@ -76,7 +76,7 @@ import Util
 
 import Data.Maybe( isNothing )
 import Control.Monad ( unless, when, zipWithM )
-import PrelNames( ipClassName, funTyConKey )
+import PrelNames( ipClassName, funTyConKey, allNameStrings )
 \end{code}
 
 
@@ -1330,7 +1330,7 @@ tcDataKindSig kind
        ; us   <- newUniqueSupply 
         ; rdr_env <- getLocalRdrEnv
        ; let uniqs = uniqsFromSupply us
-              occs  = [ occ | str <- strs
+              occs  = [ occ | str <- allNameStrings
                             , let occ = mkOccName tvName str
                             , isNothing (lookupLocalRdrOcc rdr_env occ) ]
                  -- Note [Avoid name clashes for associated data types]
@@ -1342,9 +1342,6 @@ tcDataKindSig kind
     mk_tv loc uniq occ kind 
       = mkTyVar (mkInternalName uniq occ loc) kind
          
-    strs :: [String]
-    strs = [ c:cs | cs <- "" : strs, c <- ['a'..'z'] ] 
-
 badKindSig :: Kind -> SDoc
 badKindSig kind 
  = hang (ptext (sLit "Kind signature on data type declaration has non-* return kind"))