Skip to content

Commit 9a1d2b8

Browse files
author
automatic-merge
committed
Merge remote branch 'origin/master' into edge
2 parents ac3604b + 7cdcfc9 commit 9a1d2b8

10 files changed

+71
-69
lines changed

source/ada/lsp-ada_did_change_configurations.adb

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ package body LSP.Ada_Did_Change_Configurations is
2727
Message : LSP.Server_Messages.Server_Message_Access;
2828
Configuration : LSP.Ada_Configurations.Configuration;
2929
Reload : Boolean;
30-
Is_Done : Boolean := False;
3130
end record;
3231

3332
type Apply_Config_Job_Access is access all Apply_Config_Job;
@@ -36,13 +35,11 @@ package body LSP.Ada_Did_Change_Configurations is
3635
(Self : Apply_Config_Job) return LSP.Server_Jobs.Job_Priority is
3736
(LSP.Server_Jobs.Fence);
3837

39-
overriding function Is_Done (Self : Apply_Config_Job) return Boolean is
40-
(Self.Is_Done);
41-
4238
overriding procedure Execute
4339
(Self : in out Apply_Config_Job;
4440
Client :
45-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
41+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
42+
Status : out LSP.Server_Jobs.Execution_Status);
4643

4744
overriding function Message (Self : Apply_Config_Job)
4845
return LSP.Server_Messages.Server_Message_Access is (Self.Message);
@@ -54,15 +51,16 @@ package body LSP.Ada_Did_Change_Configurations is
5451
overriding procedure Execute
5552
(Self : in out Apply_Config_Job;
5653
Client :
57-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class) is
54+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
55+
Status : out LSP.Server_Jobs.Execution_Status) is
5856
begin
5957
Self.Parent.Context.Set_Configuration (Self.Configuration);
6058

6159
if Self.Reload then
6260
Self.Parent.Context.Reload_Project;
6361
end if;
6462

65-
Self.Is_Done := True;
63+
Status := LSP.Server_Jobs.Done;
6664
end Execute;
6765

6866
----------------

source/ada/lsp-ada_did_change_document.adb

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ package body LSP.Ada_Did_Change_Document is
2929
is limited new LSP.Server_Jobs.Server_Job with record
3030
Document : LSP.Ada_Documents.Document_Access;
3131
Message : LSP.Server_Messages.Server_Message_Access;
32-
Is_Done : Boolean := False;
3332
end record;
3433

3534
type Did_Change_Job_Access is access all Did_Change_Job;
@@ -38,13 +37,11 @@ package body LSP.Ada_Did_Change_Document is
3837
(Self : Did_Change_Job) return LSP.Server_Jobs.Job_Priority is
3938
(LSP.Server_Jobs.Fence);
4039

41-
overriding function Is_Done (Self : Did_Change_Job) return Boolean is
42-
(Self.Is_Done);
43-
4440
overriding procedure Execute
4541
(Self : in out Did_Change_Job;
4642
Client :
47-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
43+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
44+
Status : out LSP.Server_Jobs.Execution_Status);
4845

4946
overriding procedure Complete
5047
(Self : in out Did_Change_Job;
@@ -134,8 +131,7 @@ package body LSP.Ada_Did_Change_Document is
134131
new Did_Change_Job'
135132
(Parent => Self'Unchecked_Access,
136133
Document => Document,
137-
Message => Message,
138-
Is_Done => False);
134+
Message => Message);
139135
begin
140136
return LSP.Server_Jobs.Server_Job_Access (Result);
141137
end Create_Job;
@@ -147,7 +143,8 @@ package body LSP.Ada_Did_Change_Document is
147143
overriding procedure Execute
148144
(Self : in out Did_Change_Job;
149145
Client :
150-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
146+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
147+
Status : out LSP.Server_Jobs.Execution_Status)
151148
is
152149
use type LSP.Ada_Documents.Document_Access;
153150

@@ -157,7 +154,7 @@ package body LSP.Ada_Did_Change_Document is
157154
Changes : LSP.Structures.TextDocumentContentChangeEvent_Vector renames
158155
Message.Params.contentChanges;
159156
begin
160-
Self.Is_Done := True;
157+
Status := LSP.Server_Jobs.Done;
161158

