Skip to content

Commit 5074f2c

Browse files
authored
fix code action race condition (microsoft#232752)
1 parent c8c77b9 commit 5074f2c

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

src/vs/editor/contrib/codeAction/browser/codeAction.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ import { IProgress, Progress } from '../../../../platform/progress/common/progre
2626
import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
2727
import { CodeActionFilter, CodeActionItem, CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource, filtersAction, mayIncludeActionsOfKind } from '../common/types.js';
2828
import { HierarchicalKind } from '../../../../base/common/hierarchicalKind.js';
29-
import { raceTimeout } from '../../../../base/common/async.js';
30-
31-
3229

3330
export const codeActionCommandId = 'editor.action.codeAction';
3431
export const quickFixCommandId = 'editor.action.quickFix';
@@ -123,10 +120,9 @@ export async function getCodeActions(
123120

124121
const disposables = new DisposableStore();
125122
const promises = providers.map(async provider => {
123+
const handle = setTimeout(() => progress.report(provider), 1250);
126124
try {
127-
const codeActionsPromise = Promise.resolve(provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token));
128-
129-
const providedCodeActions = await raceTimeout(codeActionsPromise, 1250, () => progress.report(provider));
125+
const providedCodeActions = await provider.provideCodeActions(model, rangeOrSelection, codeActionContext, cts.token);
130126

131127
if (providedCodeActions) {
132128
disposables.add(providedCodeActions);
@@ -148,6 +144,8 @@ export async function getCodeActions(
148144
}
149145
onUnexpectedExternalError(err);
150146
return emptyCodeActionsResponse;
147+
} finally {
148+
clearTimeout(handle);
151149
}
152150
});
153151

0 commit comments

Comments
 (0)