Small fixes to es7.functionBind and generation tests added.

This commit is contained in:
Ingvar Stepanyan 2015-05-13 18:20:33 +03:00
parent 37f662d790
commit 1a299b2bcc
4 changed files with 14 additions and 6 deletions

View File

@ -7,9 +7,6 @@ export var metadata = {
stage: 0 stage: 0
}; };
var CALL = t.identifier("call");
var BIND = t.identifier("bind");
function inferBindContext(bindExpr, scope) { function inferBindContext(bindExpr, scope) {
// nothing to infer // nothing to infer
if (bindExpr.object) return bindExpr.object; if (bindExpr.object) return bindExpr.object;
@ -27,11 +24,11 @@ export function CallExpression(node, parent, scope, file) {
var bindExpr = node.callee; var bindExpr = node.callee;
if (!t.isBindExpression(bindExpr)) return; if (!t.isBindExpression(bindExpr)) return;
var bindCtx = inferBindContext(bindExpr, scope); var bindCtx = inferBindContext(bindExpr, scope);
node.callee = t.memberExpression(bindExpr.callee, CALL, false); node.callee = t.memberExpression(bindExpr.callee, t.identifier("call"));
node.arguments.unshift(bindCtx); node.arguments.unshift(bindCtx);
} }
export function BindExpression(node, parent, scope, file) { export function BindExpression(node, parent, scope, file) {
var bindCtx = inferBindContext(node, scope); var bindCtx = inferBindContext(node, scope);
return t.callExpression(t.memberExpression(node.callee, BIND, false), [bindCtx]); return t.callExpression(t.memberExpression(node.callee, t.identifier("bind")), [bindCtx]);
} }

View File

@ -0,0 +1,5 @@
::foo.bar.foo;
::foo.bar["foo"];
ctx::foo.bar.foo;
ctx::foo.bar["foo"];

View File

@ -0,0 +1,5 @@
::foo.bar.foo;
::foo.bar["foo"];
ctx::foo.bar.foo;
ctx::foo.bar["foo"];

View File

@ -34,7 +34,8 @@ _.each(helper.get("generation"), function (testSuite) {
features: { features: {
"es7.comprehensions": true, "es7.comprehensions": true,
"es7.asyncFunctions": true, "es7.asyncFunctions": true,
"es7.exportExtensions": true "es7.exportExtensions": true,
"es7.functionBind": true
} }
}); });
var actualCode = generate(actualAst, task.options, actual.code).code; var actualCode = generate(actualAst, task.options, actual.code).code;