Skip to content

Commit fd17128

Browse files
experimental port to tree-sitter 0.23
Some change between 0.20 and 0.22.6 brought some bugs to traversing error nodes. Testing if bumping the version would fix that.
1 parent b9b9e45 commit fd17128

File tree

11 files changed

+59
-26
lines changed

11 files changed

+59
-26
lines changed

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "tree-sitter-witcherscript"
33
description = "WitcherScript grammar for the tree-sitter parsing library"
4-
version = "0.12.0"
4+
version = "0.13.0-experimental"
55
readme = "README.md"
66
keywords = ["incremental", "parsing", "tree-sitter", "witcherscript"]
77
categories = ["parsing", "text-editors"]
@@ -17,7 +17,7 @@ include = ["bindings/rust/*", "grammar.js", "queries/*", "src/*"]
1717
path = "bindings/rust/lib.rs"
1818

1919
[dependencies]
20-
tree-sitter = ">=0.22.6"
20+
tree-sitter-language = "0.1.0"
2121

2222
[build-dependencies]
2323
cc = "1.0.87"

bindings/go/binding_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package tree_sitter_witcherscript_test
33
import (
44
"testing"
55

6-
tree_sitter "github.com/smacker/go-tree-sitter"
7-
"github.com/tree-sitter/tree-sitter-witcherscript"
6+
tree_sitter "github.com/tree-sitter/go-tree-sitter"
7+
tree_sitter_witcherscript "github.com/tree-sitter/tree-sitter-witcherscript/bindings/go"
88
)
99

1010
func TestCanLoadGrammar(t *testing.T) {

bindings/go/go.mod

Lines changed: 0 additions & 5 deletions
This file was deleted.

bindings/node/binding_test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/// <reference types="node" />
2+
3+
const assert = require("node:assert");
4+
const { test } = require("node:test");
5+
6+
test("can load grammar", () => {
7+
const parser = new (require("tree-sitter"))();
8+
assert.doesNotThrow(() => parser.setLanguage(require(".")));
9+
});

bindings/python/tests/test_binding.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from unittest import TestCase
2+
3+
import tree_sitter, tree_sitter_witcherscript
4+
5+
6+
class TestLanguage(TestCase):
7+
def test_can_load_grammar(self):
8+
try:
9+
tree_sitter.Language(tree_sitter_witcherscript.language())
10+
except Exception:
11+
self.fail("Error loading Witcherscript grammar")

bindings/python/tree_sitter_witcherscript/binding.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ typedef struct TSLanguage TSLanguage;
44

55
TSLanguage *tree_sitter_witcherscript(void);
66

7-
static PyObject* _binding_language(PyObject *self, PyObject *args) {
8-
return PyLong_FromVoidPtr(tree_sitter_witcherscript());
7+
static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(args)) {
8+
return PyCapsule_New(tree_sitter_witcherscript(), "tree_sitter.Language", NULL);
99
}
1010

1111
static PyMethodDef methods[] = {

bindings/rust/lib.rs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
//! let code = r#"
88
//! "#;
99
//! let mut parser = tree_sitter::Parser::new();
10-
//! parser.set_language(&tree_sitter_witcherscript::language()).expect("Error loading Witcherscript grammar");
10+
//! let language = tree_sitter_witcherscript::LANGUAGE;
11+
//! parser
12+
//! .set_language(&language.into())
13+
//! .expect("Error loading Witcherscript parser");
1114
//! let tree = parser.parse(code, None).unwrap();
1215
//! assert!(!tree.root_node().has_error());
1316
//! ```
@@ -17,25 +20,21 @@
1720
//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
1821
//! [tree-sitter]: https://tree-sitter.github.io/
1922
20-
use tree_sitter::Language;
23+
use tree_sitter_language::LanguageFn;
2124

2225
extern "C" {
23-
fn tree_sitter_witcherscript() -> Language;
26+
fn tree_sitter_witcherscript() -> *const ();
2427
}
2528

26-
/// Get the tree-sitter [Language][] for this grammar.
27-
///
28-
/// [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
29-
pub fn language() -> Language {
30-
unsafe { tree_sitter_witcherscript() }
31-
}
29+
/// The tree-sitter [`LanguageFn`] for this grammar.
30+
pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_witcherscript) };
3231

3332
/// The content of the [`node-types.json`][] file for this grammar.
3433
///
3534
/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
3635
pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
3736

38-
// Uncomment these to include any queries that this grammar contains
37+
// NOTE: uncomment these to include any queries that this grammar contains:
3938

4039
// pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
4140
// pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
@@ -48,7 +47,7 @@ mod tests {
4847
fn test_can_load_grammar() {
4948
let mut parser = tree_sitter::Parser::new();
5049
parser
51-
.set_language(&super::language())
52-
.expect("Error loading Witcherscript grammar");
50+
.set_language(&super::LANGUAGE.into())
51+
.expect("Error loading Witcherscript parser");
5352
}
5453
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import XCTest
2+
import SwiftTreeSitter
3+
import TreeSitterWitcherscript
4+
5+
final class TreeSitterWitcherscriptTests: XCTestCase {
6+
func testCanLoadGrammar() throws {
7+
let parser = Parser()
8+
let language = Language(language: tree_sitter_witcherscript())
9+
XCTAssertNoThrow(try parser.setLanguage(language),
10+
"Error loading Witcherscript grammar")
11+
}
12+
}

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module github.com/tree-sitter/tree-sitter-witcherscript
2+
3+
go 1.23
4+
5+
require github.com/tree-sitter/go-tree-sitter v0.23

package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tree-sitter-witcherscript",
3-
"version": "0.12.0",
3+
"version": "0.13.0-experimental",
44
"description": "WitcherScript grammar for tree-sitter",
55
"main": "bindings/node",
66
"types": "bindings/node",
@@ -29,14 +29,15 @@
2929
}
3030
},
3131
"devDependencies": {
32-
"tree-sitter-cli": "^0.22.6",
32+
"tree-sitter-cli": "^0.23.0",
3333
"prebuildify": "^6.0.0"
3434
},
3535
"scripts": {
3636
"generate": "tree-sitter generate",
3737
"test": "tree-sitter test",
3838
"install": "node-gyp-build",
39-
"prebuildify": "prebuildify --napi --strip"
39+
"prestart": "tree-sitter build --wasm",
40+
"start": "tree-sitter playground"
4041
},
4142
"tree-sitter": [
4243
{

0 commit comments

Comments
 (0)