Compare commits

...

26 Commits

Author SHA1 Message Date
Sebastian McKenzie
a3b1fcc79c v4.7.9 2015-03-13 13:30:14 +11:00
Sebastian McKenzie
491cb26c1f remove console.log 2015-03-13 13:29:13 +11:00
Sebastian McKenzie
7c3d052714 add 4.7.9 changelog 2015-03-13 13:27:40 +11:00
Sebastian McKenzie
4971d0c7f0 fix labeled nested for ofs - fixes #996 2015-03-13 13:25:37 +11:00
Sebastian McKenzie
eb4922b1ec update acorn-babel 2015-03-13 13:25:19 +11:00
Sebastian McKenzie
bb26183b44 set inputSourceMap to null by default 2015-03-13 13:14:17 +11:00
Sebastian McKenzie
4b066f7f1b add input sourcemap false option #827 2015-03-13 13:12:38 +11:00
Sebastian McKenzie
3cd110a7c9 fix block scoping break switch collision - fixes #998 2015-03-12 14:35:30 +11:00
Sebastian McKenzie
a7f9e035a4 infer computed literal function names - fixes #993 2015-03-12 14:13:24 +11:00
Sebastian McKenzie
146b9e6708 4.7.8 2015-03-11 10:17:09 +11:00
Sebastian McKenzie
0953c48620 v4.7.8 2015-03-11 07:49:54 +11:00
Sebastian McKenzie
056b90831d manually define each property in computed class helper - fixes #984 2015-03-11 07:45:29 +11:00
Sebastian McKenzie
8ba276b209 4.7.7 2015-03-11 01:25:41 +11:00
Sebastian McKenzie
8eaa9d29e3 v4.7.7 2015-03-11 01:20:34 +11:00
Sebastian McKenzie
6212791356 fix types API exposure - babel/babel-eslint#8 2015-03-11 01:14:36 +11:00
Sebastian McKenzie
d436d32d82 4.7.6 2015-03-11 00:13:03 +11:00
Sebastian McKenzie
2a29f70bba v4.7.6 2015-03-11 00:11:35 +11:00
Sebastian McKenzie
6ccb8957bd add 4.7.6 changelog 2015-03-11 00:09:52 +11:00
Sebastian McKenzie
dc45415ee0 hoist esModule to the top 2015-03-11 00:08:06 +11:00
Sebastian McKenzie
98ca541fde restructure types 2015-03-11 00:04:06 +11:00
Sebastian McKenzie
8328f638c2 add support for if and block statements to t.toSequenceExpression 2015-03-10 17:20:26 +11:00
Sebastian McKenzie
5586ce280f move build-external-helpers to tools 2015-03-10 17:20:14 +11:00
Sebastian McKenzie
0ca71f5e15 add transformation logger 2015-03-10 17:19:51 +11:00
Sebastian McKenzie
212776e220 remove detection 2015-03-10 17:19:35 +11:00
Sebastian McKenzie
4a95a9ec8f remove duplicate insert_final_newline 2015-03-10 17:19:23 +11:00
Sebastian McKenzie
45953ffc8a 4.7.5 2015-03-10 13:39:04 +11:00
135 changed files with 1073 additions and 1230 deletions

View File

@@ -4,7 +4,6 @@ root = true
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
[*.{js,json}]

View File

@@ -13,6 +13,35 @@ _Note: Gaps between patch versions are faulty/broken releases._
See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
## 4.7.9
* **Polish**
* Allow `inputSourceMap` to be set to `false` to skip the source map inference.
* Infer computed literal property names.
* **Bug Fix**
* Fix nested labeled for-ofs.
* Fix block scoping `break` colliding with the parent switch case.
* **Internal**
* Upgrade `acorn-babel`.
## 4.7.8
* **Bug Fix**
* Fix computed classes not properly setting symbols.
## 4.7.7
* **Bug Fix**
* Fix `types` API exposure.
## 4.7.6
* **Bug Fix**
* Fix non-Identifier/Literal computed class methods.
* **Polish**
* Add a fallback if `stack` on an error is unconfigurable.
* Hoist `esModule` module declarations to the top of the file to handle circular dependencies better.
## 4.7.5
* **Bug Fix**

View File

@@ -2,7 +2,7 @@
var commander = require("commander");
var util = require("../lib/babel/util");
var runtime = require("../lib/babel/build-external-helpers");
var runtime = require("../lib/babel/tools/build-external-helpers");
commander.option("-l, --whitelist [whitelist]", "Whitelist of helpers to ONLY include", util.list);
commander.option("-t, --output-type [type]", "Type of output (global|umd|var)", "global");

