Skip to content

Commit

Permalink
Enable the BABEL_TYPES_8_BREAKING flag in @babel/types
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Feb 26, 2020
1 parent 22d93b6 commit 1454f83
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 103 deletions.
92 changes: 16 additions & 76 deletions packages/babel-types/src/definitions/core.js
Expand Up @@ -30,7 +30,6 @@ defineType("ArrayExpression", {
assertNodeOrValueType("null", "Expression", "SpreadElement"),
),
),
default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined,
},
},
visitor: ["elements"],
Expand All @@ -41,10 +40,6 @@ defineType("AssignmentExpression", {
fields: {
operator: {
validate: (function() {
if (!process.env.BABEL_TYPES_8_BREAKING) {
return assertValueType("string");
}

const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);
const pattern = assertOneOf("=");

Expand All @@ -55,14 +50,12 @@ defineType("AssignmentExpression", {
})(),
},
left: {
validate: !process.env.BABEL_TYPES_8_BREAKING
? assertNodeType("LVal")
: assertNodeType(
"Identifier",
"MemberExpression",
"ArrayPattern",
"ObjectPattern",
),
validate: assertNodeType(
"Identifier",
"MemberExpression",
"ArrayPattern",
"ObjectPattern",
),
},
right: {
validate: assertNodeType("Expression"),
Expand Down Expand Up @@ -170,14 +163,6 @@ defineType("CallExpression", {
),
),
},
...(!process.env.BABEL_TYPES_8_BREAKING
? {
optional: {
validate: assertOneOf(true, false),
optional: true,
},
}
: {}),
typeArguments: {
validate: assertNodeType("TypeParameterInstantiation"),
optional: true,
Expand Down Expand Up @@ -283,15 +268,13 @@ defineType("ForInStatement", {
],
fields: {
left: {
validate: !process.env.BABEL_TYPES_8_BREAKING
? assertNodeType("VariableDeclaration", "LVal")
: assertNodeType(
"VariableDeclaration",
"Identifier",
"MemberExpression",
"ArrayPattern",
"ObjectPattern",
),
validate: assertNodeType(
"VariableDeclaration",
"Identifier",
"MemberExpression",
"ArrayPattern",
"ObjectPattern",
),
},
right: {
validate: assertNodeType("Expression"),
Expand Down Expand Up @@ -393,8 +376,6 @@ defineType("FunctionDeclaration", {
"Declaration",
],
validate: (function() {
if (!process.env.BABEL_TYPES_8_BREAKING) return () => {};

const identifier = assertNodeType("Identifier");

return function(parent, key, node) {
Expand Down Expand Up @@ -450,8 +431,6 @@ defineType("Identifier", {
...patternLikeCommon,
name: {
validate: chain(assertValueType("string"), function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (!esutils.keyword.isIdentifierNameES6(val)) {
throw new TypeError(`"${val}" is not a valid identifier name`);
}
Expand All @@ -463,8 +442,6 @@ defineType("Identifier", {
},
},
validate(parent, key, node) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

const match = /\.(\w+)$/.exec(key);
if (!match) return;

Expand Down Expand Up @@ -575,8 +552,6 @@ defineType("RegExpLiteral", {
},
flags: {
validate: chain(assertValueType("string"), function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

const invalid = /[^gimsuy]/.exec(val);
if (invalid) {
throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`);
Expand Down Expand Up @@ -626,14 +601,6 @@ defineType("MemberExpression", {
computed: {
default: false,
},
...(!process.env.BABEL_TYPES_8_BREAKING
? {
optional: {
validate: assertOneOf(true, false),
optional: true,
},
}
: {}),
},
});

Expand Down Expand Up @@ -696,7 +663,6 @@ defineType("ObjectMethod", {
...functionTypeAnnotationCommon,
kind: {
validate: assertOneOf("method", "get", "set"),
...(!process.env.BABEL_TYPES_8_BREAKING ? { default: "method" } : {}),
},
computed: {
default: false,
Expand Down Expand Up @@ -747,13 +713,7 @@ defineType("ObjectMethod", {
});

defineType("ObjectProperty", {
builder: [
"key",
"value",
"computed",
"shorthand",
...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : []),
],
builder: ["key", "value", "computed", "shorthand"],
fields: {
computed: {
default: false,
Expand Down Expand Up @@ -782,17 +742,13 @@ defineType("ObjectProperty", {
validate: chain(
assertValueType("boolean"),
function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (val && node.computed) {
throw new TypeError(
"Property shorthand of ObjectProperty cannot be true if computed is true",
);
}
},
function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (val && !is("Identifier", node.key)) {
throw new TypeError(
"Property shorthand of ObjectProperty cannot be true if key is not an Identifier",
Expand All @@ -817,8 +773,6 @@ defineType("ObjectProperty", {
const expression = assertNodeType("Expression");

return function(parent, key, node) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

const validator = is("ObjectPattern", parent) ? pattern : expression;
validator(node, "value", node.value);
};
Expand All @@ -833,14 +787,10 @@ defineType("RestElement", {
fields: {
...patternLikeCommon,
argument: {
validate: !process.env.BABEL_TYPES_8_BREAKING
? assertNodeType("LVal")
: assertNodeType("Identifier", "Pattern", "MemberExpression"),
validate: assertNodeType("Identifier", "Pattern", "MemberExpression"),
},
},
validate(parent, key) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

const match = /(\w+)\[(\d+)\]/.exec(key);
if (!match) throw new Error("Internal Babel error: malformed key.");

Expand Down Expand Up @@ -937,8 +887,6 @@ defineType("TryStatement", {
fields: {
block: {
validate: chain(assertNodeType("BlockStatement"), function(node) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

// This validator isn't put at the top level because we can run it
// even if this node doesn't have a parent.

Expand Down Expand Up @@ -984,9 +932,7 @@ defineType("UpdateExpression", {
default: false,
},
argument: {
validate: !process.env.BABEL_TYPES_8_BREAKING
? assertNodeType("Expression")
: assertNodeType("Identifier", "MemberExpression"),
validate: assertNodeType("Identifier", "MemberExpression"),
},
operator: {
validate: assertOneOf(...UPDATE_OPERATORS),
Expand Down Expand Up @@ -1016,8 +962,6 @@ defineType("VariableDeclaration", {
},
},
validate(parent, key, node) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (!is("ForXStatement", parent, { left: node })) return;
if (node.declarations.length !== 1) {
throw new TypeError(
Expand All @@ -1032,10 +976,6 @@ defineType("VariableDeclarator", {
fields: {
id: {
validate: (function() {
if (!process.env.BABEL_TYPES_8_BREAKING) {
return assertNodeType("LVal");
}

const normal = assertNodeType(
"Identifier",
"ArrayPattern",
Expand Down
16 changes: 0 additions & 16 deletions packages/babel-types/src/definitions/es2015.js
Expand Up @@ -190,8 +190,6 @@ defineType("ClassDeclaration", {
const identifier = assertNodeType("Identifier");

return function(parent, key, node) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (!is("ExportDefaultDeclaration", parent)) {
identifier(node, "id", node.id);
}
Expand Down Expand Up @@ -248,8 +246,6 @@ defineType("ExportNamedDeclaration", {
validate: chain(
assertNodeType("Declaration"),
function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

// This validator isn't put at the top level because we can run it
// even if this node doesn't have a parent.

Expand All @@ -260,8 +256,6 @@ defineType("ExportNamedDeclaration", {
}
},
function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

// This validator isn't put at the top level because we can run it
// even if this node doesn't have a parent.

Expand All @@ -284,8 +278,6 @@ defineType("ExportNamedDeclaration", {
);
const sourceless = assertNodeType("ExportSpecifier");

if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;

return function(node, key, val) {
const validator = node.source ? sourced : sourceless;
validator(node, key, val);
Expand Down Expand Up @@ -329,10 +321,6 @@ defineType("ForOfStatement", {
fields: {
left: {
validate: (function() {
if (!process.env.BABEL_TYPES_8_BREAKING) {
return assertNodeType("VariableDeclaration", "LVal");
}

const declaration = assertNodeType("VariableDeclaration");
const lval = assertNodeType(
"Identifier",
Expand Down Expand Up @@ -433,8 +421,6 @@ defineType("MetaProperty", {
fields: {
meta: {
validate: chain(assertNodeType("Identifier"), function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

let property;
switch (val.name) {
case "function":
Expand Down Expand Up @@ -664,8 +650,6 @@ defineType("YieldExpression", {
fields: {
delegate: {
validate: chain(assertValueType("boolean"), function(node, key, val) {
if (!process.env.BABEL_TYPES_8_BREAKING) return;

if (val && !node.argument) {
throw new TypeError(
"Property delegate of YieldExpression cannot be true if there is no argument",
Expand Down
18 changes: 8 additions & 10 deletions packages/babel-types/src/definitions/experimental.js
Expand Up @@ -26,16 +26,14 @@ defineType("AwaitExpression", {
defineType("BindExpression", {
visitor: ["object", "callee"],
aliases: ["Expression"],
fields: !process.env.BABEL_TYPES_8_BREAKING
? {}
: {
object: {
validate: assertNodeType("Expression"),
},
callee: {
validate: assertNodeType("Expression"),
},
},
fields: {
object: {
validate: assertNodeType("Expression"),
},
callee: {
validate: assertNodeType("Expression"),
},
},
});

defineType("ClassProperty", {
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-types/src/definitions/utils.js
Expand Up @@ -73,7 +73,7 @@ export function assertEach(callback: Validator): Validator {
const subkey = `${key}[${i}]`;
const v = val[i];
callback(node, subkey, v);
if (process.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);
validateChild(node, subkey, v);
}
}
validator.each = callback;
Expand Down

0 comments on commit 1454f83

Please sign in to comment.