2 % (c) The AQUA Project, Glasgow University, 1996
4 \section[RdrHsSyn]{Specialisations of the @HsSyn@ syntax for the reader}
6 (Well, really, for specialisations involving @RdrName@s, even if
7 they are used somewhat later on in the compiler...)
10 #include "HsVersions.h"
13 RdrNameArithSeqInfo(..),
16 RdrNameClassOpSig(..),
19 RdrNameSpecDataSig(..),
20 RdrNameDefaultDecl(..),
21 RdrNameFixityDecl(..),
23 RdrNameGRHSsAndBinds(..),
28 RdrNameImportDecl(..),
37 RdrNameSpecInstSig(..),
41 RdrNameClassOpPragmas(..),
42 RdrNameClassPragmas(..),
43 RdrNameDataPragmas(..),
44 RdrNameGenPragmas(..),
45 RdrNameInstancePragmas(..),
55 import Outputable ( ExportFlag(..) )
59 type RdrNameArithSeqInfo = ArithSeqInfo Fake Fake RdrName RdrNamePat
60 type RdrNameBind = Bind Fake Fake RdrName RdrNamePat
61 type RdrNameClassDecl = ClassDecl Fake Fake RdrName RdrNamePat
62 type RdrNameClassOpSig = Sig RdrName
63 type RdrNameConDecl = ConDecl RdrName
64 type RdrNameContext = Context RdrName
65 type RdrNameSpecDataSig = SpecDataSig RdrName
66 type RdrNameDefaultDecl = DefaultDecl RdrName
67 type RdrNameFixityDecl = FixityDecl RdrName
68 type RdrNameGRHS = GRHS Fake Fake RdrName RdrNamePat
69 type RdrNameGRHSsAndBinds = GRHSsAndBinds Fake Fake RdrName RdrNamePat
70 type RdrNameHsBinds = HsBinds Fake Fake RdrName RdrNamePat
71 type RdrNameHsExpr = HsExpr Fake Fake RdrName RdrNamePat
72 type RdrNameHsModule = HsModule Fake Fake RdrName RdrNamePat
73 type RdrNameIE = IE RdrName
74 type RdrNameImportDecl = ImportDecl RdrName
75 type RdrNameInstDecl = InstDecl Fake Fake RdrName RdrNamePat
76 type RdrNameMatch = Match Fake Fake RdrName RdrNamePat
77 type RdrNameMonoBinds = MonoBinds Fake Fake RdrName RdrNamePat
78 type RdrNameMonoType = MonoType RdrName
79 type RdrNamePat = InPat RdrName
80 type RdrNamePolyType = PolyType RdrName
81 type RdrNameQual = Qual Fake Fake RdrName RdrNamePat
82 type RdrNameSig = Sig RdrName
83 type RdrNameSpecInstSig = SpecInstSig RdrName
84 type RdrNameStmt = Stmt Fake Fake RdrName RdrNamePat
85 type RdrNameTyDecl = TyDecl RdrName
87 type RdrNameClassOpPragmas = ClassOpPragmas RdrName
88 type RdrNameClassPragmas = ClassPragmas RdrName
89 type RdrNameDataPragmas = DataPragmas RdrName
90 type RdrNameGenPragmas = GenPragmas RdrName
91 type RdrNameInstancePragmas = InstancePragmas RdrName
92 type RdrNameCoreExpr = UnfoldingCoreExpr RdrName
95 %************************************************************************
97 \subsection{Grabbing importees and exportees}
99 %************************************************************************
102 getRawImportees :: [RdrNameIE] -> [RdrName]
103 getRawExportees :: Maybe [RdrNameIE] -> ([(RdrName, ExportFlag)], [Module])
106 = foldr do_imp [] imps
108 do_imp (IEVar n) acc = n:acc
109 do_imp (IEThingAbs n) acc = n:acc
110 do_imp (IEThingWith n _) acc = n:acc
111 do_imp (IEThingAll n) acc = n:acc
113 getRawExportees Nothing = ([], [])
114 getRawExportees (Just exps)
115 = foldr do_exp ([],[]) exps
117 do_exp (IEVar n) (prs, mods) = ((n, ExportAll):prs, mods)
118 do_exp (IEThingAbs n) (prs, mods) = ((n, ExportAbs):prs, mods)
119 do_exp (IEThingAll n) (prs, mods) = ((n, ExportAll):prs, mods)
120 do_exp (IEThingWith n _) (prs, mods) = ((n, ExportAll):prs, mods)
121 do_exp (IEModuleContents n) (prs, mods) = (prs, n : mods)