Repository: swc-project/swc (rust)

Issue:
Inherits missing the props 
### Describe the bug

if the env targets includes "last 1 safari version" and the arrow function has some default props , the compile code will miss the inherits props

### Input code

```typescript
export class TableView extends React.Component {
  
  constructor(props) {
    super(props);
  }

  public getProps= ()=>{

  }
  
  public getSearchForm = (innerWidth = 0) => {
   this.getProps();
  }





  
}
```


### Config

```json
{
  "jsc": {
    "externalHelpers": true,
    "parser": {
      "syntax": "typescript",
      "decorators": true,
      "tsx": true
    },
    "transform": {
      "legacyDecorator": true,
      "decoratorMetadata": false
    },
    "target": "es2016",
    "loose": false,
    "minify": {
      "compress": false,
      "mangle": false
    }
  },
  "module": {
    "type": "es6"
  },
  "minify": false,
  "isModule": true,
  "env": {
    "targets": "last 1 safari version"
  }
}
```


### Playground link

https://play.swc.rs/?version=1.2.139&code=H4sIAAAAAAAAA0WNQQuDMAyF7%2F0VOepFdh96Gew8tuHOtYZZ0KYkKRPE%2F77qkIUQyHuP7%2BEciRXcaEXgabsRW48fwFkx9AJ3tE6rC02RAgaFxQDkdRREOTklLiJTlHJ3ACRFPKRzVlaTT0zd6B28UW%2BbUUNR1s1idnvH%2FQMPtOyGK%2FEEOeZDQH75Xof8nUqom1%2BNDl6qA1ccRdtk3Gq%2BIOmccNQAAAA%3D&config=H4sIAAAAAAAAA0WQMQ6DMAxFr4I8M5QOHZg7dOEQVjAoVUgi261AKHdvCFA2K3n%2F%2BcsrvMVAuwLNSuzRvchFYoFW%2BUM1RGQh3gBZvOIMLegSSQzbqFBDTyYwargSKvM%2BpjwzehkCT5vA0YhmeZ6Bk%2F8bOlLsURHaAZ2UOPJImleS3G%2FNI69zIQgdQA2T9XZYNrcJU2QSub7Qj%2B4kU3ZNof9sD2vpX5wPSJfjyFnpDnBvR%2F5bMqVJ1oND0aqpBAdkW33zqWzwkNIPL3xF9UkBAAA%3D

### Expected behavior

```javascript 
export class TableView extends React.Component {
    constructor(props){
        var _this;
        super(props), _this = this;
        this.getProps = ()=>{};
        this.getSearchForm = function() {
            let innerWidth = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
            _this.getProps();
        };
    }
}
```

### Actual behavior

```javascript 
export class TableView extends React.Component {
    constructor(props){
        var _this;
        super(), _this = this;
        this.getProps = ()=>{};
        this.getSearchForm = function() {
            let innerWidth = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
            _this.getProps();
        };
    }
}
```
### Version

1.2.139

### Additional context

_No response_

Pull request description:
fix(ecma/utils): keep super call params
**Related issue (if exists):**
fixes #3569 

Patch:
diff --git a/crates/swc_ecma_utils/src/function/fn_env_hoister.rs b/crates/swc_ecma_utils/src/function/fn_env_hoister.rs
index 2d6c3429f9..3aa101851a 100644
--- a/crates/swc_ecma_utils/src/function/fn_env_hoister.rs
+++ b/crates/swc_ecma_utils/src/function/fn_env_hoister.rs
@@ -556,23 +556,20 @@ impl<'a> VisitMut for InitThis<'a> {
     fn visit_mut_expr(&mut self, expr: &mut Expr) {
         expr.visit_mut_children_with(self);
 
-        if let Expr::Call(CallExpr {
-            callee: Callee::Super(Super { span: super_span }),
-            span,
-            ..
-        }) = expr
+        if let Expr::Call(
+            call_expr @ CallExpr {
+                callee: Callee::Super(..),
+                ..
+            },
+        ) = expr
         {
+            let span = call_expr.span;
             *expr = Expr::Paren(ParenExpr {
-                span: *span,
+                span,
                 expr: Box::new(Expr::Seq(SeqExpr {
-                    span: *span,
+                    span,
                     exprs: vec![
-                        Box::new(Expr::Call(CallExpr {
-                            span: *span,
-                            callee: Callee::Super(Super { span: *super_span }),
-                            args: Vec::new(),
-                            type_args: None,
-                        })),
+                        Box::new(Expr::Call(call_expr.take())),
                         Box::new(Expr::Assign(AssignExpr {
                             span: DUMMY_SP,
                             left: PatOrExpr::Pat(self.this_id.clone().into()),


Test patch:
diff --git a/crates/swc_ecma_transforms_compat/tests/es2015_parameters.rs b/crates/swc_ecma_transforms_compat/tests/es2015_parameters.rs
index 96817ed9cf..16e65510d6 100644
--- a/crates/swc_ecma_transforms_compat/tests/es2015_parameters.rs
+++ b/crates/swc_ecma_transforms_compat/tests/es2015_parameters.rs
@@ -1907,6 +1907,34 @@ class A {
   "
 );
 
+test!(
+    syntax(),
+    |_| parameters(Default::default()),
+    issue_3569,
+    "
+export class TableView extends React.Component {
+  constructor(props){
+    super(props);
+    this.getSearchForm = (innerWidth = 0)=>{
+      this.getProps();
+    };
+  }
+}
+",
+    "
+export class TableView extends React.Component {
+  constructor(props){
+    var _this;
+    super(props), _this = this;
+    this.getSearchForm = function () {
+      let innerWidth = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
+      _this.getProps();
+    };
+  }
+}
+"
+);
+
 test!(
     syntax(),
     |_| tr(Config {