162159
if Self.Document = null then
163160
return;

source/ada/lsp-ada_hover.adb

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ package body LSP.Ada_Hover is
3535
(Parent : not null access constant Ada_Hover_Handler)
3636
is limited new LSP.Server_Jobs.Server_Job with record
3737
Message : LSP.Server_Messages.Server_Message_Access;
38-
Is_Done : Boolean := False;
3938
end record;
4039

4140
type Ada_Hover_Job_Access is access all Ada_Hover_Job;
@@ -44,13 +43,11 @@ package body LSP.Ada_Hover is
4443
(Self : Ada_Hover_Job) return LSP.Server_Jobs.Job_Priority is
4544
(LSP.Server_Jobs.High);
4645

47-
overriding function Is_Done (Self : Ada_Hover_Job) return Boolean is
48-
(Self.Is_Done);
49-
5046
overriding procedure Execute
5147
(Self : in out Ada_Hover_Job;
5248
Client :
53-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
49+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
50+
Status : out LSP.Server_Jobs.Execution_Status);
5451

5552
overriding function Message (Self : Ada_Hover_Job)
5653
return LSP.Server_Messages.Server_Message_Access is (Self.Message);
@@ -67,8 +64,7 @@ package body LSP.Ada_Hover is
6764
Result : constant Ada_Hover_Job_Access :=
6865
new Ada_Hover_Job'
6966
(Parent => Self'Unchecked_Access,
70-
Message => Message,
71-
Is_Done => False);
67+
Message => Message);
7268
begin
7369
return LSP.Server_Jobs.Server_Job_Access (Result);
7470
end Create_Job;
@@ -80,7 +76,8 @@ package body LSP.Ada_Hover is
8076
overriding procedure Execute
8177
(Self : in out Ada_Hover_Job;
8278
Client :
83-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
79+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
80+
Status : out LSP.Server_Jobs.Execution_Status)
8481
is
8582

8683
Message : LSP.Server_Requests.Hover.Request
@@ -111,7 +108,7 @@ package body LSP.Ada_Hover is
111108
Aspects_Text : VSS.Strings.Virtual_String;
112109

113110
begin
114-
Self.Is_Done := True;
111+
Status := LSP.Server_Jobs.Done;
115112

116113
if Decl.Is_Null then
117114

source/ada/lsp-ada_indexing.adb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ package body LSP.Ada_Indexing is
2929
overriding procedure Execute
3030
(Self : in out Indexing_Job;
3131
Client :
32-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
32+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
33+
Status : out LSP.Server_Jobs.Execution_Status)
3334
is
3435
use type LSP.Ada_Handlers.Project_Stamp;
3536

@@ -111,6 +112,10 @@ package body LSP.Ada_Indexing is
111112
Client.On_ProgressEnd_Work_Done
112113
(Self.Indexing_Token, (message => <>));
113114
end if;
115+
116+
Status :=
117+
(if Self.Files_To_Index.Is_Empty then LSP.Server_Jobs.Done
118+
else LSP.Server_Jobs.Continue);
114119
end Execute;
115120

116121
-----------------------

source/ada/lsp-ada_indexing.ads

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,13 +88,11 @@ private
8888
(Self : Indexing_Job) return LSP.Server_Jobs.Job_Priority is
8989
(LSP.Server_Jobs.Low);
9090

91-
overriding function Is_Done (Self : Indexing_Job) return Boolean is
92-
(Self.Files_To_Index.Is_Empty);
93-
9491
overriding procedure Execute
9592
(Self : in out Indexing_Job;
9693
Client :
97-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
94+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
95+
Status : out LSP.Server_Jobs.Execution_Status);
9896

9997
overriding function Message (Self : Indexing_Job)
10098
return LSP.Server_Messages.Server_Message_Access is (null);

