diff options
| author | Alasdair Armstrong | 2018-12-10 20:39:16 +0000 |
|---|---|---|
| committer | Alasdair Armstrong | 2018-12-10 20:45:05 +0000 |
| commit | 5bc5f5dee8921f8d24260dae54177e00c291fcb1 (patch) | |
| tree | 89bbd7a947e8063bdbaac4abf364f6cccd2c3fdf /src/initial_check.ml | |
| parent | d8f0854ca9d80d3af8d6a4aaec778643eda9421c (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.ml | 5 |
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)) |
