Make permittedJumps a parameter to eliminate save-restore pattern

This commit is contained in:
Andrew Casey 2017-08-30 13:55:18 -07:00
parent 9d11fbb9b9
commit a81fa7a801

View File

@ -293,14 +293,13 @@ namespace ts.refactor.extractMethod {
}
let errors: Diagnostic[];
let permittedJumps = PermittedJumps.Return;
let seenLabels: Array<__String>;
visit(nodeToCheck);
visit(nodeToCheck, PermittedJumps.Return);
return errors;
function visit(node: Node) {
function visit(node: Node, permittedJumps: PermittedJumps) {
if (errors) {
// already found an error - can stop now
return true;
@ -351,7 +350,6 @@ namespace ts.refactor.extractMethod {
// do not dive into functions or classes
return false;
}
const savedPermittedJumps = permittedJumps;
if (node.parent) {
switch (node.parent.kind) {
case SyntaxKind.IfStatement:
@ -402,7 +400,7 @@ namespace ts.refactor.extractMethod {
{
const label = (<LabeledStatement>node).label;
(seenLabels || (seenLabels = [])).push(label.escapedText);
forEachChild(node, visit);
forEachChild(node, child => visit(child, permittedJumps));
seenLabels.pop();
break;
}
@ -439,11 +437,10 @@ namespace ts.refactor.extractMethod {
}
break;
default:
forEachChild(node, visit);
forEachChild(node, child => visit(child, permittedJumps));
break;
}
permittedJumps = savedPermittedJumps;
}
}
}