Tag every corpus row with :portability (:common vs :jvm)

Dialects without JVM interop can now filter the conformance corpus: :jvm
marks rows exercising host interop (java.*/clojure.lang.* class references,
dot forms, ctors, statics, arrays, proxy/bean), :common is portable Clojure
any dialect must satisfy. 3565 rows tagged (3175 common / 390 jvm), the key
documented in the row schema, and regen-corpus preserves it on rewrite.

Closes #289.
This commit is contained in:
Yogthos 2026-07-02 14:03:47 -04:00
parent ce8e89ca86
commit d6d11d5748
3 changed files with 3578 additions and 3571 deletions

File diff suppressed because it is too large Load diff

View file

@ -27,8 +27,14 @@ the canonical, frozen contract**: it is what every runtime consumes, what
{:suite "numbers / arithmetic" ; grouping; "<suite> :: <label>" is the case id {:suite "numbers / arithmetic" ; grouping; "<suite> :: <label>" is the case id
:label "integer add" ; unique within a suite :label "integer add" ; unique within a suite
:actual "(+ 1 2)" ; Clojure source to evaluate :actual "(+ 1 2)" ; Clojure source to evaluate
:expected "3"} ; Clojure source whose value it must equal, :expected "3" ; Clojure source whose value it must equal,
; or the keyword :throws ; or the keyword :throws
:portability :common} ; :common = portable Clojure any dialect
; must satisfy; :jvm = exercises host
; interop (java.*/clojure.lang.* classes,
; dot forms, ctors, statics, arrays,
; proxy/bean) — skip on a non-JVM-shaped
; dialect
``` ```
- `[:suite :label]` is the **canonical, unique case id** (the generator - `[:suite :label]` is the **canonical, unique case id** (the generator

View file

@ -99,11 +99,12 @@
[row :kept]))) [row :kept])))
;; --- corpus writer (preserves the one-row-per-line layout) ------------------- ;; --- corpus writer (preserves the one-row-per-line layout) -------------------
(defn row-str [{:keys [suite label expected actual]}] (defn row-str [{:keys [suite label expected actual portability]}]
(str " {:suite " (pr-str suite) (str " {:suite " (pr-str suite)
" :label " (pr-str label) " :label " (pr-str label)
" :expected " (if (= expected :throws) ":throws" (pr-str expected)) " :expected " (if (= expected :throws) ":throws" (pr-str expected))
" :actual " (pr-str actual) "}")) " :actual " (pr-str actual)
(when portability (str " :portability " portability)) "}"))
(defn -main [& _] (defn -main [& _]
(let [corpus (edn/read-string (slurp corpus-path)) (let [corpus (edn/read-string (slurp corpus-path))