@@ -66,6 +66,7 @@ impl<F: AcirField> MemoryOpSolver<F> {
66
66
op : & MemOp < F > ,
67
67
initial_witness : & mut WitnessMap < F > ,
68
68
predicate : & Option < Expression < F > > ,
69
+ pedantic_solving : bool ,
69
70
) -> Result < ( ) , OpcodeResolutionError < F > > {
70
71
let operation = get_value ( & op. operation , initial_witness) ?;
71
72
@@ -83,7 +84,9 @@ impl<F: AcirField> MemoryOpSolver<F> {
83
84
let is_read_operation = operation. is_zero ( ) ;
84
85
85
86
// Fetch whether or not the predicate is false (e.g. equal to zero)
86
- let skip_operation = is_predicate_false ( initial_witness, predicate) ?;
87
+ let opcode_location = ErrorLocation :: Unresolved ;
88
+ let skip_operation =
89
+ is_predicate_false ( initial_witness, predicate, pedantic_solving, & opcode_location) ?;
87
90
88
91
if is_read_operation {
89
92
// `value_read = arr[memory_index]`
@@ -131,6 +134,9 @@ mod tests {
131
134
132
135
use super :: MemoryOpSolver ;
133
136
137
+ // use pedantic_solving for tests
138
+ const PEDANTIC_SOLVING : bool = true ;
139
+
134
140
#[ test]
135
141
fn test_solver ( ) {
136
142
let mut initial_witness = WitnessMap :: from ( BTreeMap :: from_iter ( [
@@ -150,7 +156,9 @@ mod tests {
150
156
block_solver. init ( & init, & initial_witness) . unwrap ( ) ;
151
157
152
158
for op in trace {
153
- block_solver. solve_memory_op ( & op, & mut initial_witness, & None ) . unwrap ( ) ;
159
+ block_solver
160
+ . solve_memory_op ( & op, & mut initial_witness, & None , PEDANTIC_SOLVING )
161
+ . unwrap ( ) ;
154
162
}
155
163
156
164
assert_eq ! ( initial_witness[ & Witness ( 4 ) ] , FieldElement :: from( 2u128 ) ) ;
@@ -175,7 +183,9 @@ mod tests {
175
183
let mut err = None ;
176
184
for op in invalid_trace {
177
185
if err. is_none ( ) {
178
- err = block_solver. solve_memory_op ( & op, & mut initial_witness, & None ) . err ( ) ;
186
+ err = block_solver
187
+ . solve_memory_op ( & op, & mut initial_witness, & None , PEDANTIC_SOLVING )
188
+ . err ( ) ;
179
189
}
180
190
}
181
191
@@ -209,7 +219,12 @@ mod tests {
209
219
for op in invalid_trace {
210
220
if err. is_none ( ) {
211
221
err = block_solver
212
- . solve_memory_op ( & op, & mut initial_witness, & Some ( Expression :: zero ( ) ) )
222
+ . solve_memory_op (
223
+ & op,
224
+ & mut initial_witness,
225
+ & Some ( Expression :: zero ( ) ) ,
226
+ PEDANTIC_SOLVING ,
227
+ )
213
228
. err ( ) ;
214
229
}
215
230
}
@@ -241,7 +256,12 @@ mod tests {
241
256
for op in invalid_trace {
242
257
if err. is_none ( ) {
243
258
err = block_solver
244
- . solve_memory_op ( & op, & mut initial_witness, & Some ( Expression :: zero ( ) ) )
259
+ . solve_memory_op (
260
+ & op,
261
+ & mut initial_witness,
262
+ & Some ( Expression :: zero ( ) ) ,
263
+ PEDANTIC_SOLVING ,
264
+ )
245
265
. err ( ) ;
246
266
}
247
267
}
0 commit comments