From db37cea0b6d3235ec9db63391e5e78f64627f560 Mon Sep 17 00:00:00 2001 From: Ryan Cavanaugh Date: Thu, 10 Aug 2017 16:38:24 -0700 Subject: [PATCH] Use the function stack! --- src/services/refactors/extractMethod.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/services/refactors/extractMethod.ts b/src/services/refactors/extractMethod.ts index 893cc875963..93a7c2e3410 100644 --- a/src/services/refactors/extractMethod.ts +++ b/src/services/refactors/extractMethod.ts @@ -890,7 +890,6 @@ namespace ts.refactor.extractMethod { errorsPerScope.push([]); } const seenUsages = createMap(); - let valueUsage = Usage.Read; const target = isReadonlyArray(targetRange.range) ? createBlock(targetRange.range) : targetRange.range; const containingLexicalScopeOfExtraction = isBlockScope(scopes[0], scopes[0].parent) ? scopes[0] : getEnclosingBlockScopeContainer(scopes[0]); @@ -926,31 +925,22 @@ namespace ts.refactor.extractMethod { return { target, usagesPerScope, errorsPerScope }; - function collectUsages(node: Node) { + function collectUsages(node: Node, valueUsage = Usage.Read) { if (isDeclaration(node) && node.symbol) { visibleDeclarationsInExtractedRange.push(node.symbol); } if (isAssignmentExpression(node)) { - const savedValueUsage = valueUsage; // use 'write' as default usage for values - valueUsage = Usage.Write; - collectUsages(node.left); - valueUsage = savedValueUsage; + collectUsages(node.left, Usage.Write); collectUsages(node.right); } else if (isUnaryExpressionWithWrite(node)) { - const savedValueUsage = valueUsage; - valueUsage = Usage.Write; - collectUsages(node.operand); - valueUsage = savedValueUsage; + collectUsages(node.operand, Usage.Write); } else if (isPropertyAccessExpression(node) || isElementAccessExpression(node)) { - const savedValueUsage = valueUsage; // use 'write' as default usage for values - valueUsage = Usage.Read; forEachChild(node, collectUsages); - valueUsage = savedValueUsage; } else if (isIdentifier(node)) { if (!node.parent) {