core: Phase 4 — move tagged-value predicates to the overlay
atom?/volatile?/reader-conditional?/tagged-literal?/record?/chunked-seq? all just read a value's kind from :jolt/type (records from :jolt/deftype), and get returns nil on non-tables, so the predicates are pure over get with no host surface. Constructors stay native. delay?/transient? keep their Janet defns — they have internal callers (force, conj/count/persistent! etc.). chunked-seq? is always false (no chunked seqs until Phase 5). Added a tagged-value spec group covering positive and negative cases for each.
This commit is contained in:
parent
7f68a5872c
commit
f410bec2ec
3 changed files with 33 additions and 15 deletions
|
|
@ -88,6 +88,21 @@
|
|||
["keyword-identical?" "true" "(keyword-identical? :a :a)"]
|
||||
["keyword-identical? no" "false" "(keyword-identical? :a :b)"])
|
||||
|
||||
# Tagged-value predicates moved to the overlay in Phase 4 (read the value's
|
||||
# :jolt/type via get). The constructors stay native.
|
||||
(defspec "predicates / tagged-value (Phase 4)"
|
||||
["atom? yes" "true" "(atom? (atom 1))"]
|
||||
["atom? no" "false" "(atom? 1)"]
|
||||
["volatile? yes" "true" "(volatile? (volatile! 1))"]
|
||||
["volatile? no" "false" "(volatile? (atom 1))"]
|
||||
["record? yes" "true" "(do (defrecord Rp [a]) (record? (->Rp 1)))"]
|
||||
["record? no map" "false" "(record? {:a 1})"]
|
||||
["record? no nil" "false" "(record? nil)"]
|
||||
["tagged-literal? yes" "true" "(tagged-literal? (tagged-literal (quote inst) \"2020\"))"]
|
||||
["tagged-literal? no" "false" "(tagged-literal? 1)"]
|
||||
["reader-conditional? no" "false" "(reader-conditional? 1)"]
|
||||
["chunked-seq? always false" "false" "(chunked-seq? (seq [1 2 3]))"])
|
||||
|
||||
(defspec "predicates / equality & identity"
|
||||
["= same" "true" "(= 1 1)"]
|
||||
["= vectors" "true" "(= [1 2] [1 2])"]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue