diff options
| author | Alasdair | 2020-09-29 16:23:40 +0100 |
|---|---|---|
| committer | Alasdair | 2020-09-29 16:32:24 +0100 |
| commit | 7441db19749fb7fb9383b6361dfbd99547e53486 (patch) | |
| tree | 779f90dbe139bce648540d517be84b156d92319e /src/splice.ml | |
| parent | 6dbd0facf0962d869d0c3957f668b035a4a6605c (diff) | |
Refactor: Change AST type from a union to a struct
Diffstat (limited to 'src/splice.ml')
| -rw-r--r-- | src/splice.ml | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/splice.ml b/src/splice.ml index cb3307d9..478469a0 100644 --- a/src/splice.ml +++ b/src/splice.ml @@ -7,7 +7,7 @@ open Ast open Ast_defs open Ast_util -let scan_defs (Defs defs) = +let scan_ast { defs; _ } = let scan (ids, specs) = function | DEF_fundef fd -> IdSet.add (id_of_fundef fd) ids, specs @@ -19,7 +19,7 @@ let scan_defs (Defs defs) = "Definition in splice file isn't a spec or function") in List.fold_left scan (IdSet.empty, Bindings.empty) defs -let filter_old_ast repl_ids repl_specs (Defs defs) = +let filter_old_ast repl_ids repl_specs { defs; _ } = let check (rdefs,spec_found) def = match def with | DEF_fundef fd -> @@ -36,7 +36,7 @@ let filter_old_ast repl_ids repl_specs (Defs defs) = let rdefs, spec_found = List.fold_left check ([],IdSet.empty) defs in (List.rev rdefs, spec_found) -let filter_replacements spec_found (Defs defs) = +let filter_replacements spec_found { defs; _ } = let not_found = function | DEF_spec (VS_aux (VS_val_spec (_,id,_,_),_)) -> not (IdSet.mem id spec_found) | _ -> true @@ -47,9 +47,8 @@ let splice ast file = let repl_ast = Initial_check.process_ast ~generate:false (Parse_ast.Defs [(file, parsed_ast)]) in let repl_ast = Rewrites.move_loop_measures repl_ast in let repl_ast = map_ast_annot (fun (l,_) -> l,Type_check.empty_tannot) repl_ast in - let repl_ids, repl_specs = scan_defs repl_ast in + let repl_ids, repl_specs = scan_ast repl_ast in let defs1, specs_found = filter_old_ast repl_ids repl_specs ast in let defs2 = filter_replacements specs_found repl_ast in - let new_ast = Defs (defs1 @ defs2) in - Type_error.check Type_check.initial_env new_ast + Type_error.check Type_check.initial_env { ast with defs = defs1 @ defs2 } |
