use crate::core::ast::AstNode;
use crate::core::document::Document;
use crate::core::errors::ParseError;
use parking_lot::RwLock;
use tree_sitter::Language;
pub struct Parser {
pub parser: RwLock<tree_sitter::Parser>,
pub language: Language,
pub ast_parser: InvokeParserFn,
}
impl std::fmt::Debug for Parser {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("parsers")
.field("language", &self.language)
.finish()
}
}
pub type InvokeParserFn =
fn(&dyn salsa::Database, &Document) -> Result<Vec<Box<dyn AstNode>>, ParseError>;