syntax-quote leaves interop forms unqualified (jolt-z1zu)
A macro that syntax-quoted interop — `(.. (StringBuilder.) (.append x)) — had its .method / Class. / .-field heads qualified to the compile ns (user/.append, user/StringBuilder.), so they read as 'Unknown class user' at expansion. Like Clojure, leave interop-head symbols bare in syntax-quote. Fixes any macro templating interop, not just the one corpus case. Corpus 2694->2695.
This commit is contained in:
parent
f15a4e7747
commit
518683ccd6
2 changed files with 3 additions and 2 deletions
|
|
@ -215,6 +215,7 @@
|
||||||
(let ((g (hc-sq-gensym (substring nm 0 (- (string-length nm) 1)))))
|
(let ((g (hc-sq-gensym (substring nm 0 (- (string-length nm) 1)))))
|
||||||
(hashtable-set! gsmap nm g) g)))
|
(hashtable-set! gsmap nm g) g)))
|
||||||
((hc-special-symbol? nm) form) ; special form: leave bare
|
((hc-special-symbol? nm) form) ; special form: leave bare
|
||||||
|
((hc-interop-head? nm) form) ; interop (.method / Class. / .-field): bare
|
||||||
((var-cell-lookup "clojure.core" nm) (jolt-symbol "clojure.core" nm))
|
((var-cell-lookup "clojure.core" nm) (jolt-symbol "clojure.core" nm))
|
||||||
(else (jolt-symbol (chez-actx-cns ctx) nm))) ; else: qualify to compile ns
|
(else (jolt-symbol (chez-actx-cns ctx) nm))) ; else: qualify to compile ns
|
||||||
;; qualified (a real ns or an alias): ns aliases aren't modeled on the Chez
|
;; qualified (a real ns or an alias): ns aliases aren't modeled on the Chez
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
;; reset between cases so there is no leakage — same isolation a fresh process gives.
|
;; reset between cases so there is no leakage — same isolation a fresh process gives.
|
||||||
;;
|
;;
|
||||||
;; chez --script host/chez/run-corpus.ss
|
;; chez --script host/chez/run-corpus.ss
|
||||||
;; JOLT_CHEZ_ZJ_FLOOR=N override the regression floor (default 2694)
|
;; JOLT_CHEZ_ZJ_FLOOR=N override the regression floor (default 2695)
|
||||||
;; JOLT_CORPUS_LIMIT=N every-Nth stride (fast iteration; floor drops to 0)
|
;; JOLT_CORPUS_LIMIT=N every-Nth stride (fast iteration; floor drops to 0)
|
||||||
;; JOLT_DUMP_CRASH_LABELS=1 list crash + allowlisted labels
|
;; JOLT_DUMP_CRASH_LABELS=1 list crash + allowlisted labels
|
||||||
(import (chezscheme))
|
(import (chezscheme))
|
||||||
|
|
@ -203,7 +203,7 @@
|
||||||
|
|
||||||
;; Regression floor: fail on any NEW divergence or if pass drops below the floor.
|
;; Regression floor: fail on any NEW divergence or if pass drops below the floor.
|
||||||
(define base-floor (let ((s (getenv "JOLT_CHEZ_ZJ_FLOOR")))
|
(define base-floor (let ((s (getenv "JOLT_CHEZ_ZJ_FLOOR")))
|
||||||
(if s (string->number s) 2694)))
|
(if s (string->number s) 2695)))
|
||||||
(define floor (if limit 0 base-floor))
|
(define floor (if limit 0 base-floor))
|
||||||
(when (or (> (length diverged) 0) (< pass floor))
|
(when (or (> (length diverged) 0) (< pass floor))
|
||||||
(printf "REGRESSION: pass ~a < floor ~a or ~a new divergence(s)\n"
|
(printf "REGRESSION: pass ~a < floor ~a or ~a new divergence(s)\n"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue