From e56593139267cb796bc7d8fe1ed13cb93f4bfc04 Mon Sep 17 00:00:00 2001 From: Jesse Trinity Date: Tue, 26 May 2020 21:07:33 -0700 Subject: [PATCH] fix up some bools --- .../refactors/addOrRemoveBracesToArrowFunction.ts | 7 +++---- src/services/refactors/extractSymbol.ts | 13 ++++++------- src/services/refactors/extractType.ts | 9 ++++----- src/testRunner/unittests/services/extract/ranges.ts | 2 +- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/services/refactors/addOrRemoveBracesToArrowFunction.ts b/src/services/refactors/addOrRemoveBracesToArrowFunction.ts index 3f1324e2266..84e596c5e41 100644 --- a/src/services/refactors/addOrRemoveBracesToArrowFunction.ts +++ b/src/services/refactors/addOrRemoveBracesToArrowFunction.ts @@ -17,8 +17,7 @@ namespace ts.refactor.addOrRemoveBracesToArrowFunction { function getAvailableActions(context: RefactorContext): readonly ApplicableRefactorInfo[] { const { file, startPosition, triggerReason } = context; - const forImplicitRequest = triggerReason ? triggerReason === "implicit" : true; - const info = getConvertibleArrowFunctionAtPosition(file, startPosition, forImplicitRequest); + const info = getConvertibleArrowFunctionAtPosition(file, startPosition, triggerReason === "invoked"); if (!info) return emptyArray; return [{ @@ -71,12 +70,12 @@ namespace ts.refactor.addOrRemoveBracesToArrowFunction { return { renameFilename: undefined, renameLocation: undefined, edits }; } - function getConvertibleArrowFunctionAtPosition(file: SourceFile, startPosition: number, forImplicitRequest = false): Info | undefined { + function getConvertibleArrowFunctionAtPosition(file: SourceFile, startPosition: number, userRequested = true): Info | undefined { const node = getTokenAtPosition(file, startPosition); const func = getContainingFunction(node); // Only offer a refactor in the function body on explicit refactor requests. if (!func || !isArrowFunction(func) || (!rangeContainsRange(func, node) - || (rangeContainsRange(func.body, node) && forImplicitRequest))) return undefined; + || (rangeContainsRange(func.body, node) && !userRequested))) return undefined; if (isExpression(func.body)) { return { diff --git a/src/services/refactors/extractSymbol.ts b/src/services/refactors/extractSymbol.ts index 8425ff9d457..3da484a9ce6 100644 --- a/src/services/refactors/extractSymbol.ts +++ b/src/services/refactors/extractSymbol.ts @@ -8,8 +8,7 @@ namespace ts.refactor.extractSymbol { * Exported for tests. */ export function getAvailableActions(context: RefactorContext): readonly ApplicableRefactorInfo[] { - const forImplicitRequest = context.triggerReason ? context.triggerReason === "implicit" : true; - const rangeToExtract = getRangeToExtract(context.file, getRefactorContextSpan(context), forImplicitRequest); + const rangeToExtract = getRangeToExtract(context.file, getRefactorContextSpan(context), context.triggerReason === "invoked"); const targetRange = rangeToExtract.targetRange; if (targetRange === undefined) { @@ -187,20 +186,20 @@ namespace ts.refactor.extractSymbol { * not shown to the user, but can be used by us diagnostically) */ // exported only for tests - export function getRangeToExtract(sourceFile: SourceFile, span: TextSpan, forImplicitRequest = false): RangeToExtract { + export function getRangeToExtract(sourceFile: SourceFile, span: TextSpan, userRequested = true): RangeToExtract { const { length } = span; - if (length === 0 && forImplicitRequest) { + if (length === 0 && !userRequested) { return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.cannotExtractEmpty)] }; } - const explicitCursorRequest = length === 0 && !forImplicitRequest; + const cursorRequest = length === 0 && userRequested; // Walk up starting from the the start position until we find a non-SourceFile node that subsumes the selected span. // This may fail (e.g. you select two statements in the root of a source file) const startToken = getTokenAtPosition(sourceFile, span.start); - const start = explicitCursorRequest ? getExtractableParent(startToken): getParentNodeInSpan(startToken, sourceFile, span); + const start = cursorRequest ? getExtractableParent(startToken): getParentNodeInSpan(startToken, sourceFile, span); // Do the same for the ending position const endToken = findTokenOnLeftOfPosition(sourceFile, textSpanEnd(span)); - const end = explicitCursorRequest ? start : getParentNodeInSpan(endToken, sourceFile, span); + const end = cursorRequest ? start : getParentNodeInSpan(endToken, sourceFile, span); const declarations: Symbol[] = []; diff --git a/src/services/refactors/extractType.ts b/src/services/refactors/extractType.ts index 114df56e8d9..4941c4dffd6 100644 --- a/src/services/refactors/extractType.ts +++ b/src/services/refactors/extractType.ts @@ -6,8 +6,7 @@ namespace ts.refactor { const extractToTypeDef = "Extract to typedef"; registerRefactor(refactorName, { getAvailableActions(context): readonly ApplicableRefactorInfo[] { - const forImplicitRequest = context.triggerReason ? context.triggerReason === "implicit" : true; - const info = getRangeToExtract(context, forImplicitRequest); + const info = getRangeToExtract(context, context.triggerReason === "invoked"); if (!info) return emptyArray; return [{ @@ -59,15 +58,15 @@ namespace ts.refactor { type Info = TypeAliasInfo | InterfaceInfo; - function getRangeToExtract(context: RefactorContext, forImplicitRequest = false): Info | undefined { + function getRangeToExtract(context: RefactorContext, userRequested = true): Info | undefined { const { file, startPosition } = context; const isJS = isSourceFileJS(file); const current = getTokenAtPosition(file, startPosition); const range = createTextRangeFromSpan(getRefactorContextSpan(context)); - const explicitCursorRequest = range.pos === range.end && !forImplicitRequest; + const cursorRequest = range.pos === range.end && userRequested; const selection = findAncestor(current, (node => node.parent && isTypeNode(node) && !rangeContainsSkipTrivia(range, node.parent, file) && - (explicitCursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)))); + (cursorRequest || nodeOverlapsWithStartEnd(current, file, range.pos, range.end)))); if (!selection || !isTypeNode(selection)) return undefined; const checker = context.program.getTypeChecker(); diff --git a/src/testRunner/unittests/services/extract/ranges.ts b/src/testRunner/unittests/services/extract/ranges.ts index e10ed6cbb91..8fe5aeb3c13 100644 --- a/src/testRunner/unittests/services/extract/ranges.ts +++ b/src/testRunner/unittests/services/extract/ranges.ts @@ -7,7 +7,7 @@ namespace ts { if (!selectionRange) { throw new Error(`Test ${s} does not specify selection range`); } - const result = refactor.extractSymbol.getRangeToExtract(file, createTextSpanFromRange(selectionRange), /*forImplicitRequest*/ true); + const result = refactor.extractSymbol.getRangeToExtract(file, createTextSpanFromRange(selectionRange), /*userRequested*/ false); assert(result.targetRange === undefined, "failure expected"); const sortedErrors = result.errors!.map(e => e.messageText).sort(); assert.deepEqual(sortedErrors, expectedErrors.sort(), "unexpected errors");