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(..),
17 RdrNameClassOpSig(..),
20 RdrNameSpecDataSig(..),
21 RdrNameDefaultDecl(..),
22 RdrNameFixityDecl(..),
24 RdrNameGRHSsAndBinds(..),
29 RdrNameImportDecl(..),
38 RdrNameSpecInstSig(..),
42 RdrNameClassOpPragmas(..),
43 RdrNameClassPragmas(..),
44 RdrNameDataPragmas(..),
45 RdrNameGenPragmas(..),
46 RdrNameInstancePragmas(..),
56 import Name ( ExportFlag(..) )
60 type RdrNameArithSeqInfo = ArithSeqInfo Fake Fake RdrName RdrNamePat
61 type RdrNameBangType = BangType RdrName
62 type RdrNameBind = Bind Fake Fake RdrName RdrNamePat
63 type RdrNameClassDecl = ClassDecl Fake Fake RdrName RdrNamePat
64 type RdrNameClassOpSig = Sig RdrName
65 type RdrNameConDecl = ConDecl RdrName
66 type RdrNameContext = Context RdrName
67 type RdrNameSpecDataSig = SpecDataSig RdrName
68 type RdrNameDefaultDecl = DefaultDecl RdrName
69 type RdrNameFixityDecl = FixityDecl RdrName
70 type RdrNameGRHS = GRHS Fake Fake RdrName RdrNamePat
71 type RdrNameGRHSsAndBinds = GRHSsAndBinds Fake Fake RdrName RdrNamePat
72 type RdrNameHsBinds = HsBinds Fake Fake RdrName RdrNamePat
73 type RdrNameHsExpr = HsExpr Fake Fake RdrName RdrNamePat
74 type RdrNameHsModule = HsModule Fake Fake RdrName RdrNamePat
75 type RdrNameIE = IE RdrName
76 type RdrNameImportDecl = ImportDecl RdrName
77 type RdrNameInstDecl = InstDecl Fake Fake RdrName RdrNamePat
78 type RdrNameMatch = Match Fake Fake RdrName RdrNamePat
79 type RdrNameMonoBinds = MonoBinds Fake Fake RdrName RdrNamePat
80 type RdrNameMonoType = MonoType RdrName
81 type RdrNamePat = InPat RdrName
82 type RdrNamePolyType = PolyType RdrName
83 type RdrNameQual = Qual Fake Fake RdrName RdrNamePat
84 type RdrNameSig = Sig RdrName
85 type RdrNameSpecInstSig = SpecInstSig RdrName
86 type RdrNameStmt = Stmt Fake Fake RdrName RdrNamePat
87 type RdrNameTyDecl = TyDecl RdrName
89 type RdrNameClassOpPragmas = ClassOpPragmas RdrName
90 type RdrNameClassPragmas = ClassPragmas RdrName
91 type RdrNameDataPragmas = DataPragmas RdrName
92 type RdrNameGenPragmas = GenPragmas RdrName
93 type RdrNameInstancePragmas = InstancePragmas RdrName
94 type RdrNameCoreExpr = UnfoldingCoreExpr RdrName
97 %************************************************************************
99 \subsection{Grabbing importees and exportees}
101 %************************************************************************
104 getRawImportees :: [RdrNameIE] -> [RdrName]
105 getRawExportees :: Maybe [RdrNameIE] -> ([(RdrName, ExportFlag)], [Module])
108 = foldr do_imp [] imps
110 do_imp (IEVar n) acc = n:acc
111 do_imp (IEThingAbs n) acc = n:acc
112 do_imp (IEThingWith n _) acc = n:acc
113 do_imp (IEThingAll n) acc = n:acc
115 getRawExportees Nothing = ([], [])
116 getRawExportees (Just exps)
117 = foldr do_exp ([],[]) exps
119 do_exp (IEVar n) (prs, mods) = ((n, ExportAll):prs, mods)
120 do_exp (IEThingAbs n) (prs, mods) = ((n, ExportAbs):prs, mods)
121 do_exp (IEThingAll n) (prs, mods) = ((n, ExportAll):prs, mods)
122 do_exp (IEThingWith n _) (prs, mods) = ((n, ExportAll):prs, mods)
123 do_exp (IEModuleContents n) (prs, mods) = (prs, n : mods)