Skip to content

Commit 36f006b

Browse files
committed
Rebase tests for did/Create/Delete/Rename/file
Refs #1170
1 parent dbf888e commit 36f006b

File tree

12 files changed

+231
-533
lines changed

12 files changed

+231
-533
lines changed

source/ada/lsp-ada_client_capabilities.adb

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,74 @@ package body LSP.Ada_Client_Capabilities is
8080
return (if Result.Is_Set then Result.Value else False);
8181
end didChangeWatchedFiles_dynamicRegistration;
8282

83+
------------------------------
84+
-- fileOperations_didCreate --
85+
------------------------------
86+
87+
function fileOperations_didCreate
88+
(Self : Client_Capability'Class) return Boolean
89+
is
90+
use LSP.Structures.Unwrap;
91+
92+
Result : constant LSP.Structures.Boolean_Optional :=
93+
didCreate
94+
(fileOperations
95+
(Self.Value.capabilities.workspace));
96+
begin
97+
return (if Result.Is_Set then Result.Value else False);
98+
end fileOperations_didCreate;
99+
100+
------------------------------
101+
-- fileOperations_didDelete --
102+
------------------------------
103+
104+
function fileOperations_didDelete
105+
(Self : Client_Capability'Class) return Boolean
106+
is
107+
use LSP.Structures.Unwrap;
108+
109+
Result : constant LSP.Structures.Boolean_Optional :=
110+
didDelete
111+
(fileOperations
112+
(Self.Value.capabilities.workspace));
113+
begin
114+
return (if Result.Is_Set then Result.Value else False);
115+
end fileOperations_didDelete;
116+
117+
------------------------------
118+
-- fileOperations_didRename --
119+
------------------------------
120+
121+
function fileOperations_didRename
122+
(Self : Client_Capability'Class) return Boolean
123+
is
124+
use LSP.Structures.Unwrap;
125+
126+
Result : constant LSP.Structures.Boolean_Optional :=
127+
didDelete
128+
(fileOperations
129+
(Self.Value.capabilities.workspace));
130+
begin
131+
return (if Result.Is_Set then Result.Value else False);
132+
end fileOperations_didRename;
133+
134+
----------------------------------------
135+
-- fileOperations_dynamicRegistration --
136+
----------------------------------------
137+
138+
function fileOperations_dynamicRegistration
139+
(Self : Client_Capability'Class) return Boolean
140+
is
141+
use LSP.Structures.Unwrap;
142+
143+
Result : constant LSP.Structures.Boolean_Optional :=
144+
dynamicRegistration
145+
(fileOperations
146+
(Self.Value.capabilities.workspace));
147+
begin
148+
return (if Result.Is_Set then Result.Value else False);
149+
end fileOperations_dynamicRegistration;
150+
83151
-------------------------
84152
-- Hierarchical_Symbol --
85153
-------------------------
@@ -261,6 +329,36 @@ package body LSP.Ada_Client_Capabilities is
261329
is
262330
use type VSS.Strings.Virtual_String;
263331

332+
function Ada_Patterns
333+
return LSP.Structures.FileOperationFilter_Vectors.Vector is
334+
[(scheme => "file", -- shell we also support `untitled`???
335+
pattern =>
336+
(glob => "**/*.ad{a,s,b,c}",
337+
matches => LSP.Constants.file,
338+
options => LSP.Constants.ignoreCase))];
339+
340+
function Ada_Extensions (Enabled : Boolean)
341+
return LSP.Structures.FileOperationRegistrationOptions_Optional is
342+
(if Enabled then
343+
(Is_Set => True,
344+
Value => (filters => (Ada_Patterns with null record)))
345+
else (Is_Set => False));
346+
347+
function fileOperations
348+
return LSP.Structures.FileOperationOptions_Optional is
349+
(if Self.fileOperations_didCreate
350+
or else Self.fileOperations_didRename
351+
or else Self.fileOperations_didDelete
352+
then
353+
(Is_Set => True,
354+
Value =>
355+
(didCreate => Ada_Extensions (Self.fileOperations_didCreate),
356+
didRename => Ada_Extensions (Self.fileOperations_didRename),
357+
didDelete => Ada_Extensions (Self.fileOperations_didDelete),
358+
others => <>))
359+
else
360+
(Is_Set => False));
361+
264362
function Supported_Code_Action_Kinds
265363
return LSP.Structures.CodeActionKind_Vectors.Vector is
266364
[LSP.Enumerations.QuickFix,
@@ -352,6 +450,12 @@ package body LSP.Ada_Client_Capabilities is
352450
retriggerCharacters => [1 * VSS.Characters.Latin.Backspace],
353451
workDoneProgress => <>));
354452

453+
Result.workspace :=
454+
(Is_Set => True,
455+
Value =>
456+
(fileOperations => fileOperations,
457+
workspaceFolders => <>));
458+
355459
end return;
356460
end To_Server_Capabilities;
357461

source/ada/lsp-ada_client_capabilities.ads

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,24 @@ package LSP.Ada_Client_Capabilities is
7777

7878
function didChangeWatchedFiles_dynamicRegistration
7979
(Self : Client_Capability'Class) return Boolean;
80+
-- Returns capabilities.workspace.didChangeWatchedFiles.dynamicRegistration
81+
82+
function fileOperations_dynamicRegistration
83+
(Self : Client_Capability'Class) return Boolean;
84+
-- Returns capabilities.workspace.fileOperations.dynamicRegistration
85+
86+
function fileOperations_didCreate
87+
(Self : Client_Capability'Class) return Boolean;
88+
-- Returns capabilities.workspace.fileOperations.didCreate
89+
90+
function fileOperations_didRename
91+
(Self : Client_Capability'Class) return Boolean;
92+
-- Returns capabilities.workspace.fileOperations.didRename
93+
94+
function fileOperations_didDelete
95+
(Self : Client_Capability'Class) return Boolean;
96+
-- Returns capabilities.workspace.fileOperations.didDelete
97+
8098
-- Resource 0perations --
8199

82100
function Resource_Create_Supported

source/lsp_3.17/lsp-constants.ads

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,4 +147,11 @@ package LSP.Constants is
147147
function RequestCancelled return LSP.Enumerations.ErrorCodes is
148148
(LSP.Enumerations.ErrorCodes (LSP.Enumerations.RequestCancelled));
149149

150+
function file return LSP.Structures.FileOperationPatternKind_Optional is
151+
(Is_Set => True, Value => LSP.Enumerations.file);
152+
153+
function ignoreCase
154+
return LSP.Structures.FileOperationPatternOptions_Optional is
155+
(Is_Set => True, Value => (ignoreCase => True));
156+
150157
end LSP.Constants;

source/lsp_3.17/lsp-structures-unwrap.ads

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,28 @@ package LSP.Structures.Unwrap is
9494
return Boolean_Optional is
9595
(if X.Is_Set then X.Value.dynamicRegistration else (Is_Set => False));
9696

97+
function fileOperations (X : WorkspaceClientCapabilities_Optional)
98+
return FileOperationClientCapabilities_Optional is
99+
(if X.Is_Set then X.Value.fileOperations else (Is_Set => False));
100+
101+
function dynamicRegistration
102+
(X : FileOperationClientCapabilities_Optional)
103+
return Boolean_Optional is
104+
(if X.Is_Set then X.Value.dynamicRegistration else (Is_Set => False));
105+
106+
function didCreate
107+
(X : FileOperationClientCapabilities_Optional)
108+
return Boolean_Optional is
109+
(if X.Is_Set then X.Value.didCreate else (Is_Set => False));
110+
111+
function didDelete
112+
(X : FileOperationClientCapabilities_Optional)
113+
return Boolean_Optional is
114+
(if X.Is_Set then X.Value.didDelete else (Is_Set => False));
115+
116+
function didRename
117+
(X : FileOperationClientCapabilities_Optional)
118+
return Boolean_Optional is
119+
(if X.Is_Set then X.Value.didRename else (Is_Set => False));
120+
97121
end LSP.Structures.Unwrap;

testsuite/ada_lsp/UA28-007.Did_Change_Watched_Files_0/test.json

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,6 @@
565565
},
566566
{
567567
"name": "Main",
568-
"detail": "",
569568
"kind": 12,
570569
"range": {
571570
"start": {
@@ -589,8 +588,7 @@
589588
},
590589
"alsIsDeclaration": false,
591590
"alsIsAdaProcedure": true,
592-
"alsVisibility": 1,
593-
"children": []
591+
"alsVisibility": 1
594592
}
595593
]
596594
}
@@ -656,7 +654,6 @@
656654
},
657655
{
658656
"name": "Qux",
659-
"detail": "",
660657
"kind": 4,
661658
"range": {
662659
"start": {
@@ -684,7 +681,6 @@
684681
"children": [
685682
{
686683
"name": "Bar",
687-
"detail": "",
688684
"kind": 12,
689685
"range": {
690686
"start": {
@@ -708,8 +704,7 @@
708704
},
709705
"alsIsDeclaration": true,
710706
"alsIsAdaProcedure": true,
711-
"alsVisibility": 1,
712-
"children": []
707+
"alsVisibility": 1
713708
}
714709
]
715710
}
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
title: 'UA28-007.Did_Change_Watched_Files_0'
22
skip:
33
- ['SKIP', 'env.build.os.name == "windows"']
4-
# Skip till 3.17 ready
5-
- ['XFAIL', 'True']

0 commit comments

Comments
 (0)