From ca73f2e024e2d6d92ddd785f7275ab2c6b6666eb Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 10 Nov 2024 11:28:29 -0500 Subject: [PATCH] update rust bindings to use tree-sitter-language --- Cargo.toml | 5 ++++- bindings/rust/lib.rs | 16 +++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8d395a1..2ee73a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,10 @@ include = [ path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = "0.20" +tree-sitter-language = "0.1.2" + +[dev-dependencies] +tree-sitter = ">=0.22" [build-dependencies] cc = "1.0" diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs index 2ede796..7c0989d 100644 --- a/bindings/rust/lib.rs +++ b/bindings/rust/lib.rs @@ -6,7 +6,7 @@ //! ``` //! let code = ""; //! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(tree_sitter_dockerfile::language()).expect("Error loading dockerfile grammar"); +//! parser.set_language(&tree_sitter_dockerfile::LANGUAGE.into()).expect("Error loading dockerfile grammar"); //! let tree = parser.parse(code, None).unwrap(); //! ``` //! @@ -15,18 +15,16 @@ //! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html //! [tree-sitter]: https://tree-sitter.github.io/ -use tree_sitter::Language; +use tree_sitter_language::LanguageFn; extern "C" { - fn tree_sitter_dockerfile() -> Language; + fn tree_sitter_dockerfile() -> *const (); } -/// Get the tree-sitter [Language][] for this grammar. +/// The tree-sitter [`LanguageFn`][LanguageFn] for this grammar. /// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_dockerfile() } -} +/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html +pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_dockerfile) }; /// The content of the [`node-types.json`][] file for this grammar. /// @@ -46,7 +44,7 @@ mod tests { fn test_can_load_grammar() { let mut parser = tree_sitter::Parser::new(); parser - .set_language(super::language()) + .set_language(&super::LANGUAGE.into()) .expect("Error loading dockerfile language"); } }