rename fast mode to loose #465
This commit is contained in:
@@ -18,7 +18,7 @@ commander.option("-m, --modules [modules]", "Module formatter type to use [commo
|
||||
commander.option("-l, --whitelist [whitelist]", "Whitelist of transformers to ONLY use", util.list);
|
||||
commander.option("-b, --blacklist [blacklist]", "Blacklist of transformers to NOT use", util.list);
|
||||
commander.option("-i, --optional [list]", "List of optional transformers to enable", util.list);
|
||||
commander.option("--fast [list]", "List of transformers to enable their fast mode", util.list);
|
||||
commander.option("--loose [list]", "List of transformers to enable their loose mode", util.list);
|
||||
commander.option("-o, --out-file [out]", "Compile all input files into a single file");
|
||||
commander.option("-d, --out-dir [out]", "Compile an input directory of modules into an output directory");
|
||||
commander.option("-c, --remove-comments", "Remove comments from the compiled code", false);
|
||||
@@ -117,7 +117,7 @@ exports.opts = {
|
||||
comments: !commander.removeComments,
|
||||
runtime: commander.runtime,
|
||||
modules: commander.modules,
|
||||
fast: commander.fast,
|
||||
loose: commander.loose,
|
||||
format: {
|
||||
indent: {
|
||||
style: util.repeat(parseInt(commander.indent))
|
||||
|
||||
@@ -63,7 +63,7 @@ File.normaliseOptions = function (opts) {
|
||||
filename: "unknown",
|
||||
modules: "common",
|
||||
runtime: false,
|
||||
fast: [],
|
||||
loose: [],
|
||||
code: true,
|
||||
ast: true
|
||||
});
|
||||
@@ -74,7 +74,7 @@ File.normaliseOptions = function (opts) {
|
||||
opts.blacklist = util.arrayify(opts.blacklist);
|
||||
opts.whitelist = util.arrayify(opts.whitelist);
|
||||
opts.optional = util.arrayify(opts.optional);
|
||||
opts.fast = util.arrayify(opts.fast);
|
||||
opts.loose = util.arrayify(opts.loose);
|
||||
|
||||
// todo: remove in 3.0.0
|
||||
_.each({
|
||||
@@ -83,7 +83,7 @@ File.normaliseOptions = function (opts) {
|
||||
}, function (newTransformer, oldTransformer) {
|
||||
if (_.contains(opts.optional, oldTransformer)) {
|
||||
_.pull(opts.optional, oldTransformer);
|
||||
opts.fast.push(newTransformer);
|
||||
opts.loose.push(newTransformer);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -115,13 +115,13 @@ File.normaliseOptions = function (opts) {
|
||||
transform._ensureTransformerNames("blacklist", opts.blacklist);
|
||||
transform._ensureTransformerNames("whitelist", opts.whitelist);
|
||||
transform._ensureTransformerNames("optional", opts.optional);
|
||||
transform._ensureTransformerNames("fast", opts.fast);
|
||||
transform._ensureTransformerNames("loose", opts.loose);
|
||||
|
||||
return opts;
|
||||
};
|
||||
|
||||
File.prototype.isFast = function (key) {
|
||||
return _.contains(this.opts.fast, key);
|
||||
File.prototype.isLoose = function (key) {
|
||||
return _.contains(this.opts.loose, key);
|
||||
};
|
||||
|
||||
File.prototype.getTransformers = function () {
|
||||
|
||||
@@ -33,7 +33,7 @@ function Class(node, file, scope, isStatement) {
|
||||
this.hasConstructor = false;
|
||||
this.className = node.id || file.generateUidIdentifier("class", scope);
|
||||
this.superName = node.superClass;
|
||||
this.isFast = file.isFast("classes");
|
||||
this.isLoose = file.isLoose("classes");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,7 +138,7 @@ Class.prototype.buildBody = function () {
|
||||
// we have no constructor, we have a super, and the super doesn't appear to be falsy
|
||||
if (!this.hasConstructor && superName && !t.isFalsyExpression(superName)) {
|
||||
var defaultConstructorTemplate = "class-super-constructor-call";
|
||||
if (this.isFast) defaultConstructorTemplate += "-fast";
|
||||
if (this.isLoose) defaultConstructorTemplate += "-loose";
|
||||
|
||||
constructor.body.body.push(util.template(defaultConstructorTemplate, {
|
||||
CLASS_NAME: className,
|
||||
@@ -188,8 +188,8 @@ Class.prototype.pushMethod = function (node) {
|
||||
}
|
||||
|
||||
if (kind === "") {
|
||||
if (this.isFast) {
|
||||
// use assignments instead of define properties for fast classes
|
||||
if (this.isLoose) {
|
||||
// use assignments instead of define properties for loose classes
|
||||
|
||||
var className = this.className;
|
||||
if (!node.static) className = t.memberExpression(className, t.identifier("prototype"));
|
||||
@@ -246,7 +246,7 @@ Class.prototype.superProperty = function (property, isStatic, isComputed, thisEx
|
||||
* @returns {Object}
|
||||
*/
|
||||
|
||||
Class.prototype.fastSuperProperty = function (methodNode, id, parent) {
|
||||
Class.prototype.looseSuperProperty = function (methodNode, id, parent) {
|
||||
var methodName = methodNode.key;
|
||||
var superName = this.superName || t.identifier("Function");
|
||||
|
||||
@@ -318,15 +318,15 @@ Class.prototype.replaceInstanceSuperReferences = function (methodNode) {
|
||||
};
|
||||
|
||||
var callback = specHandle;
|
||||
if (self.isFast) callback = fastHandle;
|
||||
if (self.isLoose) callback = looseHandle;
|
||||
return callback(getThisReference, node, parent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function fastHandle(getThisReference, node, parent) {
|
||||
function looseHandle(getThisReference, node, parent) {
|
||||
if (t.isIdentifier(node, { name: "super" })) {
|
||||
return self.fastSuperProperty(methodNode, node, parent);
|
||||
return self.looseSuperProperty(methodNode, node, parent);
|
||||
} else if (t.isCallExpression(node)) {
|
||||
var callee = node.callee;
|
||||
if (!t.isMemberExpression(callee)) return;
|
||||
|
||||
@@ -3,7 +3,7 @@ var t = require("../../types");
|
||||
|
||||
exports.ForOfStatement = function (node, parent, file, scope) {
|
||||
var callback = spec;
|
||||
if (file.isFast("forOf")) callback = fast;
|
||||
if (file.isLoose("forOf")) callback = loose;
|
||||
|
||||
var build = callback(node, parent, file, scope);
|
||||
var declar = build.declar;
|
||||
@@ -31,7 +31,7 @@ exports.ForOfStatement = function (node, parent, file, scope) {
|
||||
return loop;
|
||||
};
|
||||
|
||||
var fast = function (node, parent, file, scope) {
|
||||
var loose = function (node, parent, file, scope) {
|
||||
var left = node.left;
|
||||
var declar, id;
|
||||
|
||||
@@ -48,7 +48,7 @@ var fast = function (node, parent, file, scope) {
|
||||
throw file.errorWithNode(left, "Unknown node type " + left.type + " in ForOfStatement");
|
||||
}
|
||||
|
||||
var loop = util.template("for-of-fast", {
|
||||
var loop = util.template("for-of-loose", {
|
||||
LOOP_OBJECT: file.generateUidIdentifier("iterator", scope),
|
||||
IS_ARRAY: file.generateUidIdentifier("isArray", scope),
|
||||
OBJECT: node.right,
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"fast": ["classes"]
|
||||
}
|
||||
3
test/fixtures/transformation/es6-classes-loose/options.json
vendored
Normal file
3
test/fixtures/transformation/es6-classes-loose/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"loose": ["classes"]
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"fast": ["forOf"]
|
||||
}
|
||||
3
test/fixtures/transformation/es6-for-of-loose/options.json
vendored
Normal file
3
test/fixtures/transformation/es6-for-of-loose/options.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"loose": ["forOf"]
|
||||
}
|
||||
Reference in New Issue
Block a user