mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 17:19:48 +01:00
"input" variables prevent compound configuration from launching more than one session (#157355)
Fixes #141514
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
import * as aria from 'vs/base/browser/ui/aria/aria';
|
||||
import { Action, IAction } from 'vs/base/common/actions';
|
||||
import { distinct } from 'vs/base/common/arrays';
|
||||
import { raceTimeout, RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { Queue, raceTimeout, RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { CancellationTokenSource } from 'vs/base/common/cancellation';
|
||||
import { isErrorWithActions } from 'vs/base/common/errorMessage';
|
||||
import * as errors from 'vs/base/common/errors';
|
||||
@@ -825,6 +825,7 @@ export class DebugService implements IDebugService {
|
||||
return Promise.all(sessions.map(s => disconnect ? s.disconnect(undefined, suspend) : s.terminate()));
|
||||
}
|
||||
|
||||
private variableSubstitutionQueue = new Queue<IConfig | undefined>();
|
||||
private async substituteVariables(launch: ILaunch | undefined, config: IConfig): Promise<IConfig | undefined> {
|
||||
const dbg = this.adapterManager.getDebugger(config.type);
|
||||
if (dbg) {
|
||||
@@ -838,7 +839,8 @@ export class DebugService implements IDebugService {
|
||||
}
|
||||
}
|
||||
try {
|
||||
return await dbg.substituteVariables(folder, config);
|
||||
// Variable substitution can require user interaction, so only one of these should be running at a time.
|
||||
return this.variableSubstitutionQueue.queue(() => dbg.substituteVariables(folder, config));
|
||||
} catch (err) {
|
||||
this.showError(err.message, undefined, !!launch?.getConfiguration(config.name));
|
||||
return undefined; // bail out
|
||||
|
||||
Reference in New Issue
Block a user