Skip to main content

presolve_compiler/
model.rs

1use std::path::PathBuf;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct SourceSummary {
5    pub path: PathBuf,
6    pub byte_len: usize,
7    pub line_count: usize,
8    pub char_count: usize,
9    pub has_tsx_like_syntax: bool,
10    /// Canonical V2 components declared by extending `Component`.
11    pub component_classes: Vec<ClassSummary>,
12    /// Legacy decorator declarations retained for compatibility inspection.
13    pub component_decorators: Vec<DecoratorSummary>,
14    pub route_decorators: Vec<DecoratorSummary>,
15    pub class_declarations: Vec<ClassSummary>,
16    pub render_methods: Vec<RenderMethodSummary>,
17    pub diagnostics: Vec<Diagnostic>,
18}
19
20#[derive(Debug, Clone, PartialEq, Eq)]
21pub struct DecoratorSummary {
22    pub name: String,
23    pub argument: Option<String>,
24    pub span: Span,
25}
26
27#[derive(Debug, Clone, PartialEq, Eq)]
28pub struct ClassSummary {
29    pub name: String,
30    pub span: Span,
31}
32
33#[derive(Debug, Clone, PartialEq, Eq)]
34pub struct RenderMethodSummary {
35    pub span: Span,
36}
37
38#[derive(Debug, Clone, PartialEq, Eq)]
39pub struct Diagnostic {
40    pub severity: Severity,
41    pub code: String,
42    pub message: String,
43    pub span: Option<Span>,
44}
45
46#[derive(Debug, Clone, PartialEq, Eq)]
47pub enum Severity {
48    Info,
49    Warning,
50    Error,
51}
52
53#[derive(Debug, Clone, Copy, PartialEq, Eq)]
54pub struct Span {
55    pub start: usize,
56    pub end: usize,
57    pub line: usize,
58    pub column: usize,
59}