Use const/let instead of var (#1631)

* Use `const`/`let` instead of `var`

This was done with [lebab], by running:

    lebab --replace src -t let

[lebab]: https://github.com/lebab/lebab

* Remove remaining `var` usages

These were not automatically fixed by `lebab`, so they had to be
manually refactored.
This commit is contained in:
Joseph Frazier authored and Christopher Chedeau committed 2017-05-19 13:00:38 -07:00
1 parent 16ce76a082
commit de8a658bed
11 files changed
+238 -229

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ function massageAST(ast) {
}
const newObj = {};
for (var key in ast) {
for (const key in ast) {
newObj[key] = massageAST(ast[key]);
}
+46 -44
View File
@@ -1,22 +1,22 @@
"use strict";
var assert = require("assert");
var types = require("./ast-types")
var n = types.namedTypes;
var isArray = types.builtInTypes.array;
var isObject = types.builtInTypes.object;
var docBuilders = require("./doc-builders");
var concat = docBuilders.concat;
var hardline = docBuilders.hardline;
var breakParent = docBuilders.breakParent;
var indent = docBuilders.indent;
var lineSuffix = docBuilders.lineSuffix;
var join = docBuilders.join;
var util = require("./util");
var childNodesCacheKey = Symbol("child-nodes");
var locStart = util.locStart;
var locEnd = util.locEnd;
var getNextNonSpaceNonCommentCharacter =
const assert = require("assert");
const types = require("./ast-types");
const n = types.namedTypes;
const isArray = types.builtInTypes.array;
const isObject = types.builtInTypes.object;
const docBuilders = require("./doc-builders");
const concat = docBuilders.concat;
const hardline = docBuilders.hardline;
const breakParent = docBuilders.breakParent;
const indent = docBuilders.indent;
const lineSuffix = docBuilders.lineSuffix;
const join = docBuilders.join;
const util = require("./util");
const childNodesCacheKey = Symbol("child-nodes");
const locStart = util.locStart;
const locEnd = util.locEnd;
const getNextNonSpaceNonCommentCharacter =
util.getNextNonSpaceNonCommentCharacter;
// TODO Move a non-caching implementation of this function into ast-types,
@@ -31,7 +31,8 @@ function getSortedChildNodes(node, text, resultArray) {
// This reverse insertion sort almost always takes constant
// time because we almost always (maybe always?) append the
// nodes in order anyway.
for (var i = resultArray.length - 1; i >= 0; --i) {
let i;
for (i = resultArray.length - 1; i >= 0; --i) {
if (
locStart(resultArray[i]) <= locStart(node) &&
locEnd(resultArray[i]) <= locEnd(node)
@@ -46,7 +47,7 @@ function getSortedChildNodes(node, text, resultArray) {
return node[childNodesCacheKey];
}
var names;
let names;
if (isArray.check(node)) {
names = Object.keys(node);
} else if (isObject.check(node)) {
@@ -62,7 +63,7 @@ function getSortedChildNodes(node, text, resultArray) {
});
}
for (var i = 0, nameCount = names.length; i < nameCount; ++i) {
for (let i = 0, nameCount = names.length; i < nameCount; ++i) {
getSortedChildNodes(node[names[i]], text, resultArray);
}
@@ -73,13 +74,13 @@ function getSortedChildNodes(node, text, resultArray) {
// .precedingNode, .enclosingNode, and/or .followingNode properties, at
// least one of which is guaranteed to be defined.
function decorateComment(node, comment, text) {
var childNodes = getSortedChildNodes(node, text);
var precedingNode, followingNode;
const childNodes = getSortedChildNodes(node, text);
let precedingNode, followingNode;
// Time to dust off the old binary search robes and wizard hat.
var left = 0, right = childNodes.length;
let left = 0, right = childNodes.length;
while (left < right) {
var middle = (left + right) >> 1;
var child = childNodes[middle];
const middle = (left + right) >> 1;
const child = childNodes[middle];
if (
locStart(child) - locStart(comment) <= 0 &&
@@ -129,7 +130,7 @@ function attach(comments, ast, text) {
return;
}
var tiesToBreak = [];
const tiesToBreak = [];
comments.forEach((comment, i) => {
decorateComment(ast, comment, text);
@@ -262,7 +263,7 @@ function attach(comments, ast, text) {
// simply attach the right node;
const tieCount = tiesToBreak.length;
if (tieCount > 0) {
var lastTie = tiesToBreak[tieCount - 1];
const lastTie = tiesToBreak[tieCount - 1];
if (lastTie.followingNode !== comment.followingNode) {
breakTies(tiesToBreak, text);
}
@@ -294,29 +295,30 @@ function attach(comments, ast, text) {
}
function breakTies(tiesToBreak, text) {
var tieCount = tiesToBreak.length;
const tieCount = tiesToBreak.length;
if (tieCount === 0) {
return;
}
var precedingNode = tiesToBreak[0].precedingNode;
var followingNode = tiesToBreak[0].followingNode;
var gapEndPos = locStart(followingNode);
const precedingNode = tiesToBreak[0].precedingNode;
const followingNode = tiesToBreak[0].followingNode;
let gapEndPos = locStart(followingNode);
// Iterate backwards through tiesToBreak, examining the gaps
// between the tied comments. In order to qualify as leading, a
// comment must be separated from followingNode by an unbroken series of
// whitespace-only gaps (or other comments).
let indexOfFirstLeadingComment;
for (
var indexOfFirstLeadingComment = tieCount;
indexOfFirstLeadingComment = tieCount;
indexOfFirstLeadingComment > 0;
--indexOfFirstLeadingComment
) {
var comment = tiesToBreak[indexOfFirstLeadingComment - 1];
const comment = tiesToBreak[indexOfFirstLeadingComment - 1];
assert.strictEqual(comment.precedingNode, precedingNode);
assert.strictEqual(comment.followingNode, followingNode);
var gap = text.slice(locEnd(comment), gapEndPos);
const gap = text.slice(locEnd(comment), gapEndPos);
if (/\S/.test(gap)) {
// The gap string contained something other than whitespace.
break;
@@ -337,7 +339,7 @@ function breakTies(tiesToBreak, text) {
}
function addCommentHelper(node, comment) {
var comments = node.comments || (node.comments = []);
const comments = node.comments || (node.comments = []);
comments.push(comment);
comment.printed = false;
}
@@ -898,22 +900,22 @@ function printDanglingComments(path, options, sameIndent) {
}
function printComments(path, print, options, needsSemi) {
var value = path.getValue();
var parent = path.getParentNode();
var printed = print(path);
var comments = n.Node.check(value) && types.getFieldValue(value, "comments");
const value = path.getValue();
const parent = path.getParentNode();
const printed = print(path);
const comments = n.Node.check(value) && types.getFieldValue(value, "comments");
if (!comments || comments.length === 0) {
return printed;
}
var leadingParts = [];
var trailingParts = [needsSemi ? ";" : "", printed];
const leadingParts = [];
const trailingParts = [needsSemi ? ";" : "", printed];
path.each(function(commentPath) {
var comment = commentPath.getValue();
var leading = types.getFieldValue(comment, "leading");
var trailing = types.getFieldValue(comment, "trailing");
const comment = commentPath.getValue();
const leading = types.getFieldValue(comment, "leading");
const trailing = types.getFieldValue(comment, "trailing");
if (leading) {
leadingParts.push(printLeadingComment(commentPath, print, options));
+2 -2
View File
@@ -87,9 +87,9 @@ const literalline = concat([
]);
function join(sep, arr) {
var res = [];
const res = [];
for (var i = 0; i < arr.length; i++) {
for (let i = 0; i < arr.length; i++) {
if (i !== 0) {
res.push(sep);
}
+2 -2
View File
@@ -2,9 +2,9 @@
function flattenDoc(doc) {
if (doc.type === "concat") {
var res = [];
const res = [];
for (var i = 0; i < doc.parts.length; ++i) {
for (let i = 0; i < doc.parts.length; ++i) {
const doc2 = doc.parts[i];
if (typeof doc2 !== "string" && doc2.type === "concat") {
[].push.apply(res, flattenDoc(doc2).parts);
+4 -4
View File
@@ -73,7 +73,7 @@ function fits(next, restCommands, width, mustBeFlat) {
} else {
switch (doc.type) {
case "concat":
for (var i = doc.parts.length - 1; i >= 0; i--) {
for (let i = doc.parts.length - 1; i >= 0; i--) {
cmds.push([ind, mode, doc.parts[i]]);
}
@@ -94,7 +94,7 @@ function fits(next, restCommands, width, mustBeFlat) {
break;
case "fill":
for (var i = doc.parts.length - 1; i >= 0; i--) {
for (let i = doc.parts.length - 1; i >= 0; i--) {
cmds.push([ind, mode, doc.parts[i]]);
}
@@ -159,7 +159,7 @@ function printDocToString(doc, options) {
} else {
switch (doc.type) {
case "concat":
for (var i = doc.parts.length - 1; i >= 0; i--) {
for (let i = doc.parts.length - 1; i >= 0; i--) {
cmds.push([ind, mode, doc.parts[i]]);
}
@@ -211,7 +211,7 @@ function printDocToString(doc, options) {
break;
} else {
for (var i = 1; i < doc.expandedStates.length + 1; i++) {
for (let i = 1; i < doc.expandedStates.length + 1; i++) {
if (i >= doc.expandedStates.length) {
cmds.push([ind, MODE_BREAK, mostExpanded]);
+6 -6
View File
@@ -2,7 +2,7 @@
function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
function traverseDocRec(doc) {
var shouldRecurse = true;
let shouldRecurse = true;
if (onEnter) {
if (onEnter(doc) === false) {
shouldRecurse = false;
@@ -11,7 +11,7 @@ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
if (shouldRecurse) {
if (doc.type === "concat" || doc.type === "fill") {
for (var i = 0; i < doc.parts.length; i++) {
for (let i = 0; i < doc.parts.length; i++) {
traverseDocRec(doc.parts[i]);
}
} else if (doc.type === "if-break") {
@@ -60,10 +60,10 @@ function mapDoc(doc, func) {
}
function findInDoc(doc, fn, defaultValue) {
var result = defaultValue;
var hasStopped = false;
let result = defaultValue;
let hasStopped = false;
traverseDoc(doc, function(doc) {
var maybeResult = fn(doc);
const maybeResult = fn(doc);
if (maybeResult !== undefined) {
hasStopped = true;
result = maybeResult;
@@ -125,7 +125,7 @@ function breakParentGroup(groupStack) {
}
function propagateBreaks(doc) {
var alreadyVisited = new Map();
const alreadyVisited = new Map();
const groupStack = [];
traverseDoc(
doc,
+49 -49
View File
@@ -1,19 +1,19 @@
"use strict";
var assert = require("assert");
var types = require("./ast-types")
var util = require("./util");
var n = types.namedTypes;
var isArray = types.builtInTypes.array;
var isNumber = types.builtInTypes.number;
var startsWithNoLookaheadToken = util.startsWithNoLookaheadToken;
const assert = require("assert");
const types = require("./ast-types");
const util = require("./util");
const n = types.namedTypes;
const isArray = types.builtInTypes.array;
const isNumber = types.builtInTypes.number;
const startsWithNoLookaheadToken = util.startsWithNoLookaheadToken;
function FastPath(value) {
assert.ok(this instanceof FastPath);
this.stack = [value];
}
var FPp = FastPath.prototype;
const FPp = FastPath.prototype;
// Static convenience function for coercing a value to a FastPath.
FastPath.from = function(obj) {
@@ -25,9 +25,9 @@ FastPath.from = function(obj) {
if (obj instanceof types.NodePath) {
// For backwards compatibility, unroll NodePath instances into
// lightweight FastPath [..., name, value] stacks.
var copy = Object.create(FastPath.prototype);
var stack = [obj.value];
for (var pp; (pp = obj.parentPath); obj = pp)
const copy = Object.create(FastPath.prototype);
const stack = [obj.value];
for (let pp; (pp = obj.parentPath); obj = pp)
stack.push(obj.name, pp.value);
copy.stack = stack.reverse();
return copy;
@@ -38,7 +38,7 @@ FastPath.from = function(obj) {
};
FPp.copy = function copy() {
var copy = Object.create(FastPath.prototype);
const copy = Object.create(FastPath.prototype);
copy.stack = this.stack.slice(0);
return copy;
};
@@ -46,8 +46,8 @@ FPp.copy = function copy() {
// The name of the current property is always the penultimate element of
// this.stack, and always a String.
FPp.getName = function getName() {
var s = this.stack;
var len = s.length;
const s = this.stack;
const len = s.length;
if (len > 1) {
return s[len - 2];
}
@@ -59,15 +59,15 @@ FPp.getName = function getName() {
// The value of the current property is always the final element of
// this.stack.
FPp.getValue = function getValue() {
var s = this.stack;
const s = this.stack;
return s[s.length - 1];
};
function getNodeHelper(path, count) {
var s = path.stack;
const s = path.stack;
for (var i = s.length - 1; i >= 0; i -= 2) {
var value = s[i];
for (let i = s.length - 1; i >= 0; i -= 2) {
const value = s[i];
if ((n.Node.check(value)) && --count < 0) {
return value;
@@ -86,9 +86,9 @@ FPp.getParentNode = function getParentNode(count) {
};
FPp.isLast = function isLast() {
var s = this.stack;
const s = this.stack;
if (this.getParentNode()) {
var idx = s[s.length - 2];
const idx = s[s.length - 2];
// The name of this node should be an index
assert.ok(typeof idx === "number");
@@ -107,16 +107,16 @@ FPp.isLast = function isLast() {
// be restored to its original state after the callback is finished, so it
// is probably a mistake to retain a reference to the path.
FPp.call = function call(callback /*, name1, name2, ... */) {
var s = this.stack;
var origLen = s.length;
var value = s[origLen - 1];
var argc = arguments.length;
for (var i = 1; i < argc; ++i) {
var name = arguments[i];
const s = this.stack;
const origLen = s.length;
let value = s[origLen - 1];
const argc = arguments.length;
for (let i = 1; i < argc; ++i) {
const name = arguments[i];
value = value[name];
s.push(name, value);
}
var result = callback(this);
const result = callback(this);
s.length = origLen;
return result;
};
@@ -126,18 +126,18 @@ FPp.call = function call(callback /*, name1, name2, ... */) {
// callback will be called with a reference to this path object for each
// element of the array.
FPp.each = function each(callback /*, name1, name2, ... */) {
var s = this.stack;
var origLen = s.length;
var value = s[origLen - 1];
var argc = arguments.length;
const s = this.stack;
const origLen = s.length;
let value = s[origLen - 1];
const argc = arguments.length;
for (var i = 1; i < argc; ++i) {
var name = arguments[i];
for (let i = 1; i < argc; ++i) {
const name = arguments[i];
value = value[name];
s.push(name, value);
}
for (var i = 0; i < value.length; ++i) {
for (let i = 0; i < value.length; ++i) {
if (i in value) {
s.push(i, value[i]);
// If the callback needs to know the value of i, call
@@ -154,20 +154,20 @@ FPp.each = function each(callback /*, name1, name2, ... */) {
// callback function invocations are stored in an array and returned at
// the end of the iteration.
FPp.map = function map(callback /*, name1, name2, ... */) {
var s = this.stack;
var origLen = s.length;
var value = s[origLen - 1];
var argc = arguments.length;
const s = this.stack;
const origLen = s.length;
let value = s[origLen - 1];
const argc = arguments.length;
for (var i = 1; i < argc; ++i) {
var name = arguments[i];
for (let i = 1; i < argc; ++i) {
const name = arguments[i];
value = value[name];
s.push(name, value);
}
var result = new Array(value.length);
const result = new Array(value.length);
for (var i = 0; i < value.length; ++i) {
for (let i = 0; i < value.length; ++i) {
if (i in value) {
s.push(i, value[i]);
result[i] = callback(this, i);
@@ -183,13 +183,13 @@ FPp.map = function map(callback /*, name1, name2, ... */) {
// Inspired by require("ast-types").NodePath.prototype.needsParens, but
// more efficient because we're iterating backwards through a stack.
FPp.needsParens = function() {
var parent = this.getParentNode();
const parent = this.getParentNode();
if (!parent) {
return false;
}
var name = this.getName();
var node = this.getNode();
const name = this.getName();
const node = this.getNode();
// If the value of this path is some child of a Node and not a Node
// itself, then it doesn't need parentheses. Only Node objects (in
@@ -334,10 +334,10 @@ FPp.needsParens = function() {
case "BinaryExpression":
case "LogicalExpression":
var po = parent.operator;
var pp = util.getPrecedence(po);
var no = node.operator;
var np = util.getPrecedence(no);
const po = parent.operator;
const pp = util.getPrecedence(po);
const no = node.operator;
const np = util.getPrecedence(no);
if (po === "||" && no === "&&") {
return true;
+4 -4
View File
@@ -1,9 +1,9 @@
"use strict";
var validate = require("jest-validate").validate;
var deprecatedConfig = require("./deprecated");
const validate = require("jest-validate").validate;
const deprecatedConfig = require("./deprecated");
var defaults = {
const defaults = {
useTabs: false,
tabWidth: 2,
printWidth: 80,
@@ -15,7 +15,7 @@ var defaults = {
semi: true
};
var exampleConfig = Object.assign({}, defaults, {
const exampleConfig = Object.assign({}, defaults, {
filename: "testFilename",
printWidth: 80,
originalText: "text"
+116 -109
View File
@@ -1,35 +1,35 @@
"use strict";
var assert = require("assert");
var comments = require("./comments");
var FastPath = require("./fast-path");
var util = require("./util");
var isIdentifierName = require("esutils").keyword.isIdentifierNameES6;
const assert = require("assert");
const comments = require("./comments");
const FastPath = require("./fast-path");
const util = require("./util");
const isIdentifierName = require("esutils").keyword.isIdentifierNameES6;
var docBuilders = require("./doc-builders");
var concat = docBuilders.concat;
var join = docBuilders.join;
var line = docBuilders.line;
var hardline = docBuilders.hardline;
var softline = docBuilders.softline;
var literalline = docBuilders.literalline;
var group = docBuilders.group;
var indent = docBuilders.indent;
var align = docBuilders.align;
var conditionalGroup = docBuilders.conditionalGroup;
var fill = docBuilders.fill;
var ifBreak = docBuilders.ifBreak;
var breakParent = docBuilders.breakParent;
var lineSuffixBoundary = docBuilders.lineSuffixBoundary;
const docBuilders = require("./doc-builders");
const concat = docBuilders.concat;
const join = docBuilders.join;
const line = docBuilders.line;
const hardline = docBuilders.hardline;
const softline = docBuilders.softline;
const literalline = docBuilders.literalline;
const group = docBuilders.group;
const indent = docBuilders.indent;
const align = docBuilders.align;
const conditionalGroup = docBuilders.conditionalGroup;
const fill = docBuilders.fill;
const ifBreak = docBuilders.ifBreak;
const breakParent = docBuilders.breakParent;
const lineSuffixBoundary = docBuilders.lineSuffixBoundary;
var docUtils = require("./doc-utils");
var willBreak = docUtils.willBreak;
var isLineNext = docUtils.isLineNext;
var isEmpty = docUtils.isEmpty;
const docUtils = require("./doc-utils");
const willBreak = docUtils.willBreak;
const isLineNext = docUtils.isLineNext;
const isEmpty = docUtils.isEmpty;
var types = require("./ast-types");
var namedTypes = types.namedTypes;
var isString = types.builtInTypes.string;
const types = require("./ast-types");
const namedTypes = types.namedTypes;
const isString = types.builtInTypes.string;
function shouldPrintComma(options, level) {
level = level || "es5";
@@ -52,7 +52,7 @@ function shouldPrintComma(options, level) {
function genericPrint(path, options, printPath, args) {
assert.ok(path instanceof FastPath);
var node = path.getValue();
const node = path.getValue();
// Escape hatch
if (
@@ -64,9 +64,9 @@ function genericPrint(path, options, printPath, args) {
return options.originalText.slice(util.locStart(node), util.locEnd(node));
}
var parts = [];
var needsParens = false;
var linesWithoutParens = genericPrintNoParens(path, options, printPath, args);
const parts = [];
let needsParens = false;
const linesWithoutParens = genericPrintNoParens(path, options, printPath, args);
if (!node || isEmpty(linesWithoutParens)) {
return linesWithoutParens;
@@ -129,7 +129,7 @@ function genericPrint(path, options, printPath, args) {
}
function genericPrintNoParens(path, options, print, args) {
var n = path.getValue();
const n = path.getValue();
const semi = options.semi ? ";" : "";
if (!n) {
@@ -144,7 +144,7 @@ function genericPrintNoParens(path, options, print, args) {
// This assert isn't very useful though.
// namedTypes.Printable.assert(n);
var parts = [];
let parts = [];
switch (n.type) {
case "File":
return path.call(print, "program");
@@ -326,11 +326,11 @@ function genericPrintNoParens(path, options, print, args) {
return concat(parts);
case "Path":
return join(".", n.body);
case "Identifier":
var parentNode = path.getParentNode()
var isFunctionDeclarationIdentifier =
case "Identifier": {
const parentNode = path.getParentNode()
const isFunctionDeclarationIdentifier =
parentNode.type === 'DeclareFunction' &&
parentNode.id === n
parentNode.id === n;
return concat([
n.name,
@@ -338,6 +338,7 @@ function genericPrintNoParens(path, options, print, args) {
(n.typeAnnotation && !isFunctionDeclarationIdentifier) ? ": " : "",
path.call(print, "typeAnnotation")
]);
}
case "SpreadElement":
case "SpreadElementPattern":
// Babel 6 for ObjectPattern
@@ -571,11 +572,11 @@ function genericPrintNoParens(path, options, print, args) {
parts.push(n.importKind + " ");
}
var standalones = [];
var grouped = [];
const standalones = [];
const grouped = [];
if (n.specifiers && n.specifiers.length > 0) {
path.each(function(specifierPath) {
var value = specifierPath.getValue();
const value = specifierPath.getValue();
if (
namedTypes.ImportDefaultSpecifier.check(value) ||
namedTypes.ImportNamespaceSpecifier.check(value)
@@ -637,14 +638,14 @@ function genericPrintNoParens(path, options, print, args) {
return "import";
}
case "BlockStatement": {
var naked = path.call(function(bodyPath) {
const naked = path.call(function(bodyPath) {
return printStatementSequence(bodyPath, options, print);
}, "body");
const hasContent = n.body.find(node => node.type !== "EmptyStatement");
const hasDirectives = n.directives && n.directives.length > 0;
var parent = path.getParentNode();
const parent = path.getParentNode();
const parentParent = path.getParentNode(1);
if (
!hasContent &&
@@ -786,24 +787,24 @@ function genericPrintNoParens(path, options, print, args) {
case "TSInterfaceBody":
case "ObjectTypeAnnotation":
case "TSTypeLiteral": {
var isTypeAnnotation = n.type === "ObjectTypeAnnotation";
var isTypeScriptTypeAnnotation = n.type === "TSTypeLiteral";
var isTypeScriptInterfaceBody = n.type === "TSInterfaceBody";
var isTypeScriptType = isTypeScriptTypeAnnotation || isTypeScriptInterfaceBody;
const isTypeAnnotation = n.type === "ObjectTypeAnnotation";
const isTypeScriptTypeAnnotation = n.type === "TSTypeLiteral";
const isTypeScriptInterfaceBody = n.type === "TSInterfaceBody";
const isTypeScriptType = isTypeScriptTypeAnnotation || isTypeScriptInterfaceBody;
// Leave this here because we *might* want to make this
// configurable later -- flow accepts ";" for type separators,
// typescript accepts ";" and newlines
var separator = isTypeAnnotation ? "," : ",";
let separator = isTypeAnnotation ? "," : ",";
if (isTypeScriptInterfaceBody) {
separator = semi;
}
var fields = [];
var prefix = [];
var leftBrace = n.exact ? "{|" : "{";
var rightBrace = n.exact ? "|}" : "}";
var parent = path.getParentNode(0);
var parentIsUnionTypeAnnotation = parent.type === "UnionTypeAnnotation";
var propertiesField;
const fields = [];
const prefix = [];
const leftBrace = n.exact ? "{|" : "{";
const rightBrace = n.exact ? "|}" : "}";
const parent = path.getParentNode(0);
const parentIsUnionTypeAnnotation = parent.type === "UnionTypeAnnotation";
let propertiesField;
if (n.type === 'TSTypeLiteral') {
propertiesField = "members";
@@ -1120,8 +1121,8 @@ function genericPrintNoParens(path, options, print, args) {
}
return concat(parts);
case "VariableDeclaration":
var printed = path.map(function(childPath) {
case "VariableDeclaration": {
const printed = path.map(function(childPath) {
return print(childPath);
}, "declarations");
@@ -1135,9 +1136,9 @@ function genericPrintNoParens(path, options, print, args) {
// We generally want to terminate all variable declarations with a
// semicolon, except when they in the () part of for loops.
var parentNode = path.getParentNode();
const parentNode = path.getParentNode();
var isParentForLoop =
const isParentForLoop =
namedTypes.ForStatement.check(parentNode) ||
namedTypes.ForInStatement.check(parentNode) ||
(namedTypes.ForOfStatement &&
@@ -1150,6 +1151,7 @@ function genericPrintNoParens(path, options, print, args) {
}
return group(concat(parts));
}
case "VariableDeclarator":
return printAssignment(
n.id,
@@ -1288,9 +1290,9 @@ function genericPrintNoParens(path, options, print, args) {
]));
case "DoWhileStatement":
var clause = adjustClause(n.body, path.call(print, "body"));
var doBody = group(concat(["do", clause]));
var parts = [doBody];
const clause = adjustClause(n.body, path.call(print, "body"));
const doBody = group(concat(["do", clause]));
parts = [doBody];
if (n.body.type === "BlockStatement") {
parts.push(" ");
@@ -1587,11 +1589,11 @@ function genericPrintNoParens(path, options, print, args) {
return concat(parts);
case "ClassProperty":
case "TSAbstractClassProperty":
case "TSAbstractClassProperty": {
if (n.static) {
parts.push("static ");
}
var variance = getFlowVariance(n, options);
const variance = getFlowVariance(n, options);
if (variance) {
parts.push(variance);
}
@@ -1616,6 +1618,7 @@ function genericPrintNoParens(path, options, print, args) {
parts.push(semi);
return concat(parts);
}
case "ClassDeclaration":
case "ClassExpression":
case "TSAbstractClassDeclaration":
@@ -1636,12 +1639,12 @@ function genericPrintNoParens(path, options, print, args) {
case "TemplateElement":
return join(literalline, n.value.raw.split(/\r?\n/g));
case "TemplateLiteral":
var expressions = path.map(print, "expressions");
const expressions = path.map(print, "expressions");
parts.push("`");
path.each(function(childPath) {
var i = childPath.getName();
const i = childPath.getName();
parts.push(print(childPath));
@@ -1678,7 +1681,7 @@ function genericPrintNoParens(path, options, print, args) {
let aligned = removeLines(expressions[i]);
if (size > 0) {
// Use indent to add tabs for all the levels of tabs we need
for (var i = 0; i < Math.floor(size / tabWidth); ++i) {
for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
aligned = indent(aligned);
}
// Use align for all the spaces that are needed
@@ -1801,13 +1804,13 @@ function genericPrintNoParens(path, options, print, args) {
case "DeclareExportDeclaration":
return concat(["declare ", printExportDeclaration(path, options, print)]);
case "FunctionTypeAnnotation":
case "TSFunctionType":
case "TSFunctionType": {
// FunctionTypeAnnotation is ambiguous:
// declare function foo(a: B): void; OR
// var A: (a: B) => void;
var parent = path.getParentNode(0);
var parentParent = path.getParentNode(1);
var isArrowFunctionTypeAnnotation =
const parent = path.getParentNode(0);
const parentParent = path.getParentNode(1);
let isArrowFunctionTypeAnnotation =
n.type === "TSFunctionType" ||
!((!getFlowVariance(parent, options) &&
!parent.optional &&
@@ -1815,7 +1818,7 @@ function genericPrintNoParens(path, options, print, args) {
namedTypes.ObjectTypeCallProperty.check(parent) ||
namedTypes.DeclareFunction.check(path.getParentNode(2)));
var needsColon =
let needsColon =
isArrowFunctionTypeAnnotation &&
namedTypes.TypeAnnotation.check(parent);
@@ -1857,6 +1860,7 @@ function genericPrintNoParens(path, options, print, args) {
}
return group(concat(parts));
}
case "FunctionTypeParam":
return concat([
path.call(print, "name"),
@@ -1967,8 +1971,8 @@ function genericPrintNoParens(path, options, print, args) {
parts.push(path.call(print, "value"));
return concat(parts);
case "ObjectTypeIndexer":
var variance = getFlowVariance(n, options);
case "ObjectTypeIndexer": {
const variance = getFlowVariance(n, options);
return concat([
variance || "",
"[",
@@ -1978,8 +1982,9 @@ function genericPrintNoParens(path, options, print, args) {
"]: ",
path.call(print, "value")
]);
case "ObjectTypeProperty":
var variance = getFlowVariance(n, options);
}
case "ObjectTypeProperty": {
const variance = getFlowVariance(n, options);
return concat([
n.static ? "static " : "",
@@ -1990,6 +1995,7 @@ function genericPrintNoParens(path, options, print, args) {
isFunctionNotation(n) ? "" : ": ",
path.call(print, "value")
]);
}
case "QualifiedTypeIdentifier":
return concat([
path.call(print, "qualification"),
@@ -2050,8 +2056,8 @@ function genericPrintNoParens(path, options, print, args) {
case "TypeParameterDeclaration":
case "TypeParameterInstantiation":
return printTypeParameters(path, options, print, "params");
case "TypeParameter":
var variance = getFlowVariance(n, options);
case "TypeParameter": {
const variance = getFlowVariance(n, options);
if (variance) {
parts.push(variance);
@@ -2073,6 +2079,7 @@ function genericPrintNoParens(path, options, print, args) {
}
return concat(parts);
}
case "TypeofTypeAnnotation":
return concat(["typeof ", path.call(print, "argument")]);
case "VoidTypeAnnotation":
@@ -2133,7 +2140,7 @@ function genericPrintNoParens(path, options, print, args) {
case "TSArrayType":
return concat([path.call(print, "elementType"), "[]"]);
case "TSPropertySignature":
var computed = !namedTypes.Identifier.check(n.name) &&
const computed = !namedTypes.Identifier.check(n.name) &&
!namedTypes.Literal.check(n.name);
parts.push(printTypeScriptModifiers(path, options, print));
@@ -2214,7 +2221,7 @@ function genericPrintNoParens(path, options, print, args) {
if (n.type !== "TSCallSignature") {
parts.push("new ");
}
var isType = n.type === "TSConstructorType";
const isType = n.type === "TSConstructorType";
parts.push(
printTypeParameters(path, options, print, "typeParameters"),
"(",
@@ -2379,11 +2386,11 @@ function genericPrintNoParens(path, options, print, args) {
path.call(print, "expression"),
")"
])
case "TSModuleDeclaration":
var parent = path.getParentNode();
var isExternalModule = namedTypes.Literal.check(n.name);
var parentIsDeclaration = parent.type === "TSModuleDeclaration";
var bodyIsDeclaration = n.body.type === "TSModuleDeclaration";
case "TSModuleDeclaration": {
const parent = path.getParentNode();
const isExternalModule = namedTypes.Literal.check(n.name);
const parentIsDeclaration = parent.type === "TSModuleDeclaration";
const bodyIsDeclaration = n.body.type === "TSModuleDeclaration";
if (parentIsDeclaration) {
parts.push(".");
@@ -2392,7 +2399,7 @@ function genericPrintNoParens(path, options, print, args) {
// Global declaration looks like this:
// declare global { ... }
var isGlobalDeclaration = n.name.type === "Identifier" &&
const isGlobalDeclaration = n.name.type === "Identifier" &&
n.name.name === "global" &&
n.modifiers.some(modifier => modifier.type === "TSDeclareKeyword");
@@ -2415,7 +2422,7 @@ function genericPrintNoParens(path, options, print, args) {
}
return concat(parts);
}
case "TSModuleBlock":
return path.call(function(bodyPath) {
return printStatementSequence(bodyPath, options, print);
@@ -2470,7 +2477,7 @@ function printStatementSequence(path, options, print) {
const isClass = bodyNode.type === "ClassBody";
path.map((stmtPath, i) => {
var stmt = stmtPath.getValue();
const stmt = stmtPath.getValue();
// Just in case the AST has been modified to contain falsy
// "statements," it's safer simply to skip them.
@@ -2545,10 +2552,10 @@ function printPropertyKey(path, options, print) {
}
function printMethod(path, options, print) {
var node = path.getNode();
var semi = options.semi ? ";" : "";
var kind = node.kind;
var parts = [];
const node = path.getNode();
const semi = options.semi ? ";" : "";
const kind = node.kind;
const parts = [];
if (node.type === "ObjectMethod" || node.type === "ClassMethod") {
node.value = node;
@@ -2570,7 +2577,7 @@ function printMethod(path, options, print) {
parts.push(kind, " ");
}
var key = printPropertyKey(path, options, print);
let key = printPropertyKey(path, options, print);
if (node.computed) {
key = concat(["[", key, "]"]);
@@ -2640,8 +2647,8 @@ function shouldGroupFirstArg(args) {
}
function printArgumentsList(path, options, print) {
var printed = path.map(print, "arguments");
var n = path.getValue();
const printed = path.map(print, "arguments");
const n = path.getValue();
if (printed.length === 0) {
return concat([
"(",
@@ -2739,19 +2746,19 @@ function printFunctionTypeParameters(path, options, print) {
}
function printFunctionParams(path, print, options, expandArg) {
var fun = path.getValue();
const fun = path.getValue();
// namedTypes.Function.assert(fun);
var paramsField = (fun.type === "TSFunctionType" ||
const paramsField = (fun.type === "TSFunctionType" ||
fun.type === "TSMethodSignature")
? "parameters"
: "params";
var printed = path.map(print, paramsField);
const printed = path.map(print, paramsField);
if (fun.defaults) {
path.each(function(defExprPath) {
var i = defExprPath.getName();
var p = printed[i];
const i = defExprPath.getName();
const p = printed[i];
if (p && defExprPath.getValue()) {
printed[i] = concat([p, " = ", print(defExprPath)]);
@@ -2862,8 +2869,8 @@ function canPrintParamsWithoutParens(node) {
}
function printFunctionDeclaration(path, print, options) {
var n = path.getValue();
var parts = [];
const n = path.getValue();
const parts = [];
if (n.async) {
parts.push("async ");
@@ -2894,8 +2901,8 @@ function printFunctionDeclaration(path, print, options) {
}
function printObjectMethod(path, options, print) {
var objMethod = path.getValue();
var parts = [];
const objMethod = path.getValue();
const parts = [];
if (objMethod.async) {
parts.push("async ");
@@ -2909,7 +2916,7 @@ function printObjectMethod(path, options, print) {
return printMethod(path, options, print);
}
var key = printPropertyKey(path, options, print);
const key = printPropertyKey(path, options, print);
if (objMethod.computed) {
parts.push("[", key, "]");
@@ -3043,7 +3050,7 @@ function printExportDeclaration(path, options, print) {
}
function printFlowDeclaration(path, parts) {
var parentExportDecl = util.getParentExportDeclaration(path);
const parentExportDecl = util.getParentExportDeclaration(path);
if (parentExportDecl) {
assert.strictEqual(parentExportDecl.type, "DeclareExportDeclaration");
@@ -3281,9 +3288,9 @@ function printMemberChain(path, options, print) {
// < fn()()() >.something()
// - then, as many MemberExpression as possible but the last one
// < this.items >.something()
var groups = [];
var currentGroup = [printedNodes[0]];
var i = 1;
const groups = [];
let currentGroup = [printedNodes[0]];
let i = 1;
for (; i < printedNodes.length; ++i) {
if (printedNodes[i].node.type === "CallExpression") {
currentGroup.push(printedNodes[i]);
@@ -3308,7 +3315,7 @@ function printMemberChain(path, options, print) {
// a sequence of CallExpression. To compute it, we keep adding things to the
// group until we has seen a CallExpression in the past and reach a
// MemberExpression
var hasSeenCallExpression = false;
let hasSeenCallExpression = false;
for (; i < printedNodes.length; ++i) {
if (
hasSeenCallExpression && printedNodes[i].node.type === "MemberExpression"
+4 -4
View File
@@ -1,10 +1,10 @@
module.exports = function(fork) {
fork.use(require("ast-types/def/es7"));
var types = fork.use(require("ast-types/lib/types"));
var def = types.Type.def;
var or = types.Type.or;
var defaults = fork.use(require("ast-types/lib/shared")).defaults;
const types = fork.use(require("ast-types/lib/types"));
const def = types.Type.def;
const or = types.Type.or;
const defaults = fork.use(require("ast-types/lib/shared")).defaults;
// Ambient
def("TSAmbientVariableDefinition").bases("VariableDeclaration");
+4 -4
View File
@@ -16,7 +16,7 @@ function isExportDeclaration(node) {
}
function getParentExportDeclaration(path) {
var parentNode = path.getParentNode();
const parentNode = path.getParentNode();
if (path.getName() === "declaration" && isExportDeclaration(parentNode)) {
return parentNode;
}
@@ -85,7 +85,7 @@ function skipInlineComment(text, index) {
}
if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
for (var i = index + 2; i < text.length; ++i) {
for (let i = index + 2; i < text.length; ++i) {
if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
return i + 2;
}
@@ -152,7 +152,7 @@ function hasNewline(text, index, opts) {
}
function hasNewlineInRange(text, start, end) {
for (var i = start; i < end; ++i) {
for (let i = start; i < end; ++i) {
if (text.charAt(i) === "\n") {
return true;
}
@@ -234,7 +234,7 @@ function setLocEnd(node, index) {
}
}
var PRECEDENCE = {};
const PRECEDENCE = {};
[
["||"],
["&&"],