Skip to content

Commit f2f0ba0

Browse files
committed
fix: unify result in server to client request
1 parent b6963bb commit f2f0ba0

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

lib/gen_lsp.ex

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ defmodule GenLSP do
244244
timeout
245245
)
246246

247+
result = unify!(request.__struct__.result(), result)
248+
247249
{result, %{id: request.id, method: request.method}}
248250
end)
249251
end
@@ -417,6 +419,11 @@ defmodule GenLSP do
417419
output
418420
end
419421

422+
defp unify!(schematic, structure) do
423+
{:ok, output} = Schematic.unify(schematic, structure)
424+
output
425+
end
426+
420427
@doc false
421428
def system_continue(parent, deb, state) do
422429
loop(state, parent, deb)

test/gen_lsp_test.exs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,22 @@ defmodule GenLSPTest do
8686
nil
8787
end)
8888

89+
assert_request(client, "window/showMessageRequest", 1000, fn params ->
90+
assert params == %{
91+
"type" => 1,
92+
"message" =>
93+
"The NextLS runtime failed with errors on dependencies. Would you like to re-fetch them?",
94+
"actions" => [
95+
%{"title" => "yes"},
96+
%{"title" => "no"}
97+
]
98+
}
99+
100+
%{"title" => "yes"}
101+
end)
102+
103+
assert_receive %GenLSP.Structures.MessageActionItem{title: "yes"}
104+
89105
assert_notification "window/logMessage", %{"message" => "done initializing"}, 500
90106
end
91107

test/support/example_server.ex

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,22 @@ defmodule GenLSPTest.ExampleServer do
5555
}
5656
})
5757

58+
result =
59+
GenLSP.request(lsp, %GenLSP.Requests.WindowShowMessageRequest{
60+
id: System.unique_integer([:positive]),
61+
params: %GenLSP.Structures.ShowMessageRequestParams{
62+
type: GenLSP.Enumerations.MessageType.error(),
63+
message:
64+
"The NextLS runtime failed with errors on dependencies. Would you like to re-fetch them?",
65+
actions: [
66+
%GenLSP.Structures.MessageActionItem{title: "yes"},
67+
%GenLSP.Structures.MessageActionItem{title: "no"}
68+
]
69+
}
70+
})
71+
72+
send(lsp.assigns.test_pid, result)
73+
5874
GenLSP.log(lsp, "done initializing")
5975

6076
{:noreply, lsp}

0 commit comments

Comments
 (0)