From 0ec7b4b1e6cf3efc4d39e9cee086dbe59e095066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 13 Nov 2020 23:31:53 +0100 Subject: [PATCH] Implement `mutableTemplateObject` and `ignoreToPrimitiveHint` assumptions --- .../babel-core/src/config/validation/options.js | 1 + .../src/index.js | 16 +++++++++++----- .../escape-quotes/input.js | 0 .../escape-quotes/output.js | 0 .../expression-first/input.js | 0 .../expression-first/output.js | 0 .../functions/input.js | 0 .../functions/output.js | 0 .../literals/input.js | 0 .../literals/output.js | 0 .../multiline/input.js | 0 .../multiline/output.js | 0 .../multiple/input.js | 0 .../multiple/output.js | 0 .../none/input.js | 0 .../none/output.js | 0 .../only/input.js | 0 .../only/output.js | 0 .../options.json | 6 ++++++ .../order/exec.js | 0 .../order/options.json | 0 .../order2/exec.js | 0 .../order2/options.json | 0 .../single/input.js | 0 .../single/output.js | 0 .../statement/input.js | 0 .../statement/output.js | 0 .../symbol/exec.js | 0 .../tag/input.js | 1 + .../tag/output.js | 13 +++++++++++++ .../no-tag/input.js | 1 + .../no-tag/output.js | 1 + .../options.json | 6 ++++++ .../tag/input.js | 0 .../tag/output.js | 0 .../template-revision/input.js | 0 .../template-revision/output.js | 0 .../loose/ignoreToPrimitiveHint/input.js | 1 + .../loose/ignoreToPrimitiveHint/output.js | 1 + .../loose/mutableTemplateObject/input.js | 1 + .../loose/mutableTemplateObject/output.js | 13 +++++++++++++ 41 files changed, 56 insertions(+), 5 deletions(-) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/escape-quotes/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/escape-quotes/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/expression-first/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/expression-first/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/functions/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/functions/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/literals/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/literals/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/multiline/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/multiline/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/multiple/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/multiple/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/none/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/none/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/only/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/only/output.js (100%) create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/options.json rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/order/exec.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/order/options.json (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/order2/exec.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/order2/options.json (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/single/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/single/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/statement/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/statement/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-ignoreToPrimitiveHint}/symbol/exec.js (100%) create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/input.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/output.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/input.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/output.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/options.json rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-mutableTemplateObject}/tag/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-mutableTemplateObject}/tag/output.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-mutableTemplateObject}/template-revision/input.js (100%) rename packages/babel-plugin-transform-template-literals/test/fixtures/{loose => assumption-mutableTemplateObject}/template-revision/output.js (100%) create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/input.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/output.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/input.js create mode 100644 packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/output.js diff --git a/packages/babel-core/src/config/validation/options.js b/packages/babel-core/src/config/validation/options.js index 507b183fa07a..ee7621d88f7f 100644 --- a/packages/babel-core/src/config/validation/options.js +++ b/packages/babel-core/src/config/validation/options.js @@ -332,6 +332,7 @@ type EnvPath = $ReadOnly<{ export type NestingPath = RootPath | OverridesPath | EnvPath; export const assumptionsNames = new Set([ + "ignoreToPrimitiveHint", "mutableTemplateObject", "newableArrowFunctions", "setPublicClassFields", diff --git a/packages/babel-plugin-transform-template-literals/src/index.js b/packages/babel-plugin-transform-template-literals/src/index.js index abdf7087f8fc..fe51e5fb33af 100644 --- a/packages/babel-plugin-transform-template-literals/src/index.js +++ b/packages/babel-plugin-transform-template-literals/src/index.js @@ -3,10 +3,14 @@ import { template, types as t } from "@babel/core"; export default declare((api, options) => { api.assertVersion(7); - const { loose } = options; + + const ignoreToPrimitiveHint = + options.loose || api.assumption("ignoreToPrimitiveHint"); + const mutableTemplateObject = + options.loose || api.assumption("mutableTemplateObject"); let helperName = "taggedTemplateLiteral"; - if (loose) helperName += "Loose"; + if (mutableTemplateObject) helperName += "Loose"; /** * This function groups the objects into multiple calls to `.concat()` in @@ -122,13 +126,15 @@ export default declare((api, options) => { // since `+` is left-to-right associative // ensure the first node is a string if first/second isn't - const considerSecondNode = !loose || !t.isStringLiteral(nodes[1]); - if (!t.isStringLiteral(nodes[0]) && considerSecondNode) { + if ( + !t.isStringLiteral(nodes[0]) && + !(ignoreToPrimitiveHint && t.isStringLiteral(nodes[1])) + ) { nodes.unshift(t.stringLiteral("")); } let root = nodes[0]; - if (loose) { + if (ignoreToPrimitiveHint) { for (let i = 1; i < nodes.length; i++) { root = t.binaryExpression("+", root, nodes[i]); } diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/escape-quotes/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/escape-quotes/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/escape-quotes/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/escape-quotes/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/escape-quotes/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/escape-quotes/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/escape-quotes/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/escape-quotes/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/expression-first/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/expression-first/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/expression-first/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/expression-first/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/expression-first/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/expression-first/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/expression-first/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/expression-first/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/functions/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/functions/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/functions/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/functions/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/functions/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/functions/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/functions/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/functions/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/literals/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/literals/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/literals/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/literals/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/literals/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/literals/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/literals/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/literals/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiline/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiline/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiline/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiline/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiline/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiline/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiline/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiline/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiple/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiple/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiple/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiple/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiple/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiple/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/multiple/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/multiple/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/none/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/none/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/none/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/none/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/none/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/none/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/none/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/none/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/only/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/only/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/only/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/only/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/only/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/only/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/only/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/only/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/options.json b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/options.json new file mode 100644 index 000000000000..e9058d39d544 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/options.json @@ -0,0 +1,6 @@ +{ + "plugins": ["transform-template-literals"], + "assumptions": { + "ignoreToPrimitiveHint": true + } +} diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/order/exec.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order/exec.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/order/exec.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order/exec.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/order/options.json b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order/options.json similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/order/options.json rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order/options.json diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/order2/exec.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order2/exec.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/order2/exec.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order2/exec.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/order2/options.json b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order2/options.json similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/order2/options.json rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/order2/options.json diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/single/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/single/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/single/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/single/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/single/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/single/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/single/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/single/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/statement/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/statement/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/statement/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/statement/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/statement/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/statement/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/statement/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/statement/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/symbol/exec.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/symbol/exec.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/symbol/exec.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/symbol/exec.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/input.js new file mode 100644 index 000000000000..79f996661e4b --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/input.js @@ -0,0 +1 @@ +tag`foo ${bar} baz`; diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/output.js new file mode 100644 index 000000000000..8af069907a95 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-ignoreToPrimitiveHint/tag/output.js @@ -0,0 +1,13 @@ +function _templateObject() { + const data = _taggedTemplateLiteral(["foo ", " baz"]); + + _templateObject = function () { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +tag(_templateObject(), bar); diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/input.js new file mode 100644 index 000000000000..05ead3e65df5 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/input.js @@ -0,0 +1 @@ +`foo ${bar} baz`; diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/output.js new file mode 100644 index 000000000000..2328f9dfa655 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/no-tag/output.js @@ -0,0 +1 @@ +"foo ".concat(bar, " baz"); diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/options.json b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/options.json new file mode 100644 index 000000000000..29cf2ac88867 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/options.json @@ -0,0 +1,6 @@ +{ + "plugins": ["transform-template-literals"], + "assumptions": { + "mutableTemplateObject": true + } +} diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/tag/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/tag/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/tag/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/tag/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/tag/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/tag/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/tag/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/tag/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/template-revision/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/template-revision/input.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/template-revision/input.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/template-revision/input.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/template-revision/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/template-revision/output.js similarity index 100% rename from packages/babel-plugin-transform-template-literals/test/fixtures/loose/template-revision/output.js rename to packages/babel-plugin-transform-template-literals/test/fixtures/assumption-mutableTemplateObject/template-revision/output.js diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/input.js new file mode 100644 index 000000000000..98413bcfcede --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/input.js @@ -0,0 +1 @@ +var o = `foo ${bar} baz`; diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/output.js new file mode 100644 index 000000000000..f0a7277e17f4 --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/ignoreToPrimitiveHint/output.js @@ -0,0 +1 @@ +var o = "foo " + bar + " baz"; diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/input.js b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/input.js new file mode 100644 index 000000000000..8b87c3fe9f4d --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/input.js @@ -0,0 +1 @@ +var o = tag`foo ${bar} baz`; diff --git a/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/output.js b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/output.js new file mode 100644 index 000000000000..4e6a108bdb7c --- /dev/null +++ b/packages/babel-plugin-transform-template-literals/test/fixtures/loose/mutableTemplateObject/output.js @@ -0,0 +1,13 @@ +function _templateObject() { + const data = _taggedTemplateLiteralLoose(["foo ", " baz"]); + + _templateObject = function () { + return data; + }; + + return data; +} + +function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; } + +var o = tag(_templateObject(), bar);