From 3aada0035a1cb997b7617f0ef409bbc3cfa2e2cb Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Wed, 23 Aug 2017 17:54:29 -0700 Subject: [PATCH] Move rename provider to use async --- .../typescript/src/features/renameProvider.ts | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/extensions/typescript/src/features/renameProvider.ts b/extensions/typescript/src/features/renameProvider.ts index 450523b4ade..291be640ca7 100644 --- a/extensions/typescript/src/features/renameProvider.ts +++ b/extensions/typescript/src/features/renameProvider.ts @@ -12,11 +12,17 @@ export default class TypeScriptRenameProvider implements RenameProvider { public constructor( private client: ITypescriptServiceClient) { } - public provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): Promise { + public async provideRenameEdits( + document: TextDocument, + position: Position, + newName: string, + token: CancellationToken + ): Promise { const filepath = this.client.normalizePath(document.uri); if (!filepath) { - return Promise.resolve(null); + return null; } + const args: Proto.RenameRequestArgs = { file: filepath, line: position.line + 1, @@ -25,32 +31,33 @@ export default class TypeScriptRenameProvider implements RenameProvider { findInComments: false }; - return this.client.execute('rename', args, token).then((response) => { + try { + const response = await this.client.execute('rename', args, token); const renameResponse = response.body; if (!renameResponse) { - return Promise.resolve(null); + return null; } const renameInfo = renameResponse.info; - const result = new WorkspaceEdit(); if (!renameInfo.canRename) { return Promise.reject(renameInfo.localizedErrorMessage); } - - renameResponse.locs.forEach((spanGroup) => { + const result = new WorkspaceEdit(); + for (const spanGroup of renameResponse.locs) { const resource = this.client.asUrl(spanGroup.file); if (!resource) { - return; + continue; } - spanGroup.locs.forEach((textSpan) => { + for (const textSpan of spanGroup.locs) { result.replace(resource, new Range(textSpan.start.line - 1, textSpan.start.offset - 1, textSpan.end.line - 1, textSpan.end.offset - 1), newName); - }); - }); + } + } return result; - }, () => { - return null; - }); + } catch (e) { + // noop + } + return null; } } \ No newline at end of file