diff --git a/Cargo.lock b/Cargo.lock index 9c58ea34..c07664b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,9 +19,9 @@ checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "ast-grep-config" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8083f0edc3b8fe42fa1dbf666a0ea084ee0a72e8a4354ec1251440267883f18" +checksum = "03af9c066a8da893b7befc6c31bd33f1454b7615f508b459c4697a32d1c8f095" dependencies = [ "anyhow", "ast-grep-core", @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "ast-grep-core" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0353298422bffe28e42132ca9bf0ec90bb8236ab856290ead47f0a78504e9572" +checksum = "0a30b9206096187d7eed7cd6840a7f3b62e02f3e7b643c05a425afb80675363d" dependencies = [ "bit-set", "regex", @@ -48,9 +48,9 @@ dependencies = [ [[package]] name = "ast-grep-language" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bcdbe508ba144f61d5e97080a3fbe309b24bfd2b087e6a002aa6c76756e744c" +checksum = "579e0ae5267b160000d5626df33879ee02ec4663a08142406f3595e76cafa965" dependencies = [ "ast-grep-core", "ignore", diff --git a/Cargo.toml b/Cargo.toml index ddfa0c38..d9d9d76c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,9 +28,9 @@ console_error_panic_hook = { version = "0.1.7", optional = true } once_cell = "1.19.0" wee_alloc = { version = "0.4.5" } -ast-grep-core = { version = "0.15.0" } -ast-grep-config = { version = "0.15.0" } -ast-grep-language = { version = "0.15.0", default-features = false } +ast-grep-core = { version = "0.15.1" } +ast-grep-config = { version = "0.15.1" } +ast-grep-language = { version = "0.15.1", default-features = false } web-tree-sitter-sg = "1.3.4" tree-sitter = { version = "0.9.2", package = "tree-sitter-facade-sg" } serde-wasm-bindgen = "0.6" diff --git a/src/lib.rs b/src/lib.rs index 002826b0..c0ab3685 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -60,30 +60,31 @@ pub fn fix_errors(src: String, configs: Vec) -> Result rules.push(finder); } let combined = CombinedScan::new(rules.iter().collect()); - let root = lang.ast_grep(&src); + let doc = WasmDoc::new(src.clone(), lang); + let root = AstGrep::doc(doc); let sets = combined.find(&root); let diffs = combined.diffs(&root, sets); if diffs.is_empty() { return Ok(src); } let mut start = 0; - let src = src.as_bytes(); - let mut new_content = Vec::new(); + let src: Vec<_> = src.chars().collect(); + let mut new_content = Vec::::new(); for (nm, idx) in diffs { let range = nm.range(); if start > range.start { continue; } let rule = combined.get_rule(idx); - let fixer = rule.fixer.as_ref().unwrap(); - let edit = nm.make_edit(&rule.matcher, fixer); + let fixer = rule.get_fixer()?.expect("rule returned by diff must have fixer"); + let edit = nm.make_edit(&rule.matcher, &fixer); new_content.extend(&src[start..edit.position]); new_content.extend(&edit.inserted_text); start = edit.position + edit.deleted_length; } // add trailing statements new_content.extend(&src[start..]); - Ok(String::from_utf8(new_content)?) + Ok(new_content.into_iter().collect()) } fn convert_to_debug_node(n: Node) -> DumpNode {