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 SYN_IE(RdrNameArithSeqInfo),
14 SYN_IE(RdrNameBangType),
16 SYN_IE(RdrNameClassDecl),
17 SYN_IE(RdrNameClassOpSig),
18 SYN_IE(RdrNameConDecl),
19 SYN_IE(RdrNameContext),
20 SYN_IE(RdrNameSpecDataSig),
21 SYN_IE(RdrNameDefaultDecl),
22 SYN_IE(RdrNameFixityDecl),
24 SYN_IE(RdrNameGRHSsAndBinds),
25 SYN_IE(RdrNameHsBinds),
26 SYN_IE(RdrNameHsExpr),
27 SYN_IE(RdrNameHsModule),
29 SYN_IE(RdrNameImportDecl),
30 SYN_IE(RdrNameInstDecl),
32 SYN_IE(RdrNameMonoBinds),
33 SYN_IE(RdrNameMonoType),
35 SYN_IE(RdrNamePolyType),
38 SYN_IE(RdrNameSpecInstSig),
40 SYN_IE(RdrNameTyDecl),
42 SYN_IE(RdrNameClassOpPragmas),
43 SYN_IE(RdrNameClassPragmas),
44 SYN_IE(RdrNameDataPragmas),
45 SYN_IE(RdrNameGenPragmas),
46 SYN_IE(RdrNameInstancePragmas),
47 SYN_IE(RdrNameCoreExpr),
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 = Qualifier 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)