(F)SLIT -> (f)sLit in RdrHsSyn
[ghc-hetmet.git] / compiler / parser / RdrHsSyn.lhs
index 3697819..64de0f5 100644 (file)
@@ -58,8 +58,6 @@ module RdrHsSyn (
        parseError,           -- String -> Pa
     ) where
 
-#include "HsVersions.h"
-
 import HsSyn           -- Lots of it
 import Class            ( FunDep )
 import TypeRep          ( Kind )
@@ -73,6 +71,7 @@ import ForeignCall    ( CCallConv, Safety, CCallTarget(..), CExportSpec(..),
                          DNCallSpec(..), DNKind(..), CLabelString )
 import OccName         ( srcDataName, varName, isDataOcc, isTcOcc, 
                          occNameString )
+import PrelNames       ( forall_tv_RDR )
 import SrcLoc
 import OrdList         ( OrdList, fromOL )
 import Bag             ( Bag, emptyBag, snocBag, consBag, foldrBag )
@@ -401,7 +400,12 @@ tyConToDataCon loc tc
   | isTcOcc (rdrNameOcc tc)
   = return (L loc (setRdrNameSpace tc srcDataName))
   | otherwise
-  = parseError loc (showSDoc (text "Not a constructor:" <+> quotes (ppr tc)))
+  = parseErrorSDoc loc (msg $$ extra)
+  where
+    msg = text "Not a data constructor:" <+> quotes (ppr tc)
+    extra | tc == forall_tv_RDR
+         = text "Perhaps you intended to use -XExistentialQuantification"
+         | otherwise = empty
 
 ----------------------------------------------------------------------------
 -- Various Syntactic Checks
@@ -731,8 +735,8 @@ checkAPat loc e = case e of
    _                  -> patFail loc
 
 plus_RDR, bang_RDR :: RdrName
-plus_RDR = mkUnqual varName FSLIT("+") -- Hack
-bang_RDR = mkUnqual varName FSLIT("!") -- Hack
+plus_RDR = mkUnqual varName (fsLit "+")        -- Hack
+bang_RDR = mkUnqual varName (fsLit "!")        -- Hack
 
 checkPatField :: HsRecField RdrName (LHsExpr RdrName) -> P (HsRecField RdrName (LPat RdrName))
 checkPatField fld = do { p <- checkLPat (hsRecFieldArg fld)
@@ -770,8 +774,8 @@ checkFunBind :: SrcSpan
              -> P (HsBind RdrName)
 checkFunBind lhs_loc fun is_infix pats opt_sig (L rhs_span grhss)
   | isQual (unLoc fun)
-  = parseError (getLoc fun) ("Qualified name in function definition: "  ++ 
-                            showRdrName (unLoc fun))
+  = parseErrorSDoc (getLoc fun) 
+       (ptext (sLit "Qualified name in function definition:") <+> ppr (unLoc fun))
   | otherwise
   = do ps <- checkPatterns pats
        let match_span = combineSrcSpans lhs_loc rhs_span
@@ -953,9 +957,9 @@ parseCImport :: Located FastString
             -> P ForeignImport
 parseCImport (L loc entity) cconv safety v
   -- FIXME: we should allow white space around `dynamic' and `wrapper' -=chak
-  | entity == FSLIT ("dynamic") = 
+  | entity == fsLit "dynamic" = 
     return $ CImport cconv safety nilFS nilFS (CFunction DynamicTarget)
-  | entity == FSLIT ("wrapper") =
+  | entity == fsLit "wrapper" =
     return $ CImport cconv safety nilFS nilFS CWrapper
   | otherwise                 = parse0 (unpackFS entity)
     where
@@ -1070,5 +1074,8 @@ showRdrName :: RdrName -> String
 showRdrName r = showSDoc (ppr r)
 
 parseError :: SrcSpan -> String -> P a
-parseError span s = failSpanMsgP span s
+parseError span s = parseErrorSDoc span (text s)
+
+parseErrorSDoc :: SrcSpan -> SDoc -> P a
+parseErrorSDoc span s = failSpanMsgP span s
 \end{code}