diff options
| author | Son Ho | 2022-03-03 17:36:33 +0100 | 
|---|---|---|
| committer | Son Ho | 2022-03-03 17:36:33 +0100 | 
| commit | 00104884e101d3125e62dde9757b9c1cacb3feec (patch) | |
| tree | 95714d86561013b328e00138f12bb9889576eca5 /src/LlbcOfJson.ml | |
| parent | 80d0d22f152386ffe28b48f42f42f8f736170014 (diff) | |
Make good progress on adding support for external and opaque
declarations
Diffstat (limited to 'src/LlbcOfJson.ml')
| -rw-r--r-- | src/LlbcOfJson.ml | 18 | 
1 files changed, 12 insertions, 6 deletions
| diff --git a/src/LlbcOfJson.ml b/src/LlbcOfJson.ml index e293b030..6e0adfb6 100644 --- a/src/LlbcOfJson.ml +++ b/src/LlbcOfJson.ml @@ -607,6 +607,16 @@ and switch_targets_of_json (js : json) : (A.switch_targets, string) result =          Ok (A.SwitchInt (int_ty, tgts, otherwise))      | _ -> Error "") +let fun_body_of_json (js : json) : (A.fun_body, string) result = +  combine_error_msgs js "fun_body_of_json" +    (match js with +    | `Assoc [ ("arg_count", arg_count); ("locals", locals); ("body", body) ] -> +        let* arg_count = int_of_json arg_count in +        let* locals = list_of_json var_of_json locals in +        let* body = statement_of_json body in +        Ok { A.arg_count; locals; body } +    | _ -> Error "") +  let fun_decl_of_json (js : json) : (A.fun_decl, string) result =    combine_error_msgs js "fun_decl_of_json"      (match js with @@ -615,17 +625,13 @@ let fun_decl_of_json (js : json) : (A.fun_decl, string) result =            ("def_id", def_id);            ("name", name);            ("signature", signature); -          ("arg_count", arg_count); -          ("locals", locals);            ("body", body);          ] ->          let* def_id = A.FunDeclId.id_of_json def_id in          let* name = fun_name_of_json name in          let* signature = fun_sig_of_json signature in -        let* arg_count = int_of_json arg_count in -        let* locals = list_of_json var_of_json locals in -        let* body = statement_of_json body in -        Ok { A.def_id; name; signature; arg_count; locals; body } +        let* body = option_of_json fun_body_of_json body in +        Ok { A.def_id; name; signature; body }      | _ -> Error "")  let g_declaration_group_of_json (id_of_json : json -> ('id, string) result) | 
