@@ -135,6 +135,8 @@ let my_types () = register_pre_translate_type begin fun env t ->
135135 | _ -> raise NotSupportedByKrmlExtension
136136end
137137
138+ let zero_for_deref = EQualified (["Pulse"; "Lib"; "Pervasives"], "_zero_for_deref")
139+
138140let my_exprs () = register_pre_translate_expr begin fun env e ->
139141 match e.expr with
140142 | MLE_App ({ expr = MLE_TApp({ expr = MLE_Name p }, _) }, [ _ (* typedef *) ])
@@ -197,7 +199,7 @@ let my_exprs () = register_pre_translate_expr begin fun env e ->
197199 ->
198200 EAddrOf (EField (
199201 TQualified (Option.must (lident_of_string struct_name)),
200- EBufRead (translate_expr env r, EQualified (["C"], "_zero_for_deref") ),
202+ EBufRead (translate_expr env r, zero_for_deref ),
201203 field_name))
202204
203205 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, (t :: _))},
@@ -212,17 +214,17 @@ let my_exprs () = register_pre_translate_expr begin fun env e ->
212214 ->
213215 EAddrOf (EField (
214216 translate_type env t,
215- EBufRead (translate_expr env r, EQualified (["C"], "_zero_for_deref") ),
217+ EBufRead (translate_expr env r, zero_for_deref ),
216218 field_name))
217219
218220 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, _)}, [_ (* value *) ; _ (* perm *) ; r])
219221 when string_of_mlpath p = "Pulse.C.Types.Scalar.read0" ->
220- EBufRead (translate_expr env r, EQualified (["C"], "_zero_for_deref") )
222+ EBufRead (translate_expr env r, zero_for_deref )
221223
222224 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, _)}, [_ (* value *); r; x])
223225 when string_of_mlpath p = "Pulse.C.Types.Scalar.write" ->
224226 EAssign (
225- EBufRead (translate_expr env r, EQualified (["C"], "_zero_for_deref") ),
227+ EBufRead (translate_expr env r, zero_for_deref ),
226228 translate_expr env x)
227229
228230 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, _)}, [
@@ -235,8 +237,8 @@ let my_exprs () = register_pre_translate_expr begin fun env e ->
235237 ])
236238 when string_of_mlpath p = "Pulse.C.Types.Base.copy" ->
237239 EAssign (
238- EBufRead (translate_expr env dst, EQualified (["C"], "_zero_for_deref") ),
239- EBufRead (translate_expr env src, EQualified (["C"], "_zero_for_deref") ))
240+ EBufRead (translate_expr env dst, zero_for_deref ),
241+ EBufRead (translate_expr env src, zero_for_deref ))
240242
241243 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, _)}, [
242244 _ (* typedef *);
@@ -268,7 +270,7 @@ let my_exprs () = register_pre_translate_expr begin fun env e ->
268270 ])
269271 when string_of_mlpath p = "Pulse.C.Types.Array.array_ref_of_base" ->
270272 // this is not a true read, this is how Karamel models arrays decaying into pointers
271- EBufRead (translate_expr env r, EQualified (["C"], "_zero_for_deref") )
273+ EBufRead (translate_expr env r, zero_for_deref )
272274
273275 | MLE_App ({expr=MLE_TApp ({expr=MLE_Name p}, _)}, [
274276 _ (* typedef *);
0 commit comments