Skip to content

Commit f23419f

Browse files
author
izuzu
committed
Move exported functions to top
1 parent 6539bae commit f23419f

1 file changed

Lines changed: 53 additions & 53 deletions

File tree

plugins/hls-rename-plugin/src/Ide/Plugin/Rename/ImportAlias.hs

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -86,59 +86,6 @@ getParsedModuleStale state nfp =
8686
runAction "rename.getParsedModuleStale" state
8787
(useWithStale GetParsedModule nfp)
8888

89-
-- | Find the 'ImportAlias' if the cursor is on an import alias declaration,
90-
-- such as @L@ in @import Data.List as L@.
91-
findAliasDeclAtPos ::
92-
VFS.CodePointPosition ->
93-
[LImportDecl GhcPs] ->
94-
Maybe ImportAlias
95-
findAliasDeclAtPos pos imports = listToMaybe $ do
96-
let allAliases = mapMaybe (fmap unLoc . ideclAs . unLoc) imports
97-
importDecl <- map unLoc imports
98-
Just locatedAlias <- [ideclAs importDecl]
99-
RealSrcSpan aliasDeclSpan _ <- [getLoc locatedAlias]
100-
let aliasDeclRange = realSrcSpanToCodePointRange aliasDeclSpan
101-
guard (rangeContainsPosition aliasDeclRange pos)
102-
let aliasModuleName = unLoc (ideclName importDecl)
103-
aliasName = unLoc locatedAlias
104-
aliasIsShared = length (filter (== aliasName) allAliases) > 1
105-
[ImportAlias{aliasModuleName, aliasName, aliasDeclRange, aliasIsShared}]
106-
107-
-- | Find the 'ImportAlias' matching the name qualifier at the cursor, such as
108-
-- @L@ in @L.take@.
109-
-- Returns multiple values if multiple modules share the same alias.
110-
findAliasUseAtPos ::
111-
VFS.CodePointPosition ->
112-
[LImportDecl GhcPs] ->
113-
[LHsDecl GhcPs] ->
114-
[ImportAlias]
115-
findAliasUseAtPos pos imports hsDecls =
116-
let qualifiersAtPos = do
117-
locatedRdrName :: XRec GhcPs RdrName <- listify (const True) hsDecls
118-
Qual qualifier _ <- [unLoc locatedRdrName]
119-
RealSrcSpan qualifiedNameSpan _ <- [getLoc locatedRdrName]
120-
let qualifiedNameRange = realSrcSpanToCodePointRange qualifiedNameSpan
121-
guard (rangeContainsPosition qualifiedNameRange pos)
122-
let qualifierLength = fromIntegral (moduleNameLength qualifier)
123-
qualifierStart = qualifiedNameRange ^. VFS.start
124-
qualifierRange = qualifiedNameRange
125-
& VFS.end .~ (qualifierStart & VFS.character +~ qualifierLength)
126-
guard (rangeContainsPosition qualifierRange pos)
127-
[qualifier]
128-
in case qualifiersAtPos of
129-
[] -> []
130-
qualifierAtPos : _ -> do
131-
let allAliases = mapMaybe (fmap unLoc . ideclAs . unLoc) imports
132-
importDecl <- map unLoc imports
133-
Just locatedAlias <- [ideclAs importDecl]
134-
let aliasName = unLoc locatedAlias
135-
guard (aliasName == qualifierAtPos)
136-
RealSrcSpan aliasDeclSpan _ <- [getLoc locatedAlias]
137-
let aliasModuleName = unLoc (ideclName importDecl)
138-
aliasDeclRange = realSrcSpanToCodePointRange aliasDeclSpan
139-
aliasIsShared = length (filter (== aliasName) allAliases) > 1
140-
[ImportAlias{aliasModuleName, aliasName, aliasDeclRange, aliasIsShared}]
141-
14289
-- | Return the 'ImportAlias' being renamed at the cursor. The cursor may be on
14390
-- the alias token in an import declaration or on a qualifier at a use site. If
14491
-- multiple imports share the same alias, falls back to the typechecked module's
@@ -206,6 +153,59 @@ aliasBasedRename state nfp uri importAlias hsDecls newNameText = do
206153
workspaceEdit = WorkspaceEdit fileChanges Nothing Nothing
207154
pure $ InL workspaceEdit
208155

