[add SPECIALIZATIONs, make type synonym expansion apply to pragmas
John Meacham <john@repetae.net>**20060226063414] hunk ./FrontEnd/HsSyn.hs 176
-         | HsPragmaSpecialize { hsDeclSrcLoc :: SrcLoc, hsDeclBool :: Bool, hsDeclName :: HsName, hsDeclType :: HsType }
+         | HsPragmaSpecialize { hsDeclUniq :: (Module,Int), hsDeclSrcLoc :: SrcLoc, hsDeclBool :: Bool, hsDeclName :: HsName, hsDeclType :: HsType }
hunk ./FrontEnd/Rename.hs 425
-    return prules {  hsDeclName = n, hsDeclType = t }
+    m <- getCurrentModule
+    i <- newUniq
+    return prules { hsDeclUniq = (m,i), hsDeclName = n, hsDeclType = t }
hunk ./FrontEnd/Tc/Main.hs 436
-        addRule RuleSpec { ruleName = nn, ruleType = t, ruleSuper = hsDeclBool spec }
+        addRule RuleSpec { ruleUniq = hsDeclUniq spec, ruleName = nn, ruleType = t, ruleSuper = hsDeclBool spec }
hunk ./FrontEnd/Tc/Type.hs 327
+    ruleUniq :: (Module,Int),
hunk ./FrontEnd/TypeSyns.hs 148
+renameHsDecl prules@HsPragmaRules { hsDeclSrcLoc = srcLoc, hsDeclFreeVars = fvs, hsDeclLeftExpr = e1, hsDeclRightExpr = e2 } subTable = do
+    setSrcLoc srcLoc
+    e1' <- renameHsExp e1 subTable
+    e2' <- renameHsExp e2 subTable
+    return prules {  hsDeclLeftExpr = e1', hsDeclRightExpr = e2' }
+renameHsDecl prules@HsPragmaSpecialize { hsDeclSrcLoc = srcLoc, hsDeclName = n, hsDeclType = t } subTable = do
+    setSrcLoc srcLoc
+    t <- renameHsType t subTable
+    return prules {  hsDeclType = t }
hunk ./Info/Types.hs 64
+prop_SPECIALIZATION = toAtom "_SPECIALIZATION"
hunk ./docs/conventions.txt 24
+
+* Spec@ - specializations of polymorphic functions
hunk ./lib/Numeric.hs 92
+{-# SPECIALIZE showSigned :: (Int -> ShowS) -> Int -> Int -> ShowS #-}
+{-# SPECIALIZE showSigned :: (Integer -> ShowS) -> Int -> Integer -> ShowS #-}
hunk ./lib/Numeric.hs 106
+{-# SPECIALIZE showIntAtBase :: Int -> (Int -> Char) -> Int -> ShowS #-}
+{-# SPECIALIZE showIntAtBase :: Integer -> (Int -> Char) -> Integer -> ShowS #-}
+
hunk ./lib/Numeric.hs 135
+{-# SPECIALIZE readInt :: Int -> (Char -> Bool) -> (Char -> Int) -> ReadS Int #-}
+{-# SPECIALIZE readInt :: Integer -> (Char -> Bool) -> (Char -> Int) -> ReadS Integer #-}
+
hunk ./lib/Prelude.hs 245
+{-# SPECIALIZE gcd :: Int -> Int -> Int #-}
+{-# SPECIALIZE gcd :: Integer -> Integer -> Integer #-}
hunk ./lib/Prelude.hs 254
+{-# SPECIALIZE lcm :: Int -> Int -> Int #-}
+{-# SPECIALIZE lcm :: Integer -> Integer -> Integer #-}