From 3ae76c1467d047743c3e2d7a418a8cbc905a6938 Mon Sep 17 00:00:00 2001 From: Benjamin Bannier Date: Mon, 2 Sep 2024 17:29:21 +0200 Subject: [PATCH] Bump to tree-sitter-0.23.0 --- Cargo.toml | 5 +++- bindings/go/binding_test.go | 4 ++-- bindings/go/go.mod | 5 ---- bindings/node/binding_test.js | 9 ++++++++ bindings/python/tests/test_binding.py | 11 +++++++++ bindings/python/tree_sitter_zeek/binding.c | 4 ++-- bindings/rust/lib.rs | 23 +++++++++---------- .../TreeSitterZeekTests.swift | 12 ++++++++++ go.mod | 7 ++++++ package-lock.json | 11 +++++---- package.json | 7 +++--- pyproject.toml | 2 +- src/tree_sitter/parser.h | 1 + 13 files changed, 71 insertions(+), 30 deletions(-) delete mode 100644 bindings/go/go.mod create mode 100644 bindings/node/binding_test.js create mode 100644 bindings/python/tests/test_binding.py create mode 100644 bindings/swift/TreeSitterZeekTests/TreeSitterZeekTests.swift create mode 100644 go.mod diff --git a/Cargo.toml b/Cargo.toml index 9107aa4..785157c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,10 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"] path = "bindings/rust/lib.rs" [dependencies] -tree-sitter = ">=0.22.6" +tree-sitter-language = "0.1.0" [build-dependencies] cc = "1.0.87" + +[dev-dependencies] +tree-sitter = "0.23.0" diff --git a/bindings/go/binding_test.go b/bindings/go/binding_test.go index ac8962a..952e8ca 100644 --- a/bindings/go/binding_test.go +++ b/bindings/go/binding_test.go @@ -3,8 +3,8 @@ package tree_sitter_zeek_test import ( "testing" - tree_sitter "github.com/smacker/go-tree-sitter" - "github.com/tree-sitter/tree-sitter-zeek" + tree_sitter "github.com/tree-sitter/go-tree-sitter" + tree_sitter_zeek "github.com/tree-sitter/tree-sitter-zeek/bindings/go" ) func TestCanLoadGrammar(t *testing.T) { diff --git a/bindings/go/go.mod b/bindings/go/go.mod deleted file mode 100644 index a916830..0000000 --- a/bindings/go/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/tree-sitter/tree-sitter-zeek - -go 1.22 - -require github.com/smacker/go-tree-sitter v0.0.0-20230720070738-0d0a9f78d8f8 diff --git a/bindings/node/binding_test.js b/bindings/node/binding_test.js new file mode 100644 index 0000000..afede30 --- /dev/null +++ b/bindings/node/binding_test.js @@ -0,0 +1,9 @@ +/// + +const assert = require("node:assert"); +const { test } = require("node:test"); + +test("can load grammar", () => { + const parser = new (require("tree-sitter"))(); + assert.doesNotThrow(() => parser.setLanguage(require("."))); +}); diff --git a/bindings/python/tests/test_binding.py b/bindings/python/tests/test_binding.py new file mode 100644 index 0000000..ec32299 --- /dev/null +++ b/bindings/python/tests/test_binding.py @@ -0,0 +1,11 @@ +from unittest import TestCase + +import tree_sitter, tree_sitter_zeek + + +class TestLanguage(TestCase): + def test_can_load_grammar(self): + try: + tree_sitter.Language(tree_sitter_zeek.language()) + except Exception: + self.fail("Error loading Zeek grammar") diff --git a/bindings/python/tree_sitter_zeek/binding.c b/bindings/python/tree_sitter_zeek/binding.c index bb086ab..b3e86ac 100644 --- a/bindings/python/tree_sitter_zeek/binding.c +++ b/bindings/python/tree_sitter_zeek/binding.c @@ -4,8 +4,8 @@ typedef struct TSLanguage TSLanguage; TSLanguage *tree_sitter_zeek(void); -static PyObject* _binding_language(PyObject *self, PyObject *args) { - return PyLong_FromVoidPtr(tree_sitter_zeek()); +static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(args)) { + return PyCapsule_New(tree_sitter_zeek(), "tree_sitter.Language", NULL); } static PyMethodDef methods[] = { diff --git a/bindings/rust/lib.rs b/bindings/rust/lib.rs index 65bd298..adcb498 100644 --- a/bindings/rust/lib.rs +++ b/bindings/rust/lib.rs @@ -7,7 +7,10 @@ //! let code = r#" //! "#; //! let mut parser = tree_sitter::Parser::new(); -//! parser.set_language(&tree_sitter_zeek::language()).expect("Error loading Zeek grammar"); +//! let language = tree_sitter_zeek::LANGUAGE; +//! parser +//! .set_language(&language.into()) +//! .expect("Error loading Zeek parser"); //! let tree = parser.parse(code, None).unwrap(); //! assert!(!tree.root_node().has_error()); //! ``` @@ -17,25 +20,21 @@ //! [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_zeek() -> Language; + fn tree_sitter_zeek() -> *const (); } -/// Get the tree-sitter [Language][] for this grammar. -/// -/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html -pub fn language() -> Language { - unsafe { tree_sitter_zeek() } -} +/// The tree-sitter [`LanguageFn`] for this grammar. +pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_zeek) }; /// The content of the [`node-types.json`][] file for this grammar. /// /// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types pub const NODE_TYPES: &str = include_str!("../../src/node-types.json"); -// Uncomment these to include any queries that this grammar contains +// NOTE: uncomment these to include any queries that this grammar contains: // pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm"); // pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm"); @@ -48,7 +47,7 @@ mod tests { fn test_can_load_grammar() { let mut parser = tree_sitter::Parser::new(); parser - .set_language(&super::language()) - .expect("Error loading Zeek grammar"); + .set_language(&super::LANGUAGE.into()) + .expect("Error loading Zeek parser"); } } diff --git a/bindings/swift/TreeSitterZeekTests/TreeSitterZeekTests.swift b/bindings/swift/TreeSitterZeekTests/TreeSitterZeekTests.swift new file mode 100644 index 0000000..73632e8 --- /dev/null +++ b/bindings/swift/TreeSitterZeekTests/TreeSitterZeekTests.swift @@ -0,0 +1,12 @@ +import XCTest +import SwiftTreeSitter +import TreeSitterZeek + +final class TreeSitterZeekTests: XCTestCase { + func testCanLoadGrammar() throws { + let parser = Parser() + let language = Language(language: tree_sitter_zeek()) + XCTAssertNoThrow(try parser.setLanguage(language), + "Error loading Zeek grammar") + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..5d2f110 --- /dev/null +++ b/go.mod @@ -0,0 +1,7 @@ +module github.com/tree-sitter/tree-sitter-zeek + +go 1.23 + +require github.com/tree-sitter/go-tree-sitter v0.23.1 + +require github.com/mattn/go-pointer v0.0.1 // indirect diff --git a/package-lock.json b/package-lock.json index b8aade7..7b65e76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ }, "devDependencies": { "prebuildify": "^6.0.0", - "tree-sitter-cli": "^0.20.1" + "tree-sitter-cli": "^0.23.0" }, "peerDependencies": { "tree-sitter": "^0.21.0" @@ -347,14 +347,17 @@ } }, "node_modules/tree-sitter-cli": { - "version": "0.20.8", - "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.20.8.tgz", - "integrity": "sha512-XjTcS3wdTy/2cc/ptMLc/WRyOLECRYcMTrSWyhZnj1oGSOWbHLTklgsgRICU3cPfb0vy+oZCC33M43u6R1HSCA==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/tree-sitter-cli/-/tree-sitter-cli-0.23.0.tgz", + "integrity": "sha512-/DdQaPCCOrOYGp9FxGdhFUnHIrjhfbYatQXgNIcmaAOpPunpnDj2vsO/H+svsfQLaFsQ1C+BjgPhpbV28zka1w==", "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { "tree-sitter": "cli.js" + }, + "engines": { + "node": ">=12.0.0" } }, "node_modules/tree-sitter/node_modules/node-addon-api": { diff --git a/package.json b/package.json index 6ad13c3..37729e4 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ } }, "devDependencies": { - "tree-sitter-cli": "^0.20.1", + "tree-sitter-cli": "^0.23.0", "prebuildify": "^6.0.0" }, "tree-sitter": [ @@ -51,8 +51,9 @@ } ], "scripts": { - "test": "tree-sitter test", "install": "node-gyp-build", - "prebuildify": "prebuildify --napi --strip" + "prestart": "tree-sitter build --wasm", + "start": "tree-sitter playground", + "test": "node --test bindings/node/*_test.js" } } diff --git a/pyproject.toml b/pyproject.toml index 6fe533a..9b6a5ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ readme = "README.md" Homepage = "https://github.com/tree-sitter/tree-sitter-zeek" [project.optional-dependencies] -core = ["tree-sitter~=0.21"] +core = ["tree-sitter~=0.23"] [tool.cibuildwheel] build = "cp38-*" diff --git a/src/tree_sitter/parser.h b/src/tree_sitter/parser.h index 17f0e94..799f599 100644 --- a/src/tree_sitter/parser.h +++ b/src/tree_sitter/parser.h @@ -47,6 +47,7 @@ struct TSLexer { uint32_t (*get_column)(TSLexer *); bool (*is_at_included_range_start)(const TSLexer *); bool (*eof)(const TSLexer *); + void (*log)(const TSLexer *, const char *, ...); }; typedef enum {