156+
-- | Find the 'ImportAlias' if the cursor is on an import alias declaration,
157+
-- such as @L@ in @import Data.List as L@.
158+
findAliasDeclAtPos ::
159+
VFS.CodePointPosition ->
160+
[LImportDecl GhcPs] ->
161+
Maybe ImportAlias
162+
findAliasDeclAtPos pos imports = listToMaybe $ do
163+
let allAliases = mapMaybe (fmap unLoc . ideclAs . unLoc) imports
164+
importDecl <- map unLoc imports
165+
Just locatedAlias <- [ideclAs importDecl]
166+
RealSrcSpan aliasDeclSpan _ <- [getLoc locatedAlias]
167+
let aliasDeclRange = realSrcSpanToCodePointRange aliasDeclSpan
168+
guard (rangeContainsPosition aliasDeclRange pos)
169+
let aliasModuleName = unLoc (ideclName importDecl)
170+
aliasName = unLoc locatedAlias
171+
aliasIsShared = length (filter (== aliasName) allAliases) > 1
172+
[ImportAlias{aliasModuleName, aliasName, aliasDeclRange, aliasIsShared}]
173+
174+
-- | Find the 'ImportAlias' matching the name qualifier at the cursor, such as
175+
-- @L@ in @L.take@.
176+
-- Returns multiple values if multiple modules share the same alias.
177+
findAliasUseAtPos ::
178+
VFS.CodePointPosition ->
179+
[LImportDecl GhcPs] ->
180+
[LHsDecl GhcPs] ->
181+
[ImportAlias]
182+
findAliasUseAtPos pos imports hsDecls =
183+
let qualifiersAtPos = do
184+
locatedRdrName :: XRec GhcPs RdrName <- listify (const True) hsDecls
185+
Qual qualifier _ <- [unLoc locatedRdrName]
186+
RealSrcSpan qualifiedNameSpan _ <- [getLoc locatedRdrName]
187+
let qualifiedNameRange = realSrcSpanToCodePointRange qualifiedNameSpan
188+
guard (rangeContainsPosition qualifiedNameRange pos)
189+
let qualifierLength = fromIntegral (moduleNameLength qualifier)
190+
qualifierStart = qualifiedNameRange ^. VFS.start
191+
qualifierRange = qualifiedNameRange
192+
& VFS.end .~ (qualifierStart & VFS.character +~ qualifierLength)
193+
guard (rangeContainsPosition qualifierRange pos)
194+
[qualifier]
195+
in case qualifiersAtPos of
196+
[] -> []
197+
qualifierAtPos : _ -> do
198+
let allAliases = mapMaybe (fmap unLoc . ideclAs . unLoc) imports
199+
importDecl <- map unLoc imports
200+
Just locatedAlias <- [ideclAs importDecl]
201+
let aliasName = unLoc locatedAlias
202+
guard (aliasName == qualifierAtPos)
203+
RealSrcSpan aliasDeclSpan _ <- [getLoc locatedAlias]
204+
let aliasModuleName = unLoc (ideclName importDecl)
205+
aliasDeclRange = realSrcSpanToCodePointRange aliasDeclSpan
206+
aliasIsShared = length (filter (== aliasName) allAliases) > 1
207+
[ImportAlias{aliasModuleName, aliasName, aliasDeclRange, aliasIsShared}]
208+
209209
-- | Collect the 'CodePointRange' of every qualified use of @importAlias@, such
210210
-- as @L@ in @L.take@, @L.drop@, and so on.
211211
aliasUseSiteRanges :: ImportAlias -> [LHsDecl GhcPs] -> [VFS.CodePointRange]

0 commit comments

Comments
 (0)