diff --git a/.jshintignore b/.jshintignore index f05b1f265d..a4a39dfacb 100644 --- a/.jshintignore +++ b/.jshintignore @@ -1,2 +1,3 @@ node_modules test +lib/6to5/templates diff --git a/lib/6to5/transform.js b/lib/6to5/transform.js index 79e9dcb3ff..15056b4ef5 100644 --- a/lib/6to5/transform.js +++ b/lib/6to5/transform.js @@ -15,8 +15,10 @@ var transform = module.exports = function (code, opts) { format: {} }); + var tree; + try { - var tree = util.parse(code); + tree = util.parse(code); } catch (err) { err.message = opts.filename + ": " + err.message; throw err; diff --git a/lib/6to5/transformers/block-binding.js b/lib/6to5/transformers/block-binding.js index fa894dc256..84c33e8690 100644 --- a/lib/6to5/transformers/block-binding.js +++ b/lib/6to5/transformers/block-binding.js @@ -1,7 +1,6 @@ -var transform = require("../transform"); -var traverse = require("../traverse"); -var util = require("../util"); -var _ = require("lodash"); +var traverse = require("../traverse"); +var util = require("../util"); +var _ = require("lodash"); var isLet = function (node) { if (node.type === "VariableDeclaration" && node.kind === "let") { diff --git a/lib/6to5/transformers/classes.js b/lib/6to5/transformers/classes.js index 1e5a4c374c..502b9859d1 100644 --- a/lib/6to5/transformers/classes.js +++ b/lib/6to5/transformers/classes.js @@ -2,7 +2,7 @@ var traverse = require("../traverse"); var util = require("../util"); var _ = require("lodash"); -exports.ClassDeclaration = function (node, parent, opts) { +exports.ClassDeclaration = function (node) { var superName = node.superClass; var className = node.id; @@ -91,9 +91,8 @@ var replaceInstanceSuperReferences = function (superName, method) { } else if (node.type === "MemberExpression") { // no accessing of super properties - var obj = node.object; - if (parent.object === node && obj.type === "Identifier" && obj.name === "super") { + if (isAccessingSuperProperties(parent, node)) { throw new Error("cannot access super properties"); } else { return; @@ -117,6 +116,12 @@ var replaceInstanceSuperReferences = function (superName, method) { }); }; +var isAccessingSuperProperties = function (parent, node) { + var obj = node.object; + return obj.type === "Identifier" && obj.name === "super" && + parent.object === node; +}; + var addConstructor = function (construct, method) { construct.defaults = method.defaults; construct.params = method.params; diff --git a/lib/6to5/transformers/rest-parameters.js b/lib/6to5/transformers/rest-parameters.js index 71e15918b1..ee229e3d6c 100644 --- a/lib/6to5/transformers/rest-parameters.js +++ b/lib/6to5/transformers/rest-parameters.js @@ -1,6 +1,6 @@ var util = require("../util"); -exports.FunctionExpression = function (node, parent) { +exports.FunctionExpression = function (node) { if (!node.rest) return; var rest = node.rest; diff --git a/lib/6to5/transformers/spread.js b/lib/6to5/transformers/spread.js index 7ac9ec69bf..dea623d8a1 100644 --- a/lib/6to5/transformers/spread.js +++ b/lib/6to5/transformers/spread.js @@ -1,7 +1,7 @@ var util = require("../util"); var _ = require("lodash"); -exports.ArrayExpression = function (node, parent) { +exports.ArrayExpression = function (node) { //if (node.ignoreSpread) return; var elements = node.elements; @@ -22,7 +22,7 @@ exports.ArrayExpression = function (node, parent) { return concat; }; -exports.CallExpression = function (node, parent) { +exports.CallExpression = function (node) { var args = node.arguments; if (args.length && _.last(args).type === "SpreadElement") { diff --git a/lib/6to5/util.js b/lib/6to5/util.js index 501c220540..93d1337f90 100644 --- a/lib/6to5/util.js +++ b/lib/6to5/util.js @@ -29,7 +29,8 @@ exports.parse = function (code, opts) { return tree; } catch (err) { if (err.lineNumber) { - err.message = err.message + exports.codeFrame(code, err.lineNumber, err.column); + var frame = exports.codeFrame(code, err.lineNumber, err.column); + err.message = err.message + frame; } throw err; } @@ -163,7 +164,7 @@ exports.codeFrame = function (lines, lineNumber, colNumber) { exports.repeat = function (width, cha) { cha = cha || " "; - return Array(width + 1).join(cha); + return new Array(width + 1).join(cha); }; var templatesCacheLoc = __dirname + "/../../templates.json";