arborium_objc/
lib.rs

1#![doc = include_str!("../README.md")]
2
3use arborium_tree_sitter::Language;
4
5unsafe extern "C" {
6    fn tree_sitter_objc() -> Language;
7}
8
9/// Returns the objc tree-sitter language.
10pub fn language() -> Language {
11    unsafe { tree_sitter_objc() }
12}
13
14
15
16/// The highlights query for objc (base query only).
17/// Use [`HIGHLIGHTS_QUERY`] for the full query including inherited queries.
18const HIGHLIGHTS_QUERY_BASE: &str = include_str!("../queries/highlights.scm");
19
20/// The highlights query for objc.
21/// Includes inherited queries from: arborium_c.
22pub static HIGHLIGHTS_QUERY: std::sync::LazyLock<String> = std::sync::LazyLock::new(|| {
23    let mut query = String::new();
24
25    query.push_str(&arborium_c::HIGHLIGHTS_QUERY);
26    query.push('\n');
27
28    query.push_str(HIGHLIGHTS_QUERY_BASE);
29    query
30});
31
32
33
34
35/// The injections query for objc.
36pub const INJECTIONS_QUERY: &str = include_str!("../queries/injections.scm");
37
38
39
40/// The locals query for objc.
41pub const LOCALS_QUERY: &str = include_str!("../queries/locals.scm");
42
43
44
45#[cfg(test)]
46mod tests {
47    use super::*;
48
49    #[test]
50    fn test_grammar() {
51        arborium_test_harness::test_grammar(
52            language(),
53            "objc",
54
55            &HIGHLIGHTS_QUERY,
56
57            INJECTIONS_QUERY,
58            LOCALS_QUERY,
59            env!("CARGO_MANIFEST_DIR"),
60        );
61    }
62}