lua: break via guard+raise sentinel; auto-first multi in arith/concat +4 tests
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Has been cancelled
This commit is contained in:
@@ -1,3 +1,17 @@
|
||||
(define
|
||||
lua-tx-loop-guard
|
||||
(fn (body-sx)
|
||||
(list
|
||||
(make-symbol "guard")
|
||||
(list (make-symbol "e")
|
||||
(list
|
||||
(list (make-symbol "lua-break-sentinel?") (make-symbol "e"))
|
||||
nil)
|
||||
(list
|
||||
(make-symbol "else")
|
||||
(list (make-symbol "raise") (make-symbol "e"))))
|
||||
body-sx)))
|
||||
|
||||
(define
|
||||
lua-tx
|
||||
(fn
|
||||
@@ -36,7 +50,7 @@
|
||||
((= tag (quote lua-for-num)) (lua-tx-for-num node))
|
||||
((= tag (quote lua-for-in)) (lua-tx-for-in node))
|
||||
((= tag (quote lua-do)) (lua-tx-do node))
|
||||
((= tag (quote lua-break)) (quote lua-break-marker))
|
||||
((= tag (quote lua-break)) (list (make-symbol "raise") (list (make-symbol "list") (list (make-symbol "quote") (make-symbol "lua-brk")))))
|
||||
((= tag (quote lua-return)) (lua-tx-return node))
|
||||
((= tag (quote lua-call-stmt)) (lua-tx (nth node 1)))
|
||||
((= tag (quote lua-local-function)) (lua-tx-local-function node))
|
||||
@@ -392,7 +406,7 @@
|
||||
(make-symbol "begin")
|
||||
body
|
||||
(list (make-symbol "_while_loop"))))))
|
||||
(list (make-symbol "_while_loop"))))))
|
||||
(lua-tx-loop-guard (list (make-symbol "_while_loop")))))))
|
||||
|
||||
(define
|
||||
lua-tx-repeat
|
||||
@@ -418,7 +432,7 @@
|
||||
(make-symbol "not")
|
||||
(list (make-symbol "lua-truthy?") cnd))
|
||||
(list (make-symbol "_repeat_loop"))))))
|
||||
(list (make-symbol "_repeat_loop"))))))
|
||||
(lua-tx-loop-guard (list (make-symbol "_repeat_loop")))))))
|
||||
|
||||
(define
|
||||
lua-tx-for-num
|
||||
@@ -462,7 +476,7 @@
|
||||
(make-symbol name)
|
||||
(make-symbol "_for_step")))
|
||||
(list (make-symbol "_for_loop"))))))
|
||||
(list (make-symbol "_for_loop")))))))
|
||||
(lua-tx-loop-guard (list (make-symbol "_for_loop"))))))))
|
||||
|
||||
(define lua-tx-do (fn (node) (list (make-symbol "let") (list) (lua-tx (nth node 1)))))
|
||||
|
||||
@@ -704,4 +718,4 @@
|
||||
(make-symbol "fn")
|
||||
(list)
|
||||
(lua-tx-for-in-loop-body names body f-sym s-sym v-sym rets-sym loop-sym first-name)))
|
||||
(list loop-sym))))))))))
|
||||
(lua-tx-loop-guard (list loop-sym)))))))))))
|
||||
|
||||
Reference in New Issue
Block a user