@@ -109,7 +109,7 @@ pub fn process_pest_tree(
109109 available_batches,
110110 ) ?;
111111
112- second_pass ( & mut processing_ctx)
112+ second_pass ( & mut processing_ctx, params )
113113}
114114
115115/// Pass 1: Iterates through top-level definitions, records custom predicate
@@ -266,18 +266,21 @@ enum StatementContext<'a> {
266266 } ,
267267}
268268
269- fn second_pass ( ctx : & mut ProcessingContext ) -> Result < PodlangOutput , ProcessorError > {
269+ fn second_pass (
270+ ctx : & mut ProcessingContext ,
271+ params : & Params ,
272+ ) -> Result < PodlangOutput , ProcessorError > {
270273 let mut cpb_builder =
271274 CustomPredicateBatchBuilder :: new ( ctx. params . clone ( ) , "PodlangBatch" . to_string ( ) ) ;
272275
273276 for pred_pair in & ctx. custom_predicate_pairs {
274- process_and_add_custom_predicate_to_batch ( pred_pair, ctx, & mut cpb_builder) ?;
277+ process_and_add_custom_predicate_to_batch ( params , pred_pair, ctx, & mut cpb_builder) ?;
275278 }
276279
277280 let custom_batch = cpb_builder. finish ( ) ;
278281
279282 let request_templates = if let Some ( req_pair) = & ctx. request_pair {
280- process_request_def ( req_pair, ctx, & custom_batch) ?
283+ process_request_def ( params , req_pair, ctx, & custom_batch) ?
281284 } else {
282285 Vec :: new ( )
283286 } ;
@@ -288,10 +291,13 @@ fn second_pass(ctx: &mut ProcessingContext) -> Result<PodlangOutput, ProcessorEr
288291 } )
289292}
290293
291- fn pest_pair_to_builder_arg ( arg_content_pair : & Pair < Rule > ) -> Result < BuilderArg , ProcessorError > {
294+ fn pest_pair_to_builder_arg (
295+ params : & Params ,
296+ arg_content_pair : & Pair < Rule > ,
297+ ) -> Result < BuilderArg , ProcessorError > {
292298 match arg_content_pair. as_rule ( ) {
293299 Rule :: literal_value => {
294- let value = process_literal_value ( arg_content_pair) ?;
300+ let value = process_literal_value ( params , arg_content_pair) ?;
295301 Ok ( BuilderArg :: Literal ( value) )
296302 }
297303 Rule :: wildcard => {
@@ -421,6 +427,7 @@ fn validate_and_build_statement_template(
421427}
422428
423429fn process_and_add_custom_predicate_to_batch (
430+ params : & Params ,
424431 pred_def_pair : & Pair < Rule > ,
425432 processing_ctx : & ProcessingContext ,
426433 cpb_builder : & mut CustomPredicateBatchBuilder ,
@@ -505,6 +512,7 @@ fn process_and_add_custom_predicate_to_batch(
505512 . filter ( |p| p. as_rule ( ) == Rule :: statement)
506513 {
507514 let stb = process_statement_template (
515+ params,
508516 & stmt_pair,
509517 processing_ctx,
510518 StatementContext :: CustomPredicate ,
@@ -526,6 +534,7 @@ fn process_and_add_custom_predicate_to_batch(
526534}
527535
528536fn process_request_def (
537+ params : & Params ,
529538 req_def_pair : & Pair < Rule > ,
530539 processing_ctx : & ProcessingContext ,
531540 custom_batch : & Arc < CustomPredicateBatch > ,
@@ -545,6 +554,7 @@ fn process_request_def(
545554 . filter ( |p| p. as_rule ( ) == Rule :: statement)
546555 {
547556 let built_stb = process_statement_template (
557+ params,
548558 & stmt_pair,
549559 processing_ctx,
550560 StatementContext :: Request {
@@ -569,6 +579,7 @@ fn process_request_def(
569579}
570580
571581fn process_statement_template (
582+ params : & Params ,
572583 stmt_pair : & Pair < Rule > ,
573584 processing_ctx : & ProcessingContext ,
574585 mut context : StatementContext ,
@@ -579,7 +590,7 @@ fn process_statement_template(
579590 . unwrap ( ) ;
580591 let stmt_name_str = name_pair. as_str ( ) ;
581592
582- let builder_args = parse_statement_args ( stmt_pair) ?;
593+ let builder_args = parse_statement_args ( params , stmt_pair) ?;
583594
584595 if let StatementContext :: Request {
585596 wildcard_names,
@@ -640,7 +651,10 @@ fn process_statement_template(
640651 Ok ( stb. desugar ( ) )
641652}
642653
643- fn process_literal_value ( lit_val_pair : & Pair < Rule > ) -> Result < Value , ProcessorError > {
654+ fn process_literal_value (
655+ params : & Params ,
656+ lit_val_pair : & Pair < Rule > ,
657+ ) -> Result < Value , ProcessorError > {
644658 let inner_lit = lit_val_pair. clone ( ) . into_inner ( ) . next ( ) . unwrap ( ) ;
645659
646660 match inner_lit. as_rule ( ) {
@@ -684,10 +698,10 @@ fn process_literal_value(lit_val_pair: &Pair<Rule>) -> Result<Value, ProcessorEr
684698 Rule :: literal_array => {
685699 let elements: Result < Vec < Value > , ProcessorError > = inner_lit
686700 . into_inner ( )
687- . map ( |elem_pair| process_literal_value ( & elem_pair) )
701+ . map ( |elem_pair| process_literal_value ( params , & elem_pair) )
688702 . collect ( ) ;
689703 let middleware_array =
690- middleware:: containers:: Array :: new ( crate :: constants :: MAX_DEPTH , elements?)
704+ middleware:: containers:: Array :: new ( params . max_depth_mt_containers , elements?)
691705 . map_err ( |e| {
692706 ProcessorError :: Internal ( format ! ( "Failed to create Array: {}" , e) )
693707 } ) ?;
@@ -696,12 +710,13 @@ fn process_literal_value(lit_val_pair: &Pair<Rule>) -> Result<Value, ProcessorEr
696710 Rule :: literal_set => {
697711 let elements: Result < HashSet < Value > , ProcessorError > = inner_lit
698712 . into_inner ( )
699- . map ( |elem_pair| process_literal_value ( & elem_pair) )
713+ . map ( |elem_pair| process_literal_value ( params , & elem_pair) )
700714 . collect ( ) ;
701715 let middleware_set =
702- middleware:: containers:: Set :: new ( crate :: constants:: MAX_DEPTH , elements?) . map_err (
703- |e| ProcessorError :: Internal ( format ! ( "Failed to create Set: {}" , e) ) ,
704- ) ?;
716+ middleware:: containers:: Set :: new ( params. max_depth_mt_containers , elements?)
717+ . map_err ( |e| {
718+ ProcessorError :: Internal ( format ! ( "Failed to create Set: {}" , e) )
719+ } ) ?;
705720 Ok ( Value :: from ( middleware_set) )
706721 }
707722 Rule :: literal_dict => {
@@ -712,12 +727,12 @@ fn process_literal_value(lit_val_pair: &Pair<Rule>) -> Result<Value, ProcessorEr
712727 let key_pair = entry_inner. next ( ) . unwrap ( ) ;
713728 let val_pair = entry_inner. next ( ) . unwrap ( ) ;
714729 let key_str = parse_pest_string_literal ( & key_pair) ?;
715- let val = process_literal_value ( & val_pair) ?;
730+ let val = process_literal_value ( params , & val_pair) ?;
716731 Ok ( ( Key :: new ( key_str) , val) )
717732 } )
718733 . collect ( ) ;
719734 let middleware_dict =
720- middleware:: containers:: Dictionary :: new ( crate :: constants :: MAX_DEPTH , pairs?)
735+ middleware:: containers:: Dictionary :: new ( params . max_depth_mt_containers , pairs?)
721736 . map_err ( |e| {
722737 ProcessorError :: Internal ( format ! ( "Failed to create Dictionary: {}" , e) )
723738 } ) ?;
@@ -862,7 +877,10 @@ fn resolve_request_statement_builder(
862877 } )
863878}
864879
865- fn parse_statement_args ( stmt_pair : & Pair < Rule > ) -> Result < Vec < BuilderArg > , ProcessorError > {
880+ fn parse_statement_args (
881+ params : & Params ,
882+ stmt_pair : & Pair < Rule > ,
883+ ) -> Result < Vec < BuilderArg > , ProcessorError > {
866884 let mut builder_args = Vec :: new ( ) ;
867885 let mut inner_stmt_pairs = stmt_pair. clone ( ) . into_inner ( ) ;
868886
@@ -873,7 +891,7 @@ fn parse_statement_args(stmt_pair: &Pair<Rule>) -> Result<Vec<BuilderArg>, Proce
873891 . filter ( |p| p. as_rule ( ) == Rule :: statement_arg)
874892 {
875893 let arg_content_pair = arg_pair. into_inner ( ) . next ( ) . unwrap ( ) ;
876- let builder_arg = pest_pair_to_builder_arg ( & arg_content_pair) ?;
894+ let builder_arg = pest_pair_to_builder_arg ( params , & arg_content_pair) ?;
877895 builder_args. push ( builder_arg) ;
878896 }
879897 }
@@ -1103,7 +1121,7 @@ mod processor_tests {
11031121 let params = Params :: default ( ) ;
11041122 let mut ctx = ProcessingContext :: new ( & params) ;
11051123 first_pass ( pairs, & mut ctx, & [ ] ) ?;
1106- let result = second_pass ( & mut ctx) ;
1124+ let result = second_pass ( & mut ctx, & params ) ;
11071125 assert ! ( result. is_err( ) ) ;
11081126 match result. err ( ) . unwrap ( ) {
11091127 ProcessorError :: UndefinedIdentifier { name, span : _ } => {
@@ -1122,7 +1140,7 @@ mod processor_tests {
11221140 let params = Params :: default ( ) ;
11231141 let mut ctx = ProcessingContext :: new ( & params) ;
11241142 first_pass ( pairs, & mut ctx, & [ ] ) ?;
1125- let result = second_pass ( & mut ctx) ;
1143+ let result = second_pass ( & mut ctx, & params ) ;
11261144 assert ! ( result. is_err( ) ) ;
11271145 match result. err ( ) . unwrap ( ) {
11281146 ProcessorError :: UndefinedIdentifier { name, span : _ } => {
0 commit comments