@@ -101,10 +101,11 @@ resolveAliasAtPos ::
101101 NormalizedFilePath ->
102102 LSP. Position ->
103103 VFS. CodePointPosition ->
104+ Maybe (XRec GhcPs [LIE GhcPs ]) ->
104105 [LImportDecl GhcPs ] ->
105106 [LHsDecl GhcPs ] ->
106107 ExceptT PluginError m (Maybe (LSP. Range , ImportAlias ))
107- resolveAliasAtPos getNamesAtPosFn state nfp lspPos pos imports hsDecls = do
108+ resolveAliasAtPos getNamesAtPosFn state nfp lspPos pos exports imports hsDecls = do
108109 virtualFile <- runActionE " rename.getVirtualFile" state
109110 $ handleMaybeM (PluginInternalError
110111 (" Virtual file not found: " <> T. pack (show nfp)))
@@ -114,7 +115,7 @@ resolveAliasAtPos getNamesAtPosFn state nfp lspPos pos imports hsDecls = do
114115 Just lspRange -> Just (lspRange, alias)
115116 case findAliasDeclAtPos pos imports of
116117 Just alias -> pure $ toLSPRange (aliasDeclRange alias, alias)
117- Nothing -> case findAliasUseAtPos pos imports hsDecls of
118+ Nothing -> case findAliasUseAtPos pos exports imports hsDecls of
118119 Nothing -> pure Nothing
119120 Just (_, [] ) -> pure Nothing
120121 Just (range, [alias]) -> pure $ toLSPRange (range, alias)
@@ -134,10 +135,11 @@ aliasBasedRename ::
134135 NormalizedFilePath ->
135136 Uri ->
136137 ImportAlias ->
138+ Maybe (XRec GhcPs [LIE GhcPs ]) ->
137139 [LHsDecl GhcPs ] ->
138140 T. Text ->
139141 ExceptT PluginError m (MessageResult Method_TextDocumentRename )
140- aliasBasedRename state nfp uri importAlias hsDecls newNameText = do
142+ aliasBasedRename state nfp uri importAlias exports hsDecls newNameText = do
141143 let ImportAlias {aliasDeclRange, aliasIsShared} = importAlias
142144 virtualFile <- runActionE " rename.getVirtualFile" state
143145 $ handleMaybeM (PluginInternalError
@@ -147,9 +149,9 @@ aliasBasedRename state nfp uri importAlias hsDecls newNameText = do
147149 if aliasIsShared
148150 then do
149151 tcModule <- runActionE " rename.sharedAliasRanges" state $ useE TypeCheck nfp
150- pure $ aliasUseSiteRangesDisambiguated tcModule importAlias hsDecls
152+ pure $ aliasUseSiteRangesDisambiguated tcModule importAlias exports hsDecls
151153 else
152- pure $ aliasUseSiteRanges importAlias hsDecls
154+ pure $ aliasUseSiteRanges importAlias exports hsDecls
153155 declEdit <- handleMaybe (PluginInternalError " Alias declaration span is out of range" )
154156 $ rangeToTextEdit virtualFile newNameText aliasDeclRange
155157 useEdits <- handleMaybe (PluginInternalError " A use site span is out of range" )
@@ -185,12 +187,14 @@ findAliasDeclAtPos pos imports = listToMaybe $ do
185187-- Returns multiple aliases if multiple modules share the same alias.
186188findAliasUseAtPos ::
187189 VFS. CodePointPosition ->
190+ Maybe (XRec GhcPs [LIE GhcPs ]) ->
188191 [LImportDecl GhcPs ] ->
189192 [LHsDecl GhcPs ] ->
190193 Maybe (VFS. CodePointRange , [ImportAlias ])
191- findAliasUseAtPos pos imports hsDecls =
194+ findAliasUseAtPos pos exports imports hsDecls =
192195 let qualifiersAtPos = do
193- locatedRdrName :: XRec GhcPs RdrName <- listify (const True ) hsDecls
196+ locatedRdrName :: XRec GhcPs RdrName <-
197+ listify (const True ) exports ++ listify (const True ) hsDecls
194198 Qual qualifier _ <- [unLoc locatedRdrName]
195199 RealSrcSpan qualifiedNameSpan _ <- [getLoc locatedRdrName]
196200 let qualifiedNameRange = realSrcSpanToCodePointRange qualifiedNameSpan
@@ -217,11 +221,16 @@ findAliasUseAtPos pos imports hsDecls =
217221
218222-- | Collect the 'CodePointRange' of every qualified use of @importAlias@, such
219223-- as @L@ in @L.take@, @L.drop@, and so on.
220- aliasUseSiteRanges :: ImportAlias -> [LHsDecl GhcPs ] -> [VFS. CodePointRange ]
221- aliasUseSiteRanges importAlias hsDecls = nubOrd $ do
224+ aliasUseSiteRanges ::
225+ ImportAlias ->
226+ Maybe (XRec GhcPs [LIE GhcPs ]) ->
227+ [LHsDecl GhcPs ] ->
228+ [VFS. CodePointRange ]
229+ aliasUseSiteRanges importAlias exports hsDecls = nubOrd $ do
222230 let ImportAlias {aliasName} = importAlias
223231 aliasLength = fromIntegral (moduleNameLength aliasName)
224- locatedRdrName :: XRec GhcPs RdrName <- listify (const True ) hsDecls
232+ locatedRdrName :: XRec GhcPs RdrName <-
233+ listify (const True ) exports ++ listify (const True ) hsDecls
225234 Qual qualifier _ <- [unLoc locatedRdrName]
226235 guard (qualifier == aliasName)
227236 RealSrcSpan qualifiedNameSpan _ <- [getLoc locatedRdrName]
@@ -259,13 +268,15 @@ disambiguateAliasUse tcModule namesAtPos candidates = nubOrd $ do
259268aliasUseSiteRangesDisambiguated ::
260269 TcModuleResult ->
261270 ImportAlias ->
271+ Maybe (XRec GhcPs [LIE GhcPs ]) ->
262272 [LHsDecl GhcPs ] ->
263273 [VFS. CodePointRange ]
264- aliasUseSiteRangesDisambiguated tcModule importAlias hsDecls = nubOrd $ do
274+ aliasUseSiteRangesDisambiguated tcModule importAlias exports hsDecls = nubOrd $ do
265275 let rdrEnv = tcg_rdr_env (tmrTypechecked tcModule)
266276 ImportAlias {aliasModuleName, aliasName} = importAlias
267277 aliasLength = fromIntegral (moduleNameLength aliasName)
268- locatedRdrName :: XRec GhcPs RdrName <- listify (const True ) hsDecls
278+ locatedRdrName :: XRec GhcPs RdrName <-
279+ listify (const True ) exports ++ listify (const True ) hsDecls
269280 rdrName@ (Qual qualifier name) <- [unLoc locatedRdrName]
270281 guard (qualifier == aliasName)
271282 nameGREElement <- pickGREs rdrName $ lookupGlobalRdrEnv rdrEnv name
0 commit comments