[project @ 1996-04-05 08:26:04 by partain]
[ghc-hetmet.git] / ghc / compiler / rename / RnHsSyn.lhs
1 %
2 % (c) The AQUA Project, Glasgow University, 1996
3 %
4 \section[RnHsSyn]{Specialisations of the @HsSyn@ syntax for the renamer}
5
6 \begin{code}
7 #include "HsVersions.h"
8
9 module RnHsSyn where
10
11 import Ubiq{-uitous-}
12
13 import HsSyn
14 \end{code}
15
16 \begin{code}
17 type RenamedArithSeqInfo        = ArithSeqInfo          Fake Fake Name RenamedPat
18 type RenamedBind                = Bind                  Fake Fake Name RenamedPat
19 type RenamedClassDecl           = ClassDecl             Fake Fake Name RenamedPat
20 type RenamedClassOpPragmas      = ClassOpPragmas        Name
21 type RenamedClassOpSig          = Sig                   Name
22 type RenamedClassPragmas        = ClassPragmas          Name
23 type RenamedConDecl             = ConDecl               Name
24 type RenamedContext             = Context               Name
25 type RenamedDataPragmas         = DataPragmas           Name
26 type RenamedSpecDataSig         = SpecDataSig           Name
27 type RenamedDefaultDecl         = DefaultDecl           Name
28 type RenamedFixityDecl          = FixityDecl            Name
29 type RenamedGRHS                = GRHS                  Fake Fake Name RenamedPat
30 type RenamedGRHSsAndBinds       = GRHSsAndBinds         Fake Fake Name RenamedPat
31 type RenamedGenPragmas          = GenPragmas            Name
32 type RenamedHsBinds             = HsBinds               Fake Fake Name RenamedPat
33 type RenamedHsExpr              = HsExpr                Fake Fake Name RenamedPat
34 type RenamedHsModule            = HsModule              Fake Fake Name RenamedPat
35 type RenamedRecordBinds         = HsRecordBinds         Fake Fake Name RenamedPat
36 type RenamedImportedInterface   = ImportedInterface     Fake Fake Name RenamedPat
37 type RenamedInstDecl            = InstDecl              Fake Fake Name RenamedPat
38 type RenamedInstancePragmas     = InstancePragmas       Name
39 type RenamedInterface           = Interface             Fake Fake Name RenamedPat
40 type RenamedMatch               = Match                 Fake Fake Name RenamedPat
41 type RenamedMonoBinds           = MonoBinds             Fake Fake Name RenamedPat
42 type RenamedMonoType            = MonoType              Name
43 type RenamedPat                 = InPat                 Name
44 type RenamedPolyType            = PolyType              Name
45 type RenamedQual                = Qual                  Fake Fake Name RenamedPat
46 type RenamedSig                 = Sig                   Name
47 type RenamedSpecInstSig         = SpecInstSig           Name
48 type RenamedStmt                = Stmt                  Fake Fake Name RenamedPat
49 type RenamedTyDecl              = TyDecl                Name
50 \end{code}
51
52 \begin{code}
53 collectQualBinders :: [RenamedQual] -> [Name]
54
55 collectQualBinders quals
56   = concat (map collect quals)
57   where
58     collect (GeneratorQual pat _) = collectPatBinders pat
59     collect (FilterQual expr)     = []
60     collect (LetQual    binds)    = collectTopLevelBinders binds
61 \end{code}