diff --git a/package.json b/package.json index df74c9089c..a9870f380f 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ }, "dependencies": { "acorn-jsx": "^1.0.0", - "ast-types": "~0.7.0", "babel-plugin-constant-folding": "^1.0.1", "babel-plugin-dead-code-elimination": "^1.0.2", "babel-plugin-eval": "^1.0.1", @@ -63,8 +62,7 @@ "path-exists": "^1.0.0", "path-is-absolute": "^1.0.0", "private": "^0.1.6", - "recast": "0.10.16", - "regenerator": "0.8.32", + "regenerator": "0.8.34", "regexpu": "^1.1.2", "repeating": "^1.1.2", "resolve": "^1.1.6", diff --git a/src/babel/patch.js b/src/babel/patch.js index 1e71d6df96..2ec3f48111 100644 --- a/src/babel/patch.js +++ b/src/babel/patch.js @@ -1,83 +1,7 @@ import estraverse from "estraverse"; import extend from "lodash/object/extend"; -import types from "ast-types"; import * as t from "./types"; // estraverse extend(estraverse.VisitorKeys, t.VISITOR_KEYS); - -// regenerator/ast-types - -var def = types.Type.def; -var or = types.Type.or; - -//def("File") -// .bases("Node") -// .build("program") -// .field("program", def("Program")); - -def("Noop"); - -def("AssignmentPattern") - .bases("Pattern") - .build("left", "right") - .field("left", def("Pattern")) - .field("right", def("Expression")); - -def("RestElement") - .bases("Pattern") - .build("argument") - .field("argument", def("expression")); - -def("DoExpression") - .bases("Expression") - .build("body") - .field("body", [def("Statement")]); - -def("Super") - .bases("Expression"); - -def("ExportDefaultDeclaration") - .bases("Declaration") - .build("declaration") - .field("declaration", or( - def("Declaration"), - def("Expression"), - null - )); - -def("ExportNamedDeclaration") - .bases("Declaration") - .build("declaration") - .field("declaration", or( - def("Declaration"), - def("Expression"), - null - )) - .field("specifiers", [or( - def("ExportSpecifier") - )]) - .field("source", or(def("ModuleSpecifier"), null)); - -def("ExportNamespaceSpecifier") - .bases("Specifier") - .field("exported", def("Identifier")); - -def("ExportDefaultSpecifier") - .bases("Specifier") - .field("exported", def("Identifier")); - -def("ExportAllDeclaration") - .bases("Declaration") - .build("exported", "source") - .field("exported", def("Identifier")) - .field("source", def("Literal")); - -def("BindExpression") - .bases("Expression") - .build("object", "callee") - .field("object", or(def("Expression"), null)) - .field("callee", def("Expression")); - -types.finalize(); diff --git a/src/babel/transformation/transformers/other/regenerator.js b/src/babel/transformation/transformers/other/regenerator.js index 28695eadad..dc5b8d4e24 100644 --- a/src/babel/transformation/transformers/other/regenerator.js +++ b/src/babel/transformation/transformers/other/regenerator.js @@ -1,6 +1,11 @@ import regenerator from "regenerator"; import * as t from "../../../types"; -import { NodePath } from "ast-types"; + +// It's important to use the exact same NodePath constructor that +// Regenerator uses, rather than require("ast-types").NodePath, because +// the version of ast-types that Babel knows about might be different from +// the version that Regenerator depends on. See for example #1958. +const NodePath = regenerator.types.NodePath; export var metadata = { group: "builtin-advanced"