X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fparser%2FRdrHsSyn.lhs;h=b76c269fd1ae1e60a48b6ae03c48ab317542e649;hb=2ffefc1bfca0c8924825cd15750e7ced457f3c81;hp=3c3e1ef6abcd71f268c9caec5b520672172dd6a0;hpb=6eca2acf184d4911123193757bdd38e53caa3467;p=ghc-hetmet.git diff --git a/ghc/compiler/parser/RdrHsSyn.lhs b/ghc/compiler/parser/RdrHsSyn.lhs index 3c3e1ef..b76c269 100644 --- a/ghc/compiler/parser/RdrHsSyn.lhs +++ b/ghc/compiler/parser/RdrHsSyn.lhs @@ -14,7 +14,6 @@ module RdrHsSyn ( RdrNameConDecl, RdrNameConDetails, RdrNameContext, - RdrNameSpecDataSig, RdrNameDefaultDecl, RdrNameForeignDecl, RdrNameGRHS, @@ -44,11 +43,6 @@ module RdrHsSyn ( RdrMatch(..), SigConverter, - RdrNameClassOpPragmas, - RdrNameClassPragmas, - RdrNameDataPragmas, - RdrNameGenPragmas, - RdrNameInstancePragmas, extractHsTyRdrNames, extractHsTyRdrTyVars, extractHsTysRdrTyVars, extractPatsTyVars, @@ -56,13 +50,7 @@ module RdrHsSyn ( extractHsCtxtRdrTyVars, extractGenericPatTyVars, mkHsOpApp, mkClassDecl, mkClassOpSig, mkConDecl, - mkHsNegApp, mkHsIntegralLit, mkHsFractionalLit, mkNPlusKPatIn, - - - -- some built-in names (all :: RdrName) - unitCon_RDR, unitTyCon_RDR, nilCon_RDR, listTyCon_RDR, - tupleCon_RDR, tupleTyCon_RDR, ubxTupleCon_RDR, ubxTupleTyCon_RDR, - funTyCon_RDR, + mkHsNegApp, cvBinds, cvMonoBindsAndSigs, @@ -74,21 +62,17 @@ module RdrHsSyn ( #include "HsVersions.h" import HsSyn -- Lots of it -import CmdLineOpts ( opt_NoImplicitPrelude ) import HsPat ( collectSigTysFromPats ) import OccName ( mkClassTyConOcc, mkClassDataConOcc, mkWorkerOcc, mkSuperDictSelOcc, mkDefaultMethodOcc, mkGenOcc1, - mkGenOcc2, varName, dataName, tcName + mkGenOcc2, ) -import PrelNames ( pRELUDE_Name, mkTupNameStr ) +import PrelNames ( negate_RDR ) import RdrName ( RdrName, isRdrTyVar, mkRdrUnqual, rdrNameOcc, - mkUnqual, mkPreludeQual ) -import HsPragmas import List ( nub ) -import BasicTypes ( Boxity(..), RecFlag(..) ) +import BasicTypes ( RecFlag(..) ) import Class ( DefMeth (..) ) -import Outputable \end{code} @@ -106,7 +90,6 @@ type RdrNameConDecl = ConDecl RdrName type RdrNameConDetails = ConDetails RdrName type RdrNameContext = HsContext RdrName type RdrNameHsDecl = HsDecl RdrName RdrNamePat -type RdrNameSpecDataSig = SpecDataSig RdrName type RdrNameDefaultDecl = DefaultDecl RdrName type RdrNameForeignDecl = ForeignDecl RdrName type RdrNameGRHS = GRHS RdrName RdrNamePat @@ -131,12 +114,6 @@ type RdrNameDeprecation = DeprecDecl RdrName type RdrNameFixitySig = FixitySig RdrName type RdrNameHsRecordBinds = HsRecordBinds RdrName RdrNamePat - -type RdrNameClassOpPragmas = ClassOpPragmas RdrName -type RdrNameClassPragmas = ClassPragmas RdrName -type RdrNameDataPragmas = DataPragmas RdrName -type RdrNameGenPragmas = GenPragmas RdrName -type RdrNameInstancePragmas = InstancePragmas RdrName \end{code} @@ -234,8 +211,8 @@ file (which would be equally good). Similarly for mkConDecl, mkClassOpSig and default-method names. \begin{code} -mkClassDecl cxt cname tyvars fds sigs mbinds prags loc - = ClassDecl cxt cname tyvars fds sigs mbinds prags new_names loc +mkClassDecl cxt cname tyvars fds sigs mbinds loc + = ClassDecl cxt cname tyvars fds sigs mbinds new_names loc where cls_occ = rdrNameOcc cname data_occ = mkClassDataConOcc cls_occ @@ -251,15 +228,15 @@ mkClassDecl cxt cname tyvars fds sigs mbinds prags loc -- D_sc1, D_sc2 -- (We used to call them D_C, but now we can have two different -- superclasses both called C!) - new_names = toClassDeclNameList (tname, dname, dwname, sc_sel_names) + new_names = mkClassDeclSysNames (tname, dname, dwname, sc_sel_names) -- mkTyData :: ?? -mkTyData new_or_data context tname list_var list_con i maybe pragmas src = - let t_occ = rdrNameOcc tname +mkTyData new_or_data context tname list_var list_con i maybe src + = let t_occ = rdrNameOcc tname name1 = mkRdrUnqual (mkGenOcc1 t_occ) name2 = mkRdrUnqual (mkGenOcc2 t_occ) in TyData new_or_data context - tname list_var list_con i maybe pragmas src name1 name2 + tname list_var list_con i maybe src name1 name2 mkClassOpSig (DefMeth x) op ty loc = ClassOpSig op (Just (DefMeth dm_rn)) ty loc @@ -293,19 +270,7 @@ mkHsNegApp (HsLit (HsDoublePrim i)) = HsLit (HsDoublePrim (-i)) mkHsNegApp (HsOverLit (HsIntegral i n)) = HsOverLit (HsIntegral (-i) n) mkHsNegApp (HsOverLit (HsFractional f n)) = HsOverLit (HsFractional (-f) n) - -mkHsNegApp expr = NegApp expr (prelQual varName SLIT("negate")) -\end{code} - -\begin{code} -mkHsIntegralLit :: Integer -> HsOverLit RdrName -mkHsIntegralLit i = HsIntegral i (prelQual varName SLIT("fromInteger")) - -mkHsFractionalLit :: Rational -> HsOverLit RdrName -mkHsFractionalLit f = HsFractional f (prelQual varName SLIT("fromRational")) - -mkNPlusKPatIn :: RdrName -> HsOverLit RdrName -> RdrNamePat -mkNPlusKPatIn n k = NPlusKPatIn n k (prelQual varName SLIT("-")) +mkHsNegApp expr = NegApp expr negate_RDR \end{code} A useful function for building @OpApps@. The operator is always a @@ -315,30 +280,6 @@ variable, and we don't know the fixity yet. mkHsOpApp e1 op e2 = OpApp e1 (HsVar op) (error "mkOpApp:fixity") e2 \end{code} -\begin{code} ------------------------------------------------------------------------------ --- Built-in names --- Qualified Prelude names are always in scope; so we can just say Prelude.[] --- for the list type constructor, say. But it's not so easy when we say --- -fno-implicit-prelude. Then you just get whatever "[]" happens to be in scope. - -unitCon_RDR, unitTyCon_RDR, nilCon_RDR, listTyCon_RDR :: RdrName -tupleCon_RDR, tupleTyCon_RDR :: Int -> RdrName -ubxTupleCon_RDR, ubxTupleTyCon_RDR :: Int -> RdrName - -unitCon_RDR = prelQual dataName SLIT("()") -unitTyCon_RDR = prelQual tcName SLIT("()") -nilCon_RDR = prelQual dataName SLIT("[]") -listTyCon_RDR = prelQual tcName SLIT("[]") -funTyCon_RDR = prelQual tcName SLIT("(->)") -tupleCon_RDR arity = prelQual dataName (snd (mkTupNameStr Boxed arity)) -tupleTyCon_RDR arity = prelQual tcName (snd (mkTupNameStr Boxed arity)) -ubxTupleCon_RDR arity = prelQual dataName (snd (mkTupNameStr Unboxed arity)) -ubxTupleTyCon_RDR arity = prelQual tcName (snd (mkTupNameStr Unboxed arity)) - -prelQual ns occ | opt_NoImplicitPrelude = mkUnqual ns occ - | otherwise = mkPreludeQual ns pRELUDE_Name occ -\end{code} %************************************************************************ %* *