Merge branch 'master' into development

This commit is contained in:
Sebastian McKenzie 2015-11-10 00:06:41 -08:00
commit d96ccd9763
4 changed files with 49 additions and 14 deletions

View File

@ -10,7 +10,7 @@
<p align="center">
<a href="https://travis-ci.org/babel/babel"><img alt="Travis Status" src="https://img.shields.io/travis/babel/babel/master.svg?style=flat&label=travis"></a>
<a href="https://travis-ci.org/babel/babel"><img alt="CircleCI Status" src="https://img.shields.io/circleci/project/babel/babel/master.svg?style=flat&label=circle"></a>
<a href="https://circleci.com/gh/babel/babel"><img alt="CircleCI Status" src="https://img.shields.io/circleci/project/babel/babel/master.svg?style=flat&label=circle"></a>
<a href="https://codecov.io/github/babel/babel"><img alt="Coverage Status" src="https://img.shields.io/codecov/c/github/babel/babel/master.svg?style=flat"></a>
</p>

View File

@ -1,12 +1,18 @@
/* @flow */
import * as t from "../index";
import {
BINARY_OPERATORS,
LOGICAL_OPERATORS,
UNARY_OPERATORS,
UPDATE_OPERATORS
} from "../index";
import defineType, {
assertValueType,
assertNodeType,
assertEach,
chain,
assertOneOf,
assertOneOf
} from "./index";
defineType("ArrayExpression", {
@ -40,7 +46,7 @@ defineType("BinaryExpression", {
builder: ["operator", "left", "right"],
fields: {
operator: {
validate: assertValueType("string")
validate: assertOneOf(BINARY_OPERATORS)
},
left: {
validate: assertNodeType("Expression")
@ -310,7 +316,6 @@ defineType("IfStatement", {
validate: assertNodeType("Expression")
},
consequent: {
optional: true,
validate: assertNodeType("Statement")
},
alternate: {
@ -389,7 +394,7 @@ defineType("LogicalExpression", {
aliases: ["Binary", "Expression"],
fields: {
operator: {
// todo
validate: assertOneOf(LOGICAL_OPERATORS)
},
left: {
validate: assertNodeType("Expression")
@ -555,7 +560,13 @@ defineType("SequenceExpression", {
defineType("SwitchCase", {
visitor: ["test", "consequent"],
fields: {
// todo
test: {
validate: assertNodeType("Expression"),
optional: true
},
consequent: {
validate: chain(assertValueType("array"), assertEach(assertNodeType("Statement")))
}
}
});
@ -563,7 +574,12 @@ defineType("SwitchStatement", {
visitor: ["discriminant", "cases"],
aliases: ["Statement", "BlockParent", "Scopable"],
fields: {
// todo
discriminant: {
validate: assertNodeType("Expression")
},
cases: {
validate: chain(assertValueType("array"), assertEach(assertNodeType("SwitchCase")))
}
}
});
@ -610,7 +626,7 @@ defineType("UnaryExpression", {
validate: assertNodeType("Expression")
},
operator: {
// todo
validate: assertOneOf(UNARY_OPERATORS)
}
},
visitor: ["argument"],
@ -627,7 +643,7 @@ defineType("UpdateExpression", {
validate: assertNodeType("Expression")
},
operator: {
// todo
validate: assertOneOf(UPDATE_OPERATORS)
}
},
visitor: ["argument"],

View File

@ -112,7 +112,9 @@ defineType("ExportAllDeclaration", {
visitor: ["source"],
aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
fields: {
// todo
source: {
validate: assertNodeType("StringLiteral")
}
}
});
@ -120,7 +122,9 @@ defineType("ExportDefaultDeclaration", {
visitor: ["declaration"],
aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
fields: {
// todo
declaration: {
validate: assertNodeType("FunctionDeclaration", "ClassDeclaration", "Expression")
}
}
});
@ -128,7 +132,17 @@ defineType("ExportNamedDeclaration", {
visitor: ["declaration", "specifiers", "source"],
aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
fields: {
// todo
declaration: {
validate: assertNodeType("Declaration"),
optional: true
},
specifiers: {
validate: chain(assertValueType("array"), assertEach(assertNodeType("ExportSpecifier")))
},
source: {
validate: assertNodeType("StringLiteral"),
optional: true
}
}
});

View File

@ -36,15 +36,20 @@ export const INHERIT_KEYS = {
force: ["start", "loc", "end"]
};
export const UPDATE_OPERATORS = ["++", "--"];
export const LOGICAL_OPERATORS = ["||", "&&"];
export const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
export const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
export const COMPARISON_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS.concat(["in", "instanceof"]);
export const BOOLEAN_BINARY_OPERATORS = [].concat(COMPARISON_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS);
export const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
export const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
export const NUMBER_BINARY_OPERATORS = ["-", "/", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
export const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS];
export const BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
export const NUMBER_UNARY_OPERATORS = ["+", "-", "++", "--", "~"];
export const STRING_UNARY_OPERATORS = ["typeof"];
export const UNARY_OPERATORS = ["void", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
import "./definitions/init";
import { VISITOR_KEYS, ALIAS_KEYS, NODE_FIELDS, BUILDER_KEYS, DEPRECATED_KEYS } from "./definitions";