Skip to content

Commit b8c5e54

Browse files
authored
Merge branch 'main' into jl/documentation
2 parents 8a985b5 + 8adc6a8 commit b8c5e54

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

src/json.nr

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -761,28 +761,32 @@ impl<let NumBytes: u32, let NumPackedFields: u32, let MaxNumTokens: u32, let Max
761761
let entry = TranscriptEntry::to_field(TranscriptEntry { token, index, length });
762762

763763
if token == LITERAL_TOKEN as Field {
764-
let index_as_u32 = index as u32;
765764
index.assert_max_bit_size::<8>();
765+
let index_as_u32 = index as u32;
766+
let first_char = self.json[index_as_u32];
767+
let second_char = self.json[index_as_u32 + 1];
768+
let third_char = self.json[index_as_u32 + 2];
769+
let fourth_char = self.json[index_as_u32 + 3];
766770
if length == 5 {
767-
let is_false = (self.json[index_as_u32] == 102) // 'f'
768-
& (self.json[index_as_u32 + 1] == 97) // 'a'
769-
& (self.json[index_as_u32 + 2] == 108) // 'l'
770-
& (self.json[index_as_u32 + 3] == 115) // 's'
771-
& (self.json[index_as_u32 + 4] == 101); // 'e'
771+
let fifth_char = self.json[index_as_u32 + 4];
772+
let is_false = (first_char == 102) // 'f'
773+
& (second_char == 97) // 'a'
774+
& (third_char == 108) // 'l'
775+
& (fourth_char == 115) // 's'
776+
& (fifth_char == 101); // 'e'
772777
assert(is_false, "invalid literal");
773-
} else if length == 4 {
774-
let is_true = (self.json[index_as_u32] == 116) // 't'
775-
& (self.json[index_as_u32 + 1] == 114) // 'r'
776-
& (self.json[index_as_u32 + 2] == 117) // 'u'
777-
& (self.json[index_as_u32 + 3] == 101); // 'e'
778-
779-
let is_null = (self.json[index_as_u32] == 110) // 'n'
780-
& (self.json[index_as_u32 + 1] == 117) // 'u'
781-
& (self.json[index_as_u32 + 2] == 108) // 'l'
782-
& (self.json[index_as_u32 + 3] == 108); // 'l'
783-
assert(is_null | is_true, "invalid literal");
784778
} else {
785-
assert(false, "invalid literal");
779+
assert_eq(length, 4, "invalid literal");
780+
let is_true = (first_char == 116) // 't'
781+
& (second_char == 114) // 'r'
782+
& (third_char == 117) // 'u'
783+
& (fourth_char == 101); // 'e'
784+
785+
let is_null = (first_char == 110) // 'n'
786+
& (second_char == 117) // 'u'
787+
& (third_char == 108) // 'l'
788+
& (fourth_char == 108); // 'l'
789+
assert(is_null | is_true, "invalid literal");
786790
}
787791
}
788792
// 2 gates

0 commit comments

Comments
 (0)