This commit is contained in:
2026-05-28 21:34:11 +02:00
parent 6ffc11d2b1
commit c57093c48b
+35
View File
@@ -1,6 +1,7 @@
#lang racket/base #lang racket/base
(require racket/string (require racket/string
json
"../main.rkt" "../main.rkt"
"jsmaker-executors.rkt" "jsmaker-executors.rkt"
"jsmaker-test-framework.rkt") "jsmaker-test-framework.rkt")
@@ -86,6 +87,37 @@
(unless (not (regexp-match? #rx"__let_star_value" simple-let-star)) (unless (not (regexp-match? #rx"__let_star_value" simple-let-star))
(error 'jsmaker-regression "simple let* should not use tempvars, got: ~a" simple-let-star)) (error 'jsmaker-regression "simple let* should not use tempvars, got: ~a" simple-let-star))
(define webview-set-value-program
(let ([val "2026-05-28"])
(with-id->el/inject 'inp2 el
(if (or (= (js-dot el type) "checkbox")
(= (js-dot el type) "radio"))
(begin
(set! (js-dot el checked) (inject (if (eq? val #f) #f #t)))
#t)
(begin
(set! (js-dot el value) (inject val))
#t)))))
(unless (not (regexp-match? #rx"return true;" webview-set-value-program))
(error 'jsmaker-regression
"top-level WebView-style js must not emit branch-level return true statements, got: ~a"
webview-set-value-program))
(define webview-top-level-vm-smoke
(format #<<JS
(() => {
if (typeof require !== 'function') return true;
const vm = require('vm');
const el = { type: 'text', value: '', checked: false };
const context = { document: { getElementById: (id) => el } };
vm.runInNewContext(~a, context);
return JSON.stringify([el.value, el.checked]) === ~a;
})()
JS
(jsexpr->string webview-set-value-program)
(jsexpr->string "[\"2026-05-28\",false]")))
(define tests (define tests
(list (list
(js-expression-test 'if-zero (js/expression (if 0 1 2)) "1") (js-expression-test 'if-zero (js/expression (if 0 1 2)) "1")
@@ -112,6 +144,9 @@
(js/expression (array (eval (list 1 2 3)) (js/expression (array (eval (list 1 2 3))
(eval (string-append "a" "b")))) (eval (string-append "a" "b"))))
"[[1,2,3],\"ab\"]") "[[1,2,3],\"ab\"]")
(js-expression-test 'webview-top-level-script-vm
webview-top-level-vm-smoke
"true")
(let ([x 10] (let ([x 10]
[y 20]) [y 20])
(js-expression-test 'runtime-eval-lexical-let (js-expression-test 'runtime-eval-lexical-let