only_semantic/
analysis.rs1use only_syntax::{SyntaxSnapshot, snapshot};
2
3use crate::SemanticSnapshot;
4use crate::lower::lower_syntax;
5use crate::symbols::build_symbol_index;
6use crate::validate::validate_document;
7
8pub fn compile_document(source: &str) -> SemanticSnapshot {
16 compile_syntax(&snapshot(source))
17}
18
19pub fn compile_syntax(snapshot: &SyntaxSnapshot) -> SemanticSnapshot {
27 let (document, mut diagnostics) = lower_syntax(snapshot);
28 let symbols = build_symbol_index(&document);
29 diagnostics.extend(validate_document(&document, &symbols));
30
31 SemanticSnapshot {
32 document,
33 diagnostics,
34 symbols,
35 }
36}