@@ -702,6 +702,14 @@ nullToMaybe' (InR (InR _)) = Nothing
702702
703703type 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.
705713mergeDefinitions :: Definitions -> Definitions -> Definitions
706714mergeDefinitions 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