diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/decorators/exec.js b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/decorators/exec.js new file mode 100644 index 000000000000..795f3a9101dd --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/decorators/exec.js @@ -0,0 +1,31 @@ +var log = []; + +function push(x) { log.push(x); return x; } + +function logDecoratorRun(a, b) { + push(a); + return function (el) { push(b); return el; }; +} + +@logDecoratorRun(0, 19) +@logDecoratorRun(1, 18) +class A { + @logDecoratorRun(2, 11) + @logDecoratorRun(3, 10) + a; + + @logDecoratorRun(4, 13) + @logDecoratorRun(5, 12) + static b; + + @logDecoratorRun(6, 15) + @logDecoratorRun(7, 14) + static #c; + + @logDecoratorRun(8, 17) + @logDecoratorRun(9, 16) + #d; +} + +var nums = Array.from({ length: 20 }, (_, i) => i); +expect(log).toEqual(nums); diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/field-initializers-after-methods/exec.js b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/field-initializers-after-methods/exec.js new file mode 100644 index 000000000000..46e71f7281db --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/field-initializers-after-methods/exec.js @@ -0,0 +1,27 @@ +var counter = 0; + +@(x => x) +class A { + foo = (() => { + counter++; + expect(typeof this.method).toBe("function"); + expect(this.foo).toBeUndefined(); + expect(this.bar).toBeUndefined(); + return "foo"; + })(); + + method() {} + + bar = (() => { + counter++; + expect(typeof this.method).toBe("function"); + expect(this.foo).toBe("foo"); + expect(this.bar).toBeUndefined(); + })(); +} + +expect(counter).toBe(0); + +new A(); + +expect(counter).toBe(2); diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/options.json b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/options.json new file mode 100644 index 000000000000..94ccc5a4b228 --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/options.json @@ -0,0 +1,8 @@ +{ + "plugins": [ + ["proposal-decorators", { "version": "2021-12" }], + "proposal-class-properties", + "proposal-private-methods", + "proposal-class-static-block" + ] +} diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/static-field-initializers-after-methods/exec.js b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/static-field-initializers-after-methods/exec.js new file mode 100644 index 000000000000..0703f091cc8d --- /dev/null +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering--to-es2015/static-field-initializers-after-methods/exec.js @@ -0,0 +1,23 @@ +var counter = 0; + +@(x => x) +class A { + static foo = (() => { + counter++; + expect(typeof this.method).toBe("function"); + expect(this.foo).toBeUndefined(); + expect(this.bar).toBeUndefined(); + return "foo"; + })(); + + static method() {} + + static bar = (() => { + counter++; + expect(typeof this.method).toBe("function"); + expect(this.foo).toBe("foo"); + expect(this.bar).toBeUndefined(); + })(); +} + +expect(counter).toBe(2); diff --git a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering/options.json b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering/options.json index a18e0b8e833f..2b0cbb30402e 100644 --- a/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering/options.json +++ b/packages/babel-plugin-proposal-decorators/test/fixtures/2021-12-ordering/options.json @@ -1,3 +1,4 @@ { - "plugins": [["proposal-decorators", { "version": "2021-12" }]] + "plugins": [["proposal-decorators", { "version": "2021-12" }]], + "minNodeVersion": "16.11" }