source/ada/lsp-ada_references.adb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ package body LSP.Ada_References is
5050
(Parent : not null access constant Ada_References_Handler)
5151
is limited new LSP.Server_Jobs.Server_Job with record
5252
Message : LSP.Server_Messages.Server_Message_Access;
53-
Is_Done : Boolean := False;
5453
Is_Enum : Boolean := False;
5554
Response : LSP.Structures.Location_Vector_Or_Null;
5655
Filter : LSP.Locations.File_Span_Sets.Set;
@@ -67,13 +66,11 @@ package body LSP.Ada_References is
6766
(Self : Ada_References_Job) return LSP.Server_Jobs.Job_Priority is
6867
(LSP.Server_Jobs.Low);
6968

70-
overriding function Is_Done (Self : Ada_References_Job) return Boolean is
71-
(Self.Is_Done);
72-
7369
overriding procedure Execute
7470
(Self : in out Ada_References_Job;
7571
Client :
76-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
72+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
73+
Status : out LSP.Server_Jobs.Execution_Status);
7774

7875
overriding function Message (Self : Ada_References_Job)
7976
return LSP.Server_Messages.Server_Message_Access is (Self.Message);
@@ -119,7 +116,8 @@ package body LSP.Ada_References is
119116
overriding procedure Execute
120117
(Self : in out Ada_References_Job;
121118
Client :
122-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
119+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
120+
Status : out LSP.Server_Jobs.Execution_Status)
123121
is
124122
procedure Callback
125123
(Node : Libadalang.Analysis.Base_Id;
@@ -223,14 +221,16 @@ package body LSP.Ada_References is
223221
if LSP.Ada_File_Sets.File_Sets.Has_Element (Self.Cursor) then
224222
Units (1) := Self.Context.Get_AU
225223
(LSP.Ada_File_Sets.File_Sets.Element (Self.Cursor));
224+
226225
LSP.Ada_Id_Iterators.Find_All_References
227226
(Self.Definition, Units, Callback'Access);
227+
228+
Status := LSP.Server_Jobs.Continue;
228229
else
229230
Free (Self.Iterator);
230-
Self.Is_Done := True;
231-
232231
LSP.Ada_Handlers.Locations.Sort (Self.Response);
233232
Client.On_References_Response (Message.Id, Self.Response);
233+
Status := LSP.Server_Jobs.Done;
234234
end if;
235235
end Execute;
236236

source/gpr/lsp-gpr_did_change_document.adb

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ package body LSP.GPR_Did_Change_Document is
3030
is limited new LSP.Server_Jobs.Server_Job with record
3131
Document : LSP.GPR_Documents.Document_Access;
3232
Message : LSP.Server_Messages.Server_Message_Access;
33-
Is_Done : Boolean := False;
3433
end record;
3534

3635
type Did_Change_Job_Access is access all Did_Change_Job;
@@ -39,13 +38,11 @@ package body LSP.GPR_Did_Change_Document is
3938
(Self : Did_Change_Job) return LSP.Server_Jobs.Job_Priority is
4039
(LSP.Server_Jobs.Fence);
4140

42-
overriding function Is_Done (Self : Did_Change_Job) return Boolean is
43-
(Self.Is_Done);
44-
4541
overriding procedure Execute
4642
(Self : in out Did_Change_Job;
4743
Client :
48-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
44+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
45+
Status : out LSP.Server_Jobs.Execution_Status);
4946

5047
overriding procedure Complete
5148
(Self : in out Did_Change_Job;
@@ -142,8 +139,7 @@ package body LSP.GPR_Did_Change_Document is
142139
new Did_Change_Job'
143140
(Parent => Self'Unchecked_Access,
144141
Document => Document,
145-
Message => Message,
146-
Is_Done => False);
142+
Message => Message);
147143
begin
148144
return LSP.Server_Jobs.Server_Job_Access (Result);
149145
end Create_Job;
@@ -155,7 +151,8 @@ package body LSP.GPR_Did_Change_Document is
155151
overriding procedure Execute
156152
(Self : in out Did_Change_Job;
157153
Client :
158-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
154+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
155+
Status : out LSP.Server_Jobs.Execution_Status)
159156
is
160157
use type LSP.GPR_Documents.Document_Access;
161158

@@ -165,7 +162,7 @@ package body LSP.GPR_Did_Change_Document is
165162
Changes : LSP.Structures.TextDocumentContentChangeEvent_Vector renames
166163
Message.Params.contentChanges;
167164
begin
168-
Self.Is_Done := True;
165+
Status := LSP.Server_Jobs.Done;
169166

170167
if Self.Document = null then
171168
return;

source/server/lsp-job_schedulers.adb

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,10 @@ package body LSP.Job_Schedulers is
118118
Waste : out LSP.Server_Messages.Server_Message_Access)
119119
is
120120
use all type LSP.Server_Jobs.Job_Priority;
121+
use all type LSP.Server_Jobs.Execution_Status;
121122

122123
Job : LSP.Server_Jobs.Server_Job_Access renames Self.Blocker;
124+
Status : LSP.Server_Jobs.Execution_Status := Continue;
123125
begin
124126
if not Job.Assigned then
125127
Waste := null;
@@ -144,8 +146,8 @@ package body LSP.Job_Schedulers is
144146
return;
145147
end if;
146148

147-
while not Job.Is_Done loop
148-
Job.Execute (Client);
149+
while Status /= LSP.Server_Jobs.Done loop
150+
Job.Execute (Client, Status);
149151
end loop;
150152

151153
if Job.Priority = Fence then
@@ -165,7 +167,9 @@ package body LSP.Job_Schedulers is
165167
(Self : in out Job_Scheduler'Class;
166168
Client :
167169
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
168-
Waste : out LSP.Server_Messages.Server_Message_Access) is
170+
Waste : out LSP.Server_Messages.Server_Message_Access)
171+
is
172+
Status : LSP.Server_Jobs.Execution_Status;
169173
begin
170174
for List of reverse Self.Jobs when not List.Is_Empty loop
171175
declare
@@ -178,15 +182,18 @@ package body LSP.Job_Schedulers is
178182
end if;
179183

