|
11 | 11 | //! - [`Value`] - The various kinds of expression values (literals, operators, etc.) |
12 | 12 | //! - [`Source`] - Data sources in FROM clauses |
13 | 13 | //! |
14 | | -use crate::arena::ExprArena; |
15 | 14 | use crate::{ |
16 | | - analysis::{AnalysisOptions, Typed, static_analysis}, |
17 | | - error::{AnalysisError, Error}, |
| 15 | + error::AnalysisError, |
18 | 16 | token::{Operator, Token}, |
19 | 17 | }; |
20 | 18 | use ordered_float::OrderedFloat; |
@@ -234,13 +232,13 @@ pub enum Type { |
234 | 232 | /// # Examples |
235 | 233 | /// |
236 | 234 | /// ``` |
237 | | - /// use eventql_parser::{parse_query, prelude::AnalysisOptions}; |
238 | | - /// use eventql_parser::arena::ExprArena; |
| 235 | + /// use eventql_parser::Session; |
239 | 236 | /// |
240 | | - /// let mut arena = ExprArena::default(); |
241 | | - /// let query = parse_query(&mut arena, "FROM e IN events PROJECT INTO { ts: e.data.timestamp as CustomTimestamp }").unwrap(); |
242 | | - /// let options = AnalysisOptions::default().add_custom_type("CustomTimestamp"); |
243 | | - /// let typed_query = query.run_static_analysis(&arena, &options).unwrap(); |
| 237 | + /// let mut session = Session::builder() |
| 238 | + /// .declare_custom_type("CustomTimestamp") |
| 239 | + /// .build(); |
| 240 | + /// let query = session.parse("FROM e IN events PROJECT INTO { ts: e.data.timestamp as CustomTimestamp }").unwrap(); |
| 241 | + /// let typed_query = session.run_static_analysis(query).unwrap(); |
244 | 242 | /// ``` |
245 | 243 | Custom(String), |
246 | 244 | } |
@@ -778,12 +776,10 @@ pub struct Raw; |
778 | 776 | /// # Examples |
779 | 777 | /// |
780 | 778 | /// ``` |
781 | | -/// use eventql_parser::parse_query; |
782 | | -/// use eventql_parser::arena::ExprArena; |
| 779 | +/// use eventql_parser::Session; |
783 | 780 | /// |
784 | | -/// let mut arena = ExprArena::default(); |
785 | | -/// let query = parse_query( |
786 | | -/// &mut arena, |
| 781 | +/// let mut session = Session::builder().use_stdlib().build(); |
| 782 | +/// let query = session.parse( |
787 | 783 | /// "FROM e IN events \ |
788 | 784 | /// WHERE e.price > 100 \ |
789 | 785 | /// ORDER BY e.timestamp DESC \ |
@@ -825,36 +821,3 @@ pub struct Query<A> { |
825 | 821 | /// This provides compile-time guarantees about the query's type safety. |
826 | 822 | pub meta: A, |
827 | 823 | } |
828 | | - |
829 | | -impl Query<Raw> { |
830 | | - /// Performs static analysis on this raw query. |
831 | | - /// |
832 | | - /// This is a convenience method that runs type checking and variable scoping |
833 | | - /// analysis on the query, converting it from a raw (untyped) query to a |
834 | | - /// typed query. |
835 | | - /// |
836 | | - /// The analysis validates: |
837 | | - /// - Variable declarations and scoping |
838 | | - /// - Type compatibility in expressions and operations |
839 | | - /// - Valid field accesses on record types |
840 | | - /// - Correct function argument types and counts |
841 | | - /// - Aggregate function usage restrictions (only in PROJECT INTO) |
842 | | - /// - No mixing of aggregate functions with source-bound fields |
843 | | - /// - Aggregate function arguments are source-bound fields |
844 | | - /// - Non-empty record literals in projections |
845 | | - /// |
846 | | - /// # Arguments |
847 | | - /// |
848 | | - /// * `options` - Configuration containing type information and default scope |
849 | | - /// |
850 | | - /// # Returns |
851 | | - /// |
852 | | - /// Returns a typed query on success, or an error if type checking fails. |
853 | | - pub fn run_static_analysis( |
854 | | - self, |
855 | | - arena: &ExprArena, |
856 | | - options: &AnalysisOptions, |
857 | | - ) -> crate::Result<Query<Typed>> { |
858 | | - static_analysis(arena, options, self).map_err(Error::Analysis) |
859 | | - } |
860 | | -} |
0 commit comments