60 lines
1.5 KiB
Rust
60 lines
1.5 KiB
Rust
use serde::Serialize;
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct SourceRange {
|
|
pub line_start: usize,
|
|
pub line_end: usize,
|
|
pub column_start: usize,
|
|
pub column_end: usize,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParsedProcedure {
|
|
pub name: String,
|
|
pub export: bool,
|
|
pub is_function: bool,
|
|
pub parameters: Vec<String>,
|
|
pub source_range: SourceRange,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParsedCall {
|
|
pub caller: String,
|
|
pub callee: String,
|
|
pub source_range: SourceRange,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParsedQuery {
|
|
pub owner_procedure: String,
|
|
pub query_text: String,
|
|
pub tables: Vec<String>,
|
|
pub source_range: SourceRange,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParsedWrite {
|
|
pub owner_procedure: String,
|
|
pub target: String,
|
|
pub write_type: String,
|
|
pub source_range: SourceRange,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParseDiagnostic {
|
|
pub code: String,
|
|
pub message: String,
|
|
pub severity: String,
|
|
pub source_range: Option<SourceRange>,
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
|
|
pub struct ParsedSemanticUnit {
|
|
pub source_path: String,
|
|
pub procedures: Vec<ParsedProcedure>,
|
|
pub calls: Vec<ParsedCall>,
|
|
pub queries: Vec<ParsedQuery>,
|
|
pub writes: Vec<ParsedWrite>,
|
|
pub diagnostics: Vec<ParseDiagnostic>,
|
|
}
|