Skip to content

Commit 2376e3c

Browse files
Merge pull request #20 from NullVoxPopuli-ai-agent/bump-setup-action-v2
ci: get main green again under tree-sitter v0.26
2 parents 5cc865a + 7863b78 commit 2376e3c

13 files changed

Lines changed: 24638 additions & 22517 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
- name: Checkout repository
4141
uses: actions/checkout@v4
4242
- name: Set up tree-sitter
43-
uses: tree-sitter/setup-action/cli@v1
43+
uses: tree-sitter/setup-action/cli@v2
4444
- name: Run tests
4545
uses: tree-sitter/parser-test-action@v2
4646
with:

Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ include = [
2020
path = "bindings/rust/lib.rs"
2121

2222
[dependencies]
23-
tree-sitter = "~0.20.10"
23+
tree-sitter-language = "0.1"
2424

2525
[build-dependencies]
2626
cc = "1.0"
27+
28+
[dev-dependencies]
29+
tree-sitter = "0.25"

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,44 @@
44
[![matrix][matrix]](https://matrix.to/#/#tree-sitter-chat:matrix.org)
55
[![npm][npm]](https://www.npmjs.com/package/tree-sitter-glimmer-typescript)
66

7+
A tree-sitter grammar for Glimmer-flavored JavaScript (`.gjs`). Wraps
8+
[tree-sitter-javascript][ts-js] and adds the `<template>...</template>`
9+
syntax used by Ember/Glimmer.
10+
11+
## Source vs. generated files
12+
13+
The single source of truth for the grammar is `grammar.js`. Most of the
14+
files under `src/` are produced by `tree-sitter generate` and **must not
15+
be edited by hand** — any change there will be overwritten on the next
16+
generation, and CI verifies that committed artifacts match what
17+
generation produces.
18+
19+
**Hand-written (edit these):**
20+
21+
- `grammar.js` — grammar definition
22+
- `src/scanner.c` — external scanner (handles `<template>` raw text and
23+
custom ASI behavior)
24+
- `queries/**/*.scm` — highlight, locals, and tags queries
25+
- `test/corpus/**/*.txt` — parser test fixtures
26+
- `bindings/**` — language binding code (Node, Rust, Python, Go, Swift, C)
27+
- `binding.gyp`, `Cargo.toml`, `package.json`, `tree-sitter.json` — build
28+
and package metadata
29+
- `README.md`
30+
31+
**Auto-generated by `tree-sitter generate` (do not edit):**
32+
33+
- `src/parser.c` — the parse table (the `/* Automatically @generated by
34+
tree-sitter */` header is the canonical marker)
35+
- `src/grammar.json` — JSON form of the evaluated grammar
36+
- `src/node-types.json` — node type schema
37+
- `src/tree_sitter/parser.h`, `array.h`, `alloc.h` — vendored tree-sitter
38+
runtime headers
39+
40+
If you change `grammar.js` or bump the `tree-sitter` CLI, run
41+
`npm run build` (or `tree-sitter generate`) and commit the regenerated
42+
files alongside your source change.
43+
44+
[ci]: https://github.com/ember-tooling/tree-sitter-glimmer-javascript/actions/workflows/ci.yml/badge.svg
45+
[matrix]: https://img.shields.io/matrix/tree-sitter-chat%3Amatrix.org?label=matrix
46+
[npm]: https://img.shields.io/npm/v/tree-sitter-glimmer-javascript
47+
[ts-js]: https://github.com/tree-sitter/tree-sitter-javascript

binding.gyp

Lines changed: 1 addition & 1 deletion
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
"conditions": [
1717
["OS!='win'", {

bindings/rust/lib.rs

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,47 @@
1-
//! This crate provides glimmer_javascript language support for the [tree-sitter][] parsing library.
1+
//! This crate provides Glimmer-flavored JavaScript language support for the
2+
//! [tree-sitter][] parsing library.
23
//!
3-
//! Typically, you will use the [language][language func] function to add this language to a
4+
//! Typically, you will use the [LANGUAGE] constant to add this language to a
45
//! tree-sitter [Parser][], and then use the parser to parse some code:
56
//!
67
//! ```
7-
//! let code = "";
8-
//! let mut parser = tree_sitter::Parser::new();
9-
//! parser.set_language(tree_sitter_glimmer_javascript::language()).expect("Error loading glimmer_javascript grammar");
8+
//! use tree_sitter::Parser;
9+
//!
10+
//! let code = "const x = 1;";
11+
//! let mut parser = Parser::new();
12+
//! parser
13+
//! .set_language(&tree_sitter_glimmer_javascript::LANGUAGE.into())
14+
//! .expect("Error loading glimmer_javascript parser");
1015
//! let tree = parser.parse(code, None).unwrap();
16+
//! assert!(!tree.root_node().has_error());
1117
//! ```
1218
//!
13-
//! [Language]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Language.html
14-
//! [language func]: fn.language.html
1519
//! [Parser]: https://docs.rs/tree-sitter/*/tree_sitter/struct.Parser.html
1620
//! [tree-sitter]: https://tree-sitter.github.io/
1721
18-
use tree_sitter::Language;
22+
use tree_sitter_language::LanguageFn;
1923

2024
extern "C" {
21-
fn tree_sitter_glimmer_javascript() -> Language;
25+
fn tree_sitter_glimmer_javascript() -> *const ();
2226
}
2327

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

3133
/// The content of the [`node-types.json`][] file for this grammar.
3234
///
3335
/// [`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-
36-
// Uncomment these to include any queries that this grammar contains
37-
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");
36+
pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
4237

4338
#[cfg(test)]
4439
mod tests {
4540
#[test]
4641
fn test_can_load_grammar() {
4742
let mut parser = tree_sitter::Parser::new();
4843
parser
49-
.set_language(super::language())
44+
.set_language(&super::LANGUAGE.into())
5045
.expect("Error loading glimmer_javascript language");
5146
}
5247
}

0 commit comments

Comments
 (0)