Commit 71458ca9 authored by Kim Nguyễn's avatar Kim Nguyễn

Merge branch 'new-variables-issue-26' into debug-typechecking-issue-27

* new-variables-issue-26:
  Rework the type variable infrastructure. Remove it from the type structure and have the auxiliary function cache the results as needed.
  Properly check constraints on monomprhic variable during constraint generation: when a constraint 'a < t or t < 'a with 'a being monomorphic occurs during constraint generation, we check whether it holds for all 'a, that is we use plain subtyping. (It generalizes the fact that 'a < Any or Empty < 'a hold for monomorphic variables, but also accounts for constraints such as 'a < 'a | t and so on).

parents 0f2c54a2 e8ebd69d
This diff is collapsed.
module V = struct
type t = { id : string; repr : string }
let dump ppf t =
......@@ -30,6 +30,7 @@ module Set : sig
val cardinal : t -> int
val from_list : var list -> t
val fold : ('a -> var -> 'a) -> 'a -> t -> 'a
val choose : t -> var
type 'a pairvar = [ `Atm of 'a | var ]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment