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:
parent
e7f5bcb58d
commit
547a8c6d17
4 changed files with 85 additions and 83 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue