From 68ffc5bc3e676340cda1ee76265e12420d52473e Mon Sep 17 00:00:00 2001 From: magic-akari Date: Sun, 13 Nov 2022 16:41:48 +0800 Subject: [PATCH] fix(es/utils): Verify the name of an alias (#6423) --- crates/swc/tests/fixture/issues-6xxx/6420/input/input.js | 1 + crates/swc/tests/fixture/issues-6xxx/6420/output/input.js | 2 ++ crates/swc_ecma_utils/src/lib.rs | 4 ++++ 3 files changed, 7 insertions(+) create mode 100644 crates/swc/tests/fixture/issues-6xxx/6420/input/input.js create mode 100644 crates/swc/tests/fixture/issues-6xxx/6420/output/input.js diff --git a/crates/swc/tests/fixture/issues-6xxx/6420/input/input.js b/crates/swc/tests/fixture/issues-6xxx/6420/input/input.js new file mode 100644 index 000000000000..4ed1bce29cfe --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6420/input/input.js @@ -0,0 +1 @@ +const test = req.headers["test-dash"] ?? req.headers["test-dash-2"]; \ No newline at end of file diff --git a/crates/swc/tests/fixture/issues-6xxx/6420/output/input.js b/crates/swc/tests/fixture/issues-6xxx/6420/output/input.js new file mode 100644 index 000000000000..ad9276b44dea --- /dev/null +++ b/crates/swc/tests/fixture/issues-6xxx/6420/output/input.js @@ -0,0 +1,2 @@ +var _req_headers_testdash; +var test = (_req_headers_testdash = req.headers["test-dash"]) !== null && _req_headers_testdash !== void 0 ? _req_headers_testdash : req.headers["test-dash-2"]; diff --git a/crates/swc_ecma_utils/src/lib.rs b/crates/swc_ecma_utils/src/lib.rs index 8261637b0a3b..66886fbadbb3 100644 --- a/crates/swc_ecma_utils/src/lib.rs +++ b/crates/swc_ecma_utils/src/lib.rs @@ -1964,6 +1964,10 @@ pub fn alias_ident_for(expr: &Expr, default: &str) -> Ident { let mut sym = sym(expr).unwrap_or_else(|| default.to_string()); + if let Err(s) = Ident::verify_symbol(&sym) { + sym = s; + } + if !sym.starts_with('_') { sym = format!("_{}", sym) }