Skip to content

Commit 1da5fcd

Browse files
authored
feat: remove recursion from FilterItems (#523)
1 parent 76bcb9a commit 1da5fcd

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

DynamoDbEncryption/dafny/DynamoDbEncryption/src/FilterExpr.dfy

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1429,17 +1429,15 @@ module DynamoDBFilterExpr {
14291429
ensures b.ValidState()
14301430
modifies b.Modifies()
14311431
{
1432-
if |ItemList| == 0 {
1433-
return Success([]);
1434-
}
1435-
var newAttrs :- b.GeneratePlainBeacons(ItemList[0]);
1436-
var doesMatch :- EvalExpr(parsed, ItemList[0] + newAttrs, names, values);
1437-
var rest :- FilterItems(b, parsed, ItemList[1..], names, values);
1438-
if doesMatch {
1439-
return Success(ItemList[..1] + rest);
1440-
} else {
1441-
return Success(rest);
1432+
var acc : DDB.ItemList := [];
1433+
for i := 0 to |ItemList| {
1434+
var newAttrs :- b.GeneratePlainBeacons(ItemList[i]);
1435+
var doesMatch :- EvalExpr(parsed, ItemList[i] + newAttrs, names, values);
1436+
if doesMatch {
1437+
acc := acc + [ItemList[i]];
1438+
}
14421439
}
1440+
return Success(acc);
14431441
}
14441442

14451443
// return the results for which the expression is true

0 commit comments

Comments
 (0)