From 159b3dcec06ef4064074b8e4787f6585b6dbea42 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 2 Jul 2018 16:05:07 -0700 Subject: [PATCH] Accepted baselines and updated fourslash test. --- .../reference/api/tsserverlibrary.d.ts | 54 +++++++++++++++++-- tests/baselines/reference/api/typescript.d.ts | 36 +++++++++++-- ...ignatureHelpFilteredTriggerCharacters01.ts | 12 ++++- 3 files changed, 92 insertions(+), 10 deletions(-) diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 370c61d700b..ee7b37373ca 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -10055,12 +10055,42 @@ declare namespace ts { includeInsertTextCompletions?: boolean; } type SignatureHelpTriggerCharacter = "," | "(" | "<"; + type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")"; interface SignatureHelpItemsOptions { + triggerReason?: SignatureHelpTriggerReason; + } + type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason; + /** + * Signals that the user manually requested signature help. + * The language service will unconditionally attempt to provide a result. + */ + interface SignatureHelpInvokedReason { + kind: "invoked"; + triggerCharacter?: undefined; + } + /** + * Signals that the signature help request came from a user typing a character. + * Depending on the character and the syntactic context, the request may or may not be served a result. + */ + interface SignatureHelpCharacterTypedReason { + kind: "characterTyped"; /** - * If the editor is asking for signature help because a certain character was typed - * (as opposed to when the user explicitly requested them) this should be set. + * Character that was responsible for triggering signature help. */ - triggerCharacter?: SignatureHelpTriggerCharacter; + triggerCharacter: SignatureHelpTriggerCharacter; + } + /** + * Signals that this signature help request came from typing a character or moving the cursor. + * This should only occur if a signature help session was already active and the editor needs to see if it should adjust. + * The language service will unconditionally attempt to provide a result. + * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move. + */ + interface SignatureHelpRetriggeredReason { + kind: "retrigger"; + /** + * Character that was responsible for triggering signature help. + */ + triggerCharacter?: SignatureHelpRetriggerCharacter; } interface ApplyCodeActionCommandResult { successMessage: string; @@ -11242,7 +11272,7 @@ declare namespace ts.Rename { function getRenameInfo(program: Program, sourceFile: SourceFile, position: number): RenameInfo; } declare namespace ts.SignatureHelp { - function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, triggerCharacter: SignatureHelpTriggerCharacter | undefined, cancellationToken: CancellationToken): SignatureHelpItems | undefined; + function getSignatureHelpItems(program: Program, sourceFile: SourceFile, position: number, triggerReason: SignatureHelpTriggerReason | undefined, cancellationToken: CancellationToken): SignatureHelpItems | undefined; interface ArgumentInfoForCompletions { readonly invocation: CallLikeExpression; readonly argumentIndex: number; @@ -12973,8 +13003,22 @@ declare namespace ts.server.protocol { argumentCount: number; } type SignatureHelpTriggerCharacter = "," | "(" | "<"; + type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")"; interface SignatureHelpRequestArgs extends FileLocationRequestArgs { - triggerCharacter?: SignatureHelpTriggerCharacter; + triggerReason?: SignatureHelpTriggerReason; + } + type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason; + interface SignatureHelpInvokedReason { + kind: "invoked"; + triggerCharacter?: undefined; + } + interface SignatureHelpCharacterTypedReason { + kind: "characterTyped"; + triggerCharacter: SignatureHelpTriggerCharacter; + } + interface SignatureHelpRetriggeredReason { + kind: "retrigger"; + triggerCharacter?: SignatureHelpRetriggerCharacter; } interface SignatureHelpRequest extends FileLocationRequest { command: CommandTypes.SignatureHelp; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 5f6b9d91b19..d129d7839a8 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -4807,12 +4807,42 @@ declare namespace ts { includeInsertTextCompletions?: boolean; } type SignatureHelpTriggerCharacter = "," | "(" | "<"; + type SignatureHelpRetriggerCharacter = SignatureHelpTriggerCharacter | ")"; interface SignatureHelpItemsOptions { + triggerReason?: SignatureHelpTriggerReason; + } + type SignatureHelpTriggerReason = SignatureHelpInvokedReason | SignatureHelpCharacterTypedReason | SignatureHelpRetriggeredReason; + /** + * Signals that the user manually requested signature help. + * The language service will unconditionally attempt to provide a result. + */ + interface SignatureHelpInvokedReason { + kind: "invoked"; + triggerCharacter?: undefined; + } + /** + * Signals that the signature help request came from a user typing a character. + * Depending on the character and the syntactic context, the request may or may not be served a result. + */ + interface SignatureHelpCharacterTypedReason { + kind: "characterTyped"; /** - * If the editor is asking for signature help because a certain character was typed - * (as opposed to when the user explicitly requested them) this should be set. + * Character that was responsible for triggering signature help. */ - triggerCharacter?: SignatureHelpTriggerCharacter; + triggerCharacter: SignatureHelpTriggerCharacter; + } + /** + * Signals that this signature help request came from typing a character or moving the cursor. + * This should only occur if a signature help session was already active and the editor needs to see if it should adjust. + * The language service will unconditionally attempt to provide a result. + * `triggerCharacter` can be `undefined` for a retrigger caused by a cursor move. + */ + interface SignatureHelpRetriggeredReason { + kind: "retrigger"; + /** + * Character that was responsible for triggering signature help. + */ + triggerCharacter?: SignatureHelpRetriggerCharacter; } interface ApplyCodeActionCommandResult { successMessage: string; diff --git a/tests/cases/fourslash/signatureHelpFilteredTriggerCharacters01.ts b/tests/cases/fourslash/signatureHelpFilteredTriggerCharacters01.ts index 2ff5d1c0c40..ed97ef020d0 100644 --- a/tests/cases/fourslash/signatureHelpFilteredTriggerCharacters01.ts +++ b/tests/cases/fourslash/signatureHelpFilteredTriggerCharacters01.ts @@ -9,7 +9,15 @@ goTo.marker(); for (const triggerCharacter of ["<", "(", ","]) { edit.insert(triggerCharacter); - verify.noSignatureHelpForTriggerCharacter(triggerCharacter); + verify.noSignatureHelpForTriggerReason({ + kind: "characterTyped", + triggerCharacter, + }); + verify.signatureHelpPresentForTriggerReason({ + kind: "retrigger", + triggerCharacter, + }); edit.backspace(); } -verify.signatureHelp({ triggerCharacter: undefined }); \ No newline at end of file +verify.signatureHelpPresentForTriggerReason(/*triggerReason*/ undefined); +verify.signatureHelpPresentForTriggerReason({ kind: "invoked" }); \ No newline at end of file