From 2fa24a7e7abedac5f51187f62261b552e16e62f2 Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Mon, 22 Sep 2014 13:49:48 -0700 Subject: [PATCH] Throw when cancellation is requested --- src/compiler/types.ts | 1 + src/services/services.ts | 2 +- src/services/signatureHelp.ts | 5 ++++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index ce228f39e4b..6fe1af19db8 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1174,6 +1174,7 @@ module ts { export interface CancellationToken { isCancellationRequested(): boolean; + throwIfCancellationRequested?(): void; } export interface CompilerHost { diff --git a/src/services/services.ts b/src/services/services.ts index eb3793199e1..60c2c61309a 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -3487,7 +3487,7 @@ module ts { var sourceFile = getSourceFile(fileName); var node = getNodeAtPosition(sourceFile, position); - return SignatureHelp.getSignatureHelpItems(sourceFile, position, node, typeInfoResolver); + return SignatureHelp.getSignatureHelpItems(sourceFile, position, node, typeInfoResolver, cancellationToken); } function getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): SignatureHelpState { diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index a873b9fb1c9..8986664eeb0 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -333,15 +333,18 @@ module ts.SignatureHelp { //} var emptyArray: any[] = []; - export function getSignatureHelpItems(sourceFile: SourceFile, position: number, startingNode: Node, typeInfoResolver: TypeChecker): SignatureHelpItems { + export function getSignatureHelpItems(sourceFile: SourceFile, position: number, startingNode: Node, typeInfoResolver: TypeChecker, cancellationToken: CancellationToken): SignatureHelpItems { // Decide whether to show signature help var argumentList = getContainingArgumentList(startingNode); + cancellationToken.throwIfCancellationRequested(); // Semantic filtering of signature help if (argumentList) { var call = argumentList.parent; var candidates = []; var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates); + cancellationToken.throwIfCancellationRequested(); + return candidates.length ? createSignatureHelpItems(candidates, resolvedSignature, argumentList) : undefined;