diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 1e499fd79be..a97319ff332 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -959,10 +959,9 @@ module FourSlash { var help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition); var item = help.items[help.selectedItemIndex]; - var state = this.languageService.getSignatureHelpCurrentArgumentState(this.activeFile.fileName, this.currentCaretPosition, help.applicableSpan.start()); - + // Same logic as in getActiveSignatureHelp - this value might be -1 until a parameter value actually gets typed - var currentParam = state === undefined ? 0 : state.argumentIndex; + var currentParam = help.argumentIndex < 0 ? 0 : help.argumentIndex; return item.parameters[currentParam]; } diff --git a/src/services/services.ts b/src/services/services.ts index 7d11d9ab32d..611520f8c32 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -651,16 +651,18 @@ module ts { getCompletionsAtPosition(fileName: string, position: number, isMemberCompletion: boolean): CompletionInfo; getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails; - getTypeAtPosition(fileName: string, position: number): TypeInfo; getQuickInfoAtPosition(fileName: string, position: number): QuickInfo; + // Obsolete. Use getQuickInfoAtPosition instead. + getTypeAtPosition(fileName: string, position: number): TypeInfo; + getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TypeScript.TextSpan; getBreakpointStatementAtPosition(fileName: string, position: number): TypeScript.TextSpan; getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems; - getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): SignatureHelpState; + // Obsolete. Use getSignatureHelpItems instead. getSignatureAtPosition(fileName: string, position: number): SignatureInfo; getRenameInfo(fileName: string, position: number): RenameInfo; @@ -861,9 +863,6 @@ module ts { items: SignatureHelpItem[]; applicableSpan: TypeScript.TextSpan; selectedItemIndex: number; - } - - export interface SignatureHelpState { argumentIndex: number; argumentCount: number; } @@ -3765,16 +3764,6 @@ module ts { return SignatureHelp.getSignatureHelpItems(sourceFile, position, typeInfoResolver, cancellationToken); } - /** - * This is a syntactic operation - */ - function getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): SignatureHelpState { - fileName = TypeScript.switchToForwardSlashes(fileName); - var sourceFile = getCurrentSourceFile(fileName); - - return SignatureHelp.getSignatureHelpCurrentArgumentState(sourceFile, position, applicableSpanStart); - } - function getSignatureAtPosition(filename: string, position: number): SignatureInfo { var signatureHelpItems = getSignatureHelpItems(filename, position); @@ -3782,7 +3771,7 @@ module ts { return undefined; } - var currentArguemntState = getSignatureHelpCurrentArgumentState(filename, position, signatureHelpItems.applicableSpan.start()); + var currentArgumentState = { argumentIndex: signatureHelpItems.argumentIndex, argumentCount: signatureHelpItems.argumentCount }; var formalSignatures: FormalSignatureItemInfo[] = []; forEach(signatureHelpItems.items, signature => { @@ -3827,7 +3816,7 @@ module ts { parameterMinChar: signatureHelpItems.applicableSpan.start(), parameterLimChar: signatureHelpItems.applicableSpan.end(), currentParameterIsTypeParameter: false, - currentParameter: currentArguemntState.argumentIndex + currentParameter: currentArgumentState.argumentIndex }; return { @@ -4465,7 +4454,6 @@ module ts { getCompletionEntryDetails: getCompletionEntryDetails, getTypeAtPosition: getTypeAtPosition, getSignatureHelpItems: getSignatureHelpItems, - getSignatureHelpCurrentArgumentState: getSignatureHelpCurrentArgumentState, getQuickInfoAtPosition: getQuickInfoAtPosition, getDefinitionAtPosition: getDefinitionAtPosition, getReferencesAtPosition: getReferencesAtPosition, diff --git a/src/services/shims.ts b/src/services/shims.ts index 2757330503a..45ac958935e 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -84,14 +84,16 @@ module ts { getCompletionEntryDetails(fileName: string, position: number, entryName: string): string; getQuickInfoAtPosition(fileName: string, position: number): string; + + // Obsolete. Use getQuickInfoAtPosition instead. getTypeAtPosition(fileName: string, position: number): string; getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): string; getBreakpointStatementAtPosition(fileName: string, position: number): string; getSignatureHelpItems(fileName: string, position: number): string; - getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): string; + // Obsolete. Use getSignatureHelpItems instead. getSignatureAtPosition(fileName: string, position: number): string; /** @@ -623,15 +625,6 @@ module ts { }); } - public getSignatureHelpCurrentArgumentState(fileName: string, position: number, applicableSpanStart: number): string { - return this.forwardJSONCall( - "getSignatureHelpCurrentArgumentState('" + fileName + "', " + position + ", " + applicableSpanStart + ")", - () => { - var signatureHelpState = this.languageService.getSignatureHelpCurrentArgumentState(fileName, position, applicableSpanStart); - return signatureHelpState; - }); - } - public getSignatureAtPosition(fileName: string, position: number): string { return this.forwardJSONCall( "getSignatureAtPosition('" + fileName + "', " + position + ")", diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 4a02c99204d..796472c030e 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -337,15 +337,19 @@ module ts.SignatureHelp { var applicableSpanStart = argumentListOrTypeArgumentList.getFullStart(); var applicableSpanEnd = skipTrivia(sourceFile.text, argumentListOrTypeArgumentList.end, /*stopAfterLineBreak*/ false); var applicableSpan = new TypeScript.TextSpan(applicableSpanStart, applicableSpanEnd - applicableSpanStart); + + var state = getSignatureHelpCurrentArgumentState(sourceFile, position, applicableSpanStart); return { items: items, applicableSpan: applicableSpan, - selectedItemIndex: selectedItemIndex + selectedItemIndex: selectedItemIndex, + argumentIndex: state.argumentIndex, + argumentCount: state.argumentCount }; } } - export function getSignatureHelpCurrentArgumentState(sourceFile: SourceFile, position: number, applicableSpanStart: number): SignatureHelpState { + function getSignatureHelpCurrentArgumentState(sourceFile: SourceFile, position: number, applicableSpanStart: number): { argumentIndex: number; argumentCount: number } { var tokenPrecedingSpanStart = findPrecedingToken(applicableSpanStart, sourceFile); if (!tokenPrecedingSpanStart) { return undefined;