Skip to content

Commit 2b0e2bb

Browse files
committed
fix: wrong implementation of parser for predicate call arguments
1 parent 1816532 commit 2b0e2bb

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/annot.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -477,14 +477,23 @@ where
477477
chc::Term::FormulaExistentialVar(sort.clone(), ident.name.to_string());
478478
FormulaOrTerm::Term(var, sort.clone())
479479
}
480-
_ => {
481-
if let Some(TokenTree::Delimited(_, _, Delimiter::Parenthesis, _args)) = self.look_ahead_token_tree(1) {
480+
_ => {
481+
let next_tt = self.look_ahead_token_tree(0);
482+
483+
if let Some(TokenTree::Delimited(_, _, Delimiter::Parenthesis, args)) = next_tt {
484+
let args = args.clone();
482485
self.consume();
486+
483487
let pred_symbol = chc::UserDefinedPredSymbol::new(ident.name.to_string());
484488
let pred = chc::Pred::UserDefined(pred_symbol);
485489

486-
let args = self.parse_datatype_ctor_args()?;
487-
490+
let mut parser = Parser {
491+
resolver: self.boxed_resolver(),
492+
cursor: args.trees(),
493+
formula_existentials: self.formula_existentials.clone(),
494+
};
495+
let args = parser.parse_datatype_ctor_args()?;
496+
488497
let atom = chc::Atom::new(pred, args);
489498
let formula = chc::Formula::Atom(atom);
490499
return Ok(FormulaOrTerm::Formula(formula));

0 commit comments

Comments
 (0)