summaryrefslogtreecommitdiff
path: root/src/splice.ml
diff options
context:
space:
mode:
authorAlasdair2020-09-29 16:23:40 +0100
committerAlasdair2020-09-29 16:32:24 +0100
commit7441db19749fb7fb9383b6361dfbd99547e53486 (patch)
tree779f90dbe139bce648540d517be84b156d92319e /src/splice.ml
parent6dbd0facf0962d869d0c3957f668b035a4a6605c (diff)
Refactor: Change AST type from a union to a struct
Diffstat (limited to 'src/splice.ml')
-rw-r--r--src/splice.ml11
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 }