Throw when cancellation is requested

This commit is contained in:
Jason Freeman 2014-09-22 13:49:48 -07:00
parent cfee41e31c
commit 2fa24a7e7a
3 changed files with 6 additions and 2 deletions

View File

@ -1174,6 +1174,7 @@ module ts {
export interface CancellationToken {
isCancellationRequested(): boolean;
throwIfCancellationRequested?(): void;
}
export interface CompilerHost {

View File

@ -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 {

View File

@ -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 = <CallExpression>argumentList.parent;
var candidates = <Signature[]>[];
var resolvedSignature = typeInfoResolver.getResolvedSignature(call, candidates);
cancellationToken.throwIfCancellationRequested();
return candidates.length
? createSignatureHelpItems(candidates, resolvedSignature, argumentList)
: undefined;