Skip to content

Commit a3bf0bf

Browse files
committed
Add haddock to mergeDefinitions in plugin API
1 parent d5a8d3e commit a3bf0bf

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

hls-plugin-api/src/Ide/Types.hs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,14 @@ nullToMaybe' (InR (InR _)) = Nothing
702702

703703
type Definitions = (Definition |? ([DefinitionLink] |? Null))
704704

705+
-- | Merges two definition responses (TextDocumentDefinition | TextDocumentTypeDefinition)
706+
-- into one preserving all locations and their order (including order of the responses).
707+
-- Upgrades Location(s) into LocationLink(s) when one of the responses is LocationLink(s). With following fields:
708+
-- * LocationLink.originSelectionRange = Nothing
709+
-- * LocationLink.targetUri = Location.Uri
710+
-- * LocationLink.targetRange = Location.Range
711+
-- * LocationLink.targetSelectionRange = Location.Range
712+
-- Ignores Null responses.
705713
mergeDefinitions :: Definitions -> Definitions -> Definitions
706714
mergeDefinitions definitions1 definitions2 = case (definitions1, definitions2) of
707715
(InR (InR Null), def2) -> def2
@@ -712,11 +720,11 @@ mergeDefinitions definitions1 definitions2 = case (definitions1, definitions2) o
712720
(InR (InL links1), InR (InL links2)) -> InR $ InL (links1 ++ links2)
713721
where
714722
defToLinks :: Definition -> [DefinitionLink]
715-
defToLinks (Definition (InL location)) = [DefinitionLink $ locationToLocationLink location]
716-
defToLinks (Definition (InR locations)) = map (DefinitionLink . locationToLocationLink) locations
723+
defToLinks (Definition (InL location)) = [locationToDefinitionLink location]
724+
defToLinks (Definition (InR locations)) = map locationToDefinitionLink locations
717725

718-
locationToLocationLink :: Location -> LocationLink
719-
locationToLocationLink Location{_uri, _range} = LocationLink{_originSelectionRange = Nothing, _targetUri = _uri, _targetRange = _range, _targetSelectionRange = _range}
726+
locationToDefinitionLink :: Location -> DefinitionLink
727+
locationToDefinitionLink Location{_uri, _range} = DefinitionLink LocationLink{_originSelectionRange = Nothing, _targetUri = _uri, _targetRange = _range, _targetSelectionRange = _range}
720728

721729
mergeDefs :: Definition -> Definition -> Definition
722730
mergeDefs (Definition (InL loc1)) (Definition (InL loc2)) = Definition $ InR [loc1, loc2]

0 commit comments

Comments
 (0)