1
- {-# LANGUAGE CPP #-}
2
1
module Haskell.Ide.Engine.ArtifactMap where
3
2
4
3
import Data.Maybe
@@ -42,48 +41,26 @@ genLocMap tm = names
42
41
renamed = fromJust $ GHC. tm_renamed_source tm
43
42
44
43
45
- #if __GLASGOW_HASKELL__ > 710
46
44
names = IM. union names2 $ SYB. everything IM. union (IM. empty `SYB.mkQ` hsRecFieldT) typechecked
47
- #else
48
- names = names2
49
- #endif
50
45
names2 = SYB. everything IM. union (IM. empty
51
- #if __GLASGOW_HASKELL__ > 710
52
46
`SYB.mkQ` fieldOcc
53
47
`SYB.extQ` hsRecFieldN
54
48
`SYB.extQ` checker) renamed
55
- #else
56
- `SYB.mkQ` checker) renamed
57
- #endif
58
49
59
50
checker (GHC. L (GHC. RealSrcSpan r) x) = IM. singleton (rspToInt r) x
60
51
checker _ = IM. empty
61
52
62
- #if __GLASGOW_HASKELL__ >= 806
63
53
fieldOcc :: GHC. FieldOcc GhcRn -> LocMap
64
- fieldOcc (GHC. FieldOcc n (GHC. L (GHC. RealSrcSpan r) _)) = IM. singleton (rspToInt r) n
54
+ fieldOcc (FieldOccCompat n (GHC. L (GHC. RealSrcSpan r) _)) = IM. singleton (rspToInt r) n
65
55
fieldOcc _ = IM. empty
66
56
67
57
hsRecFieldN :: GHC. LHsExpr GhcRn -> LocMap
68
- hsRecFieldN (GHC. L _ (GHC. HsRecFld _ ( GHC. Unambiguous n (GHC. L (GHC. RealSrcSpan r) _)) )) = IM. singleton (rspToInt r) n
58
+ hsRecFieldN (GHC. L _ (HsRecFldCompat ( UnambiguousCompat n (GHC. L (GHC. RealSrcSpan r) _)) )) = IM. singleton (rspToInt r) n
69
59
hsRecFieldN _ = IM. empty
70
60
71
61
hsRecFieldT :: GHC. LHsExpr GhcTc -> LocMap
72
- hsRecFieldT (GHC. L _ (GHC. HsRecFld _ ( GHC. Ambiguous n (GHC. L (GHC. RealSrcSpan r) _)) )) = IM. singleton (rspToInt r) (Var. varName n)
62
+ hsRecFieldT (GHC. L _ (HsRecFldCompat ( AmbiguousCompat n (GHC. L (GHC. RealSrcSpan r) _)) )) = IM. singleton (rspToInt r) (Var. varName n)
73
63
hsRecFieldT _ = IM. empty
74
- #elif __GLASGOW_HASKELL__ > 710
75
- fieldOcc :: GHC. FieldOcc GhcRn -> LocMap
76
- fieldOcc (GHC. FieldOcc (GHC. L (GHC. RealSrcSpan r) _) n) = IM. singleton (rspToInt r) n
77
- fieldOcc _ = IM. empty
78
-
79
- hsRecFieldN :: GHC. LHsExpr GhcRn -> LocMap
80
- hsRecFieldN (GHC. L _ (GHC. HsRecFld (GHC. Unambiguous (GHC. L (GHC. RealSrcSpan r) _) n) )) = IM. singleton (rspToInt r) n
81
- hsRecFieldN _ = IM. empty
82
-
83
- hsRecFieldT :: GHC. LHsExpr GhcTc -> LocMap
84
- hsRecFieldT (GHC. L _ (GHC. HsRecFld (GHC. Ambiguous (GHC. L (GHC. RealSrcSpan r) _) n) )) = IM. singleton (rspToInt r) (Var. varName n)
85
- hsRecFieldT _ = IM. empty
86
- #endif
87
64
88
65
-- | Generates a ModuleMap of imported and exported modules names,
89
66
-- and the locations that they were imported/exported at.
@@ -92,11 +69,7 @@ genImportMap tm = moduleMap
92
69
where
93
70
(_, lImports, mlies, _) = fromJust $ GHC. tm_renamed_source tm
94
71
95
- #if __GLASGOW_HASKELL__ > 802
96
72
lies = map fst $ fromMaybe [] mlies
97
- #else
98
- lies = fromMaybe [] mlies
99
- #endif
100
73
101
74
moduleMap :: ModuleMap
102
75
moduleMap = foldl goImp IM. empty lImports `IM.union` foldl goExp IM. empty lies
@@ -106,11 +79,7 @@ genImportMap tm = moduleMap
106
79
goImp acc _ = acc
107
80
108
81
goExp :: ModuleMap -> GHC. LIE name -> ModuleMap
109
- #if __GLASGOW_HASKELL__ >= 806
110
- goExp acc (GHC. L (GHC. RealSrcSpan r) (GHC. IEModuleContents _ lmn)) =
111
- #else
112
- goExp acc (GHC. L (GHC. RealSrcSpan r) (GHC. IEModuleContents lmn)) =
113
- #endif
82
+ goExp acc (GHC. L (GHC. RealSrcSpan r) (IEModuleContentsCompat lmn)) =
114
83
IM. insert (rspToInt r) (GHC. unLoc lmn) acc
115
84
goExp acc _ = acc
116
85
@@ -121,43 +90,21 @@ genDefMap tm = mconcat $ map (go . GHC.unLoc) decls
121
90
where
122
91
go :: GHC. HsDecl GhcPs -> DefMap
123
92
-- Type signatures
124
- #if __GLASGOW_HASKELL__ >= 806
125
- go (GHC. SigD _ (GHC. TypeSig _ lns _)) =
126
- #else
127
- go (GHC. SigD (GHC. TypeSig lns _)) =
128
- #endif
93
+ go (SigDCompat (TypeSigCompat lns _)) =
129
94
foldl IM. union mempty $ fmap go' lns
130
95
where go' (GHC. L (GHC. RealSrcSpan r) n) = IM. singleton (rspToInt r) n
131
96
go' _ = mempty
132
97
-- Definitions
133
- #if __GLASGOW_HASKELL__ >= 806
134
- go (GHC. ValD _ (GHC. FunBind _ (GHC. L (GHC. RealSrcSpan r) n) GHC. MG { GHC. mg_alts = llms } _ _)) =
135
- #else
136
- go (GHC. ValD (GHC. FunBind (GHC. L (GHC. RealSrcSpan r) n) GHC. MG { GHC. mg_alts = llms } _ _ _)) =
137
- #endif
98
+ go (ValDCompat (FunBindCompat (GHC. L (GHC. RealSrcSpan r) n) (GHC. MG { GHC. mg_alts = llms }))) =
138
99
IM. insert (rspToInt r) n wheres
139
100
where
140
101
wheres = mconcat $ fmap (gomatch . GHC. unLoc) (GHC. unLoc llms)
141
102
142
- gomatch GHC. Match { GHC. m_grhss = GHC. GRHSs { GHC. grhssLocalBinds = lbs } } =
143
- golbs (GHC. unLoc lbs)
144
- #if __GLASGOW_HASKELL__ >= 806
145
- gomatch GHC. XMatch {} = error " GHC.XMatch"
146
- gomatch (GHC. Match _ _ _ (GHC. XGRHSs _)) = error " GHC.XMatch"
147
- #endif
148
-
149
- #if __GLASGOW_HASKELL__ >= 806
150
- golbs (GHC. HsValBinds _ (GHC. ValBinds _ lhsbs lsigs)) =
151
- #else
152
- golbs (GHC. HsValBinds (GHC. ValBindsIn lhsbs lsigs)) =
153
- #endif
154
- #if __GLASGOW_HASKELL__ >= 806
155
- foldl (\ acc x -> IM. union acc (go $ GHC. ValD GHC. NoExt $ GHC. unLoc x)) mempty lhsbs
156
- `mappend` foldl IM. union mempty (fmap (go . GHC. SigD GHC. NoExt . GHC. unLoc) lsigs)
157
- #else
158
- foldl (\ acc x -> IM. union acc (go $ GHC. ValD $ GHC. unLoc x)) mempty lhsbs
159
- `mappend` foldl IM. union mempty (fmap (go . GHC. SigD . GHC. unLoc) lsigs)
160
- #endif
103
+ gomatch (MatchCompat lbs) = golbs (GHC. unLoc lbs)
104
+
105
+ golbs (HsValBindsCompat (ValBindsCompat lhsbs lsigs)) =
106
+ foldl (\ acc x -> IM. union acc (go $ ValDCompat $ GHC. unLoc x)) mempty lhsbs
107
+ `mappend` foldl IM. union mempty (fmap (go . SigDCompat . GHC. unLoc) lsigs)
161
108
golbs _ = mempty
162
109
go _ = mempty
163
110
decls = GHC. hsmodDecls $ GHC. unLoc $ GHC. pm_parsed_source $ GHC. tm_parsed_module tm
0 commit comments