From a0e13ee564dc20cb2135bdb6f2579c1a02ecbc96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Tue, 18 Apr 2023 09:40:41 +0200 Subject: [PATCH] Add a test for reversed keywords used as import/export specifiers --- .../_config.js | 10 +++++ .../_expected/amd.js | 41 +++++++++++++++++ .../_expected/cjs.js | 41 +++++++++++++++++ .../_expected/es.js | 10 +++++ .../_expected/iife.js | 44 ++++++++++++++++++ .../_expected/system.js | 18 ++++++++ .../_expected/umd.js | 45 +++++++++++++++++++ .../main.js | 11 +++++ 8 files changed, 220 insertions(+) create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_config.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/amd.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/cjs.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/es.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/iife.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/system.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/_expected/umd.js create mode 100644 test/form/samples/reserved-keywords-in-imports-exports/main.js diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_config.js b/test/form/samples/reserved-keywords-in-imports-exports/_config.js new file mode 100644 index 00000000000..bfebfd0cf71 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'correctly handles reserved keywords in exports/imports', + options: { + input: ['main'], + output: { + name: 'reservedKeywords' + }, + external: ['external'] + } +}; diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/amd.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/amd.js new file mode 100644 index 00000000000..cf6a50d87d4 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/amd.js @@ -0,0 +1,41 @@ +define(['exports', 'external'], (function (exports, external) { 'use strict'; + + function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); + } + + var external__namespace = /*#__PURE__*/_interopNamespaceDefault(external); + + console.log(external.finally, external.catch); // retain those local bindings + + const legal = 10; + + Object.defineProperty(exports, 'const', { + enumerable: true, + get: function () { return external.const; } + }); + Object.defineProperty(exports, 'in', { + enumerable: true, + get: function () { return external.for; } + }); + Object.defineProperty(exports, 'return', { + enumerable: true, + get: function () { return external.bar; } + }); + exports.yield = external__namespace; + exports.await = legal; + +})); diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/cjs.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/cjs.js new file mode 100644 index 00000000000..89db7bd3960 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/cjs.js @@ -0,0 +1,41 @@ +'use strict'; + +var external = require('external'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); +} + +var external__namespace = /*#__PURE__*/_interopNamespaceDefault(external); + +console.log(external.finally, external.catch); // retain those local bindings + +const legal = 10; + +Object.defineProperty(exports, 'const', { + enumerable: true, + get: function () { return external.const; } +}); +Object.defineProperty(exports, 'in', { + enumerable: true, + get: function () { return external.for; } +}); +Object.defineProperty(exports, 'return', { + enumerable: true, + get: function () { return external.bar; } +}); +exports.yield = external__namespace; +exports.await = legal; diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/es.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/es.js new file mode 100644 index 00000000000..66e02159944 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/es.js @@ -0,0 +1,10 @@ +import { finally as finally$1, catch as catch$1 } from 'external'; +import * as external from 'external'; +export { external as yield }; +export { const, for as in, bar as return } from 'external'; + +console.log(finally$1, catch$1); // retain those local bindings + +const legal = 10; + +export { legal as await }; diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/iife.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/iife.js new file mode 100644 index 00000000000..0e8b15b5746 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/iife.js @@ -0,0 +1,44 @@ +var reservedKeywords = (function (exports, external) { + 'use strict'; + + function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); + } + + var external__namespace = /*#__PURE__*/_interopNamespaceDefault(external); + + console.log(external.finally, external.catch); // retain those local bindings + + const legal = 10; + + Object.defineProperty(exports, 'const', { + enumerable: true, + get: function () { return external.const; } + }); + Object.defineProperty(exports, 'in', { + enumerable: true, + get: function () { return external.for; } + }); + Object.defineProperty(exports, 'return', { + enumerable: true, + get: function () { return external.bar; } + }); + exports.yield = external__namespace; + exports.await = legal; + + return exports; + +})({}, external); diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/system.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/system.js new file mode 100644 index 00000000000..f06f008beac --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/system.js @@ -0,0 +1,18 @@ +System.register('reservedKeywords', ['external'], (function (exports) { + 'use strict'; + var finally$1, catch$1; + return { + setters: [function (module) { + finally$1 = module.finally; + catch$1 = module.catch; + exports({ const: module.const, in: module.for, return: module.bar, yield: module }); + }], + execute: (function () { + + console.log(finally$1, catch$1); // retain those local bindings + + const legal = exports('await', 10); + + }) + }; +})); diff --git a/test/form/samples/reserved-keywords-in-imports-exports/_expected/umd.js b/test/form/samples/reserved-keywords-in-imports-exports/_expected/umd.js new file mode 100644 index 00000000000..f94deacd271 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/_expected/umd.js @@ -0,0 +1,45 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('external')) : + typeof define === 'function' && define.amd ? define(['exports', 'external'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.reservedKeywords = {}, global.external)); +})(this, (function (exports, external) { 'use strict'; + + function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + Object.keys(e).forEach(function (k) { + if (k !== 'default') { + var d = Object.getOwnPropertyDescriptor(e, k); + Object.defineProperty(n, k, d.get ? d : { + enumerable: true, + get: function () { return e[k]; } + }); + } + }); + } + n.default = e; + return Object.freeze(n); + } + + var external__namespace = /*#__PURE__*/_interopNamespaceDefault(external); + + console.log(external.finally, external.catch); // retain those local bindings + + const legal = 10; + + Object.defineProperty(exports, 'const', { + enumerable: true, + get: function () { return external.const; } + }); + Object.defineProperty(exports, 'in', { + enumerable: true, + get: function () { return external.for; } + }); + Object.defineProperty(exports, 'return', { + enumerable: true, + get: function () { return external.bar; } + }); + exports.yield = external__namespace; + exports.await = legal; + +})); diff --git a/test/form/samples/reserved-keywords-in-imports-exports/main.js b/test/form/samples/reserved-keywords-in-imports-exports/main.js new file mode 100644 index 00000000000..e1720bba027 --- /dev/null +++ b/test/form/samples/reserved-keywords-in-imports-exports/main.js @@ -0,0 +1,11 @@ +import { finally as baz, catch as bazinga } from 'external'; +console.log(baz, bazinga); // retain those local bindings + +const legal = 10; + +export { legal as await }; + +export { bar as return, const, for as in } from 'external'; + +import * as lib from 'external'; +export { lib as yield };