From 7d8392e5ab26b4d6560fa9e513c95090ae6e2394 Mon Sep 17 00:00:00 2001 From: Yogthos Date: Tue, 23 Jun 2026 09:38:13 -0400 Subject: [PATCH] infer gate: cover the run-inference / take-diags! checker path Adds 3 cases for the opt-path checker (set-check-mode! -> run-inference -> take-diags!): diagnostics drain once, the buffer empties on re-drain, and check-mode off produces none. This is the public checker entry the other 23 cases didn't touch. Runtime-only. --- host/chez/run-infer.ss | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/host/chez/run-infer.ss b/host/chez/run-infer.ss index b9512b9..2125ef3 100644 --- a/host/chez/run-infer.ss +++ b/host/chez/run-infer.ss @@ -28,6 +28,9 @@ (define collected-escapes (var-deref "jolt.passes.types" "collected-escapes")) (define set-record-shapes! (var-deref "jolt.passes.types" "set-record-shapes!")) (define set-vtypes! (var-deref "jolt.passes.types" "set-vtypes!")) +(define set-check-mode! (var-deref "jolt.passes.types" "set-check-mode!")) +(define run-inference (var-deref "jolt.passes.types" "run-inference")) +(define take-diags! (var-deref "jolt.passes.types" "take-diags!")) ;; analyze a source string to its IR node (fresh ctx, ns "user", no passes). (define (anode src) (analyze (make-analyze-ctx "user") (jolt-ce-read src))) @@ -87,6 +90,17 @@ (check "ctor result struct w/ shapes" (diags "(+ (->P 1) 1)" #f) 1) (set-record-shapes! (jolt-hash-map)) +;; --- the opt-path checker: run-inference emits, take-diags! drains ----------- +;; (set-check-mode! on strict?) arms checking during the next run-inference; the +;; diagnostics are stashed for take-diags! to drain once. +(set-check-mode! #t #f) +(run-inference (anode "(+ 1 :k)")) +(check "take-diags drains run-inference" (jolt-count (take-diags!)) 1) +(check "take-diags re-drained empty" (jolt-count (take-diags!)) 0) +(set-check-mode! #f #f) +(run-inference (anode "(+ 1 :k)")) +(check "no diags when check-mode off" (jolt-count (take-diags!)) 0) + (if (= fails 0) (begin (printf "infer gate: ~a/~a passed\n" total total) (exit 0)) (begin (printf "infer gate: ~a/~a passed (~a failed)\n" (- total fails) total fails) (exit 1)))