From f1ff5edc429b0661d301546032e2255db211cec4 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Wed, 4 Jan 2023 18:54:54 -0500 Subject: [PATCH] fix: upgrade deno_ast to 0.23 (#17269) Closes #17172 Closes #15669 Closes #8529 --- .cargo/config.toml | 2 +- .dprint.json | 4 +- Cargo.lock | 151 ++++++++---------- Cargo.toml | 2 +- cli/Cargo.toml | 12 +- cli/js/40_testing.js | 4 +- cli/standalone.rs | 9 +- cli/tests/repl_tests.rs | 22 ++- .../testdata/fmt/fmt_check_parse_error.out | 8 +- cli/tests/testdata/lint/expected_json.out | 2 +- cli/tests/testdata/run/error_syntax.js.out | 3 + .../error_syntax_empty_trailing_line.mjs.out | 3 + .../testdata/run/swc_syntax_error.ts.out | 3 + cli/tests/watcher_tests.rs | 6 + cli/tools/fmt.rs | 15 +- cli/tools/repl/editor.rs | 8 + cli/tools/repl/session.rs | 5 +- ext/console/02_console.js | 2 +- 18 files changed, 145 insertions(+), 116 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index a2e0fc565f..10e4b295cc 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -7,7 +7,7 @@ rustflags = [ "target-feature=+crt-static", "-C", # increase the stack size to prevent swc overflowing the stack in debug - "link-arg=/STACK:2097152", + "link-arg=/STACK:3145728", ] [target.aarch64-apple-darwin] diff --git a/.dprint.json b/.dprint.json index d5c5ee3434..c455626cca 100644 --- a/.dprint.json +++ b/.dprint.json @@ -43,10 +43,10 @@ "tools/wpt/manifest.json" ], "plugins": [ - "https://plugins.dprint.dev/typescript-0.79.0.wasm", + "https://plugins.dprint.dev/typescript-0.80.2.wasm", "https://plugins.dprint.dev/json-0.17.0.wasm", "https://plugins.dprint.dev/markdown-0.15.1.wasm", "https://plugins.dprint.dev/toml-0.5.4.wasm", - "https://plugins.dprint.dev/exec-0.3.2.json@8efbbb3fcfbdf84142c3c438fbdeaf1637152a020032127c837b2b14e23261c3" + "https://plugins.dprint.dev/exec-0.3.5.json@d687dda57be0fe9a0088ccdaefa5147649ff24127d8b3ea227536c68ee7abeab" ] } diff --git a/Cargo.lock b/Cargo.lock index a46dd63586..4a97c9ef23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -753,15 +753,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d7439c3735f405729d52c3fbbe4de140eaf938a1fe47d227c27f8254d4302a5" -[[package]] -name = "debug_unreachable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3" -dependencies = [ - "unreachable", -] - [[package]] name = "deno" version = "1.29.1" @@ -848,9 +839,9 @@ dependencies = [ [[package]] name = "deno_ast" -version = "0.21.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e95105b29938cac5c987017a3c3d245776d71de77838658e5abe917ad75b1929" +checksum = "e51afb5385ac30f59a1f4a80c986b7b4f02a1bf9da8bba5173aed80ab75ad8bf" dependencies = [ "anyhow", "base64", @@ -978,9 +969,9 @@ dependencies = [ [[package]] name = "deno_doc" -version = "0.51.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5f0f24f690e9c0c1d22fe9c9da68b65d7378a5c10afe4a61398134eb031e21" +checksum = "5a4d646da7094c8c4005c1ecfeb9649a1f3875e5e964a1ecf6d44899c5692ebb" dependencies = [ "cfg-if", "deno_ast", @@ -996,14 +987,15 @@ dependencies = [ [[package]] name = "deno_emit" -version = "0.12.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c721cb4e2ca7d94702f6987c2050aedfd270d18f87020080e396865a65dd957e" +checksum = "33d7152339bef69b44316be53d6b34cf40718c3084a22565d729b4131c53f462" dependencies = [ "anyhow", "base64", "deno_ast", "deno_graph", + "escape8259", "futures", "parking_lot 0.11.2", ] @@ -1059,9 +1051,9 @@ dependencies = [ [[package]] name = "deno_graph" -version = "0.39.0" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87b3758993b62cf234fac6e922b2217aac6c3086d6d9a4fa36ddf7779abb0890" +checksum = "88980ad969ef1922782f4b19159bb3c46919e883292f1c71ddc3bcd8ba1a5a46" dependencies = [ "anyhow", "cfg-if", @@ -1073,7 +1065,6 @@ dependencies = [ "regex", "serde", "serde_json", - "sourcemap", "url", ] @@ -1104,9 +1095,9 @@ dependencies = [ [[package]] name = "deno_lint" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2c4e416322d10531eb0ebc6f3fa355380e4d25bbcd4109e3edd0b0aa71ed77" +checksum = "82424506123f05de694106aa906a20cd1aabde637213187cfb3c6f0eba794e4a" dependencies = [ "anyhow", "deno_ast", @@ -1456,9 +1447,9 @@ dependencies = [ [[package]] name = "dprint-plugin-typescript" -version = "0.79.0" +version = "0.80.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf79285ae7a27047ab90162fefab77367478e08fffc42f8158143f8b33b69c22" +checksum = "74eb3bfe4a29790f676d30159fca39ddd1450308185b2bd412517493d2449e52" dependencies = [ "anyhow", "deno_ast", @@ -1469,9 +1460,9 @@ dependencies = [ [[package]] name = "dprint-swc-ext" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ac3ba92d2cf3b87b8f48551d1720ff63a134545c830476aaffd8cf9d80e84e" +checksum = "ba1b7bac9133524358ec340b52b30a72df03c6252e327c22ad230637cc357306" dependencies = [ "bumpalo", "num-bigint", @@ -1639,10 +1630,19 @@ dependencies = [ ] [[package]] -name = "eszip" -version = "0.31.0" +name = "escape8259" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8119eb19b5b7f9c6b6da550781249bb05562fbdadb10f80f0a3afb96dde4944" +checksum = "ba4f4911e3666fcd7826997b4745c8224295a6f3072f1418c3067b97a67557ee" +dependencies = [ + "rustversion", +] + +[[package]] +name = "eszip" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "584906c722ca9751a4e1dd1fde7ca3387e2af2b4b3608e8d44bd29f22095a4a2" dependencies = [ "anyhow", "base64", @@ -1653,7 +1653,6 @@ dependencies = [ "serde_json", "sha2", "thiserror", - "tokio", "url", ] @@ -3727,6 +3726,12 @@ dependencies = [ "base64", ] +[[package]] +name = "rustversion" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" + [[package]] name = "rustyline" version = "10.0.0" @@ -4165,9 +4170,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "swc_atoms" -version = "0.4.23" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b878052680dcec3421ab50384279443dbf93651b05da38e5133e0894a18096" +checksum = "9ad59af21529fcd3f4f8fa6b1ae399c2b183ec42c68347d76d68d6e5b657956e" dependencies = [ "once_cell", "rustc-hash", @@ -4179,9 +4184,9 @@ dependencies = [ [[package]] name = "swc_bundler" -version = "0.192.45" +version = "0.193.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b3b6d8aba63acb7baf2d2b5aed930322259ccd8fcdc5f4e3ddefb9cff62bb1d" +checksum = "dc9c11d11591e011e4131febcc366fb0401446a5ac71813de08437237be43668" dependencies = [ "ahash", "anyhow", @@ -4211,17 +4216,17 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.29.10" +version = "0.29.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebd844dfbd9969a9ef8430e954661de43edde353d65e987f935a328619698883" +checksum = "506321cad7393893018aac83a3b3bd25203883e8c47ab0864bb43195d43b22dd" dependencies = [ "ahash", "ast_node", "better_scoped_tls", "cfg-if", - "debug_unreachable", "either", "from_variant", + "new_debug_unreachable", "num-bigint", "once_cell", "rustc-hash", @@ -4264,9 +4269,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.94.14" +version = "0.95.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3303de79adce1137e6514e5939686173e7d26c71d91c3067056caa45183547" +checksum = "3cc936f04c4e671ae5918b573a50945c5189d3dcdd57e4faddd47889717e1416" dependencies = [ "bitflags", "is-macro", @@ -4281,9 +4286,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.127.23" +version = "0.128.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cb696997765db4832aabc142cd0f95d38f3d746556d99ad0c7b06c68642d37a" +checksum = "121caf2dde74cbd143035a92cfd249be7744ee31622c4e66ee19a8249e3f6855" dependencies = [ "memchr", "num-bigint", @@ -4313,9 +4318,9 @@ dependencies = [ [[package]] name = "swc_ecma_dep_graph" -version = "0.94.19" +version = "0.95.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c1b4e4e7928d9d41fe951551edc19829c878c84df242b85320a4c950f3a7a24" +checksum = "42a9122bcff80fba41cadd123fc9136424755144de16dfabeee4031144d204a9" dependencies = [ "swc_atoms", "swc_common", @@ -4325,9 +4330,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.41.11" +version = "0.41.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0aac15ea4dfdceec8b04389f2d6ff27ea0f0d243aa89904e420a6d0a96e512" +checksum = "42710b93ec010a5e0354cc86d621a3dd0243351d649d0c273c1887035a256151" dependencies = [ "ahash", "anyhow", @@ -4339,9 +4344,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.122.19" +version = "0.123.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cec064f10003ea47bd5e97d6456a683643da9f705670b97eb1c90bc434f58f3" +checksum = "22225f792dcbcd3d3e77498d6e6fb86161cdd05ba4e24456361768dc41ee2948" dependencies = [ "either", "enum_kind", @@ -4358,9 +4363,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.111.33" +version = "0.112.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26e2a38941b0b8dee1ed90de0c7eb0d31e5370378d8747ee8d078c0d214ddcb8" +checksum = "44bc36990f42ceea1370426a2f3e923f43c4277342a8583edb4c4bef2f27e63d" dependencies = [ "better_scoped_tls", "bitflags", @@ -4380,9 +4385,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.100.32" +version = "0.101.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120315ca713614946d146e241b63657f6e327b35517af8f48ffc495fcd41fe7" +checksum = "7b247a889b92f088e5ecd66ccbdc5915a102d4d9f54823e9a93ec7344a1c080f" dependencies = [ "swc_atoms", "swc_common", @@ -4407,9 +4412,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "0.167.26" +version = "0.168.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a70f693c2f33d606453c6e4d701be809c59e12ddb0ff6c0afd3a6dc6ee41c940" +checksum = "f8d291756dcb423ea457c65ac463fbfd52d5917a7cda9ea4a097591afabe2ca5" dependencies = [ "ahash", "dashmap", @@ -4432,9 +4437,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.144.20" +version = "0.145.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ef43c950a86d2b577a011a3b665d084780bd5cdb9b28fcc5b41ba3a1b1592b2" +checksum = "d1850fce438ac6d3f31a1e4bcf8e385df7fe6603cb4a09d3a281472b2b937518" dependencies = [ "either", "serde", @@ -4451,9 +4456,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.155.21" +version = "0.156.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad10f89e09579dfe89b088db9ce864764e834f7bbb2a8e729b3803dbcc813b1" +checksum = "dd4b1e06d0c517dbc308d6ba9004c1d8bd3e271f2bff445ac2226536e3893e67" dependencies = [ "ahash", "base64", @@ -4477,9 +4482,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.159.22" +version = "0.160.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f72f7070b8184b2c6d682ce3481797c0045cbccac0f1b271e66b95d773bdd1" +checksum = "795677b92c36308ff444952aa1eb7ce041964f7f823dda69de406401b73e0d6e" dependencies = [ "serde", "swc_atoms", @@ -4493,13 +4498,14 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.105.24" +version = "0.106.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8efe8af0ab5c899bacba887f86dea3e47e477df041782d11bce91a22cec2a1f5" +checksum = "20675f180e890897386295825bb6297640f7843282410545479dce02ac98b563" dependencies = [ "indexmap", "num_cpus", "once_cell", + "rustc-hash", "swc_atoms", "swc_common", "swc_ecma_ast", @@ -4510,9 +4516,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.80.14" +version = "0.81.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47d7de36b60fb0f72b19417a988fe71c800d1a07071421720e469325990a5d7a" +checksum = "0ebf5de90444c90b1905b7618800a7572fc757faa8c90cc1c6031d1f6ca179df" dependencies = [ "num-bigint", "swc_atoms", @@ -4536,9 +4542,9 @@ dependencies = [ [[package]] name = "swc_fast_graph" -version = "0.17.11" +version = "0.17.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0262f3338afdf976e85290653b9170f4f3272e05f35c2bac3f2cecc8544f2" +checksum = "06584f28662339e1972d164d263b3bfacdc13e1acb5fbe6d568c132a4693034b" dependencies = [ "ahash", "indexmap", @@ -4548,9 +4554,9 @@ dependencies = [ [[package]] name = "swc_graph_analyzer" -version = "0.18.11" +version = "0.18.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "085d076c5cf0d27e1b1fedc73d6c356357b8d56e8e1750913906090ffa398e7d" +checksum = "2b052b885bcf22f52a0d279a88191f8df2787dca5105409998aa3890460c5e77" dependencies = [ "ahash", "auto_impl", @@ -5267,15 +5273,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "unreachable" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" -dependencies = [ - "void", -] - [[package]] name = "untrusted" version = "0.7.1" @@ -5353,12 +5350,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - [[package]] name = "vte" version = "0.11.0" diff --git a/Cargo.toml b/Cargo.toml index 0164a93654..b3e3a59be0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ repository = "https://github.com/denoland/deno" [workspace.dependencies] v8 = { version = "0.60.0", default-features = false } -deno_ast = { version = "0.21.0", features = ["transpiling"] } +deno_ast = { version = "0.23.2", features = ["transpiling"] } deno_core = { version = "0.164.0", path = "./core" } deno_ops = { version = "0.42.0", path = "./ops" } diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 2747e5333c..3724efe46a 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -44,10 +44,10 @@ winres.workspace = true [dependencies] deno_ast = { workspace = true, features = ["bundler", "cjs", "codegen", "dep_graph", "module_specifier", "proposal", "react", "sourcemap", "transforms", "typescript", "view", "visit"] } deno_core.workspace = true -deno_doc = "0.51.0" -deno_emit = "0.12.0" -deno_graph = "0.39.0" -deno_lint = { version = "0.35.0", features = ["docs"] } +deno_doc = "0.52.0" +deno_emit = "0.13.0" +deno_graph = "0.41.0" +deno_lint = { version = "0.37.0", features = ["docs"] } deno_runtime.workspace = true deno_task_shell = "0.8.1" napi_sym.workspace = true @@ -65,10 +65,10 @@ data-url.workspace = true dissimilar = "=1.0.4" dprint-plugin-json = "=0.17.0" dprint-plugin-markdown = "=0.15.1" -dprint-plugin-typescript = "=0.79.0" +dprint-plugin-typescript = "=0.80.2" encoding_rs.workspace = true env_logger = "=0.9.0" -eszip = "=0.31.0" +eszip = "=0.32.0" fancy-regex = "=0.10.0" flate2.workspace = true http.workspace = true diff --git a/cli/js/40_testing.js b/cli/js/40_testing.js index f4dcf8a915..43232ef90f 100644 --- a/cli/js/40_testing.js +++ b/cli/js/40_testing.js @@ -1069,7 +1069,7 @@ if (shuffle !== null) { // http://en.wikipedia.org/wiki/Linear_congruential_generator // Use BigInt for everything because the random seed is u64. - const nextInt = (function (state) { + const nextInt = function (state) { const m = 0x80000000n; const a = 1103515245n; const c = 12345n; @@ -1077,7 +1077,7 @@ return function (max) { return state = ((a * state + c) % m) % BigInt(max); }; - }(BigInt(shuffle))); + }(BigInt(shuffle)); for (let i = filtered.length - 1; i > 0; i--) { const j = nextInt(i); diff --git a/cli/standalone.rs b/cli/standalone.rs index cce4946941..b37df5191d 100644 --- a/cli/standalone.rs +++ b/cli/standalone.rs @@ -11,6 +11,9 @@ use deno_core::anyhow::anyhow; use deno_core::anyhow::Context; use deno_core::error::type_error; use deno_core::error::AnyError; +use deno_core::futures::io::AllowStdIo; +use deno_core::futures::AsyncReadExt; +use deno_core::futures::AsyncSeekExt; use deno_core::futures::FutureExt; use deno_core::located_script_name; use deno_core::serde::Deserialize; @@ -40,7 +43,6 @@ use std::iter::once; use std::pin::Pin; use std::rc::Rc; use std::sync::Arc; -use tokio::io::{AsyncReadExt, AsyncSeekExt}; #[derive(Deserialize, Serialize)] pub struct Metadata { @@ -74,9 +76,10 @@ pub async fn extract_standalone( ) -> Result, AnyError> { let current_exe_path = current_exe()?; - let file = tokio::fs::File::open(current_exe_path).await?; + let file = std::fs::File::open(current_exe_path)?; - let mut bufreader = tokio::io::BufReader::new(file); + let mut bufreader = + deno_core::futures::io::BufReader::new(AllowStdIo::new(file)); let trailer_pos = bufreader.seek(SeekFrom::End(-24)).await?; let mut trailer = [0; 24]; diff --git a/cli/tests/repl_tests.rs b/cli/tests/repl_tests.rs index 418ff00d62..7a13f7553e 100644 --- a/cli/tests/repl_tests.rs +++ b/cli/tests/repl_tests.rs @@ -52,17 +52,15 @@ mod repl { #[test] fn pty_unpaired_braces() { - util::with_pty(&["repl"], |mut console| { - console.write_line(")"); - console.write_line("]"); - console.write_line("}"); - console.write_line("close();"); + for right_brace in &[")", "]", "}"] { + util::with_pty(&["repl"], |mut console| { + console.write_line(right_brace); + console.write_line("close();"); - let output = console.read_all_output(); - assert_contains!(output, "Unexpected token `)`"); - assert_contains!(output, "Unexpected token `]`"); - assert_contains!(output, "Unexpected token `}`"); - }); + let output = console.read_all_output(); + assert_contains!(output, "Expression expected"); + }); + } } #[test] @@ -518,7 +516,7 @@ mod repl { None, false, ); - assert_contains!(out, "Unexpected token"); + assert_contains!(out, "Expression expected"); assert!(err.is_empty()); } } @@ -565,7 +563,7 @@ mod repl { Some(vec![("NO_COLOR".to_owned(), "1".to_owned())]), false, ); - assert_contains!(out, "Unexpected token `>`"); + assert_contains!(out, "Expression expected"); assert!(err.is_empty()); } diff --git a/cli/tests/testdata/fmt/fmt_check_parse_error.out b/cli/tests/testdata/fmt/fmt_check_parse_error.out index d9b918af7b..9854b6c976 100644 --- a/cli/tests/testdata/fmt/fmt_check_parse_error.out +++ b/cli/tests/testdata/fmt/fmt_check_parse_error.out @@ -1,6 +1,6 @@ -Error checking: [WILDCARD] - Line 2, column 7: Expected '{', got '' +Error checking: [WILDCARD]parse_error.ts + Expected '{', got '' at [WILDCARD]parse_error.ts:2:7 - class Test - ~~~~ + class Test + ~~~~ error: Found 1 not formatted file in 1 file diff --git a/cli/tests/testdata/lint/expected_json.out b/cli/tests/testdata/lint/expected_json.out index 61680607c2..08ea0d3e05 100644 --- a/cli/tests/testdata/lint/expected_json.out +++ b/cli/tests/testdata/lint/expected_json.out @@ -58,7 +58,7 @@ "errors": [ { "file_path": "[WILDCARD]malformed.js", - "message": "Expected '{', got 'B' at [WILDCARD]malformed.js:4:16" + "message": "Expected '{', got 'B' at [WILDCARD]malformed.js:4:16\n\n export class A B C\n ~" } ] } diff --git a/cli/tests/testdata/run/error_syntax.js.out b/cli/tests/testdata/run/error_syntax.js.out index 6d3f05b8e7..fa4d51686c 100644 --- a/cli/tests/testdata/run/error_syntax.js.out +++ b/cli/tests/testdata/run/error_syntax.js.out @@ -1 +1,4 @@ error: The module's source code could not be parsed: Expected ',', got 'following' at [WILDCARD]/error_syntax.js:3:6 + + (the following is a syntax error ^^ ! ) + ~~~~~~~~~ diff --git a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out b/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out index f4bbc6708e..2eb290bb52 100644 --- a/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out +++ b/cli/tests/testdata/run/error_syntax_empty_trailing_line.mjs.out @@ -1 +1,4 @@ error: The module's source code could not be parsed: Unexpected eof at [WILDCARD]/error_syntax_empty_trailing_line.mjs:2:22 + + setTimeout(() => {}), + ~ diff --git a/cli/tests/testdata/run/swc_syntax_error.ts.out b/cli/tests/testdata/run/swc_syntax_error.ts.out index c968db5e92..81b0c1949f 100644 --- a/cli/tests/testdata/run/swc_syntax_error.ts.out +++ b/cli/tests/testdata/run/swc_syntax_error.ts.out @@ -1 +1,4 @@ error: The module's source code could not be parsed: Unexpected token `}`. Expected an identifier, void, yield, null, await, break, a string literal, a numeric literal, true, false, `, -, import, this, typeof, {, [, ( at [WILDCARD]syntax_error.ts:4:1 + + } + ~ diff --git a/cli/tests/watcher_tests.rs b/cli/tests/watcher_tests.rs index b5c4fe5c03..0b9749e481 100644 --- a/cli/tests/watcher_tests.rs +++ b/cli/tests/watcher_tests.rs @@ -470,6 +470,9 @@ mod watcher { let next_line = stderr_lines.next().unwrap(); assert_contains!(&next_line, "Bundle started"); assert_contains!(stderr_lines.next().unwrap(), "error:"); + assert_eq!(stderr_lines.next().unwrap(), ""); + assert_eq!(stderr_lines.next().unwrap(), " syntax error ^^"); + assert_eq!(stderr_lines.next().unwrap(), " ~~~~~"); assert_contains!(stderr_lines.next().unwrap(), "Bundle failed"); // the target file hasn't been created yet assert!(!target_file.is_file()); @@ -929,6 +932,9 @@ mod watcher { write(&another_test, "syntax error ^^").unwrap(); assert_contains!(stderr_lines.next().unwrap(), "Restarting"); assert_contains!(stderr_lines.next().unwrap(), "error:"); + assert_eq!(stderr_lines.next().unwrap(), ""); + assert_eq!(stderr_lines.next().unwrap(), " syntax error ^^"); + assert_eq!(stderr_lines.next().unwrap(), " ~~~~~"); assert_contains!(stderr_lines.next().unwrap(), "Test failed"); // Then restore the file diff --git a/cli/tools/fmt.rs b/cli/tools/fmt.rs index 3cfec90190..d146c958ec 100644 --- a/cli/tools/fmt.rs +++ b/cli/tools/fmt.rs @@ -327,7 +327,20 @@ async fn check_source_files( not_formatted_files_count.fetch_add(1, Ordering::Relaxed); let _g = output_lock.lock(); warn!("Error checking: {}", file_path.to_string_lossy()); - warn!(" {}", e); + warn!( + "{}", + format!("{}", e) + .split('\n') + .map(|l| { + if l.trim().is_empty() { + String::new() + } else { + format!(" {}", l) + } + }) + .collect::>() + .join("\n") + ); } } Ok(()) diff --git a/cli/tools/repl/editor.rs b/cli/tools/repl/editor.rs index fbdda3f5c3..a40b6fcd1b 100644 --- a/cli/tools/repl/editor.rs +++ b/cli/tools/repl/editor.rs @@ -2,8 +2,10 @@ use crate::colors; use deno_ast::swc::parser::error::SyntaxError; +use deno_ast::swc::parser::token::BinOpToken; use deno_ast::swc::parser::token::Token; use deno_ast::swc::parser::token::Word; +use deno_ast::view::AssignOp; use deno_core::anyhow::Context as _; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; @@ -235,6 +237,12 @@ impl Validator for EditorHelper { for item in deno_ast::lex(ctx.input(), deno_ast::MediaType::TypeScript) { if let deno_ast::TokenOrComment::Token(token) = item.inner { match token { + Token::BinOp(BinOpToken::Div) + | Token::AssignOp(AssignOp::DivAssign) => { + // it's too complicated to write code to detect regular expression literals + // which are no longer tokenized, so if a `/` or `/=` happens, then we bail + return Ok(ValidationResult::Valid(None)); + } Token::BackQuote => in_template = !in_template, Token::LParen | Token::LBracket diff --git a/cli/tools/repl/session.rs b/cli/tools/repl/session.rs index 0c0563ab84..f6bbf9b9cf 100644 --- a/cli/tools/repl/session.rs +++ b/cli/tools/repl/session.rs @@ -193,12 +193,13 @@ impl ReplSession { line: &str, ) -> EvaluationOutput { fn format_diagnostic(diagnostic: &deno_ast::Diagnostic) -> String { + let display_position = diagnostic.display_position(); format!( "{}: {} at {}:{}", colors::red("parse error"), diagnostic.message(), - diagnostic.display_position.line_number, - diagnostic.display_position.column_number, + display_position.line_number, + display_position.column_number, ) } diff --git a/ext/console/02_console.js b/ext/console/02_console.js index 7d150c033a..2e54cd1377 100644 --- a/ext/console/02_console.js +++ b/ext/console/02_console.js @@ -1005,7 +1005,7 @@ } ArrayPrototypeShift(causes); - let finalMessage = (MapPrototypeGet(refMap, value) ?? ""); + let finalMessage = MapPrototypeGet(refMap, value) ?? ""; if (ObjectPrototypeIsPrototypeOf(AggregateErrorPrototype, value)) { const stackLines = StringPrototypeSplit(value.stack, "\n");