@@ -186,7 +186,7 @@ gotoTypeDefinition
186
186
-> IdeOptions
187
187
-> HieAstResult
188
188
-> Position
189
- -> MaybeT m [Location ]
189
+ -> MaybeT m [( Location , Identifier ) ]
190
190
gotoTypeDefinition withHieDb lookupModule ideOpts srcSpans pos
191
191
= lift $ typeLocationsAtPoint withHieDb lookupModule ideOpts pos srcSpans
192
192
@@ -199,7 +199,7 @@ gotoDefinition
199
199
-> M. Map ModuleName NormalizedFilePath
200
200
-> HieASTs a
201
201
-> Position
202
- -> MaybeT m [Location ]
202
+ -> MaybeT m [( Location , Identifier ) ]
203
203
gotoDefinition withHieDb getHieFile ideOpts imports srcSpans pos
204
204
= lift $ locationsAtPoint withHieDb getHieFile ideOpts imports pos srcSpans
205
205
@@ -314,7 +314,7 @@ typeLocationsAtPoint
314
314
-> IdeOptions
315
315
-> Position
316
316
-> HieAstResult
317
- -> m [Location ]
317
+ -> m [( Location , Identifier ) ]
318
318
typeLocationsAtPoint withHieDb lookupModule _ideOptions pos (HAR _ ast _ _ hieKind) =
319
319
case hieKind of
320
320
HieFromDisk hf ->
@@ -332,12 +332,12 @@ typeLocationsAtPoint withHieDb lookupModule _ideOptions pos (HAR _ ast _ _ hieKi
332
332
HQualTy a b -> getTypes' [a,b]
333
333
HCastTy a -> getTypes' [a]
334
334
_ -> []
335
- in fmap nubOrd $ concatMapM (fmap (fromMaybe [] ) . nameToLocation withHieDb lookupModule) (getTypes' ts)
335
+ in fmap nubOrd $ concatMapM (\ n -> fmap (maybe [] ( fmap (, Right n))) ( nameToLocation withHieDb lookupModule n) ) (getTypes' ts)
336
336
HieFresh ->
337
337
let ts = concat $ pointCommand ast pos getts
338
338
getts x = nodeType ni ++ (mapMaybe identType $ M. elems $ nodeIdentifiers ni)
339
339
where ni = nodeInfo x
340
- in fmap nubOrd $ concatMapM (fmap (fromMaybe [] ) . nameToLocation withHieDb lookupModule) (getTypes ts)
340
+ in fmap nubOrd $ concatMapM (\ n -> fmap (maybe [] ( fmap (, Right n))) ( nameToLocation withHieDb lookupModule n) ) (getTypes ts)
341
341
342
342
namesInType :: Type -> [Name ]
343
343
namesInType (TyVarTy n) = [varName n]
@@ -361,13 +361,16 @@ locationsAtPoint
361
361
-> M. Map ModuleName NormalizedFilePath
362
362
-> Position
363
363
-> HieASTs a
364
- -> m [Location ]
364
+ -> m [( Location , Identifier ) ]
365
365
locationsAtPoint withHieDb lookupModule _ideOptions imports pos ast =
366
366
let ns = concat $ pointCommand ast pos (M. keys . getNodeIds)
367
367
zeroPos = Position 0 0
368
368
zeroRange = Range zeroPos zeroPos
369
- modToLocation m = fmap (\ fs -> pure $ Location (fromNormalizedUri $ filePathToUri' fs) zeroRange) $ M. lookup m imports
370
- in fmap (nubOrd . concat ) $ mapMaybeM (either (pure . modToLocation) $ nameToLocation withHieDb lookupModule) ns
369
+ modToLocation m = fmap (\ fs -> pure (Location (fromNormalizedUri $ filePathToUri' fs) zeroRange)) $ M. lookup m imports
370
+ in fmap (nubOrd . concat ) $ mapMaybeM
371
+ (either (\ m -> pure ((fmap $ fmap (,Left m)) (modToLocation m)))
372
+ (\ n -> fmap (fmap $ fmap (,Right n)) (nameToLocation withHieDb lookupModule n)))
373
+ ns
371
374
372
375
-- | Given a 'Name' attempt to find the location where it is defined.
373
376
nameToLocation :: MonadIO m => WithHieDb -> LookupModule m -> Name -> m (Maybe [Location ])
0 commit comments