diff --git a/packages/babel-helper-function-name/src/index.ts b/packages/babel-helper-function-name/src/index.ts index c59c881819bb..418d8c49446e 100644 --- a/packages/babel-helper-function-name/src/index.ts +++ b/packages/babel-helper-function-name/src/index.ts @@ -197,9 +197,22 @@ function visit( } /** - * @param {NodePath} param0 - * @param {Boolean} localBinding whether a name could shadow a self-reference (e.g. converting arrow function) - * @param {Boolean} supportUnicodeId whether a target support unicodeId or not + * Add id to function/class expression inferred from the AST + * + * @export + * @template N The unamed expression type + * @param {Object} nodePathLike The NodePath-like input + * @param {N} nodePathLike.node an AST node + * @param {NodePath["parent"]} [nodePathLike.parent] The parent of the AST node + * @param {Scope} nodePathLike.scope The scope associated to the AST node + * @param {t.LVal | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral} [nodePathLike.id] the fallback naming source when the helper + * can not infer the function name from the AST + * @param {boolean} [localBinding=false] whether a name could shadow a self-reference (e.g. converting arrow function) + * @param {boolean} [supportUnicodeId=false] whether the compilation target supports unicodeId (non-BMP characters) or not + * @returns {(N | t.CallExpression | void)} + * - modified node when name can be inferred, + * - an IIFE when `node` contains a binding shadowing the inferred function name (e.g. `let f = function (f) {}`), + * - `void` when `node` has `id` property or the helper can not inferred the name or the inferred name contains non-BMP characters that is not supported by current target */ export default function ( { @@ -209,13 +222,13 @@ export default function ( id, }: { node: N; - parent?: t.Node; + parent?: NodePath["parent"]; scope: Scope; id?: t.LVal | t.StringLiteral | t.NumericLiteral | t.BigIntLiteral; }, localBinding = false, supportUnicodeId = false, -): t.CallExpression | N { +): N | t.CallExpression | void { // has an `id` so we don't need to infer one if (node.id) return; diff --git a/packages/babel-helper-wrap-function/src/index.ts b/packages/babel-helper-wrap-function/src/index.ts index 71dc174006b4..503848cc23fb 100644 --- a/packages/babel-helper-wrap-function/src/index.ts +++ b/packages/babel-helper-wrap-function/src/index.ts @@ -148,7 +148,7 @@ function plainFunction( const returnFn = container.callee.body.body[1].argument; nameFunction({ node: returnFn, - parent: path.parent, + parent: (path as NodePath).parent, scope: path.scope, }); functionId = returnFn.id; diff --git a/packages/babel-plugin-transform-classes/package.json b/packages/babel-plugin-transform-classes/package.json index 46e4cf51516b..400636fb2ff9 100644 --- a/packages/babel-plugin-transform-classes/package.json +++ b/packages/babel-plugin-transform-classes/package.json @@ -15,6 +15,7 @@ "main": "./lib/index.js", "dependencies": { "@babel/helper-annotate-as-pure": "workspace:^", + "@babel/helper-compilation-targets": "workspace:^", "@babel/helper-environment-visitor": "workspace:^", "@babel/helper-function-name": "workspace:^", "@babel/helper-optimise-call-expression": "workspace:^", diff --git a/packages/babel-plugin-transform-classes/src/index.ts b/packages/babel-plugin-transform-classes/src/index.ts index a5e1aa108944..66102f2783cc 100644 --- a/packages/babel-plugin-transform-classes/src/index.ts +++ b/packages/babel-plugin-transform-classes/src/index.ts @@ -1,4 +1,5 @@ import { declare } from "@babel/helper-plugin-utils"; +import { isRequired } from "@babel/helper-compilation-targets"; import annotateAsPure from "@babel/helper-annotate-as-pure"; import nameFunction from "@babel/helper-function-name"; import splitExportDeclaration from "@babel/helper-split-export-declaration"; @@ -30,6 +31,10 @@ export default declare((api, options: Options) => { "superIsCallableConstructor", ) ?? loose) as boolean; const noClassCalls = (api.assumption("noClassCalls") ?? loose) as boolean; + const supportUnicodeId = !isRequired( + "transform-unicode-escapes", + api.targets(), + ); // todo: investigate traversal requeueing const VISITED = new WeakSet(); @@ -59,7 +64,7 @@ export default declare((api, options: Options) => { const { node } = path; if (VISITED.has(node)) return; - const inferred = nameFunction(path); + const inferred = nameFunction(path, undefined, supportUnicodeId); if (inferred && inferred !== node) { path.replaceWith(inferred); return; @@ -68,12 +73,19 @@ export default declare((api, options: Options) => { VISITED.add(node); const [replacedPath] = path.replaceWith( - transformClass(path, state.file, builtinClasses, loose, { - setClassMethods, - constantSuper, - superIsCallableConstructor, - noClassCalls, - }), + transformClass( + path, + state.file, + builtinClasses, + loose, + { + setClassMethods, + constantSuper, + superIsCallableConstructor, + noClassCalls, + }, + supportUnicodeId, + ), ); if (replacedPath.isCallExpression()) { diff --git a/packages/babel-plugin-transform-classes/src/transformClass.ts b/packages/babel-plugin-transform-classes/src/transformClass.ts index b9fa6c970617..e87563e3db59 100644 --- a/packages/babel-plugin-transform-classes/src/transformClass.ts +++ b/packages/babel-plugin-transform-classes/src/transformClass.ts @@ -98,6 +98,7 @@ export default function transformClass( builtinClasses: ReadonlySet, isLoose: boolean, assumptions: ClassAssumptions, + supportUnicodeId: boolean, ) { const classState: State = { parent: undefined, @@ -509,7 +510,14 @@ export default function transformClass( if (node.kind === "method") { // @ts-expect-error Fixme: we are passing a ClassMethod to nameFunction, but nameFunction // does not seem to support it - fn = nameFunction({ id: key, node: node, scope }); + fn = + nameFunction( + // @ts-expect-error Fixme: we are passing a ClassMethod to nameFunction, but nameFunction + // does not seem to support it + { id: key, node: node, scope }, + undefined, + supportUnicodeId, + ) ?? fn; } } else { // todo(flow->ts) find a way to avoid "key as t.StringLiteral" below which relies on this assignment @@ -571,11 +579,17 @@ export default function transformClass( const key = t.toComputedKey(node, node.key); if (t.isStringLiteral(key)) { - func = nameFunction({ - node: func, - id: key, - scope, - }); + // @ts-expect-error: requires strictNullCheck + func = + nameFunction( + { + node: func, + id: key, + scope, + }, + undefined, + supportUnicodeId, + ) ?? func; } const expr = t.expressionStatement( diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/input.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/options.json b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/options.json new file mode 100644 index 000000000000..4f4dda8b0e6f --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/options.json @@ -0,0 +1,4 @@ +{ + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/output.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/output.js new file mode 100644 index 000000000000..a2b3766f2407 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp-not-supported/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + var _proto = o.prototype; + + _proto.𠮷野家 = function () {}; + + return babelHelpers.createClass(o); +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/input.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/input.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/options.json b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/options.json new file mode 100644 index 000000000000..4f4dda8b0e6f --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/options.json @@ -0,0 +1,4 @@ +{ + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/output.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/output.js new file mode 100644 index 000000000000..a2b3766f2407 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/method-name-non-bmp-not-supported/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + var _proto = o.prototype; + + _proto.𠮷野家 = function () {}; + + return babelHelpers.createClass(o); +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/options.json b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/options.json new file mode 100644 index 000000000000..027a3446d943 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/options.json @@ -0,0 +1,4 @@ +{ + "targets": "chrome 44", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/output.js b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/output.js new file mode 100644 index 000000000000..97f57de023a8 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/assumption-setClassMethods/method-name-non-bmp/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + var _proto = o.prototype; + + _proto.𠮷野家 = function 𠮷野家() {}; + + return babelHelpers.createClass(o); +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/input.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/options.json b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/options.json new file mode 100644 index 000000000000..58d9cda2d5d4 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "targets": "chrome 44", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/output.js new file mode 100644 index 000000000000..f5e729e2578f --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-babel-7/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "\uD842\uDFB7\u91CE\u5BB6", + value: function 𠮷野家() {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/input.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/options.json b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/options.json new file mode 100644 index 000000000000..b202097b1132 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/output.js new file mode 100644 index 000000000000..edf492a0b929 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported-babel-7/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "\uD842\uDFB7\u91CE\u5BB6", + value: function () {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/input.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/options.json b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/options.json new file mode 100644 index 000000000000..c0e4ca0dbdb0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": true, + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/output.js new file mode 100644 index 000000000000..171495b4bea2 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp-not-supported/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "𠮷野家", + value: function () {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/input.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/options.json b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/options.json new file mode 100644 index 000000000000..004d388a68ac --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": true, + "targets": "chrome 44", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/output.js b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/output.js new file mode 100644 index 000000000000..599fb71a7ab8 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/loose/method-name-non-bmp/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "𠮷野家", + value: function 𠮷野家() {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/input.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/options.json new file mode 100644 index 000000000000..58d9cda2d5d4 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "targets": "chrome 44", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/output.js new file mode 100644 index 000000000000..f5e729e2578f --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-babel-7/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "\uD842\uDFB7\u91CE\u5BB6", + value: function 𠮷野家() {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/input.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/options.json new file mode 100644 index 000000000000..b202097b1132 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": false, + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/output.js new file mode 100644 index 000000000000..edf492a0b929 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported-babel-7/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "\uD842\uDFB7\u91CE\u5BB6", + value: function () {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/input.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/options.json new file mode 100644 index 000000000000..c0e4ca0dbdb0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": true, + "targets": "chrome 43", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/output.js new file mode 100644 index 000000000000..171495b4bea2 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp-not-supported/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "𠮷野家", + value: function () {} + }]); + return o; +}(); diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/input.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/input.js new file mode 100644 index 000000000000..578cc35369a0 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/input.js @@ -0,0 +1 @@ +var o = class { 𠮷野家() {} }; diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/options.json b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/options.json new file mode 100644 index 000000000000..004d388a68ac --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/options.json @@ -0,0 +1,5 @@ +{ + "BABEL_8_BREAKING": true, + "targets": "chrome 44", + "plugins": ["transform-classes"] +} diff --git a/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/output.js b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/output.js new file mode 100644 index 000000000000..599fb71a7ab8 --- /dev/null +++ b/packages/babel-plugin-transform-classes/test/fixtures/spec/method-name-non-bmp/output.js @@ -0,0 +1,13 @@ +var o = /*#__PURE__*/function () { + "use strict"; + + function o() { + babelHelpers.classCallCheck(this, o); + } + + babelHelpers.createClass(o, [{ + key: "𠮷野家", + value: function 𠮷野家() {} + }]); + return o; +}(); diff --git a/yarn.lock b/yarn.lock index 4ed654ddf09b..53679091b4b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2329,6 +2329,7 @@ __metadata: dependencies: "@babel/core": "workspace:^" "@babel/helper-annotate-as-pure": "workspace:^" + "@babel/helper-compilation-targets": "workspace:^" "@babel/helper-environment-visitor": "workspace:^" "@babel/helper-function-name": "workspace:^" "@babel/helper-optimise-call-expression": "workspace:^"