Feat/fst order pred part3 & part4 (#457)

* support wildcard predicates in frontend

* suport wildcard predicate in podlang

* add validation test

* test full flow and apply some fixes

* fix clippy

* fix merge issues

* use desugared predicate

* Fix parsing of intro statement templates inside custom predicates

* Tidy up comments

* lang: handle wildcard predicate

* add unreachable message

---------

Co-authored-by: Rob Knight <mail@robknight.org.uk>
This commit is contained in:
Eduard S. 2026-02-02 10:59:33 +01:00 committed by GitHub
parent b66f5051b5
commit 498e946612
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 324 additions and 180 deletions

View file

@ -3255,8 +3255,12 @@ mod tests {
use NativePredicate as NP;
use StatementTmplBuilder as STB;
let mut builder = CustomPredicateBatchBuilder::new(params.clone(), "batch".into());
let stb0 = STB::new(NP::Equal).arg(("id", "score")).arg(literal(42));
let stb1 = STB::new(NP::Equal).arg(("id", "key")).arg("secret");
let stb0 = STB::new_from_pred(NP::Equal)
.arg(("id", "score"))
.arg(literal(42));
let stb1 = STB::new_from_pred(NP::Equal)
.arg(("id", "key"))
.arg("secret");
let _ = builder.predicate_and(
"pred_and",
&["id"],
@ -3349,8 +3353,10 @@ mod tests {
use NativePredicate as NP;
use StatementTmplBuilder as STB;
let mut builder = CustomPredicateBatchBuilder::new(params.clone(), "batch".into());
let stb0 = STB::new(NP::Equal).arg(("id", "score")).arg(literal(42));
let stb1 = STB::new(NP::Equal)
let stb0 = STB::new_from_pred(NP::Equal)
.arg(("id", "score"))
.arg(literal(42));
let stb1 = STB::new_from_pred(NP::Equal)
.arg(("secret_id", "key"))
.arg(("id", "score"));
let _ = builder.predicate_and(

View file

@ -1083,11 +1083,11 @@ pub mod tests {
let vd_set = VDSet::new(&vds);
let mut cpb_builder = CustomPredicateBatchBuilder::new(params.clone(), "cpb".into());
let stb0 = STB::new(NP::Contains)
let stb0 = STB::new_from_pred(NP::Contains)
.arg("dict")
.arg(literal("score"))
.arg(literal(42));
let stb1 = STB::new(NP::Equal)
let stb1 = STB::new_from_pred(NP::Equal)
.arg(("secret_dict", "key"))
.arg(("dict", "score"));
let _ = cpb_builder.predicate_and(