From fb4c12bfff2710e00eabac84d63bb304ea184574 Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Mon, 1 Nov 2021 11:11:13 +0100 Subject: [PATCH] Rremove async from promise executors Part of #134873 --- src/vs/workbench/api/common/extHostTask.ts | 19 +++++++++---- .../workbench/browser/parts/views/treeView.ts | 6 ++-- .../contrib/debug/browser/debugTaskRunner.ts | 24 ++++++++-------- .../tasks/browser/abstractTaskService.ts | 28 ++++++++----------- .../dialogs/browser/simpleFileDialog.ts | 18 ++++++------ 5 files changed, 48 insertions(+), 47 deletions(-) diff --git a/src/vs/workbench/api/common/extHostTask.ts b/src/vs/workbench/api/common/extHostTask.ts index 13339a21ba2..20457959626 100644 --- a/src/vs/workbench/api/common/extHostTask.ts +++ b/src/vs/workbench/api/common/extHostTask.ts @@ -642,13 +642,20 @@ export abstract class ExtHostTaskBase implements ExtHostTaskShape, IExtHostTask if (result) { return result; } - // eslint-disable-next-line no-async-promise-executor - const createdResult: Promise = new Promise(async (resolve, reject) => { - const taskToCreate = task ? task : await TaskDTO.to(execution.task, this._workspaceProvider, this._providedCustomExecutions2); - if (!taskToCreate) { - reject('Unexpected: Task does not exist.'); + const createdResult: Promise = new Promise((resolve, reject) => { + function resolvePromiseWithCreatedTask(that: ExtHostTaskBase, execution: tasks.TaskExecutionDTO, taskToCreate: vscode.Task | types.Task | undefined) { + if (!taskToCreate) { + reject('Unexpected: Task does not exist.'); + } else { + resolve(new TaskExecutionImpl(that, execution.id, taskToCreate)); + } + } + + if (task) { + resolvePromiseWithCreatedTask(this, execution, task); } else { - resolve(new TaskExecutionImpl(this, execution.id, taskToCreate)); + TaskDTO.to(execution.task, this._workspaceProvider, this._providedCustomExecutions2) + .then(task => resolvePromiseWithCreatedTask(this, execution, task)); } }); diff --git a/src/vs/workbench/browser/parts/views/treeView.ts b/src/vs/workbench/browser/parts/views/treeView.ts index a7609bc98e5..e84fe69e9a1 100644 --- a/src/vs/workbench/browser/parts/views/treeView.ts +++ b/src/vs/workbench/browser/parts/views/treeView.ts @@ -922,10 +922,8 @@ class TreeRenderer extends Disposable implements ITreeRenderer => { - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { - await node.resolve(token); - resolve(node.tooltip); + return new Promise((resolve) => { + node.resolve(token).then(() => resolve(node.tooltip)); }); }, markdownNotSupportedFallback: resource ? undefined : label ?? '' // Passing undefined as the fallback for a resource falls back to the old native hover diff --git a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts index 7f545d137a7..fb85e0a8efa 100644 --- a/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts +++ b/src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts @@ -200,8 +200,7 @@ export class DebugTaskRunner { return taskPromise.then(withUndefinedAsNull); }); - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (c, e) => { + return new Promise((c, e) => { const waitForInput = new Promise(resolve => once(e => (e.kind === TaskEventKind.AcquiredInput) && e.taskId === task._id, this.taskService.onDidStateChange)(() => { resolve(); })); @@ -211,17 +210,18 @@ export class DebugTaskRunner { c(result); }, error => e(error)); - await waitForInput; - const waitTime = task.configurationProperties.isBackground ? 5000 : 10000; + waitForInput.then(() => { + const waitTime = task.configurationProperties.isBackground ? 5000 : 10000; - setTimeout(() => { - if (!taskStarted) { - const errorMessage = typeof taskId === 'string' - ? nls.localize('taskNotTrackedWithTaskId', "The task '{0}' cannot be tracked. Make sure to have a problem matcher defined.", taskId) - : nls.localize('taskNotTracked', "The task '{0}' cannot be tracked. Make sure to have a problem matcher defined.", JSON.stringify(taskId)); - e({ severity: severity.Error, message: errorMessage }); - } - }, waitTime); + setTimeout(() => { + if (!taskStarted) { + const errorMessage = typeof taskId === 'string' + ? nls.localize('taskNotTrackedWithTaskId', "The task '{0}' cannot be tracked. Make sure to have a problem matcher defined.", taskId) + : nls.localize('taskNotTracked', "The task '{0}' cannot be tracked. Make sure to have a problem matcher defined.", JSON.stringify(taskId)); + e({ severity: severity.Error, message: errorMessage }); + } + }, waitTime); + }); }); } } diff --git a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts index 4353bdd449a..66258c6f7fe 100644 --- a/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts +++ b/src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts @@ -926,16 +926,16 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer throw new TaskError(Severity.Info, nls.localize('TaskServer.noTask', 'Task to execute is undefined'), TaskErrors.TaskNotFound); } - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { + return new Promise((resolve) => { let resolver = this.createResolver(); if (options && options.attachProblemMatcher && this.shouldAttachProblemMatcher(task) && !InMemoryTask.is(task)) { - const toExecute = await this.attachProblemMatcher(task); - if (toExecute) { - resolve(this.executeTask(toExecute, resolver, runSource)); - } else { - resolve(undefined); - } + this.attachProblemMatcher(task).then(toExecute => { + if (toExecute) { + resolve(this.executeTask(toExecute, resolver, runSource)); + } else { + resolve(undefined); + } + }); } else { resolve(this.executeTask(task, resolver, runSource)); } @@ -2361,10 +2361,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer } }); - // eslint-disable-next-line no-async-promise-executor - const timeout: boolean = await Promise.race([new Promise(async (resolve) => { - await _createEntries; - resolve(false); + const timeout: boolean = await Promise.race([new Promise((resolve) => { + _createEntries.then(() => resolve(false)); }), new Promise((resolve) => { const timer = setTimeout(() => { clearTimeout(timer); @@ -3036,10 +3034,8 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer }); }); - // eslint-disable-next-line no-async-promise-executor - const timeout: boolean = await Promise.race([new Promise(async (resolve) => { - await entries; - resolve(false); + const timeout: boolean = await Promise.race([new Promise((resolve) => { + entries.then(() => resolve(false)); }), new Promise((resolve) => { const timer = setTimeout(() => { clearTimeout(timer); diff --git a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts index 0a1bc261430..0f49150fc30 100644 --- a/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts +++ b/src/vs/workbench/services/dialogs/browser/simpleFileDialog.ts @@ -266,8 +266,7 @@ export class SimpleFileDialog { } } - // eslint-disable-next-line no-async-promise-executor - return new Promise(async (resolve) => { + return new Promise((resolve) => { this.filePickBox = this.quickInputService.createQuickPick(); this.busy = true; this.filePickBox.matchOnLabel = false; @@ -396,13 +395,14 @@ export class SimpleFileDialog { this.filePickBox.show(); this.contextKey.set(true); - await this.updateItems(homedir, true, this.trailing); - if (this.trailing) { - this.filePickBox.valueSelection = [this.filePickBox.value.length - this.trailing.length, this.filePickBox.value.length - ext.length]; - } else { - this.filePickBox.valueSelection = [this.filePickBox.value.length, this.filePickBox.value.length]; - } - this.busy = false; + this.updateItems(homedir, true, this.trailing).then(() => { + if (this.trailing) { + this.filePickBox.valueSelection = [this.filePickBox.value.length - this.trailing.length, this.filePickBox.value.length - ext.length]; + } else { + this.filePickBox.valueSelection = [this.filePickBox.value.length, this.filePickBox.value.length]; + } + this.busy = false; + }); }); }