aboutsummaryrefslogtreecommitdiff
path: root/kernel/term_typing.ml
diff options
context:
space:
mode:
authorPaul Steckler2017-03-20 12:21:12 -0400
committerMaxime Dénès2017-03-20 18:04:35 +0100
commit76c263b5eceac313ac2cdd3a3e7e2961876d3e31 (patch)
treebb16605711673d8f4ed851059c82509a6a66fec7 /kernel/term_typing.ml
parentdbbc4da0e52567325d74128dccd1b54760cb970d (diff)
In the Kami project, that causes a stack overflow in one of the example files
(ProcThreeStInl.v, when the final "Defined" runs). I've verified that the change here fixes the stack overflow there with Coq 8.5pl2. In this version, all the recursive calls are in tail position. Instead of taking a single list of instructions, `emit' here takes a curent list and a remaining list of lists of instructions. That means the two calls elsewhere in the file now add an empty list argument. The algorithm works on the current list until it's empty, then works on the remaining lists. The most complex case is for Ksequence, where one of the pieces becomes the new current list, and the other pieces are consed onto the remaining sub-lists.
Diffstat (limited to 'kernel/term_typing.ml')
0 files changed, 0 insertions, 0 deletions