View File

@@ -1,7 +1,7 @@
{
"name": "babel",
"description": "Turn ES6 code into readable vanilla ES5 with source maps",
"version": "4.7.5",
"version": "4.7.9",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"homepage": "https://babeljs.io/",
"repository": "babel/babel",
@@ -36,7 +36,7 @@
"test": "make test"
},
"dependencies": {
"acorn-babel": "0.11.1-37",
"acorn-babel": "0.11.1-38",
"ast-types": "~0.7.0",
"chalk": "^1.0.0",
"chokidar": "^0.12.6",

View File

@@ -1,7 +1,7 @@
{
"name": "babel-runtime",
"description": "babel selfContained runtime",
"version": "4.7.4",
"version": "4.7.8",
"repository": "babel/babel",
"author": "Sebastian McKenzie <sebmck@gmail.com>",
"dependencies": {

View File

@@ -9,10 +9,12 @@ export { canCompile } from "../util";
export { default as acorn } from "acorn-babel";
export { default as transform } from "../transformation";
export { default as traverse } from "../traversal";
export { default as buildExternalHelpers } from "../build-external-helpers";
export { default as types } from "../types";
export { default as buildExternalHelpers } from "../tools/build-external-helpers";
export { version } from "../../../package";
import * as t from "../types";
export { t as types };
export function register(opts) {
var callback = require("./register/node");
if (opts != null) callback(opts);

View File

@@ -1,28 +0,0 @@
import SYNTAX_KEYS from "./syntax-keys";
import traverse from "../traversal";
var visitors = traverse.explode(require("./visitors"));
export default function (ast) {
var stats = {
syntax: {},
builtins: {}
};
var detectedSyntax = function (name) {
stats.syntax[name] = true;
};
traverse(ast, {
enter(node, parent) {
if (SYNTAX_KEYS[node.type]) {
detectedSyntax(SYNTAX_KEYS[node.type]);
}
var visitor = visitors[node.type];
if (visitor) visitor(node, parent, detectedSyntax);
}
});
return stats;
};

View File

@@ -1,84 +0,0 @@
{
"ArrowFunctionExpression": "es6.arrowFunctions",
"AwaitExpression": "es7.asyncFunctions",
"ClassBody": "es6.classes",
"ClassDeclaration": "es6.classes",
"ClassExpression": "es6.classes",
"MethodDefinition": "es6.classes",
"ComprehensionBlock": "es7.comprehensions",
"ComprehensionExpression": "es7.comprehensions",
"ForOfStatement": "es6.forOf",
"ExportBatchSpecifier": "es6.modules",
"ExportDeclaration": "es6.modules",
"ExportSpecifier": "es6.modules",
"ImportBatchSpecifier": "es6.modules",
"ImportDeclaration": "es6.modules",
"ImportSpecifier": "es6.modules",
"ArrayPattern": "es6.destructuring",
"AssignmentPattern": "es6.destructuring",
"ObjectPattern": "es6.destructuring",
"RestElement": "es6.parameters.rest",
"SpreadElement": "es6.spread",
"SpreadProperty": "es7.objectSpread",
"TaggedTemplateExpression": "es6.templateLiterals",
"TemplateElement": "es6.templateLiterals",
"TemplateLiteral": "es6.templateLiterals",
"VirtualPropertyExpression": "es7.abstractReferences",
"PrivateDeclaration": "es7.abstractReferences",
"YieldExpression": "es6.generators",
"AnyTypeAnnotation": "flow",
"ArrayTypeAnnotation": "flow",
"BooleanTypeAnnotation": "flow",
"ClassProperty": "flow",
"DeclareClass": "flow",
"DeclareFunction": "flow",
"DeclareModule": "flow",
"DeclareVariable": "flow",
"FunctionTypeAnnotation": "flow",
"FunctionTypeParam": "flow",
"GenericTypeAnnotation": "flow",
"InterfaceExtends": "flow",
"InterfaceDeclaration": "flow",
"IntersectionTypeAnnotation": "flow",
"NullableTypeAnnotation": "flow",
"NumberTypeAnnotation": "flow",
"StringLiteralTypeAnnotation": "flow",
"StringTypeAnnotation": "flow",
"TupleTypeAnnotation": "flow",
"TypeofTypeAnnotation": "flow",
"TypeAlias": "flow",
"TypeAnnotation": "flow",
"TypeParameterDeclaration": "flow",
"TypeParameterInstantiation": "flow",
"ObjectTypeAnnotation": "flow",
"ObjectTypeCallProperty": "flow",
"ObjectTypeIndexer": "flow",
"ObjectTypeProperty": "flow",
"QualifiedTypeIdentifier": "flow",
"UnionTypeAnnotation": "flow",
"VoidTypeAnnotation": "flow",
"JSXAttribute": "jsx",
"JSXClosingElement": "jsx",
"JSXElement": "jsx",
"JSXEmptyExpression": "jsx",
"JSXExpressionContainer": "jsx",
"JSXIdentifier": "jsx",
"JSXMemberExpression": "jsx",
"JSXNamespacedName": "jsx",
"JSXOpeningElement": "jsx",
"JSXSpreadAttribute": "jsx"
}

View File

@@ -1,54 +0,0 @@
import includes from "lodash/collection/includes";
import t from "../types";
export function AssignmentExpression(node, parent, detected) {
if (node.operator === "**=") {
detected("es6.exponentation");
}
}
export function BinaryExpression(node, parent, detected) {
if (node.operator === "**") {
detected("es6.exponentation");
}
}
export function VariableDeclaration(node, parent, detected) {
if (node.kind === "let" || node.kind === "const") {
detected("es6.blockScoping");
}
if (node.kind === "const") {
detected("es6.constants");
}
}
export function Property(node, parent, detected) {
if (node.shorthand || node.method) {
detected("es6.properties.shorthand");
}
if (node.kind === "set" || node.kind === "get") {
detected("es5.properties.mutators");
}
if (node.computed) {
detected("es6.properties.computed");
}
}
export function AssignmentPattern(node, parent, detected) {
if (t.isFunction(parent) && includes(parent.params, node)) {
detected("es6.parameters.default");
}
}
exports.Function = function (node, parent, detected) {
if (node.generator) {
detected("es6.generators");
}
if (node.async) {
detected("es7.asyncFunctions");
}
};

View File

@@ -1,6 +1,6 @@
import isInteger from "is-integer";
import isNumber from "lodash/lang/isNumber";
import t from "../../types";
import * as t from "../../types";
export function UnaryExpression(node, print) {
var hasSpace = /[a-z]$/.test(node.operator);

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export function AnyTypeAnnotation() {
this.push("any");

View File

@@ -1,5 +1,5 @@
import each from "lodash/collection/each";
import t from "../../types";
import * as t from "../../types";
export function JSXAttribute(node, print) {
print(node.name);

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export function _params(node, print) {
print(node.typeParameters);

View File

@@ -1,5 +1,5 @@
import each from "lodash/collection/each";
import t from "../../types";
import * as t from "../../types";
export function ImportSpecifier(node, print) {
if (t.isSpecifierDefault(node)) {

View File

@@ -1,5 +1,5 @@
import repeating from "repeating";
import t from "../../types";
import * as t from "../../types";
export function WithStatement(node, print) {
this.keyword("with");

View File

@@ -8,7 +8,7 @@ import Buffer from "./buffer";
import extend from "lodash/object/extend";
import each from "lodash/collection/each";
import n from "./node";
import t from "../types";
import * as t from "../types";
class CodeGenerator {
constructor(ast, opts, code) {

View File

@@ -2,7 +2,7 @@ import whitespace from "./whitespace";
import * as parens from "./parentheses";
import each from "lodash/collection/each";
import some from "lodash/collection/some";
import t from "../../types";
import * as t from "../../types";
var find = function (obj, node, parent) {
if (!obj) return;

View File

@@ -1,5 +1,5 @@
import each from "lodash/collection/each";
import t from "../../types";
import * as t from "../../types";
var PRECEDENCE = {};

View File

@@ -1,7 +1,7 @@
import isBoolean from "lodash/lang/isBoolean";
import each from "lodash/collection/each";
import map from "lodash/collection/map";
import t from "../../types";
import * as t from "../../types";
function crawl(node, state = {}) {
if (t.isMemberExpression(node)) {

View File

@@ -1,5 +1,5 @@
import sourceMap from "source-map";
import t from "../types";
import * as t from "../types";
export default class SourceMap {
constructor(position, opts, code) {

View File

@@ -1,4 +1,4 @@
import t from "../types";
import * as t from "../types";
export default function (ast, comments, tokens) {
if (ast && ast.type === "Program") {

View File

@@ -1,7 +1,7 @@
import estraverse from "estraverse";
import extend from "lodash/object/extend";
import types from "ast-types";
import t from "./types";
import * as t from "./types";
// estraverse

View File

@@ -1,9 +1,9 @@
import generator from "./generation";
import * as messages from "./messages";
import * as util from "./util";
import File from "./transformation/file";
import generator from "../generation";
import * as messages from "../messages";
import * as util from "../util";
import File from "../transformation/file";
import each from "lodash/collection/each";
import t from "./types";
import * as t from "../types";
function buildGlobal(namespace, builder) {
var body = [];

View File

@@ -7,13 +7,14 @@ import generate from "../generation";
import defaults from "lodash/object/defaults";
import includes from "lodash/collection/includes";
import assign from "lodash/object/assign";
import Logger from "./logger";
import parse from "../helpers/parse";
import Scope from "../traversal/scope";
import slash from "slash";
import * as util from "../util";
import path from "path";
import each from "lodash/collection/each";
import t from "../types";
import * as t from "../types";
var checkTransformerVisitor = {
enter(node, parent, scope, state) {
@@ -23,7 +24,7 @@ var checkTransformerVisitor = {
function checkNode(stack, node, scope) {
each(stack, function (pass) {
if (pass.shouldRun) return;
if (pass.shouldRun || pass.ran) return;
pass.checkNode(node, scope);
});
}
@@ -41,6 +42,7 @@ export default class File {
this.lastStatements = [];
this.opts = this.normalizeOptions(opts);
this.log = new Logger(this);
this.ast = {};
this.buildTransformers();
@@ -137,7 +139,7 @@ export default class File {
returnUsedHelpers: false,
externalHelpers: false,
auxilaryComment: "",
inputSourceMap: false,
inputSourceMap: null,
experimental: false,
reactCompat: false,
playground: false,
@@ -260,12 +262,6 @@ export default class File {
this.transformers = transformers;
}
debug(msg?: string) {
var parts = this.opts.filename;
if (msg) parts += `: ${msg}`;
util.debug(parts);
}
getModuleFormatter(type: string) {
var ModuleFormatter = isFunction(type) ? type : transform.moduleFormatters[type];
@@ -284,10 +280,12 @@ export default class File {
parseInputSourceMap(code: string) {
var opts = this.opts;
var inputMap = convertSourceMap.fromSource(code);
if (inputMap) {
opts.inputSourceMap = inputMap.toObject();
code = convertSourceMap.removeComments(code);
if (opts.inputSourceMap === false) {
var inputMap = convertSourceMap.fromSource(code);
if (inputMap) {
opts.inputSourceMap = inputMap.toObject();
code = convertSourceMap.removeComments(code);
}
}
return code;
@@ -398,10 +396,6 @@ export default class File {
}
}
logDeopt() {
// todo, (node, msg)
}
errorWithNode(node, msg, Error = SyntaxError) {
var loc = node.loc.start;
var err = new Error(`Line ${loc.line}: ${msg}`);
@@ -431,7 +425,7 @@ export default class File {
}
transform(ast) {
this.debug();
this.log.debug();
this.ast = ast;
this.lastStatements = t.getLastStatements(ast.program);

View File

@@ -1,5 +1,5 @@
import explode from "./explode-assignable-expression";
import t from "../../types";
import * as t from "../../types";
export default function (exports, opts) {
var isAssignment = function (node) {

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export default function build(node, buildBody) {
var self = node.blocks.shift();

View File

@@ -1,5 +1,5 @@
import explode from "./explode-assignable-expression";
import t from "../../types";
import * as t from "../../types";
export default function (exports, opts) {
var buildAssignment = function (left, right) {

View File

@@ -7,7 +7,7 @@ import isString from "lodash/lang/isString";
import * as messages from "../../messages";
import esutils from "esutils";
import * as react from "./react";
import t from "../../types";
import * as t from "../../types";
export default function (exports, opts) {
exports.check = function (node) {

View File

@@ -2,7 +2,7 @@ import cloneDeep from "lodash/lang/cloneDeep";
import traverse from "../../traversal";
import each from "lodash/collection/each";
import has from "lodash/object/has";
import t from "../../types";
import * as t from "../../types";
export function push(mutatorMap, key, kind, computed, value) {
var alias = t.toKeyAlias({ computed }, key);

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
var getObjRef = function (node, nodes, file, scope) {
var ref;

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export default function (node) {
var lastNonDefault = 0;

View File

@@ -1,6 +1,6 @@
import getFunctionArity from "./get-function-arity";
import * as util from "../../util";
import t from "../../types";
import * as t from "../../types";
var visitor = {
enter(node, parent, scope, state) {
@@ -111,7 +111,7 @@ export function bare(node, parent, scope) {
if (node.id) return node;
var id;
if (t.isProperty(parent) && parent.kind === "init" && !parent.computed) {
if (t.isProperty(parent) && parent.kind === "init" && (!parent.computed || t.isLiteral(parent.key))) {
// { foo() {} };
id = parent.key;
} else if (t.isVariableDeclarator(parent)) {
@@ -121,9 +121,16 @@ export function bare(node, parent, scope) {
return node;
}
if (!t.isIdentifier(id)) return node;
var name;
if (t.isLiteral(id)) {
name = id.value;
} else if (t.isIdentifier(id)) {
name = id.name;
} else {
return;
}
var name = t.toIdentifier(id.name);
name = t.toIdentifier(name);
id = t.identifier(name);
var state = visit(node, name, scope);

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
var isCreateClassCallExpression = t.buildMatchMemberExpression("React.createClass");

View File

@@ -1,5 +1,5 @@
import pull from "lodash/array/pull";
import t from "../../types";
import * as t from "../../types";
export function is(node, flag) {
return t.isLiteral(node) && node.regex && node.regex.flags.indexOf(flag) >= 0;

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
var awaitVisitor = {
enter(node, parent, scope, state) {

View File

@@ -1,7 +1,7 @@
module.exports = ReplaceSupers;
import * as messages from "../../messages";
import t from "../../types";
import * as t from "../../types";
function isIllegalBareSuper(node, parent) {

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export function has(node) {
var first = node.body[0];

View File

@@ -0,0 +1,22 @@
import * as util from "../util";
export default class Logger {
constructor(file: File) {
this.filename = file.opts.filename;
this.file = file;
}
_buildMessage(msg: string): string {
var parts = this.filename;
if (msg) parts += `: ${msg}`;
return parts;
}
debug(msg: string) {
util.debug(this._buildMessage(msg));
}
deopt(node: Object, msg: string) {
util.debug(this._buildMessage(msg));
}
}

View File

@@ -2,7 +2,7 @@ import * as messages from "../../messages";
import extend from "lodash/object/extend";
import object from "../../helpers/object";
import * as util from "../../util";
import t from "../../types";
import * as t from "../../types";
var remapVisitor = {
enter(node, parent, scope, formatter) {

View File

@@ -3,7 +3,7 @@ import CommonFormatter from "./common";
import includes from "lodash/collection/includes";
import values from "lodash/object/values";
import * as util from "../../util";
import t from "../../types";
import * as t from "../../types";
export default class AMDFormatter extends DefaultFormatter {
init = CommonFormatter.prototype.init;

View File

@@ -1,7 +1,7 @@
import DefaultFormatter from "./_default";
import includes from "lodash/collection/includes";
import * as util from "../../util";
import t from "../../types";
import * as t from "../../types";
export default class CommonJSFormatter extends DefaultFormatter {
init() {
@@ -13,7 +13,7 @@ export default class CommonJSFormatter extends DefaultFormatter {
if (!this.noInteropRequireImport && this.hasNonDefaultExports) {
var templateName = "exports-module-declaration";
if (this.file.isLoose("es6.modules")) templateName += "-loose";
file.ast.program.body.push(util.template(templateName, true));
file.ast.program.body.unshift(util.template(templateName, true));
}
};

View File

@@ -1,4 +1,4 @@
import t from "../../types";
import * as t from "../../types";
export default class IgnoreFormatter {
exportDeclaration(node, nodes) {

View File

@@ -4,7 +4,7 @@ import * as util from "../../util";
import last from "lodash/array/last";
import each from "lodash/collection/each";
import map from "lodash/collection/map";
import t from "../../types";
import * as t from "../../types";
var hoistVariablesVisitor = {
enter(node, parent, scope, hoistDeclarators) {

View File

@@ -1,7 +1,7 @@
import AMDFormatter from "./amd";
import values from "lodash/object/values";
import * as util from "../../util";
import t from "../../types";
import * as t from "../../types";
export default class UMDFormatter extends AMDFormatter {
transform(program) {

View File

@@ -1,13 +1,11 @@
(function() {
function defineProperties(target, rawProps) {
var props = {};
for (var i = 0; i < rawProps.length; i ++) {
var prop = rawProps[i];
function defineProperties(target, props) {
for (var i = 0; i < props.length; i ++) {
var prop = props[i];
prop.configurable = true;
if (prop.value) prop.writable = true;
props[prop.key] = prop;
Object.defineProperty(target, prop.key, prop);
}
Object.defineProperties(target, props);
}
return function (Constructor, protoProps, staticProps) {

View File

@@ -11,6 +11,7 @@ export default class TransformerPass {
this.shouldRun = !transformer.check;
this.handlers = transformer.handlers;
this.file = file;
this.ran = false;
}
canRun(): boolean {
@@ -56,8 +57,10 @@ export default class TransformerPass {
var file = this.file;
file.debug(`Running transformer ${this.transformer.key}`);
file.log.debug(`Running transformer ${this.transformer.key}`);
file.scope.traverse(file.ast, this.handlers, file);
this.ran = true;
}
}

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function MemberExpression(node) {
var prop = node.property;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function Property(node) {
var key = node.key;

View File

@@ -1,5 +1,5 @@
import * as defineMap from "../../helpers/define-map";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isProperty(node) && (node.kind === "get" || node.kind === "set");

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var check = t.isArrowFunctionExpression;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
var visitor = {
enter(node, parent, scope, state) {

View File

@@ -1,7 +1,7 @@
import traverse from "../../../traversal";
import object from "../../../helpers/object";
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
import values from "lodash/object/values";
import extend from "lodash/object/extend";
@@ -69,8 +69,9 @@ export function Loop(node, parent, scope, file) {
t.ensureBlock(node);
node.body._letDeclarators = [init];
}
var blockScoping = new BlockScoping(node, node.body, parent, scope, file);
blockScoping.run();
var blockScoping = new BlockScoping(this, node.body, parent, scope, file);
return blockScoping.run();
}
export function BlockStatement(block, parent, scope, file) {
@@ -224,17 +225,22 @@ class BlockScoping {
* Description
*/
constructor(loopParent?: Object, block: Object, parent: Object, scope: Scope, file: File) {
this.loopParent = loopParent;
this.parent = parent;
this.scope = scope;
this.block = block;
this.file = file;
constructor(loopPath?: TraversalPath, block: Object, parent: Object, scope: Scope, file: File) {
this.parent = parent;
this.scope = scope;
this.block = block;
this.file = file;
this.outsideLetReferences = object();
this.hasLetReferences = false;
this.letReferences = block._letReferences = object();
this.body = [];
if (loopPath) {
this.loopParent = loopPath.parent;
this.loopLabel = t.isLabeledStatement(this.loopParent) && this.loopParent.label;
this.loop = loopPath.node;
}
}
/**
@@ -259,6 +265,10 @@ class BlockScoping {
} else {
this.remap();
}
if (this.loopLabel && !t.isLabeledStatement(this.loopParent)) {
return t.labeledStatement(this.loopLabel, this.loop);
}
}
/**
@@ -297,11 +307,11 @@ class BlockScoping {
//
var loopParent = this.loopParent;
if (loopParent) {
traverseReplace(loopParent.right, loopParent, scope, remaps);
traverseReplace(loopParent.test, loopParent, scope, remaps);
traverseReplace(loopParent.update, loopParent, scope, remaps);
var loop = this.loop;
if (loop) {
traverseReplace(loop.right, loop, scope, remaps);
traverseReplace(loop.test, loop, scope, remaps);
traverseReplace(loop.update, loop, scope, remaps);
}
scope.traverse(this.block, replaceVisitor, remaps);
@@ -317,7 +327,7 @@ class BlockScoping {
var outsideRefs = this.outsideLetReferences;
// remap loop heads with colliding variables
if (this.loopParent) {
if (this.loop) {
for (var name in outsideRefs) {
var id = outsideRefs[name];
@@ -438,7 +448,7 @@ class BlockScoping {
ignoreLabeless: false,
innerLabels: [],
hasReturn: false,
isLoop: !!this.loopParent,
isLoop: !!this.loop,
map: {}
};
@@ -504,7 +514,7 @@ class BlockScoping {
t.variableDeclarator(ret, call)
]));
var loopParent = this.loopParent;
var loop = this.loop;
var retCheck;
var has = this.has;
var cases = [];
@@ -517,9 +527,8 @@ class BlockScoping {
}
if (has.hasBreakContinue) {
if (!loopParent) {
throw new Error("Has no loop parent but we're trying to reassign breaks " +
"and continues, something is going wrong here.");
if (!loop) {
throw new Error("Aren't in a loop and we're trying to reassign breaks and continues, something is going wrong here.");
}
for (var key in has.map) {
@@ -537,6 +546,14 @@ class BlockScoping {
single.consequent[0]
)));
} else {
// #998
for (var i = 0; i < cases.length; i++) {
var caseConsequent = cases[i].consequent[0];
if (t.isBreakStatement(caseConsequent) && !caseConsequent.label) {
caseConsequent.label = this.loopLabel ||= this.file.scope.generateUidIdentifier("loop");
}
}
body.push(this.file.attachAuxiliaryComment(t.switchStatement(ret, cases)));
}
} else {

View File

@@ -4,7 +4,7 @@ import * as defineMap from "../../helpers/define-map";
import * as messages from "../../../messages";
import * as util from "../../../util";
import traverse from "../../../traversal";
import t from "../../../types";
import * as t from "../../../types";
export var check = t.isClass;

View File

@@ -1,5 +1,5 @@
import * as messages from "../../../messages";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isVariableDeclaration(node, { kind: "const" });

View File

@@ -1,5 +1,5 @@
import * as messages from "../../../messages";
import t from "../../../types";
import * as t from "../../../types";
export var check = t.isPattern;

View File

@@ -1,6 +1,6 @@
import * as messages from "../../../messages";
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
export var check = t.isForOfStatement;
@@ -32,11 +32,8 @@ export function ForOfStatement(node, parent, scope, file) {
// todo: find out why this is necessary? #538
loop._scopeInfo = node._scopeInfo;
if (build.replaceParent) {
this.parentPath.node = build.node;
} else {
return build.node;
}
if (build.replaceParent) this.parentPath.node = build.node;
return build.node;
}
var loose = function (node, parent, scope, file) {

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export { check } from "../internal/modules";

View File

@@ -1,5 +1,5 @@
import ReplaceSupers from "../../helpers/replace-supers";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isIdentifier(node, { name: "super" });

View File

@@ -1,5 +1,5 @@
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isFunction(node) && hasDefaults(node);

View File

@@ -1,6 +1,6 @@
import isNumber from "lodash/lang/isNumber";
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
export var check = t.isRestElement;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
function loose(node, body, objId) {
for (var i = 0; i < node.properties.length; i++) {

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isProperty(node) && (node.method || node.shorthand);

View File

@@ -1,5 +1,5 @@
import * as regex from "../../helpers/regex";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return regex.is(node, "y");

View File

@@ -1,5 +1,5 @@
import includes from "lodash/collection/includes";
import t from "../../../types";
import * as t from "../../../types";
function getSpreadLiteral(spread, scope) {
return scope.toArray(spread.argument, true);

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var optional = true;

View File

@@ -3,7 +3,7 @@ import * as messages from "../../../messages";
import flatten from "lodash/array/flatten";
import * as util from "../../../util";
import map from "lodash/collection/map";
import t from "../../../types";
import * as t from "../../../types";
exports.Function = function (node, parent, scope, file) {
var tailCall = new TailCallTransformer(node, scope, file);
@@ -161,7 +161,7 @@ class TailCallTransformer {
if (!this.hasTailRecursion) return;
if (this.hasDeopt()) {
this.file.logDeopt(node, messages.get("tailCallReassignmentDeopt"));
this.file.log.deopt(node, messages.get("tailCallReassignmentDeopt"));
return;
}

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
var buildBinaryExpression = function (left, right) {
return t.binaryExpression("+", left, right);

View File

@@ -1,7 +1,7 @@
// https://github.com/zenparsing/es-abstract-refs
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
export var experimental = true;

View File

@@ -1,7 +1,7 @@
import buildComprehension from "../../helpers/build-comprehension";
import traverse from "../../../traversal";
import * as util from "../../../util";
import t from "../../../types";
import * as t from "../../../types";
export var experimental = true;

View File

@@ -1,7 +1,7 @@
// https://github.com/rwaldron/exponentiation-operator
import build from "../../helpers/build-binary-assignment-operator-transformer";
import t from "../../../types";
import * as t from "../../../types";
export var experimental = true;

View File

@@ -1,6 +1,6 @@
// https://github.com/sebmarkbage/ecmascript-rest-spread
import t from "../../../types";
import * as t from "../../../types";
export var experimental = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
var functionChildrenVisitor = {
enter(node, parent, scope, state) {

View File

@@ -1,5 +1,5 @@
import * as strict from "../../helpers/strict";
import t from "../../../types";
import * as t from "../../../types";
export var secondPass = true;

View File

@@ -4,7 +4,7 @@
// a generator function as a default then regenerator will destroy the export
// declaration and leave a variable declaration in it's place... yeah, handy.
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isImportDeclaration(node) || t.isExportDeclaration(node);

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function Program(program, parent, scope, file) {
if (file.transformers.strict.canRun()) {

View File

@@ -1,5 +1,5 @@
import * as messages from "../../../messages";
import t from "../../../types";
import * as t from "../../../types";
export function ForOfStatement(node, parent, scope, file) {
var left = node.left;

View File

@@ -1,5 +1,5 @@
import remapAsyncToGenerator from "../../helpers/remap-async-to-generator";
import t from "../../../types";
import * as t from "../../../types";
export function manipulateOptions(opts) {
opts.experimental = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function Flow(node) {
this.remove();

View File

@@ -1,5 +1,5 @@
import * as react from "../../helpers/react";
import t from "../../../types";
import * as t from "../../../types";
export function manipulateOptions(opts) {
opts.blacklist.push("react");

View File

@@ -1,5 +1,5 @@
import * as react from "../../helpers/react";
import t from "../../../types";
import * as t from "../../../types";
var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/;

View File

@@ -1,5 +1,5 @@
import regenerator from "regenerator-babel";
import t from "../../../types";
import * as t from "../../../types";
export function check(node) {
return t.isFunction(node) && (node.async || node.generator);

View File

@@ -2,7 +2,7 @@ import includes from "lodash/collection/includes";
import * as util from "../../../util";
import core from "core-js/library";
import has from "lodash/object/has";
import t from "../../../types";
import * as t from "../../../types";
var isSymboliterator = t.buildMatchMemberExpression("Symbol.iterator");

View File

@@ -1,5 +1,5 @@
import * as messages from "../../../messages";
import t from "../../../types";
import * as t from "../../../types";
export function Program(program) {
var first = program.body[0];

View File

@@ -1,6 +1,6 @@
import * as messages from "../../../messages";
import build from "../../helpers/build-conditional-assignment-operator-transformer";
import t from "../../../types";
import * as t from "../../../types";
export var playground = true;

View File

@@ -1,5 +1,5 @@
import build from "../../helpers/build-conditional-assignment-operator-transformer";
import t from "../../../types";
import * as t from "../../../types";
export var playground = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var playground = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var playground = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export function BlockStatement(node, parent, scope, file) {
if ((t.isFunction(parent) && parent.body === node) || t.isExportDeclaration(parent)) {

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
import pull from "lodash/array/pull";
function isProtoKey(node) {

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var optional = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
function toStatements(node) {
if (t.isBlockStatement(node)) {

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var optional = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var optional = true;

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
var isConsole = t.buildMatchMemberExpression("console", true);

View File

@@ -1,4 +1,4 @@
import t from "../../../types";
import * as t from "../../../types";
export var optional = true;

View File

@@ -1,5 +1,5 @@
import * as messages from "../../../messages";
import t from "../../../types";
import * as t from "../../../types";
// check if the input Literal `source` is an alternate casing of "react"
function check(source, file) {

View File

@@ -1,7 +1,7 @@
import TraversalPath from "./path";
import flatten from "lodash/array/flatten";
import compact from "lodash/array/compact";
import t from "../types";
import * as t from "../types";
export default class TraversalContext {
constructor(scope, opts, state, parentPath) {

View File

@@ -2,7 +2,7 @@ module.exports = traverse;
import TraversalContext from "./context";
import includes from "lodash/collection/includes";
import t from "../types";
import * as t from "../types";
function traverse(parent, opts, scope, state) {
if (!parent) return;

View File

@@ -1,7 +1,7 @@
import traverse from "./index";
import includes from "lodash/collection/includes";
import Scope from "./scope";
import t from "../types";
import * as t from "../types";
export default class TraversalPath {
constructor(parent, container) {
@@ -44,6 +44,14 @@ export default class TraversalPath {
return ourScope;
}
insertBefore(node) {
}
insertAfter(node) {
}
setData(key, val) {
return this.data[key] = val;
}

View File

@@ -7,7 +7,7 @@ import flatten from "lodash/array/flatten";
import extend from "lodash/object/extend";
import object from "../helpers/object";
import each from "lodash/collection/each";
import t from "../types";
import * as t from "../types";
var functionVariableVisitor = {
enter(node, parent, scope, state) {

Some files were not shown because too many files have changed in this diff Show More