Skip to content

Commit 80eff33

Browse files
committed
fix(inline_var): choose smaller identifier that contains range instead of first one
1 parent 3ec2d65 commit 80eff33

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

lua/refactoring/refactor/inline_var.lua

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -243,14 +243,25 @@ function M.inline_var(_, config)
243243
local reference_range = range(r.lnum - 1, r.col - 1, r.end_lnum - 1, r.end_col - 1, { buf = reference_buf })
244244

245245
local references_info = match_info_by_buf[reference_buf].references
246-
local reference_info = iter(references_info):find(
247-
---@param ri refactor.ReferenceInfo
248-
function(ri)
249-
local srow, scol, erow, ecol = ri.identifier:range()
250-
local identifier_range = range(srow, scol, erow, ecol, { buf = reference_buf })
251-
return identifier_range:has(reference_range)
252-
end
253-
)
246+
local reference_info = iter(references_info)
247+
:filter(
248+
---@param ri refactor.ReferenceInfo
249+
function(ri)
250+
local srow, scol, erow, ecol = ri.identifier:range()
251+
local identifier_range = range(srow, scol, erow, ecol, { buf = reference_buf })
252+
return identifier_range:has(reference_range)
253+
end
254+
)
255+
:fold(
256+
nil,
257+
---@param acc nil|refactor.ReferenceInfo
258+
---@param ri refactor.ReferenceInfo
259+
function(acc, ri)
260+
if not acc then return ri end
261+
if ri.identifier:byte_length() < acc.identifier:byte_length() then return ri end
262+
return acc
263+
end
264+
)
254265

255266
return { reference = r, info = reference_info }
256267
end

0 commit comments

Comments
 (0)