Revert "Remove Flow annotations and pragmas"

This reverts commit 4252244d06.
This commit is contained in:
Amjad Masad
2016-03-03 15:03:55 -08:00
parent 3667527d04
commit 12ee11a0a4
49 changed files with 444 additions and 287 deletions

View File

@@ -1,3 +1,4 @@
/* @flow */
import * as t from "babel-types";
@@ -28,13 +29,13 @@ const PRECEDENCE = {
"**": 10
};
export function NullableTypeAnnotation(node, parent) {
export function NullableTypeAnnotation(node: Object, parent: Object): boolean {
return t.isArrayTypeAnnotation(parent);
}
export { NullableTypeAnnotation as FunctionTypeAnnotation };
export function UpdateExpression(node, parent) {
export function UpdateExpression(node: Object, parent: Object): boolean {
if (t.isMemberExpression(parent) && parent.object === node) {
// (foo++).test()
return true;
@@ -43,7 +44,7 @@ export function UpdateExpression(node, parent) {
return false;
}
export function ObjectExpression(node, parent, printStack) {
export function ObjectExpression(node: Object, parent: Object, printStack: Array<Object>): boolean {
if (t.isExpressionStatement(parent)) {
// ({ foo: "bar" });
return true;
@@ -52,7 +53,7 @@ export function ObjectExpression(node, parent, printStack) {
return isFirstInStatement(printStack, true);
}
export function Binary(node, parent) {
export function Binary(node: Object, parent: Object): boolean {
if ((t.isCallExpression(parent) || t.isNewExpression(parent)) && parent.callee === node) {
return true;
}
@@ -85,7 +86,7 @@ export function Binary(node, parent) {
return false;
}
export function BinaryExpression(node, parent) {
export function BinaryExpression(node: Object, parent: Object): boolean {
if (node.operator === "in") {
// let i = (1 in []);
if (t.isVariableDeclarator(parent)) {
@@ -101,7 +102,7 @@ export function BinaryExpression(node, parent) {
return false;
}
export function SequenceExpression(node, parent) {
export function SequenceExpression(node: Object, parent: Object): boolean {
if (t.isForStatement(parent)) {
// Although parentheses wouldn"t hurt around sequence
// expressions in the head of for loops, traditional style
@@ -143,7 +144,7 @@ export function SequenceExpression(node, parent) {
return true;
}
export function YieldExpression(node, parent) {
export function YieldExpression(node: Object, parent: Object): boolean {
return t.isBinary(parent) ||
t.isUnaryLike(parent) ||
t.isCallExpression(parent) ||
@@ -153,7 +154,7 @@ export function YieldExpression(node, parent) {
export { YieldExpression as AwaitExpression };
export function ClassExpression(node, parent) {
export function ClassExpression(node: Object, parent: Object): boolean {
// (class {});
if (t.isExpressionStatement(parent)) {
return true;
@@ -167,7 +168,7 @@ export function ClassExpression(node, parent) {
return false;
}
export function UnaryLike(node, parent) {
export function UnaryLike(node: Object, parent: Object): boolean {
if (t.isMemberExpression(parent, { object: node })) {
return true;
}
@@ -179,7 +180,7 @@ export function UnaryLike(node, parent) {
return false;
}
export function FunctionExpression(node, parent, printStack) {
export function FunctionExpression(node: Object, parent: Object, printStack: Array<Object>): boolean {
// (function () {});
if (t.isExpressionStatement(parent)) {
return true;
@@ -193,7 +194,7 @@ export function FunctionExpression(node, parent, printStack) {
return isFirstInStatement(printStack);
}
export function ArrowFunctionExpression(node, parent) {
export function ArrowFunctionExpression(node: Object, parent: Object): boolean {
// export default (function () {});
if (t.isExportDeclaration(parent)) {
return true;
@@ -210,7 +211,7 @@ export function ArrowFunctionExpression(node, parent) {
return UnaryLike(node, parent);
}
export function ConditionalExpression(node, parent) {
export function ConditionalExpression(node: Object, parent: Object): boolean {
if (t.isUnaryLike(parent)) {
return true;
}
@@ -226,7 +227,7 @@ export function ConditionalExpression(node, parent) {
return UnaryLike(node, parent);
}
export function AssignmentExpression(node) {
export function AssignmentExpression(node: Object): boolean {
if (t.isObjectPattern(node.left)) {
return true;
} else {
@@ -236,7 +237,7 @@ export function AssignmentExpression(node) {
// Walk up the print stack to deterimine if our node can come first
// in statement.
function isFirstInStatement(printStack, considerArrow = false) {
function isFirstInStatement(printStack: Array<Object>, considerArrow: bool = false): boolean {
let i = printStack.length - 1;
let node = printStack[i];
i--;

View File

@@ -3,6 +3,11 @@ import each from "lodash/collection/each";
import map from "lodash/collection/map";
import * as t from "babel-types";
type WhitespaceObject = {
before?: boolean,
after?: boolean
};
/**
* Crawl a node to test if it contains a CallExpression, a Function, or a Helper.
*
@@ -63,7 +68,7 @@ exports.nodes = {
* Test if AssignmentExpression needs whitespace.
*/
AssignmentExpression(node) {
AssignmentExpression(node: Object): ?WhitespaceObject {
let state = crawl(node.right);
if ((state.hasCall && state.hasHelper) || state.hasFunction) {
return {
@@ -77,7 +82,7 @@ exports.nodes = {
* Test if SwitchCase needs whitespace.
*/
SwitchCase(node, parent) {
SwitchCase(node: Object, parent: Object): ?WhitespaceObject {
return {
before: node.consequent.length || parent.cases[0] === node
};
@@ -87,7 +92,7 @@ exports.nodes = {
* Test if LogicalExpression needs whitespace.
*/
LogicalExpression(node) {
LogicalExpression(node: Object): ?WhitespaceObject {
if (t.isFunction(node.left) || t.isFunction(node.right)) {
return {
after: true
@@ -99,7 +104,7 @@ exports.nodes = {
* Test if Literal needs whitespace.
*/
Literal(node) {
Literal(node: Object): ?WhitespaceObject {
if (node.value === "use strict") {
return {
after: true
@@ -111,7 +116,7 @@ exports.nodes = {
* Test if CallExpression needs whitespace.
*/
CallExpression(node) {
CallExpression(node: Object): ?WhitespaceObject {
if (t.isFunction(node.callee) || isHelper(node)) {
return {
before: true,
@@ -124,7 +129,7 @@ exports.nodes = {
* Test if VariableDeclaration needs whitespace.
*/
VariableDeclaration(node) {
VariableDeclaration(node: Object): ?WhitespaceObject {
for (let i = 0; i < node.declarations.length; i++) {
let declar = node.declarations[i];
@@ -147,7 +152,7 @@ exports.nodes = {
* Test if IfStatement needs whitespace.
*/
IfStatement(node) {
IfStatement(node: Object): ?WhitespaceObject {
if (t.isBlockStatement(node.consequent)) {
return {
before: true,
@@ -163,7 +168,7 @@ exports.nodes = {
exports.nodes.ObjectProperty =
exports.nodes.ObjectMethod =
exports.nodes.SpreadProperty = function (node, parent) {
exports.nodes.SpreadProperty = function (node: Object, parent): ?WhitespaceObject {
if (parent.properties[0] === node) {
return {
before: true
@@ -181,7 +186,7 @@ exports.list = {
* Return VariableDeclaration declarations init properties.
*/
VariableDeclaration(node) {
VariableDeclaration(node: Object): Array<Object> {
return map(node.declarations, "init");
},
@@ -189,7 +194,7 @@ exports.list = {
* Return VariableDeclaration elements.
*/
ArrayExpression(node) {
ArrayExpression(node: Object): Array<Object> {
return node.elements;
},
@@ -197,7 +202,7 @@ exports.list = {
* Return VariableDeclaration properties.
*/
ObjectExpression(node) {
ObjectExpression(node: Object): Array<Object> {
return node.properties;
}
};