Repository: swc-project/swc (rust)

Issue:
helper `set` is incorrectly renamed when it needs protection
### Describe the bug

The set function reassigns itself internally. 
When `eval` exists within the scope, the set function's name should be protected, but it's incorrectly renamed to `set1`, causing the helpers to fail to execute properly.

It was introduced by #9546 

### Input code

```typescript
class A {
	world = false
}

eval("hello")

class B extends A {
	constructor() {
		super()
	}

	set hello(v) {
		super.world = v
	}

	get hello() {
		return super.world
	}
}
```


### Config

_No response_

### Playground link (or link to the minimal reproduction)

https://play.swc.rs/?version=1.7.37-nightly-20241021.1&code=H4sIAAAAAAAAA03NPQ6DMAwF4Dk%2BhcUUlt6Aob1JFFwYrKSynYBUcffyUxCbZX%2FvOXJQxSd%2BwU1ZuMcO34GVYAGgGtg3IzHnpgWIO30hzUap%2F4diTmpSomXx7bZwWj60zuDWBqdkuBf4ers%2Bzlf1UMOlDiRkRRLe7OaWH0dO9hOsAAAA&config=H4sIAAAAAAAAA12PSw6DMAxE95wCed1tNz1BNz2ElRoU5HxkBwmEuHsDJLRll3ljjydL07YwqIFHu%2BRnFhFFSU6dic4%2B4ZQJkHGoRmxMcKvuoJvVISvtaD0cSIJeuyAuu35krhilp7SH6b2kAIegVFMKoymReOQncSTRi%2Bust93829Kh7%2FkSkrEJLgqp%2FndsSk9w4T3uW%2BX3aY6b2tZc8IPCOWn1VWfPC98aR%2Fb6AXANGa1PAQAA

### SWC Info output

_No response_

### Expected behavior

keep name `set`

### Actual behavior

`set` is renamed to `set1` while usages are still `set`

```javascript
function set1(target, property, value, receiver) {
    if (typeof Reflect !== "undefined" && Reflect.set) {
        set1 = Reflect.set;
    } else {
        set1 = function set1(target, property, value, receiver) {
            var base = _super_prop_base(target, property);
            var desc;
            if (base) {
                desc = Object.getOwnPropertyDescriptor(base, property);
                if (desc.set) {
                    desc.set.call(receiver, value);
                    return true;
                } else if (!desc.writable) {
                    return false;
                }
            }
            desc = Object.getOwnPropertyDescriptor(receiver, property);
            if (desc) {
                if (!desc.writable) {
                    return false;
                }
                desc.value = value;
                Object.defineProperty(receiver, property, desc);
            } else {
                _define_property(receiver, property, value);
            }
            return true;
        };
    }
    return set1(target, property, value, receiver);
}
function _set(target, property, value, receiver, isStrict) {
    var s = set(target, property, value, receiver || target);
    if (!s && isStrict) {
        throw new Error("failed to set property");
    }
    return value;
}
```

### Version

1.7.36

### Additional context

_No response_

Pull request description:
fix(es/renamer): Check `preserved` in normal renaming mode
<!-- Note: CI script will automatically rebase your PR so please do not rebase unless required -->

<!-- Thanks for submitting a pull request! Please provide enough information so that others can review your pull request. -->

**Description:** check `preserved` in normal renaming mode

<!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? -->

**BREAKING CHANGE:**

<!--
If this PR introduces a breaking change, it must contain a notice for it to be included in the CHANGELOG. Add description or remove entirely if not breaking.

You may need to update `MIGRATION.md` for the breaking changes.
-->

**Related issue (if exists):**
fix #9663 

Patch:
diff --git a/.changeset/sixty-ladybugs-help.md b/.changeset/sixty-ladybugs-help.md
new file mode 100644
index 0000000000..ecafeeb18b
--- /dev/null
+++ b/.changeset/sixty-ladybugs-help.md
@@ -0,0 +1,6 @@
+---
+swc_core: patch
+swc_ecma_transforms_base: patch
+---
+
+fix(es/renamer): check `preserved` in normal renaming mode
diff --git a/.github/swc-ecosystem-ci/tests/nest-cli.ts b/.github/swc-ecosystem-ci/todos/nest-cli.ts
similarity index 100%
rename from .github/swc-ecosystem-ci/tests/nest-cli.ts
rename to .github/swc-ecosystem-ci/todos/nest-cli.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f6926bd9c..48b7fd5d37 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,5 @@
 # Changelog
