robert-strandh / SICL

A fresh implementation of Common Lisp
Other
1.07k stars 79 forks source link

type-infer: Explicitly mark values as having T type on confluence. #169

Closed karlosz closed 4 years ago

karlosz commented 4 years ago

Relying on implicit marking by removal from table causes non-deterministic behavior as removing type constraints from the table causes the behavior to be dependent on the order in which basic blocks are collected. The union operation on type constraints treats a value not having a constraint specially to make value -> Top type mappings implicit for space efficiency, but this interacts with confluence badly.