treesitter_types/runtime/
error.rs1use super::span::Span;
2
3#[derive(Debug, thiserror::Error)]
4pub enum ParseError {
5 #[error("missing required field '{field}' at {span:?}")]
6 MissingField { field: &'static str, span: Span },
7
8 #[error("unexpected node kind '{kind}' at {span:?}")]
9 UnexpectedKind { kind: String, span: Span },
10
11 #[error("UTF-8 error in source")]
12 Utf8(#[from] std::str::Utf8Error),
13
14 #[error("tree-sitter parse failed (returned None)")]
15 ParseFailed,
16}
17
18impl ParseError {
19 pub fn missing_field(field: &'static str, node: tree_sitter::Node<'_>) -> Self {
20 Self::MissingField {
21 field,
22 span: Span::from(node),
23 }
24 }
25
26 pub fn unexpected_kind(kind: &str, node: tree_sitter::Node<'_>) -> Self {
27 Self::UnexpectedKind {
28 kind: kind.to_owned(),
29 span: Span::from(node),
30 }
31 }
32}