use tree_sitter::Language;
unsafe extern "C" {
fn tree_sitter_plsql() -> Language;
}
#[must_use = "Language handles must be registered with tree-sitter consumers"]
pub fn language() -> Language {
let lang = unsafe { tree_sitter_plsql() };
sqry_tree_sitter_support::validate_language_or_panic(lang, "PL/SQL")
}
pub fn try_language() -> Result<Language, sqry_tree_sitter_support::TreeSitterError> {
let lang = unsafe { tree_sitter_plsql() };
sqry_tree_sitter_support::validate_language(lang)
}
pub const NODE_TYPES: &str = include_str!("../grammar-src/node-types.json");
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_can_load_grammar() {
let lang = language();
assert!(
lang.abi_version() > 0,
"Language ABI version should be non-zero"
);
}
#[test]
fn test_try_language_succeeds() {
let result = try_language();
assert!(
result.is_ok(),
"try_language() should succeed for valid grammar"
);
let lang = result.unwrap();
assert!(lang.abi_version() > 0);
}
}