Skip to content

Commit ce0b0f3

Browse files
authored
Merge pull request #1202 from elixir-lsp/codex/guard-against-empty-input-lists-in-merge_ranges_lists
Handle empty lists in merge_ranges_lists
2 parents 2638acb + 231620a commit ce0b0f3

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

apps/language_server/lib/language_server/range_utils.ex

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ defmodule ElixirLS.LanguageServer.RangeUtils do
120120
result
121121
end
122122

123+
def merge_ranges_lists([], []), do: []
124+
125+
def merge_ranges_lists([], _ranges_2) do
126+
raise ArgumentError, message: "ranges_1 is empty"
127+
end
128+
129+
def merge_ranges_lists(_ranges_1, []) do
130+
raise ArgumentError, message: "ranges_2 is empty"
131+
end
132+
123133
def merge_ranges_lists(ranges_1, ranges_2) do
124134
if hd(ranges_1) != hd(ranges_2) do
125135
raise ArgumentError, message: "range list do not start with the same range"

apps/language_server/test/range_utils_test.exs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,26 @@ defmodule ElixirLS.LanguageServer.RangeUtilsTest do
526526

527527
assert merge_ranges_lists(range_1, range_2) == expected
528528
end
529+
530+
test "handles empty lists" do
531+
assert merge_ranges_lists([], []) == []
532+
end
533+
534+
test "raises if ranges_1 is empty" do
535+
range_2 = [range(1, 1, 5, 5)]
536+
537+
assert_raise ArgumentError, "ranges_1 is empty", fn ->
538+
merge_ranges_lists([], range_2)
539+
end
540+
end
541+
542+
test "raises if ranges_2 is empty" do
543+
range_1 = [range(1, 1, 5, 5)]
544+
545+
assert_raise ArgumentError, "ranges_2 is empty", fn ->
546+
merge_ranges_lists(range_1, [])
547+
end
548+
end
529549
end
530550

531551
describe "deduplicate/1" do

0 commit comments

Comments
 (0)