Skip to content

Commit c0cd12e

Browse files
Update to tree-sitter 0.23 (#70)
1 parent c7ae8b7 commit c0cd12e

19 files changed

+142
-52
lines changed

Cargo.toml

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "tree-sitter-elixir"
33
description = "Elixir grammar for the tree-sitter parsing library"
4-
version = "0.2.0"
4+
version = "0.3.0"
55
keywords = ["incremental", "parsing", "elixir"]
66
categories = ["parsing", "text-editors"]
77
repository = "https://github.com/elixir-lang/tree-sitter-elixir"
@@ -20,7 +20,10 @@ include = [
2020
path = "bindings/rust/lib.rs"
2121

2222
[dependencies]
23-
tree-sitter = ">=0.21.0"
23+
tree-sitter-language = "0.1.0"
24+
25+
[dev-dependencies]
26+
tree-sitter = "0.23.0"
2427

2528
[build-dependencies]
2629
cc = "1.0"

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION := 0.2.0
1+
VERSION := 0.3.0
22

33
# Repository
44
SRC_DIR := src

binding.gyp

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"sources": [
1212
"bindings/node/binding.cc",
1313
"src/parser.c",
14-
# NOTE: if your language has an external scanner, add it here.
14+
"src/scanner.c",
1515
],
1616
"cflags_c": [
1717
"-std=c11",

bindings/go/binding.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package tree_sitter_elixir
22

33
// #cgo CFLAGS: -std=c11 -fPIC
44
// #include "../../src/parser.c"
5-
// // NOTE: if your language has an external scanner, add it here.
5+
// #include "../../src/scanner.c"
66
import "C"
77

88
import "unsafe"

bindings/go/binding_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package tree_sitter_elixir_test
33
import (
44
"testing"
55

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

1010
func TestCanLoadGrammar(t *testing.T) {

bindings/go/go.mod

-5
This file was deleted.

bindings/node/binding_test.js

+9
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

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

bindings/python/tree_sitter_elixir/binding.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ typedef struct TSLanguage TSLanguage;
44

55
TSLanguage *tree_sitter_elixir(void);
66

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

1111
static PyMethodDef methods[] = {

bindings/rust/build.rs

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ fn main() {
77
.flag_if_supported("-Wno-unused-parameter")
88
.flag_if_supported("-Wno-unused-but-set-variable")
99
.flag_if_supported("-Wno-trigraphs");
10+
#[cfg(target_env = "msvc")]
11+
c_config.flag("-utf-8");
12+
1013
let parser_path = src_dir.join("parser.c");
1114
c_config.file(&parser_path);
1215
println!("cargo:rerun-if-changed={}", parser_path.to_str().unwrap());

bindings/rust/lib.rs

+20-19
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,53 @@
1-
//! This crate provides elixir language support for the [tree-sitter][] parsing library.
1+
//! This crate provides Elixir language support for the [tree-sitter][] parsing library.
22
//!
33
//! Typically, you will use the [language][language func] function to add this language to a
44
//! tree-sitter [Parser][], and then use the parser to parse some code:
55
//!
66
//! ```
7-
//! let code = "";
7+
//! let code = r#"
8+
//! "#;
89
//! let mut parser = tree_sitter::Parser::new();
9-
//! parser.set_language(tree_sitter_elixir::language()).expect("Error loading elixir grammar");
10+
//! let language = tree_sitter_elixir::LANGUAGE;
11+
//! parser
12+
//! .set_language(&language.into())
13+
//! .expect("Error loading Elixir parser");
1014
//! let tree = parser.parse(code, None).unwrap();
15+
//! assert!(!tree.root_node().has_error());
1116
//! ```
1217
//!
1318
//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
1419
//! [language func]: fn.language.html
1520
//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
1621
//! [tree-sitter]: https://tree-sitter.github.io/
1722
18-
use tree_sitter::Language;
23+
use tree_sitter_language::LanguageFn;
1924

2025
extern "C" {
21-
fn tree_sitter_elixir() -> Language;
26+
fn tree_sitter_elixir() -> *const ();
2227
}
2328

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

3132
/// The content of the [`node-types.json`][] file for this grammar.
3233
///
3334
/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
34-
pub const NODE_TYPES: &'static str = include_str!("../../src/node-types.json");
35+
pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
3536

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

38-
pub const HIGHLIGHTS_QUERY: &'static str = include_str!("../../queries/highlights.scm");
39-
// pub const INJECTIONS_QUERY: &'static str = include_str!("../../queries/injections.scm");
40-
// pub const LOCALS_QUERY: &'static str = include_str!("../../queries/locals.scm");
41-
pub const TAGS_QUERY: &'static str = include_str!("../../queries/tags.scm");
39+
pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
40+
pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
41+
// pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm");
42+
pub const TAGS_QUERY: &str = include_str!("../../queries/tags.scm");
4243

4344
#[cfg(test)]
4445
mod tests {
4546
#[test]
4647
fn test_can_load_grammar() {
4748
let mut parser = tree_sitter::Parser::new();
4849
parser
49-
.set_language(super::language())
50-
.expect("Error loading elixir language");
50+
.set_language(&super::LANGUAGE.into())
51+
.expect("Error loading Elixir parser");
5152
}
5253
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import XCTest
2+
import SwiftTreeSitter
3+
import TreeSitterElixir
4+
5+
final class TreeSitterElixirTests: XCTestCase {
6+
func testCanLoadGrammar() throws {
7+
let parser = Parser()
8+
let language = Language(language: tree_sitter_elixir())
9+
XCTAssertNoThrow(try parser.setLanguage(language),
10+
"Error loading Elixir grammar")
11+
}
12+
}

go.mod

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module github.com/tree-sitter/tree-sitter-elixir
2+
3+
go 1.23
4+
5+
require github.com/tree-sitter/go-tree-sitter v0.23.1
6+
7+
require github.com/mattn/go-pointer v0.0.1 // indirect

go.sum

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
2+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0=
4+
github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc=
5+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
6+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
7+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
8+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
9+
github.com/tree-sitter/go-tree-sitter v0.23.1 h1:HCfaE19sKfG7q190xfM1loUZf6wEHa4TDqDEW46s9Lg=
10+
github.com/tree-sitter/go-tree-sitter v0.23.1/go.mod h1:EvIVhMvvPNvhu9x+ddSPxSnUEU5AnsSwi1LMqXIVE3A=
11+
github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb h1:A8425heRM8mylnv4H58FPUiH+aYivyitre0PzxrfmWs=
12+
github.com/tree-sitter/tree-sitter-c v0.21.5-0.20240818205408-927da1f210eb/go.mod h1:dOF6gtQiF9UwNh995T5OphYmtIypkjsp3ap7r9AN/iA=
13+
github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148 h1:AfFPZwtwGN01BW1jDdqBVqscTwetvMpydqYZz57RSlc=
14+
github.com/tree-sitter/tree-sitter-cpp v0.22.4-0.20240818224355-b1a4e2b25148/go.mod h1:Bh6U3viD57rFXRYIQ+kmiYtr+1Bx0AceypDLJJSyi9s=
15+
github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33 h1:TwqSV3qLp3tKSqirGLRHnjFk9Tc2oy57LIl+FQ4GjI4=
16+
github.com/tree-sitter/tree-sitter-embedded-template v0.21.1-0.20240819044651-ffbf64942c33/go.mod h1:CvCKCt3v04Ufos1zZnNCelBDeCGRpPucaN8QczoUsN4=
17+
github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012 h1:Xvxck3tE5FW7F7bTS97iNM2ADMyCMJztVqn5HYKdJGo=
18+
github.com/tree-sitter/tree-sitter-go v0.21.3-0.20240818010209-8c0f0e7a6012/go.mod h1:T40D0O1cPvUU/+AmiXVXy1cncYQT6wem4Z0g4SfAYvY=
19+
github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0 h1:c46K6uh5Dz00zJeU9BfjXdb8I+E4RkUdfnWJpQADXFo=
20+
github.com/tree-sitter/tree-sitter-html v0.20.5-0.20240818004741-d11201a263d0/go.mod h1:hcNt/kOJHcIcuMvouE7LJcYdeFUFbVpBJ6d4wmOA+tU=
21+
github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495 h1:jrt4qbJVEFs4H93/ITxygHc6u0TGqAkkate7TQ4wFSA=
22+
github.com/tree-sitter/tree-sitter-java v0.21.1-0.20240824015150-576d8097e495/go.mod h1:oyaR7fLnRV0hT9z6qwE9GkaeTom/hTDwK3H2idcOJFc=
23+
github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5 h1:om4X9AVg3asL8gxNJDcz4e/Wp+VpQj1PY3uJXKr6EOg=
24+
github.com/tree-sitter/tree-sitter-javascript v0.21.5-0.20240818005344-15887341e5b5/go.mod h1:nNqgPoV/h9uYWk6kYEFdEAhNVOacpfpRW5SFmdaP4tU=
25+
github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5 h1:pfV3G3k7NCKqKk8THBmyuh2zA33lgYHS3GVrzRR8ry4=
26+
github.com/tree-sitter/tree-sitter-json v0.21.1-0.20240818005659-bdd69eb8c8a5/go.mod h1:GbMKRjLfk0H+PI7nLi1Sx5lHf5wCpLz9al8tQYSxpEk=
27+
github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1 h1:ZXZMDwE+IhUtGug4Brv6NjJWUU3rfkZBKpemf6RY8/g=
28+
github.com/tree-sitter/tree-sitter-php v0.22.9-0.20240819002312-a552625b56c1/go.mod h1:UKCLuYnJ312Mei+3cyTmGOHzn0YAnaPRECgJmHtzrqs=
29+
github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb h1:EXEM82lFM7JjJb6qiKZXkpIDaCcbV2obNn82ghwj9lw=
30+
github.com/tree-sitter/tree-sitter-python v0.21.1-0.20240818005537-55a9b8a4fbfb/go.mod h1:lXCF1nGG5Dr4J3BTS0ObN4xJCCICiSu/b+Xe/VqMV7g=
31+
github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d h1:fcYCvoXdcP1uRQYXqJHRy6Hec+uKScQdKVtMwK9JeCI=
32+
github.com/tree-sitter/tree-sitter-ruby v0.21.1-0.20240818211811-7dbc1e2d0e2d/go.mod h1:T1nShQ4v5AJtozZ8YyAS4uzUtDAJj/iv4YfwXSbUHzg=
33+
github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447 h1:o9alBu1J/WjrcTKEthYtXmdkDc5OVXD+PqlvnEZ0Lzc=
34+
github.com/tree-sitter/tree-sitter-rust v0.21.3-0.20240818005432-2b43eafe6447/go.mod h1:1Oh95COkkTn6Ezp0vcMbvfhRP5gLeqqljR0BYnBzWvc=
35+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
36+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

package-lock.json

+13-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+10-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
{
22
"name": "tree-sitter-elixir",
3-
"version": "0.2.0",
3+
"version": "0.3.0",
44
"description": "Elixir grammar for the tree-sitter parsing library",
55
"main": "bindings/node",
66
"types": "bindings/node",
7-
"keywords": ["parser", "lexer", "elixir", "tree-sitter"],
7+
"keywords": [
8+
"parser",
9+
"lexer",
10+
"elixir",
11+
"tree-sitter"
12+
],
813
"files": [
914
"grammar.js",
1015
"binding.gyp",
@@ -19,7 +24,8 @@
1924
"url": "https://github.com/elixir-lang/tree-sitter-elixir.git"
2025
},
2126
"scripts": {
22-
"test": "tree-sitter test",
27+
"build": "npx tree-sitter-cli generate --no-bindings",
28+
"test": "npx tree-sitter-cli test",
2329
"format": "prettier --trailing-comma es5 --write grammar.js && clang-format -i src/scanner.c",
2430
"format-check": "prettier --trailing-comma es5 --check grammar.js && cat src/scanner.c | clang-format src/scanner.c | diff src/scanner.c -",
2531
"install": "node-gyp-build",
@@ -32,7 +38,7 @@
3238
"devDependencies": {
3339
"clang-format": "^1.8.0",
3440
"prettier": "^2.3.2",
35-
"tree-sitter-cli": "^0.22.2",
41+
"tree-sitter-cli": "^0.23.0",
3642
"prebuildify": "^6.0.0"
3743
},
3844
"peerDependencies": {

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ readme = "README.md"
2222
Homepage = "https://github.com/tree-sitter/tree-sitter-elixir"
2323

2424
[project.optional-dependencies]
25-
core = ["tree-sitter~=0.21"]
25+
core = ["tree-sitter~=0.23"]
2626

2727
[tool.cibuildwheel]
2828
build = "cp38-*"

setup.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,14 @@ def get_tag(self):
3636
sources=[
3737
"bindings/python/tree_sitter_elixir/binding.c",
3838
"src/parser.c",
39-
# NOTE: if your language uses an external scanner, add it here.
39+
"src/scanner.c",
40+
],
41+
extra_compile_args=[
42+
"-std=c11",
43+
] if system() != "Windows" else [
44+
"/std:c11",
45+
"/utf-8",
4046
],
41-
extra_compile_args=(
42-
["-std=c11"] if system() != 'Windows' else []
43-
),
4447
define_macros=[
4548
("Py_LIMITED_API", "0x03080000"),
4649
("PY_SSIZE_T_CLEAN", None)

src/scanner.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include <tree_sitter/parser.h>
1+
#include "tree_sitter/parser.h"
22

33
// See references in grammar.externals
44
enum TokenType {

0 commit comments

Comments
 (0)