Skip to content

Commit aa09176

Browse files
committed
cleanup
1 parent 185b148 commit aa09176

File tree

7 files changed

+26
-165
lines changed

7 files changed

+26
-165
lines changed

apps/language_server/lib/language_server/mcp/request_handler.ex

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -616,31 +616,6 @@ defmodule ElixirLS.LanguageServer.MCP.RequestHandler do
616616
end
617617
end
618618

619-
defp format_function_doc(func) when is_binary(func) do
620-
"- #{func}"
621-
end
622-
623-
defp format_function_doc(func) when is_map(func) do
624-
parts = ["### #{func.function}/#{func.arity}"]
625-
626-
parts =
627-
if func[:specs] && length(func.specs) > 0 do
628-
specs = Enum.join(func.specs, "\n")
629-
parts ++ ["\n```elixir\n#{specs}\n```"]
630-
else
631-
parts
632-
end
633-
634-
parts =
635-
if func[:doc] do
636-
parts ++ ["\n#{func.doc}"]
637-
else
638-
parts
639-
end
640-
641-
Enum.join(parts, "\n")
642-
end
643-
644619
defp format_type_info_result(%{error: error}) do
645620
"Error: #{error}"
646621
end
@@ -994,10 +969,13 @@ defmodule ElixirLS.LanguageServer.MCP.RequestHandler do
994969
parts = ["# Environment Information"]
995970

996971
# Location
997-
if result[:location] do
998-
location = result.location
999-
parts = parts ++ ["\n**Location**: #{location.uri}:#{location.line}:#{location.column}"]
1000-
end
972+
parts =
973+
if result[:location] do
974+
location = result.location
975+
parts ++ ["\n**Location**: #{location.uri}:#{location.line}:#{location.column}"]
976+
else
977+
parts
978+
end
1001979

1002980
# Context
1003981
parts =

apps/language_server/lib/language_server/providers/execute_command/llm_docs_aggregator.ex

