summaryrefslogtreecommitdiff
path: root/src/initial_check.ml
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-12-10 20:39:16 +0000
committerAlasdair Armstrong2018-12-10 20:45:05 +0000
commit5bc5f5dee8921f8d24260dae54177e00c291fcb1 (patch)
tree89bbd7a947e8063bdbaac4abf364f6cccd2c3fdf /src/initial_check.ml
parentd8f0854ca9d80d3af8d6a4aaec778643eda9421c (diff)
Various changes:
* Improve type inference for numeric if statements (if_infer test) * Correctly handle constraints for existentially quantified constructors (constraint_ctor test) * Canonicalise all numeric types in function arguments, which triggers some weird edge cases between parametric polymorphism and subtyping of numeric arguments * Because of this eq_int, eq_range, and eq_atom etc become identical * Avoid duplicating destruct_exist in Env * Handle some odd subtyping cases better
Diffstat (limited to 'src/initial_check.ml')
-rw-r--r--src/initial_check.ml5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/initial_check.ml b/src/initial_check.ml
index 0f1af63d..44f36892 100644
--- a/src/initial_check.ml
+++ b/src/initial_check.ml
@@ -777,6 +777,11 @@ let typschm_of_string str =
let typschm, _ = to_ast_typschm initial_ctx typschm in
typschm
+let typ_of_string str =
+ let typ = Parser.typ_eof Lexer.token (Lexing.from_string str) in
+ let typ = to_ast_typ initial_ctx typ in
+ typ
+
let extern_of_string id str = mk_val_spec (VS_val_spec (typschm_of_string str, id, (fun _ -> Some (string_of_id id)), false))
let val_spec_of_string id str = mk_val_spec (VS_val_spec (typschm_of_string str, id, (fun _ -> None), false))