diff --git a/crates/swc/tests/fixture/issues-9xxx/9110/input/.swcrc b/crates/swc/tests/fixture/issues-9xxx/9110/input/.swcrc new file mode 100644 index 000000000000..ed708c9e4d78 --- /dev/null +++ b/crates/swc/tests/fixture/issues-9xxx/9110/input/.swcrc @@ -0,0 +1,31 @@ +{ + "module": { + "type": "es6", + "strictMode": true, + "noInterop": false + }, + "jsc": { + "externalHelpers": false, + "target": "es2017", + "parser": { + "syntax": "typescript", + "tsx": true, + "decorators": true, + "dynamicImport": true + }, + "transform": { + "legacyDecorator": true, + "decoratorMetadata": false, + "react": { + "throwIfNamespace": false, + "useBuiltins": false, + "pragma": "React.createElement", + "pragmaFrag": "React.Fragment", + "importSource": "react", + "runtime": "automatic" + } + }, + "keepClassNames": true, + "paths": {}, + } +} \ No newline at end of file diff --git a/crates/swc/tests/fixture/issues-9xxx/9110/input/1.js b/crates/swc/tests/fixture/issues-9xxx/9110/input/1.js new file mode 100644 index 000000000000..57750c1e14f3 --- /dev/null +++ b/crates/swc/tests/fixture/issues-9xxx/9110/input/1.js @@ -0,0 +1,3 @@ +const createFragment = (key: { name: string }): JSX.Element => ( + <>Key Name: {key.name ?? "None"} +); \ No newline at end of file diff --git a/crates/swc/tests/fixture/issues-9xxx/9110/output/1.js b/crates/swc/tests/fixture/issues-9xxx/9110/output/1.js new file mode 100644 index 000000000000..48d9d30bfd47 --- /dev/null +++ b/crates/swc/tests/fixture/issues-9xxx/9110/output/1.js @@ -0,0 +1,10 @@ +const { jsxs: _jsxs, Fragment: _Fragment } = require("react/jsx-runtime"); +const createFragment = (key)=>{ + var _key_name; + return /*#__PURE__*/ _jsxs(_Fragment, { + children: [ + "Key Name: ", + (_key_name = key.name) !== null && _key_name !== void 0 ? _key_name : "None" + ] + }); +}; diff --git a/crates/swc_ecma_compat_es2020/src/nullish_coalescing.rs b/crates/swc_ecma_compat_es2020/src/nullish_coalescing.rs index 66240fb3dd18..c4b14e5113e8 100644 --- a/crates/swc_ecma_compat_es2020/src/nullish_coalescing.rs +++ b/crates/swc_ecma_compat_es2020/src/nullish_coalescing.rs @@ -1,7 +1,7 @@ use std::mem::take; use serde::Deserialize; -use swc_common::{util::take::Take, Span, Spanned, DUMMY_SP}; +use swc_common::{util::take::Take, Span, DUMMY_SP}; use swc_ecma_ast::*; use swc_ecma_utils::{alias_ident_for_simple_assign_tatget, alias_if_required, StmtLike}; use swc_ecma_visit::{as_folder, noop_visit_mut_type, Fold, VisitMut, VisitMutWith}; @@ -192,7 +192,6 @@ impl VisitMut for NullishCoalescing { if let BlockStmtOrExpr::Expr(expr) = n { // expr // { var decl = init; return expr; } - let span = expr.span(); let stmts = vec![ VarDecl { span: DUMMY_SP, @@ -206,7 +205,10 @@ impl VisitMut for NullishCoalescing { arg: Some(expr.take()), }), ]; - *n = BlockStmtOrExpr::BlockStmt(BlockStmt { span, stmts }); + *n = BlockStmtOrExpr::BlockStmt(BlockStmt { + span: DUMMY_SP, + stmts, + }); } }