diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cba6258..d7c6567 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,8 @@ jobs: - name: Ensure code generation same if: matrix.config.kind == 'test_debug' run: | - cargo install cargo-clone --version 1.1.0 + # lock this so it works on Rust 1.65 + cargo install cargo-clone --version 1.1.0 --locked chmod +x ./scripts/generate.ts ./scripts/generate.ts echo Checking for git changes... diff --git a/Cargo.lock b/Cargo.lock index 9119bd0..dc26a95 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,9 +69,9 @@ checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "cc" @@ -625,9 +625,9 @@ dependencies = [ [[package]] name = "swc_atoms" -version = "0.5.9" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f54563d7dcba626d4acfe14ed12def7ecc28e004debe3ecd2c3ee07cc47e449" +checksum = "ebf7a12229f0c0efb654a6a0f8cbfd94fbd320a57c764857a82d8abe9342b450" dependencies = [ "once_cell", "rustc-hash", @@ -639,9 +639,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.32.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cb7fcd56655c8ae7dcf2344f0be6cbff4d9c7cb401fe3ec8e56e1de8dfe582" +checksum = "490e199e25d2aa3fbef675524fa81408651f4e7178b51110470ddd1b3e3bbe75" dependencies = [ "ast_node", "better_scoped_tls", @@ -666,9 +666,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.109.0" +version = "0.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc2286cedd688a68f214faa1c19bb5cceab7c9c54d0cbe3273e4c1704e38f69" +checksum = "5cbbf9918976a7e7fbdb4f76fe659d08e291a8b56b524b424183fc67d1189679" dependencies = [ "bitflags 2.3.3", "is-macro", @@ -682,9 +682,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.139.0" +version = "0.141.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eab46cb863bc5cd61535464e07e5b74d5f792fa26a27b9f6fd4c8daca9903b7" +checksum = "a26e535c623db7beb04ba8ebfa821c287b72a23f9fb523990b54db6c1355c990" dependencies = [ "either", "num-bigint", diff --git a/rs-lib/Cargo.toml b/rs-lib/Cargo.toml index 8ce3c5a..aed2af7 100644 --- a/rs-lib/Cargo.toml +++ b/rs-lib/Cargo.toml @@ -14,13 +14,13 @@ sourcemap = ["swc_common/sourcemap"] view = [] [dependencies] -bumpalo = "3.13.0" +bumpalo = "3.14.0" num-bigint = "0.4" rustc-hash = "1.1.0" -swc_atoms = "0.5.9" -swc_common = "0.32.0" -swc_ecma_ast = "0.109.0" -swc_ecma_parser = "0.139.0" +swc_atoms = "0.6.0" +swc_common = "0.33.0" +swc_ecma_ast = "0.110.0" +swc_ecma_parser = "0.141.1" text_lines = "0.6.0" [dev-dependencies] diff --git a/rs-lib/src/view/generated.rs b/rs-lib/src/view/generated.rs index 9dfbe0a..e3d2dc9 100644 --- a/rs-lib/src/view/generated.rs +++ b/rs-lib/src/view/generated.rs @@ -12224,7 +12224,7 @@ fn set_parent_for_getter_prop<'a>(node: &GetterProp<'a>, parent: Node<'a>) { /// A complete identifier with span. /// /// Identifier of swc consists of two parts. The first one is symbol, which is -/// stored using an interned string, [JsWord] . The second +/// stored using an interned string, [Atom] . The second /// one is [SyntaxContext][swc_common::SyntaxContext], which can be /// used to distinguish identifier with same symbol. /// @@ -12257,7 +12257,7 @@ fn set_parent_for_getter_prop<'a>(node: &GetterProp<'a>, parent: Node<'a>) { /// /// Thanks to the `tag` we attached, we can now distinguish them. /// -/// ([JsWord], [SyntaxContext]) +/// ([Atom], [SyntaxContext]) /// /// See [Id], which is a type alias for this. /// @@ -12282,7 +12282,7 @@ impl<'a> Ident<'a> { self.parent.get().unwrap() } - pub fn sym(&self) -> &swc_atoms::JsWord { + pub fn sym(&self) -> &swc_atoms::Atom { &self.inner.sym } @@ -16518,7 +16518,7 @@ impl<'a> Str<'a> { self.parent.get().unwrap() } - pub fn value(&self) -> &swc_atoms::JsWord { + pub fn value(&self) -> &swc_atoms::Atom { &self.inner.value } diff --git a/scripts/generate.ts b/scripts/generate.ts index 049f2a8..238aef5 100755 --- a/scripts/generate.ts +++ b/scripts/generate.ts @@ -1,24 +1,39 @@ #!/usr/bin/env -S deno run -A -import $ from "https://deno.land/x/dax@0.21.0/mod.ts"; +import $ from "https://deno.land/x/dax@0.35.0/mod.ts"; + +$.setPrintCommand(true); + +const root = $.path(import.meta).join("../../").resolve(); if (!Deno.args.some(a => a === "--quick")) { const swcVersions = await getSwcVersions(); $.logStep("Setting up crates. Note: Provide --quick to just code generate."); $.logStep(`Setting up swc_ecma_ast ${swcVersions.swcEcmaAst}...`); - await $.fs.emptyDir("swc_ecma_ast"); + const astDir = root.join("swc_ecma_ast"); + astDir.emptyDirSync(); + await $`cargo clone --version`; await $`cargo clone swc_ecma_ast@${swcVersions.swcEcmaAst}`; + // force using an old version of the regex crate that works in Rust 1.65 + const cargoFile = astDir.join("Cargo.toml"); + cargoFile.writeTextSync( + cargoFile.readTextSync() + + "[dependencies.regex]\nversion = \"=1.5.5\"\n", + ); await $`cd swc_ecma_ast ; cargo rustdoc -- --output-format json -Z unstable-options`; - await $.fs.copy("swc_ecma_ast/target/doc/swc_ecma_ast.json", "swc_ecma_ast.json", { overwrite: true }); + astDir.join("target/doc/swc_ecma_ast.json") + .copyFileSync(root.join("swc_ecma_ast.json")); $.logStep(`Setting up swc_ecma_parser ${swcVersions.swcEcmaParser}...`); - await $.fs.emptyDir("swc_ecma_parser"); + const parserDir = root.join("swc_ecma_parser"); + parserDir.emptyDirSync(); await $`cargo clone swc_ecma_parser@${swcVersions.swcEcmaParser}`; // generate these files to make cargo happy - await $.fs.ensureFile("swc_ecma_parser/benches/compare/main.rs"); - await $.fs.ensureFile("swc_ecma_parser/benches/parser/main.rs"); - await $.fs.ensureFile("swc_ecma_parser/benches/lexer/main.rs"); + parserDir.join("benches/compare/main.rs").ensureFileSync(); + parserDir.join("benches/parser/main.rs").ensureFileSync(); + parserDir.join("benches/lexer/main.rs").ensureFileSync(); await $`cd swc_ecma_parser ; cargo rustdoc -- --output-format json -Z unstable-options`; - await $.fs.copy("swc_ecma_parser/target/doc/swc_ecma_parser.json", "swc_ecma_parser.json", { overwrite: true }); + parserDir.join("target/doc/swc_ecma_parser.json") + .copyFileSync(root.join("swc_ecma_parser.json")); } $.logStep("Generating", "code...");