Repository navigation
Commit eb46e53
committed
Read and write type nodes through the accessors in Ctype
Ctype, the core of unification, instantiation, generalization and the
occur checks, now reads type nodes only through `get_desc`, `get_level`
and `get_id`, and makes its unlogged writes (copy marks, level marks,
temporary links, writes after `log_type`) through `Transient_expr`. Its
local `get_level env p`, the binding level of a path, is renamed
`get_path_level` so that it does not shadow `Types.get_level`.
Review: Does the conversion change evaluation order, sharing or
allocation? No. Writes still evaluate the new descriptor before storing
it, `filter_visited` returns the same list cell, and the already-copied
variant case in `copy` matches with a guard instead of building an option.
Signed-off-by: Jono Prest <jjprest@gmail.com>1 parent e7dd1e1 commit eb46e53
2 files changed
Lines changed: 247 additions & 217 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments