From 9524207999ef1159f5e973539d68c69ed1b519f2 Mon Sep 17 00:00:00 2001 From: Aiday Marlen Kyzy Date: Wed, 22 Nov 2023 14:55:04 +0100 Subject: [PATCH] Reverting changes in TypeScript language features extension (#198858) Revert "Merge pull request #198775 from microsoft/aiday/typeScriptChanges" This reverts commit 5d9d06611bf28ff2537d5921d433fd2c096140a6, reversing changes made to 823d54f86ee13eb357bc6e8e562e89d793f3c43b. --- .../src/languageFeatures/refactor.ts | 62 +++---------------- 1 file changed, 8 insertions(+), 54 deletions(-) diff --git a/extensions/typescript-language-features/src/languageFeatures/refactor.ts b/extensions/typescript-language-features/src/languageFeatures/refactor.ts index 1c0e9d006293b..8fa071892f782 100644 --- a/extensions/typescript-language-features/src/languageFeatures/refactor.ts +++ b/extensions/typescript-language-features/src/languageFeatures/refactor.ts @@ -21,7 +21,6 @@ import { nulToken } from '../utils/cancellation'; import FormattingOptionsManager from './fileConfigurationManager'; import { conditionalRegistration, requireSomeCapability } from './util/dependentRegistration'; import { EditorChatFollowUp, EditorChatFollowUp_Args, CompositeCommand } from './util/copilot'; -import * as PConst from '../tsServer/protocol/protocol.const'; function toWorkspaceEdit(client: ITypeScriptServiceClient, edits: readonly Proto.FileCodeEdits[]): vscode.WorkspaceEdit { const workspaceEdit = new vscode.WorkspaceEdit(); @@ -436,30 +435,6 @@ class MoveToFileCodeAction extends vscode.CodeAction { arguments: [{ action, document, range }] }; } - - private static readonly _declarationKinds = new Set([ - PConst.Kind.module, - PConst.Kind.class, - PConst.Kind.interface - ]); - - static isOnDeclarationName(node: Proto.NavigationTree | undefined, range: vscode.Range) { - if (!node) { - return false; - } - const isRangeInSpan = (span: Proto.TextSpan) => typeConverters.Range.fromTextSpan(span).contains(range); - if (MoveToFileCodeAction._declarationKinds.has(node.kind) && node.nameSpan && isRangeInSpan(node.nameSpan)) { - return true; - } - if (node.childItems && node.spans.some(isRangeInSpan)) { - for (const child of node.childItems) { - if (MoveToFileCodeAction.isOnDeclarationName(child, range)) { - return true; - } - } - } - return false; - } } class SelectCodeAction extends vscode.CodeAction { @@ -541,8 +516,7 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider { + const actions = Array.from(this.convertApplicableRefactors(document, response.body, rangeOrSelection)).filter(action => { if (this.client.apiVersion.lt(API.v430)) { // Don't show 'infer return type' refactoring unless it has been explicitly requested // https://github.com/microsoft/TypeScript/issues/42993 @@ -550,15 +524,8 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider applicableRefactors.filter((_, index) => mappedRefactors[index])); + }); if (!context.only) { return actions; @@ -580,44 +547,31 @@ class TypeScriptRefactorProvider implements vscode.CodeActionProvider> { - const actions: Array = []; + ): Iterable { for (const refactor of refactors) { if (refactor.inlineable === false) { - actions.push(new SelectCodeAction(refactor, document, rangeOrSelection)); + yield new SelectCodeAction(refactor, document, rangeOrSelection); } else { for (const action of refactor.actions) { - const refactorAction = await this.refactorActionToCodeAction(document, refactor, action, rangeOrSelection, refactor.actions); - if (refactorAction) { - actions.push(refactorAction); - } + yield this.refactorActionToCodeAction(document, refactor, action, rangeOrSelection, refactor.actions); } } } - return actions; } - private async refactorActionToCodeAction( + private refactorActionToCodeAction( document: vscode.TextDocument, refactor: Proto.ApplicableRefactorInfo, action: Proto.RefactorActionInfo, rangeOrSelection: vscode.Range | vscode.Selection, allActions: readonly Proto.RefactorActionInfo[], - ): Promise { + ): TsCodeAction { let codeAction: TsCodeAction; if (action.name === 'Move to file') { - const navigationTree = await this.client.execute('navtree', { file: document.uri.path }, nulToken); - if (navigationTree.type !== 'response') { - return; - } - const shouldIncludeMoveToAction = MoveToFileCodeAction.isOnDeclarationName(navigationTree.body, rangeOrSelection); - if (!shouldIncludeMoveToAction) { - return; - } codeAction = new MoveToFileCodeAction(document, action, rangeOrSelection); } else { let copilotRename: ((info: Proto.RefactorEditInfo) => vscode.Command) | undefined;