Lines changed: 9 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
171171
docs when is_list(docs) ->
172172
docs
173173
|> Enum.filter(fn
174-
{{^function, arity}, _anno, kind, _signatures, _doc, _metadata}
174+
{{^function, _arity}, _anno, kind, _signatures, _doc, _metadata}
175175
when kind in [:function, :macro] ->
176176
true
177177

@@ -191,7 +191,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
191191
specs when is_list(specs) ->
192192
specs
193193
|> Enum.filter(fn
194-
{{^function, arity}, _} -> true
194+
{{^function, _arity}, _} -> true
195195
_ -> false
196196
end)
197197
|> Enum.map(fn {{_name, arity}, _} -> arity end)
@@ -207,7 +207,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
207207
docs when is_list(docs) ->
208208
docs
209209
|> Enum.filter(fn
210-
{{^function, arity}, _, _, _, _} -> true
210+
{{^function, _arity}, _, _, _, _} -> true
211211
_ -> false
212212
end)
213213
|> Enum.map(fn {{_name, arity}, _, _, _, _} -> arity end)
@@ -223,7 +223,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
223223
types when is_list(types) ->
224224
types
225225
|> Enum.filter(fn
226-
{kind, {^function, _, args}} when kind in [:type, :typep, :opaque] ->
226+
{kind, {^function, _, _args}} when kind in [:type, :typep, :opaque] ->
227227
true
228228

229229
_ ->
@@ -361,9 +361,9 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
361361
# Filter out module_info functions and other special functions
362362
functions =
363363
exports
364-
|> Enum.filter(fn {name, arity} ->
365-
name not in [:module_info, :__info__] and
366-
not String.starts_with?(Atom.to_string(name), "__")
364+
|> Enum.filter(fn {name, _arity} ->
365+
name not in [:module_info, :__info__, :behaviour_info] and
366+
not String.starts_with?(Atom.to_string(name), "_")
367367
end)
368368
|> Enum.map(fn {name, arity} ->
369369
%{
@@ -394,7 +394,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
394394
|> Enum.map(fn doc -> format_type_doc(module, doc) end)
395395
|> Enum.reject(&is_nil/1)
396396

397-
other ->
397+
_other ->
398398
[]
399399
end
400400

@@ -684,7 +684,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
684684
when kind in [:function, :macro] ->
685685
arity == nil or doc_arity == arity
686686

687-
_ = h ->
687+
_ ->
688688
false
689689
end)
690690
end
@@ -808,40 +808,6 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDocsAggregator do
808808
_ -> []
809809
end
810810

811-
defp format_sections_as_list(sections) do
812-
sections
813-
|> Enum.flat_map(fn
814-
%{type: "moduledoc", content: _content} ->
815-
# Moduledoc is handled separately, not included in functions list
816-
[]
817-
818-
{:functions, functions} ->
819-
Enum.map(functions, fn f ->
820-
"#{f.function}/#{f.arity}"
821-
end)
822-
823-
{:macros, macros} ->
824-
Enum.map(macros, fn f ->
825-
"#{f.function}/#{f.arity}"
826-
end)
827-
828-
{:types, types} ->
829-
Enum.map(types, fn f ->
830-
"#{f.type}/#{f.arity}"
831-
end)
832-
833-
{:callbacks, callbacks} ->
834-
Enum.map(callbacks, fn f ->
835-
"#{f.callback}/#{f.arity}"
836-
end)
837-
838-
{:behaviours, behaviours} ->
839-
Enum.map(behaviours, fn f ->
840-
inspect(f.behaviour)
841-
end)
842-
end)
843-
end
844-
845811
defp extract_doc(%{"en" => doc}) when is_binary(doc), do: doc
846812
defp extract_doc(doc) when is_binary(doc), do: doc
847813
defp extract_doc(:none), do: nil

apps/language_server/lib/language_server/providers/execute_command/llm_environment.ex

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -374,14 +374,6 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmEnvironment do
374374
|> Enum.sort_by(& &1.name)
375375
end
376376

377-
defp format_types(types) do
378-
types
379-
|> Enum.map(fn {{module, name, arity}, _info} ->
380-
"#{inspect(module)}.#{name}/#{arity}"
381-
end)
382-
|> Enum.sort()
383-
end
384-
385377
defp extract_modules_from_metadata(metadata = %ElixirSense.Core.Metadata{}) do
386378
metadata.mods_funs_to_positions
387379
|> Map.keys()
@@ -411,7 +403,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmEnvironment do
411403

412404
defp format_callbacks_from_metadata(metadata) do
413405
metadata.specs
414-
|> Enum.filter(fn {{_mod, fun, _}, %State.SpecInfo{} = info} ->
406+
|> Enum.filter(fn {{_mod, _fun, _}, %State.SpecInfo{} = info} ->
415407
info.kind in [:callback, :macrocallback]
416408
end)
417409
|> Enum.map(fn {{mod, fun, arity}, _info} -> {mod, fun, arity} end)

apps/language_server/lib/language_server/providers/execute_command/llm_module_dependencies.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmModuleDependencies
281281
# Get all calls from this module
282282
calls =
283283
Tracer.get_trace()
284-
|> Enum.filter(fn {{callee_module, _, _}, call_infos} ->
284+
|> Enum.filter(fn {{callee_module, _, _}, _call_infos} ->
285285
# Check if the call is to our module
286286
callee_module == module
287287
end)

apps/language_server/test/providers/execute_command/llm_definition_test.exs

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -286,80 +286,5 @@ defmodule ElixirLS.LanguageServer.Providers.ExecuteCommand.LlmDefinitionTest do
286286
assert {:ok, _} = result
287287
end
288288
end
289-
290-
test "handles builtin types using ElixirSense.Core.BuiltinTypes" do
291-
# Test basic builtin types
292-
basic_types = [
293-
"atom",
294-
"binary",
295-
"boolean",
296-
"integer",
297-
"float",
298-
"list",
299-
"map",
300-
"tuple",
301-
"pid",
302-
"port",
303-
"reference",
304-
"fun"
305-
]
306-
307-
for type <- basic_types do
308-
result = LlmDefinition.execute([type], %{})
309-
assert {:ok, response} = result
310-
assert Map.has_key?(response, :definition)
311-
assert response.definition =~ "Builtin type #{type}()"
312-
assert response.definition =~ "@type"
313-
assert response.definition =~ "Elixir built-in type"
314-
end
315-
316-
# Test parameterized builtin types
317-
result = LlmDefinition.execute(["list"], %{})
318-
assert {:ok, response} = result
319-
assert Map.has_key?(response, :definition)
320-
# Should show both parameterized and non-parameterized versions
321-
assert response.definition =~ "list()"
322-
323-
result = LlmDefinition.execute(["keyword"], %{})
324-
assert {:ok, response} = result
325-
assert Map.has_key?(response, :definition)
326-
# Should show both parameterized and non-parameterized versions
327-
assert response.definition =~ "keyword()"
328-
end
329-
330-
test "handles various symbol patterns appropriately" do
331-
# Some patterns that should result in errors or not-found
332-
patterns_expecting_errors = [
333-
"123StartWithNumber",
334-
"::",
335-
".StartWithDot",
336-
"EndWithDot.",
337-
"Has-Dash"
338-
]
339-
340-
for pattern <- patterns_expecting_errors do
341-
result = LlmDefinition.execute([pattern], %{})
342-
assert {:ok, response} = result
343-
# Should either be a parse error or "not found" error
344-
assert Map.has_key?(response, :error) ||
345-
(Map.has_key?(response, :definition) && response.definition =~ "not found"),
346-
"Expected error or not found for pattern: #{pattern}, got: #{inspect(response)}"
347-
end
348-
349-
# Some patterns that the V2 parser may successfully parse (even if they look "invalid")
350-
# but might not find definitions
351-
potentially_parsable_patterns = [
352-
"lower_case_module",
353-
"Module.function/not_a_number",
354-
"@attribute"
355-
]
356-
357-
for pattern <- potentially_parsable_patterns do
358-
result = LlmDefinition.execute([pattern], %{})
359-
assert {:ok, _response} = result
360-
# These may succeed in parsing and either find a definition or return "not found"
361-
# Both outcomes are acceptable with the V2 parser
362-
end
363-
end
364289
end
365290
end

apps/language_server/test/providers/references_test.exs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
5555
{line, char} =
5656
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
5757

58-
list = References.references(parser_context, uri, line, char, true, File.cwd!())
58+
list = References.references(parser_context, uri, line, char, false, File.cwd!())
5959

6060
assert length(list) == 3
6161
assert Enum.any?(list, &(&1.uri |> String.ends_with?("references_remote.ex")))
@@ -78,7 +78,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
7878
{line, char} =
7979
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
8080

81-
list = References.references(parser_context, uri, line, char, true, File.cwd!())
81+
list = References.references(parser_context, uri, line, char, false, File.cwd!())
8282

8383
assert length(list) == 3
8484
assert Enum.any?(list, &(&1.uri |> String.ends_with?("references_remote.ex")))
@@ -100,7 +100,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
100100
{line, char} =
101101
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
102102

103-
assert References.references(parser_context, uri, line, char, true, File.cwd!()) == [
103+
assert References.references(parser_context, uri, line, char, false, File.cwd!()) == [
104104
%GenLSP.Structures.Location{
105105
range: range(6, 4, 6, 16),
106106
uri: uri
@@ -122,7 +122,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
122122
{line, char} =
123123
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
124124

125-
assert References.references(parser_context, uri, line, char, true, File.cwd!()) == [
125+
assert References.references(parser_context, uri, line, char, false, File.cwd!()) == [
126126
%GenLSP.Structures.Location{
127127
range: range(10, 4, 10, 22),
128128
uri: uri
@@ -219,7 +219,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
219219
{line, char} =
220220
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
221221

222-
list = References.references(parser_context, uri, line, char, true, File.cwd!())
222+
list = References.references(parser_context, uri, line, char, false, File.cwd!())
223223

224224
assert length(list) == 2
225225
assert Enum.any?(list, &(&1.uri |> String.ends_with?("references_erlang.ex")))
@@ -241,7 +241,7 @@ defmodule ElixirLS.LanguageServer.Providers.ReferencesTest do
241241
{line, char} =
242242
SourceFile.lsp_position_to_elixir(parser_context.source_file.text, {line, char})
243243

244-
list = References.references(parser_context, uri, line, char, true, File.cwd!())
244+
list = References.references(parser_context, uri, line, char, false, File.cwd!())
245245

246246
assert length(list) == 2
247247
assert Enum.any?(list, &(&1.uri |> String.ends_with?("references_erlang.ex")))

apps/language_server/test/server_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1795,7 +1795,7 @@ defmodule ElixirLS.LanguageServer.ServerTest do
17951795

17961796
Server.receive_packet(
17971797
server,
1798-
references_req(4, file_uri, 1, 8, true)
1798+
references_req(4, file_uri, 1, 8, false)
17991799
)
18001800

18011801
resp = assert_receive(%{"id" => 4}, 5000)
@@ -1829,7 +1829,7 @@ defmodule ElixirLS.LanguageServer.ServerTest do
18291829

18301830
Server.receive_packet(
18311831
server,
1832-
references_req(4, file_uri, 1, 9, true)
1832+
references_req(4, file_uri, 1, 9, false)
18331833
)
18341834

18351835
resp = assert_receive(%{"id" => 4}, 5000)

0 commit comments

Comments
 (0)