Skip to content

Commit 3530c3b

Browse files
authored
update WorkspaceEdit#set signature to how it is implemented. Bulk setting allows for optional metadata (microsoft#202725)
1 parent e5a7abb commit 3530c3b

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/vs/workbench/api/common/extHostTypes.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -862,11 +862,11 @@ export class WorkspaceEdit implements vscode.WorkspaceEdit {
862862
}
863863

864864
set(uri: URI, edits: ReadonlyArray<TextEdit | SnippetTextEdit>): void;
865-
set(uri: URI, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, vscode.WorkspaceEditEntryMetadata]>): void;
865+
set(uri: URI, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, vscode.WorkspaceEditEntryMetadata | undefined]>): void;
866866
set(uri: URI, edits: readonly NotebookEdit[]): void;
867-
set(uri: URI, edits: ReadonlyArray<[NotebookEdit, vscode.WorkspaceEditEntryMetadata]>): void;
867+
set(uri: URI, edits: ReadonlyArray<[NotebookEdit, vscode.WorkspaceEditEntryMetadata | undefined]>): void;
868868

869-
set(uri: URI, edits: null | undefined | ReadonlyArray<TextEdit | SnippetTextEdit | NotebookEdit | [NotebookEdit, vscode.WorkspaceEditEntryMetadata] | [TextEdit | SnippetTextEdit, vscode.WorkspaceEditEntryMetadata]>): void {
869+
set(uri: URI, edits: null | undefined | ReadonlyArray<TextEdit | SnippetTextEdit | NotebookEdit | [NotebookEdit, vscode.WorkspaceEditEntryMetadata | undefined] | [TextEdit | SnippetTextEdit, vscode.WorkspaceEditEntryMetadata | undefined]>): void {
870870
if (!edits) {
871871
// remove all text, snippet, or notebook edits for `uri`
872872
for (let i = 0; i < this._edits.length; i++) {

src/vs/workbench/api/test/browser/extHostTypes.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,22 @@ suite('ExtHostTypes', function () {
435435
assert.strictEqual(second.edit.newText, 'Foo');
436436
});
437437

438+
test('WorkspaceEdit - set with metadata accepts undefined', function () {
439+
const edit = new types.WorkspaceEdit();
440+
const uri = URI.parse('foo:bar');
441+
442+
edit.set(uri, [
443+
[types.TextEdit.insert(new types.Position(0, 0), 'Hello'), { needsConfirmation: true, label: 'foo' }],
444+
[types.TextEdit.insert(new types.Position(0, 0), 'Hello'), undefined],
445+
]);
446+
447+
const all = edit._allEntries();
448+
assert.strictEqual(all.length, 2);
449+
const [first, second] = all;
450+
assert.ok(first.metadata);
451+
assert.ok(!second.metadata);
452+
});
453+
438454
test('DocumentLink', () => {
439455
assert.throws(() => new types.DocumentLink(null!, null!));
440456
assert.throws(() => new types.DocumentLink(new types.Range(1, 1, 1, 1), null!));

src/vscode-dts/vscode.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3952,7 +3952,7 @@ declare module 'vscode' {
39523952
* @param uri A resource identifier.
39533953
* @param edits An array of edits.
39543954
*/
3955-
set(uri: Uri, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>): void;
3955+
set(uri: Uri, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata | undefined]>): void;
39563956

39573957
/**
39583958
* Set (and replace) notebook edits for a resource.
@@ -3968,7 +3968,7 @@ declare module 'vscode' {
39683968
* @param uri A resource identifier.
39693969
* @param edits An array of edits.
39703970
*/
3971-
set(uri: Uri, edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]>): void;
3971+
set(uri: Uri, edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata | undefined]>): void;
39723972

39733973
/**
39743974
* Get the text edits for a resource.

0 commit comments

Comments
 (0)