From 6240e5111fab78d3f40e975ad82ffd41a09c860a Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 8 Jan 2015 22:29:24 +1100 Subject: [PATCH] add modules common strict formatter - fixes #418 --- .../transformation/modules/common-strict.js | 11 ++++++++ lib/6to5/transformation/modules/common.js | 2 +- lib/6to5/transformation/transform.js | 11 ++++---- .../.disallow-import-remapping-2/actual.js | 2 ++ .../.disallow-import-remapping-2/options.json | 3 +++ .../.disallow-import-remapping-3/actual.js | 2 ++ .../.disallow-import-remapping-3/options.json | 3 +++ .../.disallow-import-remapping-4/actual.js | 2 ++ .../.disallow-import-remapping-4/options.json | 3 +++ .../.disallow-import-remapping-5/actual.js | 2 ++ .../.disallow-import-remapping-5/options.json | 3 +++ .../.disallow-import-remapping-6/actual.js | 2 ++ .../.disallow-import-remapping-6/options.json | 3 +++ .../.disallow-import-remapping-7/actual.js | 2 ++ .../.disallow-import-remapping-7/options.json | 3 +++ .../.disallow-import-remapping-8/actual.js | 2 ++ .../.disallow-import-remapping-8/options.json | 3 +++ .../.disallow-import-remapping-9/actual.js | 2 ++ .../.disallow-import-remapping-9/options.json | 3 +++ .../.disallow-import-remapping/actual.js | 2 ++ .../.disallow-import-remapping/options.json | 3 +++ .../exports-default-non-function/actual.js | 3 +++ .../exports-default-non-function/expected.js | 5 ++++ .../exports-default/actual.js | 8 ++++++ .../exports-default/expected.js | 15 +++++++++++ .../exports-from/actual.js | 6 +++++ .../exports-from/expected.js | 25 ++++++++++++++++++ .../exports-named/actual.js | 5 ++++ .../exports-named/expected.js | 9 +++++++ .../exports-variable/actual.js | 9 +++++++ .../exports-variable/expected.js | 15 +++++++++++ .../hoist-function-exports/actual.js | 11 ++++++++ .../hoist-function-exports/expected.js | 13 ++++++++++ .../imports-default/actual.js | 2 ++ .../imports-default/expected.js | 9 +++++++ .../imports-glob/actual.js | 1 + .../imports-glob/expected.js | 9 +++++++ .../imports-mixing/actual.js | 1 + .../imports-mixing/expected.js | 9 +++++++ .../imports-named/actual.js | 4 +++ .../imports-named/expected.js | 8 ++++++ .../imports/actual.js | 3 +++ .../imports/expected.js | 7 +++++ .../es6-modules-common-strict/options.json | 3 +++ .../overview/actual.js | 10 +++++++ .../overview/expected.js | 26 +++++++++++++++++++ .../es6-modules-common-strict/remap/actual.js | 9 +++++++ .../remap/expected.js | 11 ++++++++ 48 files changed, 299 insertions(+), 6 deletions(-) create mode 100644 lib/6to5/transformation/modules/common-strict.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-from/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-from/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-variable/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/exports-variable/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-glob/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-glob/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-mixing/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-mixing/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/imports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/options.json create mode 100644 test/fixtures/transformation/es6-modules-common-strict/overview/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/overview/expected.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/remap/actual.js create mode 100644 test/fixtures/transformation/es6-modules-common-strict/remap/expected.js diff --git a/lib/6to5/transformation/modules/common-strict.js b/lib/6to5/transformation/modules/common-strict.js new file mode 100644 index 0000000000..5b128bbecb --- /dev/null +++ b/lib/6to5/transformation/modules/common-strict.js @@ -0,0 +1,11 @@ +module.exports = CommonJSStrictFormatter; + +var CommonJSFormatter = require("./common"); +var util = require("../../util"); + +function CommonJSStrictFormatter() { + this.noInteropExport = true; + CommonJSFormatter.apply(this, arguments); +} + +util.inherits(CommonJSStrictFormatter, CommonJSFormatter); diff --git a/lib/6to5/transformation/modules/common.js b/lib/6to5/transformation/modules/common.js index 7fc557d6c0..f62cb03883 100644 --- a/lib/6to5/transformation/modules/common.js +++ b/lib/6to5/transformation/modules/common.js @@ -61,7 +61,7 @@ CommonJSFormatter.prototype.importDeclaration = function (node, nodes) { }; CommonJSFormatter.prototype.exportDeclaration = function (node, nodes) { - if (node.default && !this.exportIdentifier) { + if (node.default && !this.noInteropRequire && !this.noInteropExport) { var declar = node.declaration; var assign; diff --git a/lib/6to5/transformation/transform.js b/lib/6to5/transformation/transform.js index 4e2cd9379a..91dfa44113 100644 --- a/lib/6to5/transformation/transform.js +++ b/lib/6to5/transformation/transform.js @@ -31,11 +31,12 @@ transform._ensureTransformerNames = function (type, keys) { transform.transformers = {}; transform.moduleFormatters = { - common: require("./modules/common"), - system: require("./modules/system"), - ignore: require("./modules/ignore"), - amd: require("./modules/amd"), - umd: require("./modules/umd") + commonStrict: require("./modules/common-strict"), + common: require("./modules/common"), + system: require("./modules/system"), + ignore: require("./modules/ignore"), + amd: require("./modules/amd"), + umd: require("./modules/umd") }; _.each({ diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/actual.js new file mode 100644 index 0000000000..1d832634ed --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/actual.js @@ -0,0 +1,2 @@ +import { foo } from "foo"; +var foo; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-2/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/actual.js new file mode 100644 index 0000000000..1857a40a8c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/actual.js @@ -0,0 +1,2 @@ +import { foo } from "foo"; +foo.bar = 1; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-3/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/actual.js new file mode 100644 index 0000000000..f4d2ebe99a --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/actual.js @@ -0,0 +1,2 @@ +import * as foo from "foo"; +foo = 1; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-4/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/actual.js new file mode 100644 index 0000000000..41d4752b52 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/actual.js @@ -0,0 +1,2 @@ +import * as foo from "foo"; +var foo; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-5/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/actual.js new file mode 100644 index 0000000000..f0c5ef2439 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/actual.js @@ -0,0 +1,2 @@ +import { foo as bar } from "foo"; +var bar; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-6/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/actual.js new file mode 100644 index 0000000000..b3ce137015 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/actual.js @@ -0,0 +1,2 @@ +import { foo as bar } from "foo"; +bar = 1; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-7/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/actual.js new file mode 100644 index 0000000000..f2257a7a53 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/actual.js @@ -0,0 +1,2 @@ +import { foo } from "foo"; +import { foo } from "bar"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-8/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/actual.js new file mode 100644 index 0000000000..c58a0e64c5 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/actual.js @@ -0,0 +1,2 @@ +import { foo as bar } from "foo"; +import { foo as bar } from "bar"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping-9/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/actual.js b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/actual.js new file mode 100644 index 0000000000..e1b913ccf6 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/actual.js @@ -0,0 +1,2 @@ +import { foo } from "foo"; +foo = 1; diff --git a/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/options.json b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/options.json new file mode 100644 index 0000000000..a9357a58d2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/.disallow-import-remapping/options.json @@ -0,0 +1,3 @@ +{ + "throws": "Illegal assignment of module import" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/actual.js b/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/actual.js new file mode 100644 index 0000000000..44bb8e1880 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/actual.js @@ -0,0 +1,3 @@ +export default new Cachier() + +export function Cachier(databaseName) {} diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/expected.js b/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/expected.js new file mode 100644 index 0000000000..88f1bc50a3 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-default-non-function/expected.js @@ -0,0 +1,5 @@ +"use strict"; + +exports.Cachier = Cachier; +exports["default"] = new Cachier(); +function Cachier(databaseName) {} diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-default/actual.js b/test/fixtures/transformation/es6-modules-common-strict/exports-default/actual.js new file mode 100644 index 0000000000..62923e5c15 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-default/actual.js @@ -0,0 +1,8 @@ +export default 42; +export default {}; +export default []; +export default foo; +export default function () {} +export default class {} +export default function foo () {} +export default class Foo {} diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-default/expected.js b/test/fixtures/transformation/es6-modules-common-strict/exports-default/expected.js new file mode 100644 index 0000000000..7c23f593d5 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-default/expected.js @@ -0,0 +1,15 @@ +"use strict"; + +exports["default"] = foo; +exports["default"] = 42; +exports["default"] = {}; +exports["default"] = []; +exports["default"] = foo; +exports["default"] = function () {}; + +exports["default"] = function () {}; + +function foo() {} +var Foo = function Foo() {}; + +exports["default"] = Foo; diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-from/actual.js b/test/fixtures/transformation/es6-modules-common-strict/exports-from/actual.js new file mode 100644 index 0000000000..60857f6542 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-from/actual.js @@ -0,0 +1,6 @@ +export * from "foo"; +export {foo} from "foo"; +export {foo, bar} from "foo"; +export {foo as bar} from "foo"; +export {foo as default} from "foo"; +export {foo as default, bar} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-from/expected.js b/test/fixtures/transformation/es6-modules-common-strict/exports-from/expected.js new file mode 100644 index 0000000000..2264dd7c1a --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-from/expected.js @@ -0,0 +1,25 @@ +"use strict"; + +var _interopRequireWildcard = function (obj) { + return obj && obj.constructor === Object ? obj : { + "default": obj + }; +}; + +var _exportsWildcard = function (obj) { + for (var i in obj) { + if (exports[i] !== undefined) { + exports[i] = obj[i]; + } + } +}; + +_exportsWildcard(_interopRequireWildcard(require("foo"))); + +exports.foo = require("foo").foo; +exports.foo = require("foo").foo; +exports.bar = require("foo").bar; +exports.bar = require("foo").foo; +exports["default"] = require("foo").foo; +exports["default"] = require("foo").foo; +exports.bar = require("foo").bar; diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-named/actual.js b/test/fixtures/transformation/es6-modules-common-strict/exports-named/actual.js new file mode 100644 index 0000000000..8515ace759 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-named/actual.js @@ -0,0 +1,5 @@ +export {foo}; +export {foo, bar}; +export {foo as bar}; +export {foo as default}; +export {foo as default, bar}; diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-named/expected.js b/test/fixtures/transformation/es6-modules-common-strict/exports-named/expected.js new file mode 100644 index 0000000000..ce378a6fb0 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-named/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +exports.foo = foo; +exports.foo = foo; +exports.bar = bar; +exports.bar = foo; +exports["default"] = foo; +exports["default"] = foo; +exports.bar = bar; diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-variable/actual.js b/test/fixtures/transformation/es6-modules-common-strict/exports-variable/actual.js new file mode 100644 index 0000000000..c9cd5af09c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-variable/actual.js @@ -0,0 +1,9 @@ +export var foo = 1; +export var foo = 1, bar = 2; +export var foo2 = function () {}; +export var foo3; +export let foo4 = 2; +export let foo5; +export const foo6 = 3; +export function foo7 () {} +export class foo8 {} diff --git a/test/fixtures/transformation/es6-modules-common-strict/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-common-strict/exports-variable/expected.js new file mode 100644 index 0000000000..2c13db0878 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/exports-variable/expected.js @@ -0,0 +1,15 @@ +"use strict"; + +exports.foo7 = foo7; +var foo = exports.foo = 1; +var foo = exports.foo = 1; +var bar = exports.bar = 2; +var foo2 = exports.foo2 = function () {}; +var foo3 = exports.foo3 = undefined; +var foo4 = exports.foo4 = 2; +var foo5 = exports.foo5 = undefined; +var foo6 = exports.foo6 = 3; +function foo7() {} +var foo8 = function foo8() {}; + +exports.foo8 = foo8; diff --git a/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/actual.js b/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/actual.js new file mode 100644 index 0000000000..3c40b7d1c1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/actual.js @@ -0,0 +1,11 @@ +import { isEven } from "./evens"; + +export function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; +} + +export var isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; +})(isEven); diff --git a/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/expected.js new file mode 100644 index 0000000000..5a074e1496 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/hoist-function-exports/expected.js @@ -0,0 +1,13 @@ +"use strict"; + +exports.nextOdd = nextOdd; +var isEven = require("./evens").isEven; +function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; +} + +var isOdd = exports.isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; +})(isEven); diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-default/actual.js b/test/fixtures/transformation/es6-modules-common-strict/imports-default/actual.js new file mode 100644 index 0000000000..7a085cb1e3 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-default/actual.js @@ -0,0 +1,2 @@ +import foo from "foo"; +import {default as foo2} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-default/expected.js b/test/fixtures/transformation/es6-modules-common-strict/imports-default/expected.js new file mode 100644 index 0000000000..02c8997cb6 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-default/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); +}; + +var foo = _interopRequire(require("foo")); + +var foo2 = _interopRequire(require("foo")); diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-glob/actual.js b/test/fixtures/transformation/es6-modules-common-strict/imports-glob/actual.js new file mode 100644 index 0000000000..e55c077500 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-glob/actual.js @@ -0,0 +1 @@ +import * as foo from "foo"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-glob/expected.js b/test/fixtures/transformation/es6-modules-common-strict/imports-glob/expected.js new file mode 100644 index 0000000000..d885f06222 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-glob/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +var _interopRequireWildcard = function (obj) { + return obj && obj.constructor === Object ? obj : { + "default": obj + }; +}; + +var foo = _interopRequireWildcard(require("foo")); diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/actual.js b/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/actual.js new file mode 100644 index 0000000000..ef78c95b1c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/actual.js @@ -0,0 +1 @@ +import foo, {baz as xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/expected.js b/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/expected.js new file mode 100644 index 0000000000..09ea4cec86 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-mixing/expected.js @@ -0,0 +1,9 @@ +"use strict"; + +var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); +}; + +var foo = _interopRequire(require("foo")); + +var xyz = require("foo").baz; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-named/actual.js b/test/fixtures/transformation/es6-modules-common-strict/imports-named/actual.js new file mode 100644 index 0000000000..6d50813b6f --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-named/actual.js @@ -0,0 +1,4 @@ +import {bar} from "foo"; +import {bar2, baz} from "foo"; +import {bar as baz2} from "foo"; +import {bar as baz3, xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports-named/expected.js b/test/fixtures/transformation/es6-modules-common-strict/imports-named/expected.js new file mode 100644 index 0000000000..6fa7137b22 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports-named/expected.js @@ -0,0 +1,8 @@ +"use strict"; + +var bar = require("foo").bar; +var bar2 = require("foo").bar2; +var baz = require("foo").baz; +var baz2 = require("foo").bar; +var baz3 = require("foo").bar; +var xyz = require("foo").xyz; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports/actual.js b/test/fixtures/transformation/es6-modules-common-strict/imports/actual.js new file mode 100644 index 0000000000..222b6885ac --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports/actual.js @@ -0,0 +1,3 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; diff --git a/test/fixtures/transformation/es6-modules-common-strict/imports/expected.js b/test/fixtures/transformation/es6-modules-common-strict/imports/expected.js new file mode 100644 index 0000000000..f1a139f51a --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/imports/expected.js @@ -0,0 +1,7 @@ +"use strict"; + +require("foo"); + +require("foo-bar"); + +require("./directory/foo-bar"); diff --git a/test/fixtures/transformation/es6-modules-common-strict/options.json b/test/fixtures/transformation/es6-modules-common-strict/options.json new file mode 100644 index 0000000000..42fca89301 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/options.json @@ -0,0 +1,3 @@ +{ + "modules": "commonStrict" +} diff --git a/test/fixtures/transformation/es6-modules-common-strict/overview/actual.js b/test/fixtures/transformation/es6-modules-common-strict/overview/actual.js new file mode 100644 index 0000000000..589b4bd8cc --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/overview/actual.js @@ -0,0 +1,10 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; +import foo from "foo"; +import * as foo2 from "foo"; +import {bar} from "foo"; +import {foo as bar2} from "foo"; + +export {test}; +export var test = 5; diff --git a/test/fixtures/transformation/es6-modules-common-strict/overview/expected.js b/test/fixtures/transformation/es6-modules-common-strict/overview/expected.js new file mode 100644 index 0000000000..a15f34dd81 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/overview/expected.js @@ -0,0 +1,26 @@ +"use strict"; + +var _interopRequireWildcard = function (obj) { + return obj && obj.constructor === Object ? obj : { + "default": obj + }; +}; + +var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); +}; + +require("foo"); + +require("foo-bar"); + +require("./directory/foo-bar"); + +var foo = _interopRequire(require("foo")); + +var foo2 = _interopRequireWildcard(require("foo")); + +var bar = require("foo").bar; +var bar2 = require("foo").foo; +exports.test = test; +var test = exports.test = 5; diff --git a/test/fixtures/transformation/es6-modules-common-strict/remap/actual.js b/test/fixtures/transformation/es6-modules-common-strict/remap/actual.js new file mode 100644 index 0000000000..79c234d8ae --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/remap/actual.js @@ -0,0 +1,9 @@ +export var test = 2; +test = 5; +test++; + +(function () { + var test = 2; + test = 3; + test++; +})(); diff --git a/test/fixtures/transformation/es6-modules-common-strict/remap/expected.js b/test/fixtures/transformation/es6-modules-common-strict/remap/expected.js new file mode 100644 index 0000000000..35eccf917c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-common-strict/remap/expected.js @@ -0,0 +1,11 @@ +"use strict"; + +var test = exports.test = 2; +test = exports.test = 5; +test = exports.test += 1; + +(function () { + var test = 2; + test = 3; + test++; +})();