diff options
| author | Alasdair Armstrong | 2018-08-15 17:39:49 +0100 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-08-16 15:04:13 +0100 |
| commit | b1ccdc07a945d47a0ef5ca9bdec575f6b831cd27 (patch) | |
| tree | fe694dc3541ade7ffa64116ca64a765a95c7d55d /src/initial_check.ml | |
| parent | 5d3c6b295ca18efd8ca8c9e52245766f2c2c7394 (diff) | |
Various cleanups to ott grammar
Add additional well-formedness check when calling typing rules
Diffstat (limited to 'src/initial_check.ml')
| -rw-r--r-- | src/initial_check.ml | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/initial_check.ml b/src/initial_check.ml index bec9d847..bc0fe07a 100644 --- a/src/initial_check.ml +++ b/src/initial_check.ml @@ -627,26 +627,16 @@ and to_ast_record_try (k_env:kind Envmap.t) (def_ord:order) (Parse_ast.E_aux(exp let to_ast_default (names, k_env, default_order) (default : Parse_ast.default_typing_spec) : default_spec envs_out = match default with - | Parse_ast.DT_aux(df,l) -> - (match df with - | Parse_ast.DT_kind(bk,v) -> - let k,k_typ = to_ast_base_kind bk in - let v = to_ast_var v in - let key = var_to_string v in - DT_aux(DT_kind(k,v),l),(names,(Envmap.insert k_env (key,k_typ)),default_order) - | Parse_ast.DT_typ(typschm,id) -> - let tps,_,_ = to_ast_typschm k_env default_order typschm in - DT_aux(DT_typ(tps,to_ast_id id),l),(names,k_env,default_order) - | Parse_ast.DT_order(bk,o) -> - let k,k_typ = to_ast_base_kind bk in - (match (k,o) with - | (BK_aux(BK_order, _), Parse_ast.ATyp_aux(Parse_ast.ATyp_inc,lo)) -> - let default_order = Ord_aux(Ord_inc,lo) in - DT_aux(DT_order default_order,l),(names,k_env,default_order) - | (BK_aux(BK_order, _), Parse_ast.ATyp_aux(Parse_ast.ATyp_dec,lo)) -> - let default_order = Ord_aux(Ord_dec,lo) in - DT_aux(DT_order default_order,l),(names,k_env,default_order) - | _ -> typ_error l "Inc and Dec must have kind Order" None None None)) + | Parse_ast.DT_aux(Parse_ast.DT_order(bk,o),l) -> + let k,k_typ = to_ast_base_kind bk in + (match (k,o) with + | (BK_aux(BK_order, _), Parse_ast.ATyp_aux(Parse_ast.ATyp_inc,lo)) -> + let default_order = Ord_aux(Ord_inc,lo) in + DT_aux(DT_order default_order,l),(names,k_env,default_order) + | (BK_aux(BK_order, _), Parse_ast.ATyp_aux(Parse_ast.ATyp_dec,lo)) -> + let default_order = Ord_aux(Ord_dec,lo) in + DT_aux(DT_order default_order,l),(names,k_env,default_order) + | _ -> typ_error l "Inc and Dec must have kind Order" None None None) let to_ast_spec (names,k_env,default_order) (val_:Parse_ast.val_spec) : (unit val_spec) envs_out = match val_ with |
