i made the javascripts faster with a transformer prepass to check what transformers actually have to be ran
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
var util = require("../lib/6to5/util");
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
var _ = require("lodash");
|
||||
var esvalid = require("esvalid");
|
||||
var util = require("../lib/6to5/util");
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
var _ = require("lodash");
|
||||
|
||||
var humanize = function (val, noext) {
|
||||
if (noext) val = path.basename(val, path.extname(val));
|
||||
@@ -18,6 +19,17 @@ var readFile = exports.readFile = function (filename) {
|
||||
}
|
||||
};
|
||||
|
||||
exports.esvalid = function (ast, loc) {
|
||||
var errors = esvalid.errors(ast);
|
||||
if (errors.length) {
|
||||
var msg = [];
|
||||
_.each(errors, function (err) {
|
||||
msg.push(err.message + " - " + JSON.stringify(err.node));
|
||||
});
|
||||
throw new Error(loc + ": " + msg.join(". "));
|
||||
}
|
||||
};
|
||||
|
||||
exports.assertVendor = function (name) {
|
||||
if (!fs.existsSync(__dirname + "/../vendor/" + name)) {
|
||||
console.error("No vendor/" + name + " - run `make bootstrap`");
|
||||
|
||||
@@ -2,7 +2,6 @@ var genHelpers = require("./_generator-helpers");
|
||||
var transform = require("../lib/6to5/transformation");
|
||||
var sourceMap = require("source-map");
|
||||
var codeFrame = require("../lib/6to5/helpers/code-frame");
|
||||
var esvalid = require("esvalid");
|
||||
var Module = require("module");
|
||||
var helper = require("./_helper");
|
||||
var assert = require("assert");
|
||||
@@ -55,15 +54,7 @@ var run = function (task, done) {
|
||||
|
||||
var checkAst = function (result, opts) {
|
||||
if (noCheckAst) return;
|
||||
|
||||
var errors = esvalid.errors(result.ast.program);
|
||||
if (errors.length) {
|
||||
var msg = [];
|
||||
_.each(errors, function (err) {
|
||||
msg.push(err.message + " - " + JSON.stringify(err.node));
|
||||
});
|
||||
throw new Error(opts.loc + ": " + msg.join(". "));
|
||||
}
|
||||
helper.esvalid(result.ast.program, opts.loc);
|
||||
};
|
||||
|
||||
if (execCode) {
|
||||
|
||||
@@ -4,6 +4,7 @@ require("./_helper").assertVendor("test262");
|
||||
|
||||
var transform = require("../lib/6to5/transformation");
|
||||
var readdir = require("fs-readdir-recursive");
|
||||
var helper = require("./_helper");
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
var _ = require("lodash");
|
||||
@@ -16,7 +17,7 @@ var read = function (loc) {
|
||||
});
|
||||
};
|
||||
|
||||
var exec = function (loc) {
|
||||
var check = function (loc) {
|
||||
try {
|
||||
var file = fs.readFileSync(loc, "utf8");
|
||||
|
||||
@@ -26,25 +27,21 @@ var exec = function (loc) {
|
||||
// ReferenceError: 1++; (runtime)
|
||||
var lazyError = /negative: (\S+)/.test(file);
|
||||
|
||||
var compiled = transform(file, {
|
||||
transform(file, {
|
||||
filename: loc,
|
||||
blacklist: ["useStrict"]
|
||||
blacklist: ["useStrict"],
|
||||
_anal: true
|
||||
});
|
||||
|
||||
global.eval(compiled);
|
||||
} catch (err) {
|
||||
if (err && lazyError && err instanceof SyntaxError) {
|
||||
return;
|
||||
} else {
|
||||
err.stack = loc + ": " + err.stack;
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// harness
|
||||
var harness = read(test262Loc + "/harness");
|
||||
_.each(harness, exec);
|
||||
|
||||
// tests!
|
||||
var tests = read(test262Loc + "/test");
|
||||
_.each(tests, function (loc) {
|
||||
@@ -52,6 +49,6 @@ _.each(tests, function (loc) {
|
||||
alias = alias.replace(/\.([^\.]+)$/g, "");
|
||||
test(alias, function () {
|
||||
this.timeout(0);
|
||||
exec(loc);
|
||||
check(loc);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user