From 5cd9c47fe85161651070c9f5c5e537690377b5e6 Mon Sep 17 00:00:00 2001 From: Yogthos Date: Wed, 3 Jun 2026 00:45:09 -0400 Subject: [PATCH] Fix REPL: tuple rendering via struct? collision MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Janet's struct? returns true for tuples, causing print-value's symbol-struct check to call (get tuple :jolt/type) which fails with 'expected integer key for tuple...got :name'. Fix: reorder cond in print-value — check tuple? and array? before struct? checks. Split (or tuple? array? struct? table?) into individual arms so cond stops at the first match. ( range 10) now renders [0 1 2 3 4 5 6 7 8 9] instead of error. 315 ok, 2 fail (pre-existing, unchanged) --- src/jolt/main.janet | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/jolt/main.janet b/src/jolt/main.janet index 5de3b4d..3518a8d 100644 --- a/src/jolt/main.janet +++ b/src/jolt/main.janet @@ -94,12 +94,18 @@ (number? v) (prin v) (string? v) (prin v) (keyword? v) (prin ":") (prin (string v)) + (tuple? v) + (do (print-collection v) (print)) + (array? v) + (do (print-collection v) (print)) (and (struct? v) (= :symbol (get v :jolt/type))) (let [ns (get v :ns) name (get v :name)] (if ns (prin ns "/" name) (prin name))) (and (table? v) (= :jolt/var (v :jolt/type))) (prin "#'" (ctx-current-ns ctx) "/" ((var-name v) :name)) - (or (tuple? v) (array? v) (struct? v) (table? v)) + (struct? v) + (do (print-collection v) (print)) + (table? v) (do (print-collection v) (print)) (print v))))