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/parser.mly | |
| 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/parser.mly')
| -rw-r--r-- | src/parser.mly | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/parser.mly b/src/parser.mly index fa36591c..83e6936d 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -212,9 +212,11 @@ let rec desugar_rchain chain s e = %start file %start typschm_eof +%start typ_eof %start exp_eof %start def_eof %type <Parse_ast.typschm> typschm_eof +%type <Parse_ast.atyp> typ_eof %type <Parse_ast.exp> exp_eof %type <Parse_ast.def> def_eof %type <Parse_ast.defs> file @@ -349,6 +351,10 @@ tyarg: | Lparen typ_list Rparen { [], $2 } +typ_eof: + | typ Eof + { $1 } + typ: | typ0 { $1 } |
