Skip to content

Commit f3751fb

Browse files
author
Jesse Trinity
committed
change type of RefactorTriggerReason
1 parent 23e0064 commit f3751fb

File tree

8 files changed

+22
-20
lines changed

8 files changed

+22
-20
lines changed

src/harness/fourslashImpl.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3214,8 +3214,8 @@ namespace FourSlash {
32143214
};
32153215
}
32163216

3217-
public verifyRefactorAvailable(negative: boolean, name: string, actionName?: string) {
3218-
let refactors = this.getApplicableRefactorsAtSelection();
3217+
public verifyRefactorAvailable(negative: boolean, triggerReason: ts.RefactorTriggerReason, name: string, actionName?: string) {
3218+
let refactors = this.getApplicableRefactorsAtSelection(triggerReason);
32193219
refactors = refactors.filter(r => r.name === name && (actionName === undefined || r.actions.some(a => a.name === actionName)));
32203220
const isAvailable = refactors.length > 0;
32213221

@@ -3644,14 +3644,14 @@ namespace FourSlash {
36443644
test(renameKeys(newFileContents, key => pathUpdater(key) || key), "with file moved");
36453645
}
36463646

3647-
private getApplicableRefactorsAtSelection() {
3648-
return this.getApplicableRefactorsWorker(this.getSelection(), this.activeFile.fileName);
3647+
private getApplicableRefactorsAtSelection(triggerReason: ts.RefactorTriggerReason = "implicit") {
3648+
return this.getApplicableRefactorsWorker(this.getSelection(), this.activeFile.fileName, ts.emptyOptions, triggerReason);
36493649
}
3650-
private getApplicableRefactors(rangeOrMarker: Range | Marker, preferences = ts.emptyOptions): readonly ts.ApplicableRefactorInfo[] {
3651-
return this.getApplicableRefactorsWorker("position" in rangeOrMarker ? rangeOrMarker.position : rangeOrMarker, rangeOrMarker.fileName, preferences); // eslint-disable-line no-in-operator
3650+
private getApplicableRefactors(rangeOrMarker: Range | Marker, preferences = ts.emptyOptions, triggerReason: ts.RefactorTriggerReason = "implicit"): readonly ts.ApplicableRefactorInfo[] {
3651+
return this.getApplicableRefactorsWorker("position" in rangeOrMarker ? rangeOrMarker.position : rangeOrMarker, rangeOrMarker.fileName, preferences, triggerReason); // eslint-disable-line no-in-operator
36523652
}
3653-
private getApplicableRefactorsWorker(positionOrRange: number | ts.TextRange, fileName: string, preferences = ts.emptyOptions): readonly ts.ApplicableRefactorInfo[] {
3654-
return this.languageService.getApplicableRefactors(fileName, positionOrRange, preferences) || ts.emptyArray;
3653+
private getApplicableRefactorsWorker(positionOrRange: number | ts.TextRange, fileName: string, preferences = ts.emptyOptions, triggerReason: ts.RefactorTriggerReason): readonly ts.ApplicableRefactorInfo[] {
3654+
return this.languageService.getApplicableRefactors(fileName, positionOrRange, preferences, triggerReason) || ts.emptyArray;
36553655
}
36563656

36573657
public configurePlugin(pluginName: string, configuration: any): void {

src/harness/fourslashInterfaceImpl.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,11 @@ namespace FourSlashInterface {
208208
}
209209

210210
public refactorAvailable(name: string, actionName?: string) {
211-
this.state.verifyRefactorAvailable(this.negative, name, actionName);
211+
this.state.verifyRefactorAvailable(this.negative, "implicit", name, actionName);
212+
}
213+
214+
public refactorAvailableForTriggerReason(triggerReason: ts.RefactorTriggerReason, name: string, actionName?: string) {
215+
this.state.verifyRefactorAvailable(this.negative, triggerReason, name, actionName);
212216
}
213217
}
214218

src/server/protocol.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -547,12 +547,10 @@ namespace ts.server.protocol {
547547
arguments: GetApplicableRefactorsRequestArgs;
548548
}
549549
export type GetApplicableRefactorsRequestArgs = FileLocationOrRangeRequestArgs & {
550-
triggerReason?: RefactorTriggerReason;
550+
triggerReason?: RefactorTriggerReason
551551
};
552552

553-
export enum RefactorTriggerReason {
554-
Invoked = "invoked"
555-
}
553+
export type RefactorTriggerReason = "implicit" | "invoked";
556554

557555
/**
558556
* Response is a list of available refactorings.

src/services/refactors/addOrRemoveBracesToArrowFunction.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace ts.refactor.addOrRemoveBracesToArrowFunction {
1717

1818
function getAvailableActions(context: RefactorContext): readonly ApplicableRefactorInfo[] {
1919
const { file, startPosition, triggerReason } = context;
20-
const forImplicitRequest = triggerReason ? triggerReason === RefactorTriggerReason.Implicit : true;
20+
const forImplicitRequest = triggerReason ? triggerReason === "implicit" : true;
2121
const info = getConvertibleArrowFunctionAtPosition(file, startPosition, forImplicitRequest);
2222
if (!info) return emptyArray;
2323

src/services/refactors/extractSymbol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace ts.refactor.extractSymbol {
88
* Exported for tests.
99
*/
1010
export function getAvailableActions(context: RefactorContext): readonly ApplicableRefactorInfo[] {
11-
const forImplicitRequest = context.triggerReason ? context.triggerReason === RefactorTriggerReason.Implicit : true;
11+
const forImplicitRequest = context.triggerReason ? context.triggerReason === "implicit" : true;
1212
const rangeToExtract = getRangeToExtract(context.file, getRefactorContextSpan(context), forImplicitRequest);
1313

1414
const targetRange = rangeToExtract.targetRange;

src/services/refactors/extractType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace ts.refactor {
66
const extractToTypeDef = "Extract to typedef";
77
registerRefactor(refactorName, {
88
getAvailableActions(context): readonly ApplicableRefactorInfo[] {
9-
const forImplicitRequest = context.triggerReason ? context.triggerReason === RefactorTriggerReason.Implicit : true;
9+
const forImplicitRequest = context.triggerReason ? context.triggerReason === "implicit" : true;
1010
const info = getRangeToExtract(context, forImplicitRequest);
1111
if (!info) return emptyArray;
1212

src/services/types.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -741,10 +741,7 @@ namespace ts {
741741
commands?: CodeActionCommand[];
742742
}
743743

744-
export enum RefactorTriggerReason {
745-
Implicit = "implicit",
746-
Invoked = "invoked",
747-
}
744+
export type RefactorTriggerReason = "implicit" | "invoked";
748745

749746
export interface TextInsertion {
750747
newText: string;

tests/cases/fourslash/fourslash.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ declare namespace FourSlashInterface {
243243
applicableRefactorAvailableForRange(): void;
244244

245245
refactorAvailable(name: string, actionName?: string): void;
246+
refactorAvailableForTriggerReason(triggerReason: RefactorTriggerReason, name: string, action?: string): void
246247
}
247248
class verify extends verifyNegatable {
248249
assertHasRanges(ranges: Range[]): void;
@@ -683,6 +684,8 @@ declare namespace FourSlashInterface {
683684
triggerCharacter?: string,
684685
}
685686

687+
export type RefactorTriggerReason = "implicit" | "invoked";
688+
686689
export interface VerifyCodeFixAvailableOptions {
687690
readonly description: string;
688691
readonly actions?: ReadonlyArray<{ readonly type: string, readonly data: {} }>;

0 commit comments

Comments
 (0)