Skip to content

Commit 39f5af4

Browse files
author
automatic-merge
committed
Merge remote branch 'origin/master' into edge
2 parents 62c9b99 + 1b943ec commit 39f5af4

File tree

5 files changed

+23
-13
lines changed

5 files changed

+23
-13
lines changed

source/ada/lsp-ada_indexing.ads

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private
8686

8787
overriding function Priority
8888
(Self : Indexing_Job) return LSP.Server_Jobs.Job_Priority is
89-
(LSP.Server_Jobs.Low);
89+
(LSP.Server_Jobs.Lowest);
9090

9191
overriding procedure Execute
9292
(Self : in out Indexing_Job;

source/server/lsp-job_schedulers.adb

+10-5
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,11 @@ package body LSP.Job_Schedulers is
132132
end if;
133133

134134
if Job.Priority = Fence then
135-
-- Process other jobs before any Fence job
136-
while (for some List of Self.Jobs => not List.Is_Empty) loop
137-
Self.Process_Job (Client, Waste);
135+
-- Process other jobs (excluding indexing) before any Fence job
136+
while
137+
(for some List of Self.Jobs (Low .. High) => not List.Is_Empty)
138+
loop
139+
Self.Process_Job (Client, Waste, From => Low);
138140

139141
if Waste.Assigned then
140142
return;
@@ -163,14 +165,17 @@ package body LSP.Job_Schedulers is
163165
(Self : in out Job_Scheduler'Class;
164166
Client :
165167
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
166-
Waste : out LSP.Server_Messages.Server_Message_Access)
168+
Waste : out LSP.Server_Messages.Server_Message_Access;
169+
From : LSP.Server_Jobs.Job_Priority := LSP.Server_Jobs.Lowest)
167170
is
168171
Status : LSP.Server_Jobs.Execution_Status;
169172
begin
170173
Self.Complete_Last_Fence_Job (null, Waste);
171174

172175
if not Waste.Assigned then
173-
for List of reverse Self.Jobs when not List.Is_Empty loop
176+
for List of reverse Self.Jobs (From .. LSP.Server_Jobs.High)
177+
when not List.Is_Empty
178+
loop
174179
declare
175180
Job : LSP.Server_Jobs.Server_Job_Access := List.First_Element;
176181
begin

source/server/lsp-job_schedulers.ads

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,9 @@ package LSP.Job_Schedulers is
6868
(Self : in out Job_Scheduler'Class;
6969
Client :
7070
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
71-
Waste : out LSP.Server_Messages.Server_Message_Access);
72-
-- Execute (already created) jobs with ordinal priority (Low, High).
71+
Waste : out LSP.Server_Messages.Server_Message_Access;
72+
From : LSP.Server_Jobs.Job_Priority := LSP.Server_Jobs.Lowest);
73+
-- Execute (already created) jobs with ordinal priority (From .. High).
7374
-- When a job is done the routine returns (in Waste) the message to be
7475
-- deallocated by the server. The Client is used to send messages during
7576
-- the execution of the job.
@@ -88,8 +89,7 @@ private
8889
package Job_Lists is new Ada.Containers.Doubly_Linked_Lists
8990
(LSP.Server_Jobs.Server_Job_Access, LSP.Server_Jobs."=");
9091

91-
subtype Ordinal_Priority is LSP.Server_Jobs.Job_Priority
92-
range LSP.Server_Jobs.Low .. LSP.Server_Jobs.High;
92+
subtype Ordinal_Priority is LSP.Server_Jobs.Ordinal_Priority;
9393

9494
type Job_List_Array is array (Ordinal_Priority) of Job_Lists.List;
9595

source/server/lsp-server_jobs.ads

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@ with LSP.Server_Messages;
2121
package LSP.Server_Jobs is
2222
pragma Preelaborate;
2323

24-
type Job_Priority is (Low, High, Immediate, Fence);
24+
type Job_Priority is (Lowest, Low, High, Immediate, Fence);
2525
-- Job priority to schedule jobs.
2626
--
27+
-- @value Lowest - indexing jobs
2728
-- @value Low - long running jobs like find-all-references
2829
-- @value High - fast queries like hover
2930
-- @value Immediate - urgent queries like cancel-request
@@ -33,7 +34,7 @@ package LSP.Server_Jobs is
3334
-- new messages until the job is done. Server execute each job in its
3435
-- queue before executing any Fence job.
3536

36-
subtype Ordinal_Priority is Job_Priority range Low .. High;
37+
subtype Ordinal_Priority is Job_Priority range Lowest .. High;
3738

3839
type Server_Job is limited interface;
3940

source/server/lsp-servers.adb

+5-1
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,10 @@ package body LSP.Servers is
853853
end;
854854
end select;
855855
end loop;
856+
exception
857+
when E : others =>
858+
-- Message handler should never raise any exception
859+
Server.Tracer.Trace_Exception (E, "Execute_Jobs raised error!");
856860
end Execute_Jobs;
857861

858862
---------------------
@@ -884,7 +888,7 @@ package body LSP.Servers is
884888
exception
885889
when E : others =>
886890
-- Message handler should never raise any exception
887-
Server.Tracer.Trace_Exception (E, "Message handler raised error!");
891+
Server.Tracer.Trace_Exception (E, "Process_Message raised error!");
888892
end Process_Message;
889893

890894
Request : Server_Message_Access;

0 commit comments

Comments
 (0)