From 79f783cdf53dcb798df1a8f819fbc298e27c0c1e Mon Sep 17 00:00:00 2001 From: James Talmage Date: Thu, 28 Jan 2016 03:20:24 -0500 Subject: [PATCH] [babel-template][T7046]: Add optional babylon options argument. --- packages/babel-template/src/index.js | 7 ++++--- packages/babel-template/test/index.js | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 packages/babel-template/test/index.js diff --git a/packages/babel-template/src/index.js b/packages/babel-template/src/index.js index 33b205bc26..eff83a1fc9 100644 --- a/packages/babel-template/src/index.js +++ b/packages/babel-template/src/index.js @@ -1,4 +1,5 @@ import cloneDeep from "lodash/lang/cloneDeep"; +import assign from "lodash/object/assign"; import has from "lodash/object/has"; import traverse from "babel-traverse"; import * as babylon from "babylon"; @@ -7,7 +8,7 @@ import * as t from "babel-types"; let FROM_TEMPLATE = "_fromTemplate"; //Symbol(); // todo: probably wont get copied over let TEMPLATE_SKIP = Symbol(); -export default function (code: string): Function { +export default function (code: string, opts?: Object): Function { // since we lazy parse the template, we get the current stack so we have the // original stack to append if it errors when parsing let stack; @@ -22,10 +23,10 @@ export default function (code: string): Function { let ast; try { - ast = babylon.parse(code, { + ast = babylon.parse(code, assign({ allowReturnOutsideFunction: true, allowSuperOutsideMethod: true - }); + }, opts)); ast = traverse.removeProperties(ast); diff --git a/packages/babel-template/test/index.js b/packages/babel-template/test/index.js new file mode 100644 index 0000000000..9953535820 --- /dev/null +++ b/packages/babel-template/test/index.js @@ -0,0 +1,16 @@ +var template = require("../lib"); +var chai = require("chai"); + +suite("templating", function () { + test("import statement will cause parser to throw by default", function () { + chai.expect(function () { + template("import foo from 'foo'")({}); + }).to.throw(); + }); + + test("import statements are allowed with sourceType: module", function () { + chai.expect(function () { + template("import foo from 'foo'", {sourceType: 'module'})({}); + }).not.to.throw(); + }); +});