From a4cf79baa5fddedff71f1ad7bd96b783e67c9009 Mon Sep 17 00:00:00 2001 From: Andy Date: Mon, 25 Sep 2017 09:47:53 -0700 Subject: [PATCH] Span length is not optional (#18558) * Span length is not optional * Fix calculation of length --- src/services/refactorProvider.ts | 4 ++++ src/services/refactors/extractMethod.ts | 7 +++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/services/refactorProvider.ts b/src/services/refactorProvider.ts index 432df8c53d0..c8dc1cf360a 100644 --- a/src/services/refactorProvider.ts +++ b/src/services/refactorProvider.ts @@ -43,4 +43,8 @@ namespace ts { return refactor && refactor.getEditsForAction(context, actionName); } } + + export function getRefactorContextLength(context: RefactorContext): number { + return context.endPosition === undefined ? 0 : context.endPosition - context.startPosition; + } } diff --git a/src/services/refactors/extractMethod.ts b/src/services/refactors/extractMethod.ts index c440c83ebd2..481834c5a09 100644 --- a/src/services/refactors/extractMethod.ts +++ b/src/services/refactors/extractMethod.ts @@ -14,7 +14,7 @@ namespace ts.refactor.extractMethod { /** Compute the associated code actions */ function getAvailableActions(context: RefactorContext): ApplicableRefactorInfo[] | undefined { - const rangeToExtract = getRangeToExtract(context.file, { start: context.startPosition, length: context.endPosition - context.startPosition }); + const rangeToExtract = getRangeToExtract(context.file, { start: context.startPosition, length: getRefactorContextLength(context) }); const targetRange: TargetRange = rangeToExtract.targetRange; if (targetRange === undefined) { @@ -66,8 +66,7 @@ namespace ts.refactor.extractMethod { } function getEditsForAction(context: RefactorContext, actionName: string): RefactorEditInfo | undefined { - const length = context.endPosition === undefined ? 0 : context.endPosition - context.startPosition; - const rangeToExtract = getRangeToExtract(context.file, { start: context.startPosition, length }); + const rangeToExtract = getRangeToExtract(context.file, { start: context.startPosition, length: getRefactorContextLength(context) }); const targetRange: TargetRange = rangeToExtract.targetRange; const parsedIndexMatch = /^scope_(\d+)$/.exec(actionName); @@ -148,7 +147,7 @@ namespace ts.refactor.extractMethod { */ // exported only for tests export function getRangeToExtract(sourceFile: SourceFile, span: TextSpan): RangeToExtract { - const length = span.length || 0; + const { length } = span; if (length === 0) { return { errors: [createFileDiagnostic(sourceFile, span.start, length, Messages.StatementOrExpressionExpected)] };