From 5b7a7d06028e432d1e23b43963905c1a76b102b2 Mon Sep 17 00:00:00 2001 From: h13i32maru Date: Sun, 20 Nov 2016 15:08:33 +0900 Subject: [PATCH] feat(experimental): function bind --- src/Parser/ESParser.js | 1 + src/Typedef/typedef.js | 1 + test/fixture/syntax/FunctionBind.js | 6 ++++++ test/src/ParserTest/ESParserTest.js | 5 ++++- 4 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/fixture/syntax/FunctionBind.js diff --git a/src/Parser/ESParser.js b/src/Parser/ESParser.js index c5a1f922..985ab027 100644 --- a/src/Parser/ESParser.js +++ b/src/Parser/ESParser.js @@ -63,6 +63,7 @@ export default class ESParser { if (experimental.classProperties) option.plugins.push('classProperties'); if (experimental.objectRestSpread) option.plugins.push('objectRestSpread'); if (experimental.doExpressions) option.plugins.push('doExpressions'); + if (experimental.functionBind) option.plugins.push('functionBind'); } return option; diff --git a/src/Typedef/typedef.js b/src/Typedef/typedef.js index 03b8bfe7..e88f2012 100644 --- a/src/Typedef/typedef.js +++ b/src/Typedef/typedef.js @@ -32,6 +32,7 @@ * @property {boolean} experimentalProposal.classProperties * @property {boolean} experimentalProposal.objectRestSpread * @property {boolean} experimentalProposal.doExpressions + * @property {boolean} experimentalProposal.functionBind * @see https://esdoc.org/config.html */ diff --git a/test/fixture/syntax/FunctionBind.js b/test/fixture/syntax/FunctionBind.js new file mode 100644 index 00000000..ded48a00 --- /dev/null +++ b/test/fixture/syntax/FunctionBind.js @@ -0,0 +1,6 @@ +function foo(){} +export default class Foo { + method() { + this::foo(); + } +} diff --git a/test/src/ParserTest/ESParserTest.js b/test/src/ParserTest/ESParserTest.js index 2bb0bce0..8acf886d 100644 --- a/test/src/ParserTest/ESParserTest.js +++ b/test/src/ParserTest/ESParserTest.js @@ -8,5 +8,8 @@ describe('ESParser', ()=>{ assert(ast.program.sourceType === 'module'); }); - // todo: enhance test patterns. + it('can parse "function bind"', ()=>{ + const ast = ESParser.parse({experimentalProposal: {functionBind: true}}, './test/fixture/syntax/FunctionBind.js'); + assert(ast.program.sourceType === 'module'); + }); });