diff --git a/packages/babel-plugin-proposal-decorators/src/transformer-2021-12.ts b/packages/babel-plugin-proposal-decorators/src/transformer-2021-12.ts index 1e8cc7a188..054d1e253b 100644 --- a/packages/babel-plugin-proposal-decorators/src/transformer-2021-12.ts +++ b/packages/babel-plugin-proposal-decorators/src/transformer-2021-12.ts @@ -479,7 +479,7 @@ function transformClass( continue; } - if (element.node.decorators) { + if (element.node.decorators && element.node.decorators.length > 0) { hasElementDecorators = true; } else if (element.node.type === "ClassAccessorProperty") { const { key, value, static: isStatic } = element.node; @@ -572,7 +572,7 @@ function transformClass( hasComputedProps = true; } - if (Array.isArray(decorators)) { + if (Array.isArray(decorators) && decorators.length > 0) { let locals: t.Identifier | t.Identifier[]; let privateMethods: t.FunctionExpression | t.FunctionExpression[]; diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/input.js b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/input.js new file mode 100644 index 0000000000..e57aa75977 --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/input.js @@ -0,0 +1,26 @@ +@dec +class Class { + @dec a; + @dec b() {} + @dec get c() {} + @dec set c(v) {} + @dec accessor d; + + @dec #e; + @dec #f() {} + @dec get #g() {} + @dec set #g(v) {} + @dec accessor #h; + + @dec static i; + @dec static j() {} + @dec static get k() {} + @dec static set l(v) {} + @dec static accessor m; + + @dec static #n; + @dec static #o() {} + @dec static get #p() {} + @dec static set #q(v) {} + @dec static accessor #r; +} diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/output.js b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/output.js new file mode 100644 index 0000000000..d130528116 --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-misc/all-decorators/output.js @@ -0,0 +1,113 @@ +var _initClass, _init_a, _init_d, _init_e, _call_f, _call_g, _call_g2, _init_h, _get_h, _set_h, _init_i, _init_m, _init_n, _call_o, _call_p, _call_q, _init_r, _get_r, _set_r, _initProto, _initStatic; + +let _Class; + +new class extends babelHelpers.identity { + static { + class Class { + static { + [_init_a, _init_d, _init_e, _call_f, _call_g, _call_g2, _init_h, _get_h, _set_h, _init_i, _init_m, _init_n, _call_o, _call_p, _call_q, _init_r, _get_r, _set_r, _Class, _initClass, _initProto, _initStatic] = babelHelpers.applyDecs(this, [[dec, 0, "a"], [dec, 2, "b"], [dec, 3, "c"], [dec, 4, "c"], [dec, 1, "d"], [dec, 0, "e", function () { + return this.#e; + }, function (value) { + this.#e = value; + }], [dec, 2, "f", function () {}], [dec, 3, "g", function () {}], [dec, 4, "g", function (v) {}], [dec, 1, "h", function () { + return this.#B; + }, function (value) { + this.#B = value; + }], [dec, 5, "i"], [dec, 7, "j"], [dec, 8, "k"], [dec, 9, "l"], [dec, 6, "m"], [dec, 5, "n", function () { + return this.#n; + }, function (value) { + this.#n = value; + }], [dec, 7, "o", function () {}], [dec, 8, "p", function () {}], [dec, 9, "q", function (v) {}], [dec, 6, "r", function () { + return this.#D; + }, function (value) { + this.#D = value; + }]], [dec]); + + _initStatic(this); + + } + #f = _call_f; + a = (_initProto(this), _init_a(this)); + + b() {} + + get c() {} + + set c(v) {} + + #A = _init_d(this); + + get d() { + return this.#A; + } + + set d(v) { + this.#A = v; + } + + #e = _init_e(this); + + get #g() { + return _call_g(this); + } + + set #g(v) { + _call_g2(this, v); + } + + #B = _init_h(this); + + set #h(v) { + _set_h(this, v); + } + + get #h() { + _get_h(this); + } + + static j() {} + + static get k() {} + + static set l(v) {} + + static get m() { + return this.#C; + } + + static set m(v) { + this.#C = v; + } + + set #r(v) { + _set_r(this, v); + } + + get #r() { + _get_r(this); + } + + } + + } + #o = _call_o; + i = _init_i(this); + #C = _init_m(this); + #n = _init_n(this); + + get #p() { + return _call_p(this); + } + + set #q(v) { + _call_q(this, v); + } + + #D = _init_r(this); + + constructor() { + super(_Class), _initClass(); + } + +}();