180184
List.Delete_First;
181-
Job.Execute (Client);
182-
183-
if Job.Is_Done then
184-
Waste := Job.Message;
185-
Free (Job);
186-
else
187-
Waste := null;
188-
List.Append (Job); -- Push the job back to the queue
189-
end if;
185+
Job.Execute (Client, Status);
186+
187+
case Status is
188+
189+
when LSP.Server_Jobs.Done =>
190+
Waste := Job.Message;
191+
Free (Job);
192+
193+
when LSP.Server_Jobs.Continue =>
194+
Waste := null;
195+
List.Append (Job); -- Push the job back to the queue
196+
end case;
190197

191198
exit;
192199
end;

source/server/lsp-sequential_message_handlers.adb

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,14 @@ package body LSP.Sequential_Message_Handlers is
3232
(LSP.Server_Jobs.Fence);
3333
-- In-order execution for this kind of jobs
3434

35-
overriding function Is_Done (Self : Sequential_Job) return Boolean is
36-
(Self.Is_Done);
37-
3835
overriding function Message (Self : Sequential_Job)
3936
return LSP.Server_Messages.Server_Message_Access is (Self.Message);
4037

4138
overriding procedure Execute
4239
(Self : in out Sequential_Job;
4340
Client :
44-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class);
41+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
42+
Status : out LSP.Server_Jobs.Execution_Status);
4543

4644
overriding procedure Complete
4745
(Self : in out Sequential_Job;
@@ -77,13 +75,14 @@ package body LSP.Sequential_Message_Handlers is
7775
overriding procedure Execute
7876
(Self : in out Sequential_Job;
7977
Client :
80-
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class)
78+
in out LSP.Client_Message_Receivers.Client_Message_Receiver'Class;
79+
Status : out LSP.Server_Jobs.Execution_Status)
8180
is
8281
pragma Unreferenced (Client);
8382
-- Self.Handler knows how to send messages by it-self
8483
begin
8584
Self.Message.Visit_Server_Message_Visitor (Self.Handler.all);
86-
Self.Is_Done := True;
85+
Status := LSP.Server_Jobs.Done;
8786
end Execute;
8887

8988
----------------

0 commit comments

Comments
 (0)