From f96850a25daa5408af32e24d3fa2ad6a42df573c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Venturo?= Date: Wed, 1 Apr 2026 19:35:45 +0000 Subject: [PATCH] feat: allow for runtime length arrays of sorts and selects --- .../aztec-nr/aztec/src/note/note_getter.nr | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/noir-projects/aztec-nr/aztec/src/note/note_getter.nr b/noir-projects/aztec-nr/aztec/src/note/note_getter.nr index 3a354205f93..a0afbb0aaa0 100644 --- a/noir-projects/aztec-nr/aztec/src/note/note_getter.nr +++ b/noir-projects/aztec-nr/aztec/src/note/note_getter.nr @@ -45,25 +45,29 @@ fn extract_property_value_from_selector(packed_note: [Field; N], sel } fn check_packed_note(packed_note: [Field; N], selects: BoundedVec, N>) { - for i in 0..selects.len() { - let select = selects.get_unchecked(i).unwrap_unchecked(); - let value_field = extract_property_value_from_selector(packed_note, select.property_selector); + for i in 0..selects.max_len() { + if i < selects.len() { + let select = selects.get_unchecked(i).unwrap_unchecked(); + let value_field = extract_property_value_from_selector(packed_note, select.property_selector); - assert(compare(value_field, select.comparator, select.value.to_field()), "Mismatch return note field."); + assert(compare(value_field, select.comparator, select.value.to_field()), "Mismatch return note field."); + } } } fn check_notes_order(fields_0: [Field; N], fields_1: [Field; N], sorts: BoundedVec, N>) { - for i in 0..sorts.len() { - let sort = sorts.get_unchecked(i).unwrap_unchecked(); - let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector); - let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector); - let eq = field_0 == field_1; - let lt = field_0.lt(field_1); - if sort.order == SortOrder.ASC { - assert(eq | lt, "Return notes not sorted in ascending order."); - } else if !eq { - assert(!lt, "Return notes not sorted in descending order."); + for i in 0..sorts.max_len() { + if i < sorts.len() { + let sort = sorts.get_unchecked(i).unwrap_unchecked(); + let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector); + let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector); + let eq = field_0 == field_1; + let lt = field_0.lt(field_1); + if sort.order == SortOrder.ASC { + assert(eq | lt, "Return notes not sorted in ascending order."); + } else if !eq { + assert(!lt, "Return notes not sorted in descending order."); + } } } }