From 62f759c1f29df5ea5ec167614d64cb11c27cdaf1 Mon Sep 17 00:00:00 2001 From: Dunqing <29533304+Dunqing@users.noreply.github.com> Date: Sat, 10 Aug 2024 11:21:45 +0000 Subject: [PATCH] fix(transformer/typescript): generated assignment for constructor arguments with access modifiers should be injected to the top of the constructor (#4808) fix: #4789 --- crates/oxc_transformer/src/typescript/annotations.rs | 3 ++- .../test/fixtures/class-constructor-arguments/input.ts | 2 +- .../test/fixtures/class-constructor-arguments/output.js | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/crates/oxc_transformer/src/typescript/annotations.rs b/crates/oxc_transformer/src/typescript/annotations.rs index 15ec60e70..10732afbf 100644 --- a/crates/oxc_transformer/src/typescript/annotations.rs +++ b/crates/oxc_transformer/src/typescript/annotations.rs @@ -298,7 +298,8 @@ impl<'a> TypeScriptAnnotations<'a> { ) }) .statements - .extend( + .splice( + 0..0, self.assignments .drain(..) .map(|assignment| assignment.create_this_property_assignment(ctx)), diff --git a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts index cfd9d2d3b..fd0f96674 100644 --- a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts +++ b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/input.ts @@ -1,7 +1,7 @@ class Foo { boom: number; constructor(public foo, private bar, protected zoo, readonly bang, too) { - + console.log(this.foo, this.bar, this.zoo, this.bang); } } class Bar extends Foo { diff --git a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js index 8e2e8130f..06cf6fc10 100644 --- a/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js +++ b/tasks/transform_conformance/tests/babel-plugin-transform-typescript/test/fixtures/class-constructor-arguments/output.js @@ -5,6 +5,7 @@ class Foo { this.bar = bar; this.zoo = zoo; this.bang = bang; + console.log(this.foo, this.bar, this.zoo, this.bang); } } class Bar extends Foo {