@@ -208,6 +208,7 @@ impl CustomPredicateRef {
208208 } )
209209 . collect ( ) ,
210210 args_len : cp. args_len ,
211+ name : cp. name . to_string ( ) ,
211212 }
212213 } ;
213214 match custom_predicate. conjunction {
@@ -262,20 +263,32 @@ pub struct CustomPredicate {
262263 pub ( crate ) args_len : usize ,
263264 // TODO: Add private args length?
264265 // TODO: Add args type information?
266+ pub ( crate ) name : String ,
265267}
266268
267269impl CustomPredicate {
268- pub fn and ( params : & Params , statements : Vec < StatementTmpl > , args_len : usize ) -> Result < Self > {
269- Self :: new ( params, true , statements, args_len)
270+ pub fn and (
271+ params : & Params ,
272+ statements : Vec < StatementTmpl > ,
273+ args_len : usize ,
274+ name : & str ,
275+ ) -> Result < Self > {
276+ Self :: new ( params, true , statements, args_len, name)
270277 }
271- pub fn or ( params : & Params , statements : Vec < StatementTmpl > , args_len : usize ) -> Result < Self > {
272- Self :: new ( params, false , statements, args_len)
278+ pub fn or (
279+ params : & Params ,
280+ statements : Vec < StatementTmpl > ,
281+ args_len : usize ,
282+ name : & str ,
283+ ) -> Result < Self > {
284+ Self :: new ( params, false , statements, args_len, name)
273285 }
274286 pub fn new (
275287 params : & Params ,
276288 conjunction : bool ,
277289 statements : Vec < StatementTmpl > ,
278290 args_len : usize ,
291+ name : & str ,
279292 ) -> Result < Self > {
280293 if statements. len ( ) > params. max_custom_predicate_arity {
281294 return Err ( anyhow ! ( "Custom predicate depends on too many statements" ) ) ;
@@ -285,6 +298,7 @@ impl CustomPredicate {
285298 conjunction,
286299 statements,
287300 args_len,
301+ name : name. to_string ( ) ,
288302 } )
289303 }
290304}
@@ -473,8 +487,9 @@ impl CustomPredicateBatchBuilder {
473487 args : & [ & str ] ,
474488 priv_args : & [ & str ] ,
475489 sts : & [ StatementTmplBuilder ] ,
490+ name : & str ,
476491 ) -> Result < Predicate > {
477- self . predicate ( params, true , args, priv_args, sts)
492+ self . predicate ( params, true , args, priv_args, sts, name )
478493 }
479494
480495 pub fn predicate_or (
@@ -483,8 +498,9 @@ impl CustomPredicateBatchBuilder {
483498 args : & [ & str ] ,
484499 priv_args : & [ & str ] ,
485500 sts : & [ StatementTmplBuilder ] ,
501+ name : & str ,
486502 ) -> Result < Predicate > {
487- self . predicate ( params, false , args, priv_args, sts)
503+ self . predicate ( params, false , args, priv_args, sts, name )
488504 }
489505
490506 /// creates the custom predicate from the given input, adds it to the
@@ -496,6 +512,7 @@ impl CustomPredicateBatchBuilder {
496512 args : & [ & str ] ,
497513 priv_args : & [ & str ] ,
498514 sts : & [ StatementTmplBuilder ] ,
515+ name : & str ,
499516 ) -> Result < Predicate > {
500517 let statements = sts
501518 . iter ( )
@@ -517,7 +534,8 @@ impl CustomPredicateBatchBuilder {
517534 }
518535 } )
519536 . collect ( ) ;
520- let custom_predicate = CustomPredicate :: new ( params, conjunction, statements, args. len ( ) ) ?;
537+ let custom_predicate =
538+ CustomPredicate :: new ( params, conjunction, statements, args. len ( ) , name) ?;
521539 self . predicates . push ( custom_predicate) ;
522540 Ok ( Predicate :: BatchSelf ( self . predicates . len ( ) - 1 ) )
523541 }
0 commit comments