-## [unreleased]
+## [1.7.39] - 2024-10-22
 
 ### Bug Fixes
 
diff --git a/bindings/Cargo.lock b/bindings/Cargo.lock
index d5727bcff8..44d5af3dd2 100644
--- a/bindings/Cargo.lock
+++ b/bindings/Cargo.lock
@@ -249,7 +249,7 @@ dependencies = [
 
 [[package]]
 name = "binding_core_wasm"
-version = "1.7.38-nightly-20241021.1"
+version = "1.7.39"
 dependencies = [
  "anyhow",
  "getrandom",
@@ -336,7 +336,7 @@ dependencies = [
 
 [[package]]
 name = "binding_minifier_wasm"
-version = "1.7.38-nightly-20241021.1"
+version = "1.7.39"
 dependencies = [
  "anyhow",
  "getrandom",
@@ -349,7 +349,7 @@ dependencies = [
 
 [[package]]
 name = "binding_typescript_wasm"
-version = "1.7.38-nightly-20241021.1"
+version = "1.7.39"
 dependencies = [
  "anyhow",
  "getrandom",
@@ -3530,7 +3530,7 @@ dependencies = [
 
 [[package]]
 name = "swc_cli"
-version = "0.91.430"
+version = "0.91.432"
 dependencies = [
  "anyhow",
  "swc_cli_impl",
diff --git a/bindings/binding_core_wasm/Cargo.toml b/bindings/binding_core_wasm/Cargo.toml
index beb138aac5..224d404e1e 100644
--- a/bindings/binding_core_wasm/Cargo.toml
+++ b/bindings/binding_core_wasm/Cargo.toml
@@ -6,7 +6,7 @@ license     = "Apache-2.0"
 name        = "binding_core_wasm"
 publish     = false
 repository  = "https://github.com/swc-project/swc.git"
-version     = "1.7.38-nightly-20241021.1"
+version     = "1.7.39"
 
 [lib]
 bench      = false
diff --git a/bindings/binding_minifier_wasm/Cargo.toml b/bindings/binding_minifier_wasm/Cargo.toml
index 7ed0beadb3..db21e9ed3d 100644
--- a/bindings/binding_minifier_wasm/Cargo.toml
+++ b/bindings/binding_minifier_wasm/Cargo.toml
@@ -6,7 +6,7 @@ license     = "Apache-2.0"
 name        = "binding_minifier_wasm"
 publish     = false
 repository  = "https://github.com/swc-project/swc.git"
-version     = "1.7.38-nightly-20241021.1"
+version     = "1.7.39"
 
 [lib]
 bench      = false
diff --git a/bindings/binding_typescript_wasm/Cargo.toml b/bindings/binding_typescript_wasm/Cargo.toml
index 8928b8e54e..24acd34946 100644
--- a/bindings/binding_typescript_wasm/Cargo.toml
+++ b/bindings/binding_typescript_wasm/Cargo.toml
@@ -6,7 +6,7 @@ license     = "Apache-2.0"
 name        = "binding_typescript_wasm"
 publish     = false
 repository  = "https://github.com/swc-project/swc.git"
-version     = "1.7.38-nightly-20241021.1"
+version     = "1.7.39"
 
 [lib]
 bench      = false
diff --git a/bindings/swc_cli/Cargo.toml b/bindings/swc_cli/Cargo.toml
index e4021bb290..98a79e5afb 100644
--- a/bindings/swc_cli/Cargo.toml
+++ b/bindings/swc_cli/Cargo.toml
@@ -6,7 +6,7 @@ include     = ["Cargo.toml", "src/**/*.rs"]
 license     = "Apache-2.0"
 name        = "swc_cli"
 repository  = "https://github.com/swc-project/swc.git"
-version     = "0.91.430"
+version     = "0.91.432"
 
 [[bin]]
 bench = false
diff --git a/crates/swc_ecma_transforms_base/src/rename/analyzer/scope.rs b/crates/swc_ecma_transforms_base/src/rename/analyzer/scope.rs
index c613e7e047..07c9122c91 100644
--- a/crates/swc_ecma_transforms_base/src/rename/analyzer/scope.rs
+++ b/crates/swc_ecma_transforms_base/src/rename/analyzer/scope.rs
@@ -99,6 +99,7 @@ impl Scope {
         to: &mut RenameMap,
         previous: &RenameMap,
         reverse: &mut ReverseMap,
+        preserved: &FxHashSet<Id>,
         preserved_symbols: &FxHashSet<Atom>,
     ) where
         R: Renamer,
@@ -113,6 +114,7 @@ impl Scope {
             previous,
             reverse,
             queue,
+            preserved,
             preserved_symbols,
         );
 
@@ -122,6 +124,7 @@ impl Scope {
                 to,
                 &Default::default(),
                 reverse,
+                preserved,
                 preserved_symbols,
             );
         }
@@ -134,6 +137,7 @@ impl Scope {
         previous: &RenameMap,
         reverse: &mut ReverseMap,
         queue: Vec<Id>,
+        preserved: &FxHashSet<Id>,
         preserved_symbols: &FxHashSet<Atom>,
     ) where
         R: Renamer,
@@ -141,7 +145,11 @@ impl Scope {
         let mut n = 0;
 
         for id in queue {
-            if to.get(&id).is_some() || previous.get(&id).is_some() || id.0 == "eval" {
+            if preserved.contains(&id)
+                || to.get(&id).is_some()
+                || previous.get(&id).is_some()
+                || id.0 == "eval"
+            {
                 continue;
             }
 
diff --git a/crates/swc_ecma_transforms_base/src/rename/mod.rs b/crates/swc_ecma_transforms_base/src/rename/mod.rs
index 03aab3ac96..f427d94fb5 100644
--- a/crates/swc_ecma_transforms_base/src/rename/mod.rs
+++ b/crates/swc_ecma_transforms_base/src/rename/mod.rs
@@ -191,6 +191,7 @@ where
                 &mut map,
                 &self.previous_cache,
                 &mut Default::default(),
+                &self.preserved,
                 &unresolved,
             );
         }
diff --git a/packages/core/package.json b/packages/core/package.json
index 74b88ce253..daa39cab8f 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@swc/core",
-    "version": "1.7.38-nightly-20241021.1",
+    "version": "1.7.39",
     "description": "Super-fast alternative for babel",
     "homepage": "https://swc.rs",
     "main": "./index.js",
diff --git a/packages/core/scripts/npm/darwin-arm64/package.json b/packages/core/scripts/npm/darwin-arm64/package.json
index d82ec23861..ae42f96990 100644
--- a/packages/core/scripts/npm/darwin-arm64/package.json
+++ b/packages/core/scripts/npm/darwin-arm64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-darwin-arm64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/core/scripts/npm/darwin-x64/package.json b/packages/core/scripts/npm/darwin-x64/package.json
index d853736a5d..dd5482f47a 100644
--- a/packages/core/scripts/npm/darwin-x64/package.json
+++ b/packages/core/scripts/npm/darwin-x64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-darwin-x64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/core/scripts/npm/linux-arm-gnueabihf/package.json b/packages/core/scripts/npm/linux-arm-gnueabihf/package.json
index b0e36d6883..0c471d1a0d 100644
--- a/packages/core/scripts/npm/linux-arm-gnueabihf/package.json
+++ b/packages/core/scripts/npm/linux-arm-gnueabihf/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-linux-arm-gnueabihf",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/core/scripts/npm/linux-arm64-gnu/package.json b/packages/core/scripts/npm/linux-arm64-gnu/package.json
index 85326f4b0c..394818e5d5 100644
--- a/packages/core/scripts/npm/linux-arm64-gnu/package.json
+++ b/packages/core/scripts/npm/linux-arm64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-linux-arm64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/core/scripts/npm/linux-arm64-musl/package.json b/packages/core/scripts/npm/linux-arm64-musl/package.json
index 4fc4e0fc0a..9997572907 100644
--- a/packages/core/scripts/npm/linux-arm64-musl/package.json
+++ b/packages/core/scripts/npm/linux-arm64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-linux-arm64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/core/scripts/npm/linux-x64-gnu/package.json b/packages/core/scripts/npm/linux-x64-gnu/package.json
index 34389778ac..1208613017 100644
--- a/packages/core/scripts/npm/linux-x64-gnu/package.json
+++ b/packages/core/scripts/npm/linux-x64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-linux-x64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/core/scripts/npm/linux-x64-musl/package.json b/packages/core/scripts/npm/linux-x64-musl/package.json
index 282f9e829b..127fcad13e 100644
--- a/packages/core/scripts/npm/linux-x64-musl/package.json
+++ b/packages/core/scripts/npm/linux-x64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-linux-x64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/core/scripts/npm/win32-arm64-msvc/package.json b/packages/core/scripts/npm/win32-arm64-msvc/package.json
index 914b4146f1..f91f228360 100644
--- a/packages/core/scripts/npm/win32-arm64-msvc/package.json
+++ b/packages/core/scripts/npm/win32-arm64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-win32-arm64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/core/scripts/npm/win32-ia32-msvc/package.json b/packages/core/scripts/npm/win32-ia32-msvc/package.json
index ef74b5428c..569ce94ebb 100644
--- a/packages/core/scripts/npm/win32-ia32-msvc/package.json
+++ b/packages/core/scripts/npm/win32-ia32-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-win32-ia32-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/core/scripts/npm/win32-x64-msvc/package.json b/packages/core/scripts/npm/win32-x64-msvc/package.json
index 6751507322..3f36f58b3e 100644
--- a/packages/core/scripts/npm/win32-x64-msvc/package.json
+++ b/packages/core/scripts/npm/win32-x64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/core-win32-x64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/html/package.json b/packages/html/package.json
index f5abf89e21..23376ca38c 100644
--- a/packages/html/package.json
+++ b/packages/html/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@swc/html",
-    "version": "1.7.38-nightly-20241021.1",
+    "version": "1.7.39",
     "description": "Super-fast HTML minifier",
     "homepage": "https://swc.rs",
     "main": "./index.js",
diff --git a/packages/html/scripts/npm/darwin-arm64/package.json b/packages/html/scripts/npm/darwin-arm64/package.json
index 48bd43efc7..3725da3cbc 100644
--- a/packages/html/scripts/npm/darwin-arm64/package.json
+++ b/packages/html/scripts/npm/darwin-arm64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-darwin-arm64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/html/scripts/npm/darwin-x64/package.json b/packages/html/scripts/npm/darwin-x64/package.json
index a0167be8e2..e7f4d7e76f 100644
--- a/packages/html/scripts/npm/darwin-x64/package.json
+++ b/packages/html/scripts/npm/darwin-x64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-darwin-x64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/html/scripts/npm/linux-arm-gnueabihf/package.json b/packages/html/scripts/npm/linux-arm-gnueabihf/package.json
index 0686a659e4..43462a5e4a 100644
--- a/packages/html/scripts/npm/linux-arm-gnueabihf/package.json
+++ b/packages/html/scripts/npm/linux-arm-gnueabihf/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-linux-arm-gnueabihf",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/html/scripts/npm/linux-arm64-gnu/package.json b/packages/html/scripts/npm/linux-arm64-gnu/package.json
index c0751aed53..7734e04ab0 100644
--- a/packages/html/scripts/npm/linux-arm64-gnu/package.json
+++ b/packages/html/scripts/npm/linux-arm64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-linux-arm64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/html/scripts/npm/linux-arm64-musl/package.json b/packages/html/scripts/npm/linux-arm64-musl/package.json
index 13eef3af4c..96f8dec6ea 100644
--- a/packages/html/scripts/npm/linux-arm64-musl/package.json
+++ b/packages/html/scripts/npm/linux-arm64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-linux-arm64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/html/scripts/npm/linux-x64-gnu/package.json b/packages/html/scripts/npm/linux-x64-gnu/package.json
index efcd1af7fb..c8a38ee4d9 100644
--- a/packages/html/scripts/npm/linux-x64-gnu/package.json
+++ b/packages/html/scripts/npm/linux-x64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-linux-x64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/html/scripts/npm/linux-x64-musl/package.json b/packages/html/scripts/npm/linux-x64-musl/package.json
index 2f467d46ef..5366e8f1d5 100644
--- a/packages/html/scripts/npm/linux-x64-musl/package.json
+++ b/packages/html/scripts/npm/linux-x64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-linux-x64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/html/scripts/npm/win32-arm64-msvc/package.json b/packages/html/scripts/npm/win32-arm64-msvc/package.json
index 3872021c24..8776b0b1a3 100644
--- a/packages/html/scripts/npm/win32-arm64-msvc/package.json
+++ b/packages/html/scripts/npm/win32-arm64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-win32-arm64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/html/scripts/npm/win32-ia32-msvc/package.json b/packages/html/scripts/npm/win32-ia32-msvc/package.json
index cade14b788..fafeef95fa 100644
--- a/packages/html/scripts/npm/win32-ia32-msvc/package.json
+++ b/packages/html/scripts/npm/win32-ia32-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-win32-ia32-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/html/scripts/npm/win32-x64-msvc/package.json b/packages/html/scripts/npm/win32-x64-msvc/package.json
index 5b6b07a125..4f26ffde27 100644
--- a/packages/html/scripts/npm/win32-x64-msvc/package.json
+++ b/packages/html/scripts/npm/win32-x64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/html-win32-x64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/minifier/package.json b/packages/minifier/package.json
index a73fc2b5d9..4900a70ed4 100644
--- a/packages/minifier/package.json
+++ b/packages/minifier/package.json
@@ -1,6 +1,6 @@
 {
     "name": "@swc/minifier",
-    "version": "1.7.38-nightly-20241021.1",
+    "version": "1.7.39",
     "description": "Super-fast alternative for terser",
     "homepage": "https://swc.rs",
     "main": "./index.js",
diff --git a/packages/minifier/scripts/npm/darwin-arm64/package.json b/packages/minifier/scripts/npm/darwin-arm64/package.json
index c4d2744d9b..343b9e0110 100644
--- a/packages/minifier/scripts/npm/darwin-arm64/package.json
+++ b/packages/minifier/scripts/npm/darwin-arm64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-darwin-arm64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/minifier/scripts/npm/darwin-x64/package.json b/packages/minifier/scripts/npm/darwin-x64/package.json
index 785ad2e41e..f9833d37a0 100644
--- a/packages/minifier/scripts/npm/darwin-x64/package.json
+++ b/packages/minifier/scripts/npm/darwin-x64/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-darwin-x64",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "darwin"
   ],
diff --git a/packages/minifier/scripts/npm/linux-arm-gnueabihf/package.json b/packages/minifier/scripts/npm/linux-arm-gnueabihf/package.json
index 7a721c02a2..b7a093c9d2 100644
--- a/packages/minifier/scripts/npm/linux-arm-gnueabihf/package.json
+++ b/packages/minifier/scripts/npm/linux-arm-gnueabihf/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-linux-arm-gnueabihf",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/minifier/scripts/npm/linux-arm64-gnu/package.json b/packages/minifier/scripts/npm/linux-arm64-gnu/package.json
index 9115105eb6..38997cd368 100644
--- a/packages/minifier/scripts/npm/linux-arm64-gnu/package.json
+++ b/packages/minifier/scripts/npm/linux-arm64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-linux-arm64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/minifier/scripts/npm/linux-arm64-musl/package.json b/packages/minifier/scripts/npm/linux-arm64-musl/package.json
index 287ab56087..b78d38ec9e 100644
--- a/packages/minifier/scripts/npm/linux-arm64-musl/package.json
+++ b/packages/minifier/scripts/npm/linux-arm64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-linux-arm64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/minifier/scripts/npm/linux-x64-gnu/package.json b/packages/minifier/scripts/npm/linux-x64-gnu/package.json
index e253e50d53..2abb996065 100644
--- a/packages/minifier/scripts/npm/linux-x64-gnu/package.json
+++ b/packages/minifier/scripts/npm/linux-x64-gnu/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-linux-x64-gnu",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/minifier/scripts/npm/linux-x64-musl/package.json b/packages/minifier/scripts/npm/linux-x64-musl/package.json
index 9f7dba60b7..f055d085fb 100644
--- a/packages/minifier/scripts/npm/linux-x64-musl/package.json
+++ b/packages/minifier/scripts/npm/linux-x64-musl/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-linux-x64-musl",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "linux"
   ],
diff --git a/packages/minifier/scripts/npm/win32-arm64-msvc/package.json b/packages/minifier/scripts/npm/win32-arm64-msvc/package.json
index 43f0f53d75..4946ecda65 100644
--- a/packages/minifier/scripts/npm/win32-arm64-msvc/package.json
+++ b/packages/minifier/scripts/npm/win32-arm64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-win32-arm64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/minifier/scripts/npm/win32-ia32-msvc/package.json b/packages/minifier/scripts/npm/win32-ia32-msvc/package.json
index f8c75cd627..4fdf249d74 100644
--- a/packages/minifier/scripts/npm/win32-ia32-msvc/package.json
+++ b/packages/minifier/scripts/npm/win32-ia32-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-win32-ia32-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],
diff --git a/packages/minifier/scripts/npm/win32-x64-msvc/package.json b/packages/minifier/scripts/npm/win32-x64-msvc/package.json
index 39a8b02d3a..1d96bbdacd 100644
--- a/packages/minifier/scripts/npm/win32-x64-msvc/package.json
+++ b/packages/minifier/scripts/npm/win32-x64-msvc/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@swc/minifier-win32-x64-msvc",
-  "version": "1.7.38-nightly-20241021.1",
+  "version": "1.7.39",
   "os": [
     "win32"
   ],


Test patch:
diff --git a/crates/swc/tests/projects.rs b/crates/swc/tests/projects.rs
index 7a3b568c85..eda7252199 100644
--- a/crates/swc/tests/projects.rs
+++ b/crates/swc/tests/projects.rs
@@ -601,6 +601,15 @@ fn issue_1203() {
     assert!(!f.contains("return //"))
 }
 
+#[test]
+fn issue_9663() {
+    let f = file("tests/projects/issue-9663/input.js").unwrap();
+    println!("{}", f);
+
+    assert!(f.contains("set = Reflect.set"));
+    assert!(!f.contains("function set1("));
+}
+
 #[test]
 fn codegen_1() {
     let f = file("tests/projects/codegen-1/input.js").unwrap();
diff --git a/crates/swc/tests/projects/issue-9663/.swcrc b/crates/swc/tests/projects/issue-9663/.swcrc
new file mode 100644
index 0000000000..744ceb040b
--- /dev/null
+++ b/crates/swc/tests/projects/issue-9663/.swcrc
@@ -0,0 +1,9 @@
+{
+    "jsc": {
+        "parser": {
+            "syntax": "ecmascript"
+        },
+        "externalHelpers": false,
+        "target": "es5"
+    }
+}
\ No newline at end of file
diff --git a/crates/swc/tests/projects/issue-9663/input.js b/crates/swc/tests/projects/issue-9663/input.js
new file mode 100644
index 0000000000..56968e3011
--- /dev/null
+++ b/crates/swc/tests/projects/issue-9663/input.js
@@ -0,0 +1,15 @@
+class A {
+    world = false
+}
+
+eval("hello")
+
+class B extends A {
+    set hello(v) {
+        super.world = v
+    }
+
+    get hello() {
+        return super.world
+    }
+}
\ No newline at end of file