HS: sieve test compile-once + string-var expansion in generator
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 47s
Replace 11 separate eval-hs-locals compilations with a single hs-compile call + shared run-sieve fn; reduces wall-clock from 60s+ to ~1s per call. Generator: pre-resolve string variable concatenations before pattern matching run() calls so multi-line HS sources translate correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8125,111 +8125,158 @@
|
||||
)
|
||||
|
||||
;; ── if (19 tests) ──
|
||||
(defsuite "hs-upstream-if"
|
||||
(deftest "basic else branch works"
|
||||
(defsuite
|
||||
"hs-upstream-if"
|
||||
(deftest
|
||||
"basic else branch works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic else branch works with end"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic else branch works with end"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else put \"foo\" into me.innerHTML end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else put \"foo\" into me.innerHTML end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic else branch works with multiple commands"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic else branch works with multiple commands"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false put \"bar\" into me.innerHTML else log me then put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false put \"bar\" into me.innerHTML else log me then put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic else if branch works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic else if branch works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else if true put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else if true put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic else if branch works with end"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic else if branch works with end"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else if true put \"foo\" into me.innerHTML end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else if true put \"foo\" into me.innerHTML end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic true branch works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic true branch works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic true branch works with end"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic true branch works with end"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true put \"foo\" into me.innerHTML end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if true put \"foo\" into me.innerHTML end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic true branch works with multiple commands"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic true branch works with multiple commands"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true log me then put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if true log me then put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic true branch works with naked else"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic true branch works with naked else"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true put \"foo\" into me.innerHTML else")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if true put \"foo\" into me.innerHTML else")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "basic true branch works with naked else end"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"basic true branch works with naked else end"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true put \"foo\" into me.innerHTML else end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if true put \"foo\" into me.innerHTML else end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "false branch with a wait works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"false branch with a wait works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else wait 10 ms then put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else wait 10 ms then put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "if on new line does not join w/ else"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"if on new line does not join w/ else"
|
||||
(hs-cleanup!)
|
||||
(host-set! (host-global "window") "tmp" false)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if window.tmp else if window.tmp end put \"foo\" into me end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if window.tmp else if window.tmp end put \"foo\" into me end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
@@ -8237,69 +8284,108 @@
|
||||
(host-set! (host-global "window") "tmp" true)
|
||||
(dom-set-inner-html _el-div "")
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "")
|
||||
))
|
||||
(deftest "if properly passes execution along if child is not executed"
|
||||
(assert= (dom-text-content _el-div) "")))
|
||||
(deftest
|
||||
"if properly passes execution along if child is not executed"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false end put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false end put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "if properly supports nested if statements and end block"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"if properly supports nested if statements and end block"
|
||||
(hs-cleanup!)
|
||||
(host-set! (host-global "window") "tmp" false)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if window.tmp then put \"foo\" into me else if not window.tmp end catch e")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if window.tmp then put \"foo\" into me else if not window.tmp end catch e")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "")
|
||||
(host-set! (host-global "window") "tmp" true)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "otherwise alias works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"otherwise alias works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false otherwise put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false otherwise put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "passes the sieve test"
|
||||
(error "SKIP (untranslated): passes the sieve test"))
|
||||
(deftest "triple else if branch works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"passes the sieve test"
|
||||
(let
|
||||
((compiled-body (hs-to-sx (hs-compile "if x is less than 10 if x is less than 3 if x is less than 2 return 1 else return 2 end else if x is less than 4 return 3 else if x is 4 return 4 else if x is 5 return 5 else return 6 end end else return 10 end"))))
|
||||
(let
|
||||
((run-sieve (eval-expr-cek (list (quote fn) (list (quote x)) (_hs-wrap-body compiled-body)))))
|
||||
(let
|
||||
((call-sieve (fn (xval) (guard (_e (true (if (and (list? _e) (= (first _e) "hs-return")) (nth _e 1) (raise _e)))) (run-sieve xval)))))
|
||||
(assert= (call-sieve 1) 1)
|
||||
(assert= (call-sieve 2) 2)
|
||||
(assert= (call-sieve 3) 3)
|
||||
(assert= (call-sieve 4) 4)
|
||||
(assert= (call-sieve 5) 5)
|
||||
(assert= (call-sieve 6) 6)
|
||||
(assert= (call-sieve 7) 6)
|
||||
(assert= (call-sieve 8) 6)
|
||||
(assert= (call-sieve 9) 6)
|
||||
(assert= (call-sieve 10) 10)
|
||||
(assert= (call-sieve 11) 10)))))
|
||||
(deftest
|
||||
"triple else if branch works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else if false else put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else if false else put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "triple else if branch works with end"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"triple else if branch works with end"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if false else if false else put \"foo\" into me.innerHTML end")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if false else if false else put \"foo\" into me.innerHTML end")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
(deftest "true branch with a wait works"
|
||||
(assert= (dom-text-content _el-div) "foo")))
|
||||
(deftest
|
||||
"true branch with a wait works"
|
||||
(hs-cleanup!)
|
||||
(let ((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr _el-div "_" "on click if true wait 10 ms then put \"foo\" into me.innerHTML")
|
||||
(let
|
||||
((_el-div (dom-create-element "div")))
|
||||
(dom-set-attr
|
||||
_el-div
|
||||
"_"
|
||||
"on click if true wait 10 ms then put \"foo\" into me.innerHTML")
|
||||
(dom-append (dom-body) _el-div)
|
||||
(hs-activate! _el-div)
|
||||
(dom-dispatch _el-div "click" nil)
|
||||
(assert= (dom-text-content _el-div) "foo")
|
||||
))
|
||||
)
|
||||
(assert= (dom-text-content _el-div) "foo"))))
|
||||
|
||||
;; ── increment (20 tests) ──
|
||||
(defsuite "hs-upstream-increment"
|
||||
|
||||
Reference in New Issue
Block a user