Merge pull request #2936 from babel/hzoo-patch-1
babel-types: update validators
This commit is contained in:
commit
6044d559ec
@ -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"],
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@ -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";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user