Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 26 additions & 18 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 8 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
[package]
name = "tree-sitter-kotlin"
description = "Kotlin grammar for the tree-sitter parsing library"
version = "0.3.9"
keywords = ["incremental", "parsing", "kotlin"]
version = "0.4.0"
keywords = ["incremental", "parsing", "tree-sitter", "kotlin"]
categories = ["parsing", "text-editors"]
repository = "https://github.com/fwcd/tree-sitter-kotlin"
edition = "2018"
license = "MIT"
readme = "bindings/rust/README.md"

build = "bindings/rust/build.rs"
include = [
"bindings/rust/*",
"grammar.js",
"queries/*",
"src/*",
]
include = ["LICENSE", "bindings/rust/*", "grammar.js", "queries/*", "src/*", "tree-sitter.json"]

[lib]
path = "bindings/rust/lib.rs"

[dependencies]
tree-sitter = ">=0.21"
tree-sitter-language = "0.1"

[build-dependencies]
cc = "1.0"
cc = "1.1"

[dev-dependencies]
tree-sitter = "0.24"
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION := 0.3.9
VERSION := 0.4.0

# Repository
SRC_DIR := src
Expand Down
4 changes: 2 additions & 2 deletions bindings/python/tree_sitter_kotlin/binding.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ typedef struct TSLanguage TSLanguage;

TSLanguage *tree_sitter_kotlin(void);

static PyObject* _binding_language(PyObject *self, PyObject *args) {
return PyLong_FromVoidPtr(tree_sitter_kotlin());
static PyObject* _binding_language(PyObject *Py_UNUSED(self), PyObject *Py_UNUSED(args)) {
return PyCapsule_New(tree_sitter_kotlin(), "tree_sitter.Language", NULL);
}

static PyMethodDef methods[] = {
Expand Down
11 changes: 7 additions & 4 deletions bindings/rust/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
This crate provides a Kotlin grammar for the [tree-sitter](https://tree-sitter.github.io/tree-sitter/) parsing library. To use this crate, add it to the `[dependencies]` section of your `Cargo.toml` file:

```toml
tree-sitter = "0.23"
tree-sitter-kotlin = "0.3.9"
tree-sitter = "0.25.3"
tree-sitter-kotlin = "0.4.0"
```

Typically, you will use the `language` function to add this grammar to a tree-sitter [`Parser`](https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html), and then use the parser to parse some code:
Expand All @@ -17,6 +17,9 @@ let code = r#"
)
"#;
let mut parser = Parser::new();
parser.set_language(&tree_sitter_kotlin::language()).expect("Error loading Kotlin grammar");
let parsed = parser.parse(code, None);
let language = tree_sitter_kotlin::LANGUAGE;
parser
.set_language(&language.into())
.expect("Error loading Kotlin parser");
let tree = parser.parse(code, None).unwrap();
```
39 changes: 23 additions & 16 deletions bindings/rust/lib.rs
Original file line number Diff line number Diff line change
@@ -1,32 +1,39 @@
//! This crate provides kotlin language support for the [tree-sitter][] parsing library.
//! This crate provides Kotlin language support for the [tree-sitter][] parsing library.
//!
//! Typically, you will use the [language][language func] function to add this language to a
//! Typically, you will use the [LANGUAGE][] constant to add this language to a
//! tree-sitter [Parser][], and then use the parser to parse some code:
//!
//! ```
//! let code = "";
//! let mut parser = tree_sitter::Parser::new();
//! parser.set_language(&tree_sitter_kotlin::language()).expect("Error loading kotlin grammar");
//! use tree_sitter::Parser;
//!
//! let code = r#"
//! class Test {
//! fun double(x: Int): Int {
//! return x * 2
//! }
//! }
//! "#;
//! let mut parser = Parser::new();
//! let language = tree_sitter_kotlin::LANGUAGE;
//! parser
//! .set_language(&language.into())
//! .expect("Error loading Kotlin grammar");
//! let tree = parser.parse(code, None).unwrap();
//! ```
//!
//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
//! [language func]: fn.language.html
//! [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_kotlin() -> Language;
fn tree_sitter_kotlin() -> *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_kotlin() }
}
/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html
pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_kotlin) };

/// The content of the [`node-types.json`][] file for this grammar.
///
Expand All @@ -46,7 +53,7 @@ mod tests {
fn test_can_load_grammar() {
let mut parser = tree_sitter::Parser::new();
parser
.set_language(&super::language())
.expect("Error loading kotlin language");
.set_language(&super::LANGUAGE.into())
.expect("Error loading Kotlin parser");
}
}
Loading