Skip to content

Commit

Permalink
fix(elixir): compiler diagnostics have iodata (#18)
Browse files Browse the repository at this point in the history
Fixes #15
  • Loading branch information
mhanberg committed Jun 23, 2023
1 parent 5a21596 commit f28af33
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 5 deletions.
2 changes: 1 addition & 1 deletion lib/next_ls/extensions/elixir_extension.ex
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ defmodule NextLS.ElixirExtension do
# be responsible for this. The open documents live in the LSP process
DiagnosticCache.put(state.cache, :elixir, d.file, %GenLSP.Structures.Diagnostic{
severity: severity(d.severity),
message: d.message,
message: IO.iodata_to_binary(d.message),
source: d.compiler_name,
range: range(d.position)
})
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ defmodule NextLS.MixProject do
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:gen_lsp, "~> 0.1"},
{:gen_lsp, "~> 0.2"},
{:ex_doc, ">= 0.0.0", only: :dev},
{:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false}
]
Expand Down
4 changes: 2 additions & 2 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
"earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"},
"erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"},
"ex_doc": {:hex, :ex_doc, "0.29.4", "6257ecbb20c7396b1fe5accd55b7b0d23f44b6aa18017b415cb4c2b91d997729", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2c6699a737ae46cb61e4ed012af931b57b699643b24dabe2400a8168414bc4f5"},
"gen_lsp": {:hex, :gen_lsp, "0.1.2", "5aa8ec2ff69c8a075a30da211ee89214d117ea18eb1fbe91c80662d390389010", [:mix], [{:jason, "~> 1.3", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.5 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:schematic, "~> 0.1", [hex: :schematic, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "a46ae73c6034f7c95af15b746abf660fefdd1d3635ff4dfe2aacdd9315caf573"},
"gen_lsp": {:hex, :gen_lsp, "0.2.0", "ee37d8731a50119db5286913aaf118a74bdfa34cafb2b650c7cdf149dc004eba", [:mix], [{:jason, "~> 1.3", [hex: :jason, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.5 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:schematic, "~> 0.2", [hex: :schematic, repo: "hexpm", optional: false]}, {:typed_struct, "~> 0.3.0", [hex: :typed_struct, repo: "hexpm", optional: false]}], "hexpm", "a0ac8a88615860ac512e75c6d727f292c090702899eca4b40931060cfce30ca2"},
"jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
"makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"},
"makeup_elixir": {:hex, :makeup_elixir, "0.16.1", "cc9e3ca312f1cfeccc572b37a09980287e243648108384b97ff2b76e505c3555", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "e127a341ad1b209bd80f7bd1620a15693a9908ed780c3b763bccf7d200c767c6"},
"makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"},
"nimble_options": {:hex, :nimble_options, "1.0.2", "92098a74df0072ff37d0c12ace58574d26880e522c22801437151a159392270e", [:mix], [], "hexpm", "fd12a8db2021036ce12a309f26f564ec367373265b53e25403f0ee697380f1b8"},
"nimble_parsec": {:hex, :nimble_parsec, "1.3.1", "2c54013ecf170e249e9291ed0a62e5832f70a476c61da16f6aac6dca0189f2af", [:mix], [], "hexpm", "2682e3c0b2eb58d90c6375fc0cc30bc7be06f365bf72608804fb9cffa5e1b167"},
"schematic": {:hex, :schematic, "0.1.1", "75981b1eea5624e44f723e5ba270b892911d381a4417f20a0bd94f3854da0041", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "13ae4b35b81806febd7fc0251959e59aa28cc1600ba9e0e77f85cb4f303b8a35"},
"schematic": {:hex, :schematic, "0.2.0", "ac710efbd98b8f4b3d137f8ebac6f9a17da917bb4d1296b487ac4157fb74c806", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d4bc93bac2e7d04869fd6ced9df82c092c154fc648677512bc7c75d9a2655be3"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"typed_struct": {:hex, :typed_struct, "0.3.0", "939789e3c1dca39d7170c87f729127469d1315dcf99fee8e152bb774b17e7ff7", [:mix], [], "hexpm", "c50bd5c3a61fe4e198a8504f939be3d3c85903b382bde4865579bc23111d1b6d"},
}
35 changes: 34 additions & 1 deletion test/next_ls/extensions/elixir_extension_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,20 @@ defmodule NextLS.ElixirExtensionTest do
details: nil
}

with_iodata = %Mix.Task.Compiler.Diagnostic{
file: "/Users/mitchell/src/next_ls/lib/next_ls/runtime.ex",
severity: :warning,
message: [
"ElixirExtension.foo/0",
" is undefined (module ",
"ElixirExtension",
" is not available or is yet to be defined)"
],
position: 29,
compiler_name: "Elixir",
details: nil
}

start_and_end = %Mix.Task.Compiler.Diagnostic{
file: "lib/baz.ex",
severity: :hint,
Expand All @@ -44,11 +58,30 @@ defmodule NextLS.ElixirExtensionTest do
details: nil
}

send(extension, {:compiler, [only_line, line_and_col, start_and_end]})
send(extension, {:compiler, [only_line, line_and_col, start_and_end, with_iodata]})

assert_receive :publish

assert %{
with_iodata.file => [
%GenLSP.Structures.Diagnostic{
severity: 2,
message:
"ElixirExtension.foo/0" <>
" is undefined (module " <> "ElixirExtension" <> " is not available or is yet to be defined)",
source: "Elixir",
range: %GenLSP.Structures.Range{
start: %GenLSP.Structures.Position{
line: 28,
character: 0
},
end: %GenLSP.Structures.Position{
line: 28,
character: 999
}
}
}
],
only_line.file => [
%GenLSP.Structures.Diagnostic{
severity: 2,
Expand Down

0 comments on commit f28af33

Please sign in to comment.