diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2022-01-04 17:02:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-04 17:02:56 -0500 |
commit | 19c8cd3a457b58bc62a6e0223ff78208a73d9435 (patch) | |
tree | 149bbd0cda5d0d0f1a4229f30937b950c4242d04 /cli/ast | |
parent | b46da660563b175722937d9f29d45029bd6a0a74 (diff) |
fix: upgrade swc_ecmascript to 0.103 (#13284)
Diffstat (limited to 'cli/ast')
-rw-r--r-- | cli/ast/mod.rs | 55 | ||||
-rw-r--r-- | cli/ast/transforms.rs | 27 |
2 files changed, 36 insertions, 46 deletions
diff --git a/cli/ast/mod.rs b/cli/ast/mod.rs index 80cbd5c4b..b089d5421 100644 --- a/cli/ast/mod.rs +++ b/cli/ast/mod.rs @@ -602,8 +602,7 @@ mod tests { #[test] fn test_transpile() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.ts") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.ts").unwrap(); let source = r#" enum D { A, @@ -637,24 +636,21 @@ export class A { scope_analysis: false, }) .unwrap(); - let (code, maybe_map) = transpile(&module, &EmitOptions::default()) - .expect("could not strip types"); + let (code, maybe_map) = + transpile(&module, &EmitOptions::default()).unwrap(); let expected_text = r#"var D; (function(D) { D[D["A"] = 0] = "A"; D[D["B"] = 1] = "B"; -})(D || (D = { -})); +})(D || (D = {})); var N; (function(N1) { let D; (function(D) { D["A"] = "value"; - })(D = N1.D || (N1.D = { - })); - N1.Value = 5; -})(N || (N = { -})); + })(D = N1.D || (N1.D = {})); + var Value = N1.Value = 5; +})(N || (N = {})); export class A { d; b; @@ -677,8 +673,7 @@ export class A { #[test] fn test_transpile_tsx() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.ts") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.ts").unwrap(); let source = r#" export class A { render() { @@ -694,16 +689,14 @@ export class A { maybe_syntax: None, scope_analysis: true, // ensure scope analysis doesn't conflict with a second resolver pass }) - .expect("could not parse module"); - let (code, _) = transpile(&module, &EmitOptions::default()) - .expect("could not strip types"); + .unwrap(); + let (code, _) = transpile(&module, &EmitOptions::default()).unwrap(); assert!(code.contains("React.createElement(\"div\", null")); } #[test] fn test_transpile_jsx_pragma() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.ts") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.ts").unwrap(); let source = r#" /** @jsx h */ /** @jsxFrag Fragment */ @@ -733,8 +726,7 @@ function App() { #[test] fn test_transpile_jsx_import_source_pragma() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx").unwrap(); let source = r#" /** @jsxImportSource jsx_lib */ @@ -756,8 +748,7 @@ function App() { let expected = r#"import { jsx as _jsx, Fragment as _Fragment } from "jsx_lib/jsx-runtime"; /** @jsxImportSource jsx_lib */ function App() { return(/*#__PURE__*/ _jsx("div", { - children: /*#__PURE__*/ _jsx(_Fragment, { - }) + children: /*#__PURE__*/ _jsx(_Fragment, {}) })); "#; assert_eq!(&code[..expected.len()], expected); @@ -765,8 +756,7 @@ function App() { #[test] fn test_transpile_jsx_import_source_no_pragma() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx").unwrap(); let source = r#" function App() { return ( @@ -791,8 +781,7 @@ function App() { let expected = r#"import { jsx as _jsx, Fragment as _Fragment } from "jsx_lib/jsx-runtime"; function App() { return(/*#__PURE__*/ _jsx("div", { - children: /*#__PURE__*/ _jsx(_Fragment, { - }) + children: /*#__PURE__*/ _jsx(_Fragment, {}) })); } "#; @@ -802,8 +791,7 @@ function App() { // TODO(@kitsonk) https://github.com/swc-project/swc/issues/2656 // #[test] // fn test_transpile_jsx_import_source_no_pragma_dev() { - // let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx") - // .expect("could not resolve specifier"); + // let specifier = resolve_url_or_path("https://deno.land/x/mod.tsx").unwrap(); // let source = r#" // function App() { // return ( @@ -839,8 +827,7 @@ function App() { #[test] fn test_transpile_decorators() { - let specifier = resolve_url_or_path("https://deno.land/x/mod.ts") - .expect("could not resolve specifier"); + let specifier = resolve_url_or_path("https://deno.land/x/mod.ts").unwrap(); let source = r#" function enumerable(value: boolean) { return function ( @@ -867,9 +854,8 @@ function App() { maybe_syntax: None, scope_analysis: false, }) - .expect("could not parse module"); - let (code, _) = transpile(&module, &EmitOptions::default()) - .expect("could not strip types"); + .unwrap(); + let (code, _) = transpile(&module, &EmitOptions::default()).unwrap(); assert!(code.contains("_applyDecoratedDescriptor(")); } @@ -903,8 +889,7 @@ export function g() { let (code, _) = transpile(&module, &emit_options).unwrap(); let expected = r#"export function g() { let algorithm; - algorithm = { - }; + algorithm = {}; return test(algorithm, false, keyUsages); }"#; assert_eq!(&code[..expected.len()], expected); diff --git a/cli/ast/transforms.rs b/cli/ast/transforms.rs index ba8af59af..a89edc01d 100644 --- a/cli/ast/transforms.rs +++ b/cli/ast/transforms.rs @@ -50,7 +50,10 @@ impl Fold for DownlevelImportsFolder { ImportSpecifier::Named(specifier) => { Some(match specifier.imported.as_ref() { Some(name) => create_key_value( - name.sym.to_string(), + match name { + ModuleExportName::Ident(ident) => ident.sym.to_string(), + ModuleExportName::Str(str) => str.value.to_string(), + }, specifier.local.sym.to_string(), ), None => create_assignment(specifier.local.sym.to_string()), @@ -200,10 +203,12 @@ fn create_ident(name: String) -> swc_ast::Ident { fn create_key_value(key: String, value: String) -> swc_ast::ObjectPatProp { swc_ast::ObjectPatProp::KeyValue(swc_ast::KeyValuePatProp { - key: swc_ast::PropName::Ident(swc_ast::Ident { + // use a string literal because it will work in more scenarios than an identifier + key: swc_ast::PropName::Str(swc_ast::Str { span: DUMMY_SP, - sym: key.into(), - optional: false, + value: key.into(), + has_escape: false, + kind: swc_ast::StrKind::Synthesized, }), value: Box::new(swc_ast::Pat::Ident(swc_ast::BindingIdent { id: swc_ast::Ident { @@ -320,7 +325,7 @@ mod test { test_transform( DownlevelImportsFolder, r#"import mod from "./mod.ts";"#, - r#"const { default: mod } = await import("./mod.ts");"#, + r#"const { "default": mod } = await import("./mod.ts");"#, ); } @@ -341,7 +346,7 @@ mod test { test_transform( DownlevelImportsFolder, r#"import { A as LocalA, B, C as LocalC } from "./mod.ts";"#, - r#"const { A: LocalA , B , C: LocalC } = await import("./mod.ts");"#, + r#"const { "A": LocalA , B , "C": LocalC } = await import("./mod.ts");"#, ); } @@ -359,13 +364,13 @@ mod test { test_transform( DownlevelImportsFolder, r#"import myDefault, { A, B as LocalB } from "./mod.ts";"#, - r#"const { default: myDefault , A , B: LocalB } = await import("./mod.ts");"#, + r#"const { "default": myDefault , A , "B": LocalB } = await import("./mod.ts");"#, ); test_transform( DownlevelImportsFolder, r#"import myDefault, * as mod from "./mod.ts";"#, - r#"const { default: myDefault } = await import("./mod.ts"), mod = await import("./mod.ts");"#, + r#"const { "default": myDefault } = await import("./mod.ts"), mod = await import("./mod.ts");"#, ); } @@ -374,7 +379,7 @@ mod test { test_transform( DownlevelImportsFolder, r#"import data from "./mod.json" assert { type: "json" };"#, - "const { default: data } = await import(\"./mod.json\", {\n assert: {\n type: \"json\"\n }\n});", + "const { \"default\": data } = await import(\"./mod.json\", {\n assert: {\n type: \"json\"\n }\n});", ); } @@ -433,7 +438,7 @@ mod test { test_transform( StripExportsFolder, "export default function test() {}", - "function test() {\n}", + "function test() {}", ); } @@ -455,7 +460,7 @@ mod test { test_transform( StripExportsFolder, "export function test() {}", - "function test() {\n}", + "function test() {}", ); test_transform(StripExportsFolder, "export enum Test {}", "enum Test {\n}"); |