From f977048da5828448368eca352c9b4e35dd1c2ec4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Thu, 27 Feb 2025 15:07:58 +0900 Subject: [PATCH 1/4] fix --- .../swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs b/crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs index 12c04940cf0e..02f880bc6bae 100644 --- a/crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs +++ b/crates/swc_ecma_transforms_proposal/src/decorators/legacy/mod.rs @@ -224,6 +224,10 @@ impl Visit for TscDecorator { .map(|member| member.init.as_ref()) .map(|init| match init { Some(e) => match &**e { + Expr::Unary(UnaryExpr { + op: op!(unary, "-"), + .. + }) => EnumKind::Num, Expr::Lit(lit) => match lit { Lit::Str(_) => EnumKind::Str, Lit::Num(_) => EnumKind::Num, From f0c59979e435d17c6f867642d6d0a6bac279ba82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Thu, 27 Feb 2025 15:08:52 +0900 Subject: [PATCH 2/4] Add a test --- .../fixture/issues-10xxx/10094/input/.swcrc | 23 +++++++++++++++++++ .../fixture/issues-10xxx/10094/input/1.ts | 19 +++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 crates/swc/tests/fixture/issues-10xxx/10094/input/.swcrc create mode 100644 crates/swc/tests/fixture/issues-10xxx/10094/input/1.ts diff --git a/crates/swc/tests/fixture/issues-10xxx/10094/input/.swcrc b/crates/swc/tests/fixture/issues-10xxx/10094/input/.swcrc new file mode 100644 index 000000000000..c27d03c2beeb --- /dev/null +++ b/crates/swc/tests/fixture/issues-10xxx/10094/input/.swcrc @@ -0,0 +1,23 @@ +{ + "jsc": { + "parser": { + "syntax": "typescript", + "decorators": true, + "tsx": false + }, + "target": "es2022", + "loose": false, + "minify": { + "compress": false, + "mangle": false + }, + "transform": { + "decoratorMetadata": true + } + }, + "module": { + "type": "es6" + }, + "minify": false, + "isModule": true +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/issues-10xxx/10094/input/1.ts b/crates/swc/tests/fixture/issues-10xxx/10094/input/1.ts new file mode 100644 index 000000000000..38baba2b319d --- /dev/null +++ b/crates/swc/tests/fixture/issues-10xxx/10094/input/1.ts @@ -0,0 +1,19 @@ +enum NegativeStatus { + open = -1, + close = 3, +} + +enum Status { + open = 1, + close = 2, +} + +function prop() { } + +class A { + @prop() + negativeStatus: NegativeStatus; + + @prop() + status: Status; +} \ No newline at end of file From 7342c6accdb9c04ac514c20e65803519fcb36789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Thu, 27 Feb 2025 15:09:15 +0900 Subject: [PATCH 3/4] Update test refs --- .../fixture/issues-10xxx/10094/output/1.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 crates/swc/tests/fixture/issues-10xxx/10094/output/1.ts diff --git a/crates/swc/tests/fixture/issues-10xxx/10094/output/1.ts b/crates/swc/tests/fixture/issues-10xxx/10094/output/1.ts new file mode 100644 index 000000000000..06ab825ea766 --- /dev/null +++ b/crates/swc/tests/fixture/issues-10xxx/10094/output/1.ts @@ -0,0 +1,25 @@ +var _ts_decorate = require("@swc/helpers/_/_ts_decorate"); +var _ts_metadata = require("@swc/helpers/_/_ts_metadata"); +var NegativeStatus = /*#__PURE__*/ function(NegativeStatus) { + NegativeStatus[NegativeStatus["open"] = -1] = "open"; + NegativeStatus[NegativeStatus["close"] = 3] = "close"; + return NegativeStatus; +}(NegativeStatus || {}); +var Status = /*#__PURE__*/ function(Status) { + Status[Status["open"] = 1] = "open"; + Status[Status["close"] = 2] = "close"; + return Status; +}(Status || {}); +function prop() {} +class A { + negativeStatus; + status; +} +_ts_decorate._([ + prop(), + _ts_metadata._("design:type", Number) +], A.prototype, "negativeStatus", void 0); +_ts_decorate._([ + prop(), + _ts_metadata._("design:type", Number) +], A.prototype, "status", void 0); From 8866f243a6591dc349a429a19405960998d06f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Donny/=EA=B0=95=EB=8F=99=EC=9C=A4?= Date: Thu, 27 Feb 2025 15:11:13 +0900 Subject: [PATCH 4/4] Create three-coins-eat.md --- .changeset/three-coins-eat.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/three-coins-eat.md diff --git a/.changeset/three-coins-eat.md b/.changeset/three-coins-eat.md new file mode 100644 index 000000000000..f47ca17b8f8e --- /dev/null +++ b/.changeset/three-coins-eat.md @@ -0,0 +1,6 @@ +--- +swc_core: patch +swc_ecma_transforms_proposal: patch +--- + +fix(es/decorators): Support negative numbers