From 4ab3c58f6aaf8a5f20432ba9e85aa4c5a483223d Mon Sep 17 00:00:00 2001 From: LongYinan Date: Tue, 11 Aug 2020 00:58:45 +0800 Subject: [PATCH] Strip TypeScript class properties without value assigned (#956) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 강동윤 --- ecmascript/transforms/Cargo.toml | 2 +- ecmascript/transforms/src/compat/es2020/class_properties.rs | 4 +++- ecmascript/transforms/tests/typescript_strip.rs | 3 +++ package.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/ecmascript/transforms/Cargo.toml b/ecmascript/transforms/Cargo.toml index 03b39d0ee7d..bd91ecee8b4 100644 --- a/ecmascript/transforms/Cargo.toml +++ b/ecmascript/transforms/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "swc_ecma_transforms" -version = "0.19.3" +version = "0.19.4" authors = ["강동윤 "] license = "Apache-2.0/MIT" repository = "https://github.com/swc-project/swc.git" diff --git a/ecmascript/transforms/src/compat/es2020/class_properties.rs b/ecmascript/transforms/src/compat/es2020/class_properties.rs index efca70a670c..d0a659e8edc 100644 --- a/ecmascript/transforms/src/compat/es2020/class_properties.rs +++ b/ecmascript/transforms/src/compat/es2020/class_properties.rs @@ -388,6 +388,8 @@ impl ClassProperties { } }; + let assigned_value = prop.value.is_some(); + let value = prop.value.unwrap_or_else(|| undefined(prop_span)); let value = if prop.is_static { value @@ -427,7 +429,7 @@ impl ClassProperties { } .into_stmt(), ); - } else { + } else if assigned_value { constructor_exprs.push(Box::new(Expr::Assign(AssignExpr { span: DUMMY_SP, left: (PatOrExpr::Expr(Box::new( diff --git a/ecmascript/transforms/tests/typescript_strip.rs b/ecmascript/transforms/tests/typescript_strip.rs index 296cb10970d..dd1f5921c68 100644 --- a/ecmascript/transforms/tests/typescript_strip.rs +++ b/ecmascript/transforms/tests/typescript_strip.rs @@ -762,6 +762,9 @@ test!( "class A extends B { foo = 'foo' b = this.a; + + declare1 + declare2!: string constructor(private readonly a: string, readonly c, private d: number = 1) { super() diff --git a/package.json b/package.json index 6577c998c3e..84eae446463 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@swc/core", - "version": "1.2.17", + "version": "1.2.18", "description": "Super-fast alternative for babel", "main": "./index.js", "author": "강동윤 ",