The .. threading macro analyzes as a macro, not interop (jolt-c2l1 tail)

(.. x m ...) failed: the analyzer classified the .. head as a .method interop
call (method-head? matched any "."-prefixed name) and form-special?
(hc-interop-head?) also flagged it, so it never reached the macro check. Exclude
".." from both (the char after "." being "." means the threading macro, not
.method). Corpus 2690->2691. Re-minted.
This commit is contained in:
Yogthos 2026-06-21 17:08:11 -04:00
parent e7f5bcb58d
commit 547a8c6d17
4 changed files with 85 additions and 83 deletions

View file

@ -118,6 +118,7 @@
(define (hc-interop-head? name) (define (hc-interop-head? name)
(let ((n (string-length name))) (let ((n (string-length name)))
(and (> n 1) (and (> n 1)
(not (string=? name "..")) ; the .. threading macro, not an interop form
(or (char=? (string-ref name 0) #\.) (or (char=? (string-ref name 0) #\.)
(char=? (string-ref name (- n 1)) #\.))))) (char=? (string-ref name (- n 1)) #\.)))))
(define (hc-special? name) (define (hc-special? name)

View file

@ -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 2690) ;; JOLT_CHEZ_ZJ_FLOOR=N override the regression floor (default 2691)
;; 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) 2690))) (if s (string->number s) 2691)))
(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"

File diff suppressed because one or more lines are too long

View file

@ -301,7 +301,8 @@
(defn- method-head? [nm] (defn- method-head? [nm]
(and (> (count nm) 1) (and (> (count nm) 1)
(= "." (subs nm 0 1)) (= "." (subs nm 0 1))
(not (= "-" (subs nm 1 2))))) (not (= "-" (subs nm 1 2))) ; .-field is field access
(not (= "." (subs nm 1 2))))) ; .. is the threading macro, not .method
(defn- analyze-host-call [ctx hname items env] (defn- analyze-host-call [ctx hname items env]
(when (< (count items) 2) (when (< (count items) 2)