{:spec/version "0.2"
 :language "hara"
 :engines [:jvm-interpreter :truffle]
 :cases
 [{:id :value/nil
   :classification :portable
   :source "nil"}
  {:id :value/boolean
   :classification :portable
   :source "(if true false true)"}
  {:id :control/let
   :classification :portable
   :source "(let [a 19 b 23] (+ a b))"}
  {:id :function/fixed-arity
   :classification :portable
   :source "((fn [x] (+ x 1)) 41)"}
  {:id :function/variadic
   :classification :portable
   :source "((fn [x & xs] (+ x (count xs))) 40 1 2)"}
  {:id :function/apply
   :classification :portable
   :source "(apply (fn [a b c] (+ a b c)) [1 2 3])"}
  {:id :function/apply-prefix
   :classification :portable
   :source "(apply (fn [a b c] (+ a b c)) 1 [2 3])"}
  {:id :function/defn-bootstrap
   :classification :portable
   :source "(do (defn answer [x] (+ x 1)) (answer 41))"}
  {:id :core/str-empty
   :classification :portable
   :source "(str)"}
  {:id :core/str-variadic
   :classification :portable
   :source "(str 1 2 3)"}
  {:id :collection/conj-empty
   :classification :portable
   :source "(count (conj))"}
  {:id :collection/conj-unary
   :classification :portable
   :source "(conj 7)"}
  {:id :collection/conj-variadic
   :classification :portable
   :source "(conj [] 1 2 3)"}
  {:id :collection/assoc-lookup
   :classification :portable
   :source "(get (assoc {:a 1} :b 2) :b)"}
  {:id :numeric/variadic-arithmetic
   :classification :portable
   :source "(- (+ 1 2 3 40) 4)"}
  {:id :numeric/comparison-chain
   :classification :portable
   :source "(< 1 2 3 4)"}
  {:id :error/function-arity
   :classification :portable
   :source "((fn [x] x))"}
  {:id :error/unbound-symbol
   :classification :portable
   :source "missing-parity-symbol"}
  {:id :iterator/core
   :classification :portable
   :source "(iter-next (iter [1 2]))"}
  {:id :module/classpath
   :classification :portable
   :source "(do (require \"hara/l0-resource.hal\") l0-resource-answer)"}
  {:id :mutable/array
   :classification :portable
   :source "(array 1 2)"}
  {:id :control/do
   :classification :portable
   :source "(do 1 2 42)"}
  {:id :control/nested-let
   :classification :portable
   :source "(let [x 40] (let [x (+ x 1) y 1] (+ x y)))"}
  {:id :function/closure
   :classification :portable
   :source "(((fn [x] (fn [y] (+ x y))) 40) 2)"}
  {:id :function/variadic-empty-rest
   :classification :portable
   :source "((fn [x & xs] (+ x (count xs))) 42)"}
  {:id :function/defn-variadic
   :classification :portable
   :source "(do (defn total [x & xs] (+ x (count xs))) (total 40 1 2))"}
  {:id :function/apply-empty
   :classification :portable
   :source "(apply (fn [] 42) [])"}
  {:id :core/not
   :classification :portable
   :source "(not false)"}
  {:id :core/str-nil
   :classification :portable
   :source "(str \"a\" nil \"b\")"}
  {:id :collection/get-default
   :classification :portable
   :source "(get {:a 1} :missing 42)"}
  {:id :collection/nth-vector
   :classification :portable
   :source "(nth [40 42] 1)"}
  {:id :collection/cons
   :classification :portable
   :source "(nth (cons 42 '(1 2)) 0)"}
  {:id :numeric/unary-minus
   :classification :portable
   :source "(- 42)"}
  {:id :numeric/division
   :classification :portable
   :source "(/ 84 2)"}
  {:id :numeric/structural-equality
   :classification :portable
   :source "(= {:a [1 2]} {:a [1 2]})"}
  {:id :iterator/has-next
   :classification :portable
   :source "(iter-has? (iter [42]))"}
  {:id :iterator/close
   :classification :portable
   :source "(iter-close (iter [1]))"}
  {:id :module/load-resource
   :classification :portable
   :source "(load-resource \"hara/l0-resource.hal\")"}
  {:id :mutable/array-count
   :classification :portable
   :source "(count (array 1 2 3))"}
  {:id :mutable/array-nth
   :classification :portable
   :source "(nth (array 40 42) 1)"}
  {:id :error/divide-by-zero
   :classification :portable
   :source "(/ 1 0)"}
  {:id :capability/file-io
   :classification :capability-specific
   :capability :host/file-io
   :reason "File IO depends on embedding-specific IOAccess and an external fixture path."
   :source "(file/read-text \"parity-fixture.txt\")"}]}
