From fea8b8c0d034577e1bec96640fc3a804d1297f45 Mon Sep 17 00:00:00 2001 From: Elie ROUDNINSKI Date: Sat, 22 Feb 2025 18:48:57 +0100 Subject: [PATCH] Pass current filter parser when checking function parameters --- engine/src/ast/field_expr.rs | 1 + engine/src/ast/function_expr.rs | 1 + engine/src/functions.rs | 3 +++ 3 files changed, 5 insertions(+) diff --git a/engine/src/ast/field_expr.rs b/engine/src/ast/field_expr.rs index 71916406..faca8987 100644 --- a/engine/src/ast/field_expr.rs +++ b/engine/src/ast/field_expr.rs @@ -715,6 +715,7 @@ mod tests { impl FunctionDefinition for FilterFunction { fn check_param( &self, + _: &FilterParser<'_>, params: &mut dyn ExactSizeIterator>, next_param: &FunctionParam<'_>, _: Option<&mut FunctionDefinitionContext>, diff --git a/engine/src/ast/function_expr.rs b/engine/src/ast/function_expr.rs index 22e98819..00f08c43 100644 --- a/engine/src/ast/function_expr.rs +++ b/engine/src/ast/function_expr.rs @@ -418,6 +418,7 @@ impl<'s> FunctionCallExpr<'s> { definition .check_param( + parser, &mut args.iter().map(|arg| arg.into()), &next_param, ctx.as_mut(), diff --git a/engine/src/functions.rs b/engine/src/functions.rs index 9a234006..1153c806 100644 --- a/engine/src/functions.rs +++ b/engine/src/functions.rs @@ -1,6 +1,7 @@ use crate::{ filter::CompiledValueResult, types::{ExpectedType, ExpectedTypeList, GetType, LhsValue, RhsValue, Type, TypeMismatchError}, + FilterParser, }; use std::any::Any; use std::convert::TryFrom; @@ -370,6 +371,7 @@ pub trait FunctionDefinition: Debug + Send + Sync { /// correct. Return the expected the parameter definition. fn check_param( &self, + parser: &FilterParser<'_>, params: &mut dyn ExactSizeIterator>, next_param: &FunctionParam<'_>, ctx: Option<&mut FunctionDefinitionContext>, @@ -458,6 +460,7 @@ pub struct SimpleFunctionDefinition { impl FunctionDefinition for SimpleFunctionDefinition { fn check_param( &self, + _parser: &FilterParser<'_>, params: &mut dyn ExactSizeIterator>, next_param: &FunctionParam<'_>, _: Option<&mut FunctionDefinitionContext>,